一Medium级
1按照Low级操作复现
(1)按照相同的步骤完场CSRF操作 详情参考:http://t.csdn.cn/ow4ms
(2)在攻击服务器的URL地址中点击"Submit Request"按钮,提示:That request didn't look correct
2.分析问题原因
在页面中查看源码,发现这样一句话
if(stripos($_SERVER['HTTP_REFERER'],$_SERVER['SERVER_NAME'])!==false){
上述代码的作用是去Refere字段查找是否存在Server_Name(即主机IP或域名)字段的值,如果存在则满足条件。
那么为了构造一个有效的Refere,可以在攻击服务器上创建一个新的HTML页面,并命名为:change_192.168.112.188.html,内容为
<a href="http:192.168.112.188/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change">
<img src="http://192.168.112.188/dateme.gif"/>
</a>
1.最新版本的Chrome会直接去掉change_192.168.112.188.html文件名,所以建议使用更早期版本的浏览器如Firefox-Hackbar.
2.另外,有些教程里面,告诉大家直接通过Burp给Referer字段添加192.168.112.188的主机域名即可,这个是不对的,因为被攻击用户是不会去修改Referer字段的,这种情况只适用于用来做验证,而不能用于真实场景中。
3.上述问题如果基于XSS攻击依然无法防御,因为其Referer字段必然跟Server_Name是同一个主机。