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

PortSwigger靶场之CSRF vulnerability with no defenses通关秘籍

解决该 “无防御的 CSRF 漏洞” 靶场,从以下理论知识实践步骤两部分详细说明:

一、核心理论知识:什么是 CSRF?

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种利用用户已认证的身份,在用户不知情的情况下,诱导其向目标网站发送 “非预期请求” 的攻击。

1. CSRF 的攻击条件

要成功发起 CSRF 攻击,需同时满足 3 个条件:

  • 目标请求无防御机制:服务器未对请求进行 “CSRF 令牌验证”“Referer 验证”“SameSite Cookie 限制” 等防护(本题靶场即 “无防御” 场景)。
  • 请求可预测:攻击所需的请求参数(如 URL、请求方法、表单字段)是固定或可猜测的(本题 “更改邮箱” 请求仅需email参数,完全可预测)。
  • 用户处于 “已登录状态”:受害者需已登录目标网站(浏览器保存了认证 Cookie),此时攻击请求会自动携带 Cookie,服务器会误认为是用户 “主动操作”。

2. 靶场场景的 CSRF 原理

本题中 “更改邮箱” 功能存在 CSRF 漏洞,核心逻辑如下:

  1. 受害者已登录靶场账户(浏览器保存认证 Cookie);
  2. 攻击者诱导受害者访问 “包含恶意表单的 HTML 页面”;
  3. 恶意表单自动提交 “更改邮箱” 的 POST 请求,且请求会携带受害者的认证 Cookie;
  4. 服务器未验证请求合法性,误以为是受害者主动操作,最终修改其邮箱。

二、实践步骤:从漏洞验证到攻击完成

步骤 1:登录靶场账户,获取 “更改邮箱” 的请求信息

  1. 访问靶场页面,使用给定凭证 wiener:peter 登录账户;
  2. 进入 “我的账户”(My Account)页面,找到 “更改邮箱”(Change Email)功能;
  3. 打开 Burp Suite,将浏览器代理设置为 Burp 的代理(默认127.0.0.1:8080),确保 Burp 能捕获请求;
  4. 在 “更改邮箱” 表单中输入任意测试邮箱(如test123@example.com),点击 “提交”,此时 Burp 会捕获到 “更改邮箱” 的 POST 请求。

步骤 2:分析请求结构,构造 CSRF 恶意 HTML

