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