目录

【juice-shop】★ DOM XSS:搜索框里的“魔法”

【juice-shop】★ DOM XSS:搜索框里的“魔法”

0x01 任务简报

💡 核心线索 (Hints)
  1. 找回显:寻找一个输入后内容会直接跳进 HTML 的字段。
  2. 看本质:别被表面迷惑,重点在于程序如何处理你的输入。
🎓 实战动作 (Action)
目标:屏幕顶部的 Search field(搜索栏)
预热:尝试搜索 owasp 并回车。
变招:尝试注入 HTML/JS 代码进行 XSS 攻击

0x02 实战:复现漏洞

1. 准备武器 (Payload) 从计分板直接复制这行“弹窗指令”备用:

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

2. 寻找靶心 根据提示,目标就在这里:

../../../../../../public/p/juice-shop-dom-xss搜索框里的魔法/assets/Pastedimage20260328172956.png

3. 触发陷阱 将 Payload 填入搜索框 -> 回车 -> Boom! 弹窗出现,漏洞确认。

../../../../../../public/p/juice-shop-dom-xss搜索框里的魔法/assets/Pastedimage20260328173107.png


0x03 源码审计:编码挑战

🔍 找到它 (Find It)

漏洞位于 第 6 行

../../../../../../public/p/juice-shop-dom-xss搜索框里的魔法/assets/Pastedimage20260328173222.png

🛠️ 修复它 (Fix It)

../../../../../../public/p/juice-shop-dom-xss搜索框里的魔法/assets/Pastedimage20260328173242.png

面对四个选项,为什么选 Fix 2

选项 处理方式 安全评价 结论
Fix 1 trustScript ❌ 依然执行 JS 换个姿势被黑
Fix 2 直接赋值 Angular 自动编码 真·修复
Fix 3 trustResourceUrl ❌ 依然加载恶意链接 掩耳盗铃
Fix 4 trustStyle ❌ 可能导致 CSS 注入 治标不治本

0x04 参考资料