跨站点请求伪造 (CSRF)

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

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

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。例如,CAPTCHA。