之前多个漏洞,其实都是利用了Referer,如最新这个:http://wooyun.org/bugs/wooyun-2015-098434
其实我们可以不利用Referer,能更简单获取pc_hash,并进行CSRF攻击。
法一
先管理员登录后台,来到随意一个功能页面,右键查看框架的源代码,其中有这么一段javascript:
查找页面中所有超链接(a),如果不是“javascript:”开头的话,就添加pc_hash在url最后。
并没有判断这个链接是否是站内链接!
所以,如果我提交一个友情链接地址,也会被加上pc_hash,等于说pc_hash被加在我的url后面,我的服务器可以获取之!
来测试。首先前台提交一个友情链接:
![06134241eb8aa89e441bb30ac2988b8b0142909c[1]](http://7u2hr4.com1.z0.glb.clouddn.com/wp-content/uploads/2015/10/06134241eb8aa89e441bb30ac2988b8b0142909c1.png)
地址是我的POC(http://mhz.pw/game/tx/phpcms.php),内容如下:
然后管理员在后台审核友情链接处即可看到:
![06134450f1fed024c2ef6f6da8fb87dc2db4cda0[1]](http://7u2hr4.com1.z0.glb.clouddn.com/wp-content/uploads/2015/10/06134450f1fed024c2ef6f6da8fb87dc2db4cda01.png)
如上图,phpcms直接将pc_hash加入了我的链接后面。所以管理员点击链接后我即可接收到pc_hash,进而进行CSRF攻击。
上述POC,在管理员点击后,会给目标站创建一个用户名为test_+时间戳,密码是123123的管理员:
![061346303c3ae091aaa22acbeda4b3e9ff127d38[1]](http://7u2hr4.com1.z0.glb.clouddn.com/wp-content/uploads/2015/10/061346303c3ae091aaa22acbeda4b3e9ff127d381.png)
法二
与discuz类似,phpcms在默认安装完成后也没有修改crossdomain.xml,典型例子就是其官网
http://www.phpcms.cn/crossdomain.xml ,和官方演示站:http://v9.demo.phpcms.cn/crossdomain.xml
![06134811cdf7ee98bcd3e8c7bffd8b926e41ffbb[1]](http://7u2hr4.com1.z0.glb.clouddn.com/wp-content/uploads/2015/10/06134811cdf7ee98bcd3e8c7bffd8b926e41ffbb1.png)
那么我就可以通过flash直接获取其pc_hash。
蚁逅平台做演示:
![06135105122458408a1ea22c7aace20fd574c623[1]](http://7u2hr4.com1.z0.glb.clouddn.com/wp-content/uploads/2015/10/06135105122458408a1ea22c7aace20fd574c6231.png)
构造POC,自动添加管理员:http://mhz.pw/game/tx/phpcms1.php?domain=localphpcms.com
domain是目标域名。
localphpcms.com的管理员访问以上POC即可添加一个管理。
不多解释了。
两种方法,均可CSRF加管理。