Advent of Cyber 2025 第11天 攻略: Cross-Site Scripting (XSS) | TryHackMe

发布: (2025年12月30日 GMT+8 21:10)
4 min read
原文: Dev.to

Source: Dev.to

理解 XSS

通常网站或 Web 应用会展示来自服务器的信息。但用户也可以通过输入框提供信息。如果 Web 服务器没有正确验证用户输入,恶意代码就可能被注入,取代原本无害的文本。该恶意代码随后会执行,可能窃取凭证、破坏页面或篡改用户信息。

存储型 XSS

存储型 XSS 攻击发生在恶意代码被保存到服务器上(例如,保存在 HTML 或 JS 文件中)。
示例:domain.com/tonybennet 中包含了注入的脚本。随后访问该页面的任何人都会成为受害者,因为代码会对每位访客执行。

反射型 XSS

反射型 XSS 攻击更直接。
示例链接:facebook.com/profile/search?term=alert(1)
如果服务器在未进行过滤的情况下直接返回 term 参数,浏览器在打开链接时就会执行 alert(1)(或任何其他恶意脚本)。

防御 XSS

  • 禁用危险的渲染路径:优先使用 textContent 而不是 innerHTML,将输入视为纯文本而非 HTML。
  • 让 Cookie 对 JavaScript 不可访问:为会话 Cookie 设置 HttpOnlySecureSameSite 属性。
  • 对输入/输出进行清理并编码:当允许有限的 HTML(例如安全链接或基本格式)时,对所有用户提供的数据进行清理和编码。这样可以移除或转义可能被解释为可执行代码的元素,如 <script> 标签、事件处理器或 javascript: URL,同时保留安全的格式。

实战演练 – Advent of Cyber 2025 第 11 天(XSS)

  1. 启动目标机器

    • 如果已启用 OpenVPN,在浏览器中输入目标 IP 地址。
    • 否则,启动 TryHackMe 提供的 AttackBox 机器。

    THM 第 11 天截图

  2. 识别输入框
    页面包含两个输入框,每个都易受不同类型的 XSS 攻击。

  3. 反射型 XSS 测试
    在第一个输入框中输入以下负载:

    alert('Reflected Meow Meow')

    提交表单后会弹出提示框,确认存在漏洞。

    反射型 XSS 提示框

  4. 获取旗帜

    • 该房间非常直接:每个输入框只要提供相应的 XSS 负载,就会显示旗帜。
    • 将提供的负载复制粘贴到对应字段,即可获得旗帜。

结论

本房间演示了经典的 反射型存储型 XSS 攻击,并强调了关键的缓解技术,如正确的输出编码、安全的 DOM 操作以及安全的 Cookie 属性。练习这些概念有助于巩固安全编码实践,提高对常见 Web 漏洞的认识。

Back to Blog

相关文章

阅读更多 »