查看: 2049|回复: 25

基于发起源判断CSRF攻击的方法

[复制链接]
发表于 2013-1-31 11:50:35 | 显示全部楼层 |阅读模式

当我们要利用一个CSRF漏洞去攻击的时候,常会在第三方站点使用资源请求的方式加载存在漏洞的CSRF接口,当用户访问这个页面的时候就会偷偷的发送http request到漏洞站点,即攻击成功。实例利用代码:

<img src="http://www.woyigui.cn/index.php?csrf=woyigui">

使用资源发送http request的方法很多,带上认证信息的属性如:SRC、background等,标签可使用img、script、css等。

正常使用html标签去加载所需要的资源的时候,对应的类型是一致的,如:
script的SRC对应:application/javascript
img的SRC对应:img/jpeg、img/png
任意标签的background-image对应的是:img/jpeg、img/png

和正常加载相反的是:我们进行CSRF攻击的时候请求的接口正好返回的 text/html 类型,这就与正常的请求有区别了。
我们看一下正常与CSRF攻击在浏览器中的发起源的区别:

//img src CSRF 对比<img src="/Article/UploadPic/2013-1/2013130123634107.gif" /><img src="http://www.woyigui.cn/index.php?csrf=woyigui" /> //script src CSRF 对比<script src="http://www.baidu.com/js/bdsug.js?v=1.0.3.0"></script><script src="http://www.woyigui.cn/index.php?csrf=woyigui"></script>

看一下他们的发起源信息:

可以看到,区别是有的,script、img去请求的http api却是text/html的,这是有问题的,可能就是CSRF攻击。
当然有些站点常常就是请求一些text/html的类型,如callback回调函数api等。如:

//误报<script src="http://www.woyigui.cn/my/alert.html"></script>

基于如上的对比与分析,我们可以在浏览器中这样做:
1、如果当前页面中的资源请求标签请求的是非正常类型资源,进行提示用户,或者阻断此请求;
2、为了解决误报,可配合其他防范策略,如:第三方域为黑名单等。

此文在刚逛物美想到的,如有缺陷,请找我交流,感谢。


发表于 2013-2-6 22:02:30 | 显示全部楼层
女人啊真是那句话~~~无理占三分~~忘记怎么说了 呵呵 ~~你帮我想想  
发表于 2013-2-15 11:03:54 | 显示全部楼层
我帮你 喝喝  
发表于 2014-10-26 12:06:05 | 显示全部楼层
一山不能容二虎,除非一公和一母!  
发表于 2014-11-5 20:41:31 | 显示全部楼层
不错不错.,..我喜欢  
发表于 2014-11-18 11:16:00 | 显示全部楼层
看贴回复是好习惯  
发表于 2014-12-6 06:17:25 | 显示全部楼层
这个贴不错!!!!!  
发表于 2014-12-29 10:17:29 | 显示全部楼层
哈哈 我支持你
发表于 2015-1-29 08:02:37 | 显示全部楼层
不管你信不信,反正我信  
发表于 2015-3-3 08:52:51 | 显示全部楼层
呵呵,支持一下哈  
高级模式
B Color Image Link Quote Code Smilies

本版积分规则