1.CSRF简介
CSRF的全名是Cross Site Request Forgery(跨站请求伪造),是一种诱使用户访问一个页面,然后盗用该用户身份在第三方站点里执行一次操作的攻击手段,其本质原因在于重要操作的所有参数都是可以被攻击者猜测到的。
2.CSRF检测
2.1 收集CSRF有利用价值的点(需要权限的)
csrf由于其利用的特殊性,并不需要将整个站点的所有数据包均测试一遍,只需测试有csrf价值的点(需要权限的即时性的操作)即可
如:转账、购物、修改密码、删除、发布内容...
2.2 GET类型的CSRF检测
如果有token等验证参数,先去掉参数尝试能否正常请求。如果可以,即存在CSRF漏洞。
2.3 POST类型的CSRF检测
如果有token等验证参数,先去掉参数尝试能否正常请求。如果可以,再去掉referer参数的内容,如果仍然可以,说明存在CSRF漏洞,可以利用构造外部form表单的形式,实现攻击。如果直接去掉referer参数请求失败,这种还可以继续验证对referer的判断是否严格,是否可以绕过。
3.CSRF实例
工具:burpsuite中Engagement tools的Generate CSRF PoC模块
3.1 抓取修改密码的数据包,发送到Repeater模块
3.2 右击选中Engagement tools,CSRF POC
3.3 把构造好的html代码复制出来,保存为html格式
3.4 用浏览器打开保存的html文件,点击Submit request按钮
3.5 修改成功
4.CSRF防御
4.1 验证码:验证码是对抗CSRF最简介有效的防御手段,但处于用户体验考虑,网站不能给所有的操作都加上验证码。
4.2 referer:用于检查请求是否来自合法的源,referer的缺陷在于,服务器并非什么时候都可以取到referer,很多用户处于隐私保护的考虑,限制了referer的发送
4.3 token:产生一个随机数,使攻击者无法构造一个完整的URL。
5.学习链接
先知论坛:https://xz.aliyun.com/t/6128
红日安全:https://github.com/hongriSec