反 CSRF 令牌可以防止暴力攻击吗?

信息安全 Web应用程序 攻击 蛮力 csrf
2021-08-16 15:35:23

我对蛮力攻击没有多少经验,但我想知道

假设您有一个网站www.example.com,并且您想对该登录表单进行暴力攻击,但该登录表单受到反 CSRF 令牌的保护。

是否可以在受 CSRF 保护的表单上使用暴力破解密码,因为每次都会创建一个唯一密钥?

关于 AntiForgeryToken 与验证码

上面写着可以在受 CSRF 保护的表单上自动提交,但我在想如果我尝试暴力破解而不是创建一个有效的请求。

例如 :

http://example.com/login?usrname=[brute]&password=[brute]&anti_csrf=xydh732-7vdbd

比我会使用这个请求来蛮力但是这个反 CSRF 令牌将在一个请求后过期而不是蛮力攻击如何暴力破解用户名和密码?

4个回答

简单的。您从新请求的登录页面读取反 CSRF 令牌,并且每次将令牌附加到服务器的响应中。在这种情况下,在您提交 POST 请求之前,您首先从服务器读取对 GET 请求的响应,并且新令牌将附加到它。然后你用它来生成新的蛮力 POST 请求。您可能会遇到其他问题,例如请求速率限制等,但反 CSRF 令牌本身并不能防止暴力攻击。

攻击者可以使用Burp Intruder进行暴力攻击,并使用扩展程序扩展来处理 CSRF 令牌向登录页面添加验证码并不能解决问题,它通过迫使攻击者以 1,000 个解决方案以 1 美元的价格破解验证码破解服务来提高标准。

要回答您的问题,验证码和 CSRF 令牌都不是适当的防御措施。一个安全的登录系统应该使用多重身份验证

CRSF 攻击通过诱骗用户(通常已经登录)执行为攻击者末端提供服务的请求(通过诸如 XSS 之类的方法让他单击超链接)来工作。

反 CSRF 令牌通过要求将不可预测的值(在较早的页面上提供给用户)作为敏感请求的一部分发送来保护敏感请求。攻击者无法知道这个值是多少,因此他无法正确伪造请求。

不过,这不会对登录页面产生任何实际影响。在大多数正常情况下,每个人都可以访问登录页面。即使登录表单的 POST 请求需要登录网页发送的 CSRF 令牌,也没有什么可以阻止攻击者重复访问登录页面,每次都获得一个新的、有效的、反 CSRF。

CSRF 上已经有很多很好的答案,所以我想我会通过提供一种替代方法来防止此类攻击来扩展它们。如果您使用的是 Apache,我建议您使用 mod_evasive,因为这将防止暴力攻击和 DOS 攻击。如果您正在运行 IIS,则可以使用动态 IP 限制扩展。您可以在 Nginx 中配置规则,或者使用 Web 应用程序防火墙将是一种更复杂的方法。希望这可以帮助。