10.1.5 检测CSRF漏洞
检测CSRF攻击主要分为两种:手工检测和半自动检测。这里并不是说没有全自动的CSRF检测工具,只是全自动CSRF工具的误报率较大,故不再介绍全自动检测工具。
1.手工检测
在检测CSRF漏洞时,首先需要确定的一点是:CSRF只能通过用户的正规操作进行攻击,实际上就是劫持用户操作。所以,在检测前首先需要确定Web应用程序的所有功能,以及确定哪些操作是敏感的,比如修改密码、转账、发表留言等功能。
确定了敏感性操作后,使用这项"功能"拦截HTTP请求,比如,删除用户操作URL为:Http://www.xxser.com/delUser.action?id=1,可以猜想,此时的参数项ID应该是用户的唯一标识信息,通过此ID可以删除指定的用户。在确定参数项的意义后,就可以验证该项功能是否存在CSRF漏洞。
编写CSRP POC为:
<html> <body> <form name="myform" action="delUser.action" method="GET" > <input type="hidden" name="id" value="5" /> </form> <script> var myfrom = document.getElementById("myform"); myfrom.submit(); </script> </body> </html> |
打开这个HTML,JavaScript将会自动提交这个form表单,当提交请求后,查看ID为5的用户是否已经被删除,如果被删除,就可以确定存在CSRF漏洞。
CSR漏洞也可以理解为:服务器到底有没有执行POC的请求,如果已执行,则代表存在CSRF漏洞。
2.半自动检测
在检测CSRF漏洞时,不像SQL注射、XSS漏洞那样,有时候必须要完全通过手动测试,而CSRF测试则不需要,CSRF漏洞最常用的是半自动检测。下面介绍常用的CSRF半自动检测工具:CSRFTester。
CSRFTester的英文全称是Cross Site Request Forgery,是OWASP组织提供的一款半自动CSRF漏洞测试工具,它可以拦截所有的请求,方便渗透测试人员进行分析。
CSRFTester采用Java编写。所以,想要使用它,必须先确保计算机已经安装好Java,并可以运行Java程序。
本次测试版本为OWASP-CSRFTester-1.0,读者可以在https://www.owasp.org/index.php/ Category:OWASP_CSRFTester_Project页面下载,将下载好的CSRFTester解压,然后运行run.bat,将启动CSRFTester,如图10-7所示。
图10-7 CSRFTester主界面
CSRFTester启动后,将会在run.bat控制台中看到如下字符:
2013-6-20 16:15:09 org.owasp.webscarab.plugin.proxy.Listener listen
信息: Proxy listening on 127.0.0.1:8008
这表示CSRFTester已经在监听8008端口,如果你想要使用CSRFTester,就必须将浏览器的代理端口设置为8008端口。在"Burp Suite Proxy"一节中,已经详细描述了如何设置代理,这里不再一一阐述。
登录要检测的网站后,在测试某项功能是否存在CSRF漏洞之前,单击"Start Recording"按钮开启CSRFTester的检测工作。此时再访问网站,所有的请求URL都会被CSRFTester一一记录下来。
本文选自《Web安全深度剖析》第十章,本站经电子工业出版社和作者的授权。
版权声明:51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。