如何有效检测并防范CSRF破绽?
- 行业动态
- 2025-01-27
- 4
### ,,CSRF(跨站请求伪造)破绽是一种严重的Web安全破绽,攻击者利用用户已认证的身份在不知情的情况下执行反面操作。本文介绍了CSRF的攻击原理、分类及检测方法,包括抓包分析Referer字段和检查CSRF Token等,并提出了相应的防御措施。
一、手工检测
1、确定敏感操作:首先要明确Web应用程序中哪些操作属于敏感操作,例如修改密码、转账、发表留言等。
2、抓取数据包:使用工具如BurpSuite等对重要操作进行抓包,以删除用户数据为例,在管理员处添加用户后,抓取该操作的数据包。
3、编写CSRF POC:根据抓取到的数据包编写CSRF攻击的POC(Proof of Concept,概念验证)代码,比如以下示例代码:
<html>
<body>
<script>history.pushState(”, ”, ‘/’)</script>
<form action="http://192.168.146.148/cms/admin/user.action.php" method="POST">
<input type="hidden" name="act" value="delete" />
<input type="hidden" name="userid" value="31" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>
4、提交POC并查看结果:将编写好的POC代码保存为HTML文件,通过浏览器访问该文件,若成功执行了相应操作,则可能存在CSRF破绽。
二、半自动检测
1、使用BurpSuite:BurpSuite自带CSRF破绽测试模块,在界面点击右键选择“Generate CSRF PoC”功能,会自动生成测试页面,点击“Test in browser”按钮得到URL地址,打开该URL,点击“Submit request”按钮即可测试CSRF是否成功。
2、使用CSRFTester:这是一个老牌工具,由OWASP组织出品,首先设置浏览器代理为127.0.0.1:8008,然后选择一个payload类型,如iFrame,该工具会自动生成一个html文件,将其传到自己的服务器上,发给用户浏览,就可以进行CSRF破绽验证。
三、Referer校验绕过
1、判断Referer校验是否完善:如果经过上述两款工具测试,CSRF均未成功,可能是程序对Referer请求头做了判断,此时可以尝试对Referer值进行变换,如假设目标网站是http://test.com.cn,攻击者的域名是http://xxxxxx.com,可尝试将Referer值变为http://xxxxxx.com/test.com.cn、http://test.com.cn.xxxxxx.com等,但可能无法绕过Referer的校验。
2、置空Referer的方法:当Http请求没有设置Referer头时,CSRF校验可能被绕过,可以利用data:协议或在html页面中添加<meta>标签等方式将Referer请求头置空。
<html>
<body>
<iframe src="data:text/html;base64,PGZvcm0gbWV0aG9kPXBvc3QgYWN0aW9uPWh0dHA6Ly93d3cuaGV4aWUuY29tL2Q+PGlucHV0IHR5cGU9dGV4dCBuYW1lPSdpZCcgdmFsdWU9JzEyMycvPjwvZm9ybT48c2NyaXB0PmRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOzwvc2NyaXB0Pgo">
</body>
</html>
或者在html页面中添加<meta name="referer" content="never">。
四、相关问答FAQs
1、什么是CSRF破绽?:CSRF破绽即跨站请求伪造破绽,是一种常见的网络安全破绽,攻击者利用用户已经登录的凭证,诱使用户在不知情的情况下执行反面操作,例如更改密码、发送消息或执行其他敏感操作。
2、如何防范CSRF破绽?:可以采取多种措施来防范CSRF破绽,如增加二次验证机制,在敏感操作时再次验证用户口令或验证码;校验HTTP Referer字段,确保请求来自合法的来源;增加Token参数进行校验,在敏感操作的参数中加入随机的Token参数,每次请求都不相同,使攻击者难以伪造合法请求。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/400713.html