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