跨站请求伪造(CSRF)
CSRF攻击迫使经过身份验证的用户(受害者)发送伪造的HTTP请求,包括受害者的会话cookie到易受攻击的Web应用程序,这允许攻击者强制受害者的浏览器生成请求,以便易受攻击的应用程序感知来自受害者。
我们下面来了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响。
- 威胁代理 - 任何人都可以将内容加载到用户的浏览器中,从而迫使他们向您的网站提交请求。
- 攻击者的方法 - 攻击者创建伪造的http请求并欺骗受害者通过图像标签,xss或其他许多技术提交它们。
- 安全弱点 - CSRF利用了大多数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伪造。下面列出了问题。
第2步 - 现在需要模拟转换为1x1
图像并让受害者点击相同的图像。
第3步 - 提交消息后,消息将显示如下显示。
第4步 - 现在,如果受害者点击以下URL,则执行传输,可以使用burp套件拦截用户操作。可以通过在Get消息中找到转移来查看转移,如下所示 -
第5步 - 现在点击刷新后,将显示课程完成标记。
预防机制
- 可以通过在隐藏字段中创建唯一标记来避免CSRF,该标记将在HTTP请求的主体中发送,而不是在更容易暴露的URL中发送。
- 强制用户重新验证或证明他们是用户以保护CSRF。例如:验证码图。