跨站请求伪造 (CSRF)



CSRF 攻击迫使经过身份验证的用户(受害者)发送伪造的 HTTP 请求,包括受害者的会话 Cookie 到易受攻击的 Web 应用程序,这允许攻击者强制受害者的浏览器生成请求,使易受攻击的应用程序将其视为来自受害者的合法请求。

让我们借助简单的图表了解此缺陷的威胁代理、攻击媒介、安全弱点、技术影响和业务影响。

csrf

示例

这是一个经典的 CSRF 示例:

步骤 1 - 假设易受攻击的应用程序以纯文本形式发送状态更改请求,而没有任何加密。

http://bankx.com/app?action=transferFund&amount=3500&destinationAccount=4673243243

步骤 2 - 现在,黑客构建了一个请求,通过将请求嵌入到存储在攻击者控制下的各种站点上的图像中,将资金从受害者的帐户转移到攻击者的帐户 -

<img src = "http://bankx.com/app?action=transferFunds&amount=14000&destinationAccount=attackersAcct#" 
   width = "0" height = "0" />

动手实践

步骤 1 - 让我们通过将 Java 脚本嵌入到图像中来执行 CSRF 伪造。问题的快照如下所示。

csrf1

步骤 2 - 现在我们需要将转账模拟成一个 1x1 的图像,并让受害者点击它。

csrf2

步骤 3 - 提交消息后,消息将如下所示。

csrf3

步骤 4 - 现在,如果受害者点击以下 URL,则执行转账操作,这可以通过使用 Burp Suite 拦截用户操作来找到。我们能够通过在 Get 消息中发现它来查看转账,如下所示:

csrf3

步骤 5 - 现在,点击刷新后,将显示课程完成标记。

预防机制

  • 可以通过在隐藏字段中创建唯一的令牌来避免 CSRF,该令牌将发送在 HTTP 请求的主体中,而不是在更容易暴露的 URL 中。

  • 强制用户重新进行身份验证或证明他们是用户以保护 CSRF。例如,验证码。

广告

© . All rights reserved.