跨站请求伪造(CSRF)
跨站请求伪造(CSRF)
CSRF 攻击迫使经过身份验证的用户(受害者)向易受攻击的 Web 应用程序发送伪造的 HTTP 请求,包括受害者的会话 cookie,这允许攻击者强制受害者的浏览器生成请求,以便易受攻击的应用程序将其视为来自受害者。
让我们借助简单的图表了解此漏洞的威胁代理、攻击向量、安全弱点、技术影响和业务影响。
例子
这是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 伪造。下面列出了问题的快照。
第 2 步– 现在我们需要将传输模拟为 1×1 图像,并让受害者点击相同的图像。
步骤 3 – 提交消息后,该消息将如下突出显示。
第 4 步– 现在,如果受害者单击以下 URL,则执行传输,可以发现使用 burp suite 拦截用户操作。我们可以通过在 Get 消息中发现转移来查看转移,如下所示 –
第 5 步– 现在单击刷新后,将显示课程完成标记。
预防机制
-
可以通过在隐藏字段中创建唯一令牌来避免 CSRF,该令牌将在 HTTP 请求正文中发送,而不是在更容易暴露的 URL 中发送。
-
强制用户重新认证或证明他们是用户以保护CSRF。例如,验证码。