【juice-shop】★ Bonus Payload:漏洞的声音
这是 DOM XSS 挑战的一个趣味“番外篇”。如果你已经搞定了基础的弹窗挑战,这一关会让你听到漏洞的声音。
0x00 前置要求 (Prerequisites)
在开始本关之前,请确保你已经准备就绪:
- 【juice-shop】★ DOM XSS:已掌握搜索框回显的基本原理。
- 运行环境:确认 Juice Shop 容器处于运行状态。
- 网络状态:Payload 引用了外部资源,需开启科学上网才能加载音频流。
0x01 任务背景
💡 挑战提示 (Hints)
- 确保你已经解决了 “执行 DOM XSS 攻击” 挑战。
- 将新的 Payload 复制粘贴到 相同的 易受攻击字段中。
- ⚠️ 提交前请调大电脑音量!🔊
0x02 实战引导
🎓 操作指南 (Walkthrough)• 本关只是在搜索栏换个更有趣的 Payload。
• 动作:将下方的代码填入搜索框。
• 注意:确认扬声器音量已拉满,然后按下 Enter。
0x03 准备武器 (Payload)
这是从计分板直接复制的“音乐注入”代码,它利用 <iframe> 加载了一个带自动播放功能的 SoundCloud 播放器:
|
|
0x04 漏洞复现
和之前的 DOM XSS 操作完全一致。在搜索框中粘贴 Payload 并执行:

注入成功后,页面会嵌入播放器并自动播放音频:

0x05 为什么这能成功?
- 原理一致:依然是利用了之前发现的 DOM XSS 漏洞点。
- 不只是弹窗:XSS 的威力远超
alert()。通过注入<iframe>,攻击者可以强行在用户浏览器里加载任何第三方内容,如自动播放的音频、钓鱼表单或恶意广告。 - 关键属性:注意代码中的
allow="autoplay",这是绕过浏览器策略、让注入内容自动发出声音的关键权限。
0x06 编码挑战 (Coding Challenge)
🔍 找到它 (Find It)
漏洞依然在 第 6 行:

🛠️ 修复它 (Fix It)

原理回顾:由于这里直接使用了
bypassSecurityTrustHtml,导致 Angular 信任并渲染了恶意的<iframe>标签。修复方案与 DOM XSS 篇一致:删除该函数,让 Angular 默认执行转义处理。
💡 极简总结 (Scan-Friendly)
- 目标:老位置(搜索框)。
- 手段:粘贴复杂的
<iframe>代码。 - 效果:回车,让漏洞“唱”起来。