局外人

绕过 CSRF 防御的方法有哪些

分享
  • 安全侠 2 等保中级测评师 CICSA 官方采纳
    安全侠2 等保中级测评师 CICSA
    官方采纳

    绕过CSRF防御措施可以:

    1.点击劫持

    在同一个功能端点利用点击劫持会绕过所有CSRF防御。因为从技术上讲,请求确实来自合法站点,如果易受攻击的端点所在页面容易遭受点击劫持攻击,那么所有的CSRF保护将变得没有效果,攻击者可以任意执行CSRF攻击。

    2.更改请求方法

    另外值得一试的方法就是更改请求的方法。如果要伪造的敏感请求是通过POST方法发送的,那么尝试将其转换为GET请求。如果操作时通过GET方法发送的,那么尝试转换为POST方法。应用程序可能仍然执行操作,且通常没有任何保护机制。

    例如,如下请求:

    POST /change_password POST body: new_password=qwerty

    可以被改写成

    GET /change_password?new_password=qwerty

    删除token参数或发送空token

    不发送token也可以正常请求数据是因为这种逻辑错误在应用程序中非常常见:应用程序有时会在token存在的时候或者token参数不为空的时候检查token的有效性。这种情况下,如果一个请求不包含token或者token值为空,那么也是有可能绕过CSRF的防御的。

    例如,合法请求如下

    POST /change_password POST body: new_password=qwerty &csrf_tok=871caef0757a4ac9691aceb9aad8b65b

    那么实施这种请求:

    POST /change_password POST body: new_password=qwerty

    或这种:

    POST /change_password POST body: new_password=qwerty&csrf_tok=

    移除referer字段

    和发送一个空token值相同,有时候你只需简单地移除referer字段就可以绕过CSRF防御。你可以添加如下meta标签到存在漏洞的页面。

    <meta name =“referrer”content =“no-referrer”>

    应用程序可能只是在发送后才会验证,这种情况下你可以绕过其CSRF防御。

    3.绕过正则表达式

    如果referer检查是基于白名单的,你可以尝试绕过验证URL的正则表达式。例如,你可以尝试在referer的URL中将受害者域名置于二级域名区域或者URL目录区域。

    如果一个站点在referer字段检查“bank.com”字段,那么“bank.com.attacker.com”或”attakcer.com/bank.com” 可能可以绕过这种检测。

  • Ann 2 等保高级测评师 NISP 官方采纳
    Ann2 等保高级测评师 NISP
    官方采纳

    绕过 CSRF 防御的方法有以下这些:

    • 增加Token验证:对关键操作增加Token参数,token必须随机,每次都不一样;

    • 关于安全的会话管理,避免会话被利用:不要在客户端保存敏感信息,比如身份验证信息。退出、关闭浏览器时的会话过期机制,设置会话过机制,比如15分钟无操作,则自动登录超时;

    • 访问控制安全管理:敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧密码。建议敏感信息的修改使用POST,而不是GET,建议通过HTTP头部中的REFERER来限制原页面;

    • 增加验证码:一般在登录主要防暴力破解,也可以用在其他重要信息操作的表单中,但是需要考虑可用性;

    • 验证HTTP Referer字段:HTTP头中的Referer字段记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,而如果黑客要对其实施CSRF攻击,他一般只能在他自己的网站构造请求。因此,可以通过验证Referer值来防御CSRF攻击。

    • 在HTTP头中自定义属性并验证:这种方法也是使用token并进行验证,这里并不是把token以参数的形式置于HTTP请求中,而是把它放到HTTP头中自定义的属性里。通过XMLHttpRequest这个类,可以一次性给所有该类请求加上csrftoken这个HTTP头属性,并把token值放入其中。通过XMLHttpRequest请求的地址不会被记录到浏览器的地址栏,也不用担心token会透过Referer泄露到其他网站中去。

  • 写回答