漏洞原理---CSRF漏洞

# CSRF 漏洞

# 1、漏洞原理

  CSRF 简称为跨站请求攻击,是攻击者通过一些技术手段欺骗用户的浏览器去访问自己曾经认证过的网站并执行一些操作 (如:发邮件,发消息,转账,购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了 web 中用户身份认证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

  换言之跨站请求攻击发生点在攻击者这里,攻击者首先构造一个带有攻击代码链接,将这个链接伪装好分享给受害者,受害者在点开这个链接之后,浏览器就会将受害者的 cookie 信息与攻击代码一起发送给服务器,此时服务器会认为这是来自受害者的攻击。在这个过程中攻击者只知道受害者将这个链接点了还是没点,关于受害者的信息攻击者一无所知。

# 2、漏洞利用条件

  • 1. 被害用户已经完成身份认证
  • 2. 新请求的提交不需要重新身份认证或确认机制
  • 3. 攻击者必须了解 Web APP 请求的参数构造
  • 4. 引诱用户触发攻击的指令(社工)

# 3、防御绕过

  • 删除 CSRFTOKEN
  • 将 POST 改为 GET
  • CSRFTOKEN 未和身份凭证绑定

# 4、加固

  • 二次密码验证

  • Referer 来源验证

    • Referer:获取的是上一条历史记录的 url
  • 添加 CSRFTOKEN

    • 用户每次访问关键页面时,服务端通过 cookie 下发一个暗号 “-csrftoken” 是一个随机生成的字符串
  • 限制 cookie 同源

  • 在 HTTP 头中自定义属性并验证。

# 5、测试功能点

  • 密码修改
  • 点赞
  • 转账
  • 注销
  • 删除

#


漏洞原理---CSRF漏洞
https://rofgd.github.io/2022/03/14/漏洞原理---CSRF漏洞/
作者
ReadPond
发布于
2022年3月14日
许可协议