免责声明
传播、利用本博客所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本博客及作者不为此承担任何责任,一旦造成后果请自行承担!谢谢!
CSRF跨站请求伪造
漏洞描述
CSRF(跨站请求伪造)CSRF是攻击者通过伪造用户浏览器的请求,欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操 作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。
Web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的
漏洞原理
简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操 作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。
- 用户访问可信网站并进行登录,登录后生成Cookie保存到本地浏览器
- 用户在保持登录的状态下,又访问了黑客网站
- 黑客网站在用户不知情的情况下向可信网站发送一条请求,请求修改用户User的密码
- 该条请求发送后可信网站会以存储在浏览器中,用户的Cookie处理该请求,导致用户密码被修改
检测漏洞
- 一般在用户密码修改、信息修改、添加账号、发布文章等一些敏感操作位置,如果没有二次校验
(图像验证码、短信验证码、原密码)那么就可以尝试检测。 - 检测CSRF漏洞是一个特别简单的工作,简单的方式就是抓取一个正常的请求包,去掉referer字段
再重新提交,如果提交是有效的,那么基本上就是存在CSRF漏洞 - Burp插件CSRF POC
- 工具检测:CSRFTester、CSRF Request Builder等
防范CSRF漏洞的方法包括:
- 使用随机Token验证:在每个表单中嵌入一个随机生成的Token,并在后端对Token进行验证。由于攻击者无法知道正确的Token值,因此无法伪造合法的请求。
- 检查Referer字段:在后端对请求的Referer字段进行检查,确保请求来源于合法的网站。
- 使用验证码:要求用户在执行重要操作时输入验证码,以验证用户的真实意图。
- 使用SameSite属性:在Cookie中设置SameSite属性为Strict或Lax,限制第三方网站发送的跨域请求。
在线练习平台
https://vulfocus.cn/#/dashboard