从 Burp 捕获的请求中,提取两个关键信息:

  • 请求 URL:即 “更改邮箱” 接口的地址,格式为 https://[靶场ID].web-security-academy.net/my-account/change-email(靶场 ID 需替换为你实际的实验室 ID);
  • 请求参数:表单提交的email字段(值为你要修改的目标邮箱,注意不能与已占用邮箱重复,最终攻击需用新邮箱。
  1. 在 Burp 的 “代理历史” 中找到捕获的 “更改邮箱” 请求,右键点击;
  2. 选择 Engagement Tools → Generate CSRF PoC(生成 CSRF 攻击代码);在弹出的窗口中,勾选 Include auto-submit script(包含自动提交脚本),点击 “Regenerate”(重新生成);
  3. 下方文本框会生成完整的 HTML 代码,复制该代码(这就是恶意 HTML)。

解释如下:

<!-- CSRF恶意HTML:自动提交“更改邮箱”请求 -->
<form method="POST" action="https://[你的靶场ID].web-security-academy.net/my-account/change-email"><!-- 隐藏字段:指定要修改的目标邮箱(需替换为未占用的邮箱) --><input type="hidden" name="email" value="attacker-new-email@web-security-academy.net">
</form>
<!-- 自动提交脚本:页面加载后立即提交表单,无需用户操作 -->
<script>document.forms[0].submit(); // 提交第一个表单(即上方的恶意表单)
</script>

步骤 3:将恶意 HTML 上传到漏洞服务器

在靶场提供的“漏洞服务器”(Vulnerability Server),存放恶意 HTML(受害者访问该服务器的页面即可触发攻击):

  1. 访问靶场的 “漏洞服务器” 页面(通常在实验室页面有入口);
  2. 在服务器的 “Body”(正文)输入框中,粘贴步骤 2 生成的恶意 HTML 代码;
  3. 点击 “Store”(存储)按钮,此时恶意 HTML 已被保存到漏洞服务器,服务器会生成一个访问链接(https://exploit-0ae70051035b725780c102be0162009e.exploit-server.net/exploit)。

步骤 4:验证恶意 HTML 有效性(自测)

在正式攻击受害者前,需先验证恶意 HTML 是否能正常工作(避免因参数错误导致攻击失败):

  1. 确保你仍处于wiener:peter账户的登录状态;
  2. 点击漏洞服务器生成的 “View Exploit”(查看漏洞利用页面)链接,访问恶意 HTML 页面;
  3. 页面会自动跳转回靶场的 “我的账户” 页面,刷新后查看 “邮箱” 字段 —— 若已变为你在恶意 HTML 中设置的邮箱,说明 CSRF 攻击有效;
  4. 若测试后邮箱被修改,需重新登录wiener:peter账户,将邮箱改回原始值(避免后续测试冲突)。

步骤 5:修改邮箱,发起最终攻击

  1. 回到漏洞服务器页面,编辑 “Body” 中的恶意 HTML:将email字段的值改为一个未被占用的新邮箱(如victim-email-123@web-security-academy.net,需确保该邮箱未被其他用户使用);
  2. 点击 “Store” 保存修改后的恶意 HTML;
  3. 点击漏洞服务器页面中的 “Deliver to Victim”(交付给受害者)按钮 —— 靶场会模拟受害者访问恶意 HTML 页面;
  4. 若攻击成功,靶场会提示 “实验室已解决”(此时受害者的邮箱已被修改为你指定的新邮箱)。

三、关键注意事项

  1. 邮箱唯一性:靶场限制 “不能注册已被占用的邮箱”,因此在构造恶意 HTML 时,需使用未被任何用户(包括你自己)使用过的邮箱,否则攻击会因 “邮箱已存在” 而失败;
  2. 自动提交脚本:恶意 HTML 必须包含<script>document.forms[0].submit();</script>,否则需要用户手动点击表单按钮才能触发攻击,无法实现 “不知情触发”;
  3. 认证状态依赖:CSRF 攻击的前提是 “受害者已登录靶场”,靶场的 “Deliver to Victim” 功能会自动模拟受害者的已登录状态,无需额外操作;
  4. 请求方法匹配:“更改邮箱” 请求是 POST 方法,因此恶意表单的method必须为POST(若请求是 GET 方法,则表单需改为method="GET",参数通过 URL 传递)。

通过以上理论理解和实践步骤,即可成功利用无防御的 CSRF 漏洞,完成靶场任务。

http://www.dtcms.com/a/482564.html

相关文章:

  • 企业网站介绍网站开启伪静态需要编写什么代码
  • 玩转Docker Swarm
  • 前沿速递:AAAIICLR最新时间序列与脉冲神经网络研究精选!
  • 【C++】STL简介 + string1
  • 2025年RAS SCI2区,基于事件触发的城市无人机跟踪地面运动目标集成动态任务分配,深度解析+性能实测
  • 哈尔滨高端网站设计烟台消防建设信息网站
  • YouTubeDNN GEO优化+Create大模型:喂养调优训练策略
  • 遵义网站设计浙江网站建设公司推荐
  • 归档及压缩、重定向与管道操作和综合使用,find精确查找、find处理查找结果、vim高级使用、vimdiff多文件使用
  • Vue 开发环境搭建全指南:从工具准备到项目启动
  • 在编译opencv出现的问题
  • 如何安装 NDP48-x86-x64-AllOS-ENU.exe | .NET Framework 4.8 离线安装教程
  • 做网站意向客户如何写一个微信小程序
  • K8s 命令速查表:按场景分类,含实战示例
  • trade ai编辑器使用规范
  • 基于单片机的噪声波形检测与分贝测量仪设计
  • Redis布隆过滤器能设置过期时间吗
  • 衡阳网站定制小企网站建设解决方案
  • java微服务-尚医通-编写医院设置接口下
  • 教做网站的学校做网站公司需要准备资料
  • 《设计模式》
  • 不/可重入函数
  • 前端性能优化?
  • 快应用TypeError: The ‘compilation‘ argument must be an instance of Compilation错误
  • php网站开发实用技术练习题网站源码整站打包
  • vue前端面试题——记录一次面试当中遇到的题(7)
  • 算法9.0
  • 商丘哪里做网站网页加速器怎么开
  • 未来之窗昭和仙君(十九)商用虚拟数字金额键盘——东方仙盟筑基期
  • 每日小知识点:10.14 webpack 有几种文件指纹