【juice-shop】★ Bonus Payload:漏洞的声音

进阶玩转 XSS:不仅是弹窗,还能让漏洞在页面中“唱”出声音。

【juice-shop】★ Bonus Payload:漏洞的声音

这是 DOM XSS 挑战的一个趣味“番外篇”。如果你已经搞定了基础的弹窗挑战,这一关会让你听到漏洞的声音。


0x00 前置要求 (Prerequisites)

在开始本关之前,请确保你已经准备就绪:

  • 【juice-shop】★ DOM XSS:已掌握搜索框回显的基本原理。
  • 运行环境:确认 Juice Shop 容器处于运行状态。
  • 网络状态:Payload 引用了外部资源,需开启科学上网才能加载音频流。

0x01 任务背景

💡 挑战提示 (Hints)
  1. 确保你已经解决了 “执行 DOM XSS 攻击” 挑战。
  2. 将新的 Payload 复制粘贴到 相同的 易受攻击字段中。
  3. ⚠️ 提交前请调大电脑音量!🔊

0x02 实战引导

🎓 操作指南 (Walkthrough)
• 本关只是在搜索栏换个更有趣的 Payload。
动作:将下方的代码填入搜索框。
注意:确认扬声器音量已拉满,然后按下 Enter

0x03 准备武器 (Payload)

这是从计分板直接复制的“音乐注入”代码,它利用 <iframe> 加载了一个带自动播放功能的 SoundCloud 播放器:

1
<iframe width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/771984076&color=%23ff5500&auto_play=true&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true"></iframe>

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> 代码。
  • 效果:回车,让漏洞“唱”起来。
使用 Hugo 构建
主题 StackJimmy 设计