CSRF-Scanner——打造全自动检测CSRF漏洞利器

Posted 红客联盟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSRF-Scanner——打造全自动检测CSRF漏洞利器相关的知识,希望对你有一定的参考价值。


1.CSRF漏洞的介绍和危害性

CSRF-Scanner——打造全自动检测CSRF漏洞利器

1-1 csrf漏洞的攻击过程
CSRF(Cross-site request forgery跨站请求伪造)通常缩写为CSRF或者XSRF。CSRF使黑客可以冒充合法用户的身份,使合法用户在不知情的情况下触发如金融支付,发表微博等危险操作,并可直接导致蠕虫,危害巨大,从2007年至今,CSRF漏洞已连续几年位于OWASP统计的十大Web安全漏洞前列。具体利用过程如图1-1所示。
攻击通过在授权用户访问的页面中包含链接或者脚本的方式工作。举一个简单的例子,例如:用户A在自己的博客站点中写了一篇文章C,用户B在回复中贴了一张图,在贴图的URL中写入删除文章C的链接,当A看见这张图片的时候,文章C便被不知不觉间删除了。这就是CSRF攻击了。



2.业界现有CSRF检测技术



2.1业界现有的技术方案


目前对于csrf的检测,业界还没有成熟有效的工具,唯一的一款比较有名的检测工具是由开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)发布的Csrftester,该工具仅支持简单的对页面所提交的表单信息进行抓取,然后由用户人工地进行修改该数据来确定是否存在csrf漏洞,效率低下,无法适应互联网海量CGI漏洞检测的需求。


而其他的扫描器只能半自动发现,但误报极高,例如著名的awvs对csrf扫描的逻辑就比较简单,导致误报率很高。所以,业界一直缺少一个自动的和高准确率的csrf检测工具。



2.2业界现有技术的缺点
1)、不支持自动csrf漏洞检测;
2)、误报率很高。



3.创新的CSRF检测技术


针对近期外部报告的大量csrf漏洞,为快速地解决当前面临的问题,腾讯安全团队自研了一款全自动检测csrf漏洞的工具——CsrfScanner,主要检测基础数据库中的存在的漏洞。csrf产生危险的核心就是利用的他人的cookie来进行有敏感的操作,区别对待带cookie和不带cookie两种情况是扫描器的检测逻辑的关键点。CsrfScanner的检测步骤如下:


1)、不带cooie访问页面得到表单form1。
2)、带cookie访问页面得到表单form2。
3)、判断form1与form2是否为同一个表单,如果不是则转到步骤4。这是因为要取出能利用cookie的form。
4)、判断form2是否存在token、g_tk等字样,如果不存在,则转到步骤5;否则,则说明该指向的cgi有极大的可能做了csrf防御,为了降低误报率,应过滤掉。
5)、判断form2是否存在search、login等黑名单字样,如果不存在,则转到步骤6;否则,则说明该指向的cgi有极大的可能不存在敏感性,为了减低误报率,应过滤掉。
6)、判断form2是否存在保存、修改,提交等白名单字样,如果存在,则说明该form2所指向的cgi具有相当的敏感性,因此检测出该指向的cgi存在csrf漏洞。


CSRF-Scanner——打造全自动检测CSRF漏洞利器


CsrfScanner的主要是使用C++开发,使用qtwebkit库在返回的html内容中解析出尽可能多的form,即将js动态生成的form也能显示出来。


以下是CsrfScanner所检测出的漏洞及其利用截图,此为公司微博业务存在CSRF漏洞,可以导致黑客任意创建微活动并导致蠕虫:



A.用户原本是没有创建微活动的

CSRF-Scanner——打造全自动检测CSRF漏洞利器


B. CsrfScanner检测出微活动创建的cgi存在csrf漏洞


CSRF-Scanner——打造全自动检测CSRF漏洞利器


据此编写出poc,并挂在站点:http://hacker.com上


CSRF-Scanner——打造全自动检测CSRF漏洞利器


C.黑客向用户发送一个http://hacker.com的链接,用户在点击之后,便不知不觉间创建了名为http://hacker.com的微活动。


CSRF-Scanner——打造全自动检测CSRF漏洞利器


D.用户的好友看见此活动后,又去点击链接http://hacker.com,再度被欺骗性地发起同样的微活动,于是便导致微博蠕虫的泛滥,后果非常严重。


CSRF-Scanner——打造全自动检测CSRF漏洞利器



4.效果
csrf漏洞的自动检测一直是业界的技术难点,到目前也没有很好的解决方案,所以一直是我们的扫描器中未覆盖的漏洞类型。而csrf漏洞的数量在tsrc上一直占据前3位。图4-1为7月的tsrc上的漏洞情况,其中csrf有65个,占据了第一位。



自CsrfScanner在7月20日上线后,共发现数千个cgi、数百个域名存在漏洞,误报率低于20%。其中包括discuz, 微博,邮箱等多个重要业务,tsrc上每月仅有个位数的csrf漏洞,较7月的数十个外报有明显收敛。



5.后续
目前腾讯安全团队已经设计出新的csrf漏洞检测方案来进一步提升CsrfScanner的检测能力。简单的说,该方案通过使用webkit内核,hook住敏感的请求,在该请求中检测token是否存在来判断是否存在csrf漏洞,正在排期完成。该方案的增强点主要在


1)、覆盖form以外的csrf漏洞检测,提供更广的检测宽度
2)、更高精度的检测
3)、通过hook每一个敏感请求,能准确定位漏洞的原因


最后感谢各位业界安全大牛在TSRC上反馈的漏洞,每一个漏洞都鞭策着腾讯安全漏洞检测团队不断前进,让我们的漏洞检测系统走在业界的最前列。





如何把这篇好文章分享给我们的朋友?


①点击右上角→点击“查看官方账号”→点击“关注”

②打开微信→通讯录→右上角+号→查找公共号号→查找“cnhonker_huc” 并关注之。



以上是关于CSRF-Scanner——打造全自动检测CSRF漏洞利器的主要内容,如果未能解决你的问题,请参考以下文章

Deemon:自动化CSRF安全检测框架

CSRF攻击

检测到跨站请求伪造 (CSRF) 时应发回啥响应

利用BURPSUITE检测CSRF漏洞

BurpSuit之CSRF检测

CSRF检测工具-CSRFTester(较老)