【juice-shop】★★★ Client-side XSS Protection:绕过客户端防护实施存储型 XSS

通过 Burp 拦截注册请求,将 XSS 有效负载注入 email 字段绕过客户端验证,当管理员访问用户管理页面时触发弹窗。

【juice-shop】★★★ Client-side XSS Protection:绕过客户端防护实施存储型 XSS

0x01 任务简报

💡 提示 (Hints)
1. 果汁店表单中仅有部分输入字段会对输入内容进行验证。
2. 其中更少的部分会以某种方式被持久化,使得其内容能在另一个屏幕上显示。
3. 绕过客户端安全通常可通过两种方式实现:在客户端禁用安全机制(例如通过操作 DOM 树),或完全忽略安全机制而直接与后端交互。

0x02 实战:复现漏洞

这题我愿将其称为闪击管理员(

🔍 第一步:抓取注册请求

打开 Burp Suite,进行一次正常的用户注册,捕获注册请求包。

正常注册请求

💉 第二步:将 XSS 有效负载注入 email 字段

将请求发送到 Repeater,把 email 字段的值替换为 XSS 有效负载:

1
<iframe src='javascript:alert(`xss`)'>

前端对 email 字段有格式校验,但直接与后端交互可以绕过客户端的验证限制。

注入 XSS 有效负载

发送请求,成功创建含有 XSS 有效负载的新用户。

🔑 第三步:以管理员身份验证效果

我们看看管理员那边发生了什么,使用 SQL 注入快速登录管理员账户,访问管理后台:

1
http://127.0.0.1:3000/#/administration

管理员登录

💥 第四步:触发 XSS

管理员访问用户管理页面时,XSS 弹窗立即触发。翻页至含有恶意 email 的用户时再次弹窗,硬控管理员数秒。

XSS 弹窗触发

✅ 第五步:完成挑战

存储型 XSS 成功触发,挑战完成。


参考资料

使用 Hugo 构建
主题 StackJimmy 设计