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

在这些框中随便输入参数,使用burpsuite抓包。发送到Repeater模块来修改hostname参数的值。在这里我们可以使用ProxyCommand参数执行命令。
ProxyCommand是什么?
ProxyCommand是一个指定用于连接服务器的命令。当我们执行以下这条命令时,可以发现即便我们没有建立与localhost的SSH连接,也会创建文件。

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

本文探讨了PHP的imap扩展如何通过imap_open函数的ProxyCommand选项导致命令执行。利用debian系统中ssh替代rsh的行为,攻击者可以构造特定参数反弹shell。通过base64编码和替换空格来绕过解析限制,最终在靶机上成功反弹shell。
最低0.47元/天 解锁文章

3824

被折叠的 条评论
为什么被折叠?



