组合攻击:html注入与Cookie劫持
字数 1407 2025-08-27 12:33:49

HTML注入与Cookie劫持组合攻击技术分析

1. 漏洞概述

1.1 HTML注入漏洞

HTML注入是一种注入类漏洞,当攻击者能够控制输入点并将任意HTML代码注入易受攻击的网页时发生。这种漏洞可能导致:

  • 用户会话cookie泄露
  • 页面内容被篡改
  • 冒充受害者身份

1.2 Cookie劫持漏洞

会话劫持攻击利用Web会话控制机制(通常由会话令牌管理)的缺陷。关键问题在于:

  • 会话令牌在注销后未失效
  • Cookie长期有效(案例中为一年)
  • 可通过简单工具复制和使用

2. 漏洞发现过程

2.1 初始测试

  • 对每个输入点进行手动测试
  • 发现输入验证不足
  • 需要登录账户才能激活HTML代码

2.2 第一次尝试:CSRF登录攻击

<html>
<!-- CSRF Login PoC -->
<body>
<script>history.pushState</script>
<form action="https://private-company.com/account/signin" method="POST">
    <input type="hidden" name="customerlogin" value="attacker-email@gmail.com" />
    <input type="hidden" name="customerpassword" value="attacker-password" />
    <input type="submit" value="Submit request" />
</form>
</body>
</html>

失败原因:公司已通过Token机制处理客户端登录问题

2.3 第二次尝试:Cookie劫持

成功原因:

  1. 测试账户注销后cookie仍存储在浏览器中
  2. 管理会话的cookie有效期一年
  3. 使用"Edit This Cookie"工具复制cookie
  4. 在Mozilla Firefox中手动添加复制的cookie
  5. 成功重定向到受害者个人资料

3. 组合攻击实施

3.1 确认HTML注入漏洞

  1. 使用Burp Suite拦截请求
  2. 在"customer_name"参数中插入H1标签
  3. 向自己账户发送密码恢复邮件
  4. 成功确认漏洞存在

3.2 攻击场景构建

  1. 局域网环境攻击

    • 受害者在局域网登录账户后注销
    • 攻击者访问同一公共计算机
    • 捕获cookie并登录受害者账户
  2. HTML注入配合钓鱼

    • 攻击者在易受攻击字段插入自定义HTML代码
    • 受害者重新访问账户时看到定制页面
    • 结合网络钓鱼技术提高成功率

4. 漏洞根本原因分析

4.1 HTML注入原因

  • "customer_name"参数未对HTML标签进行过滤
  • 系统直接渲染用户输入的HTML内容

4.2 Cookie劫持原因

  1. 会话管理不当:

    • 注销操作未使会话token失效
    • 长期有效的cookie(一年)
  2. 缺乏安全措施:

    • 未实现cookie的HttpOnly标志
    • 未使用Secure标志(仅限HTTPS)
    • 缺少SameSite属性防护

5. 防御措施

5.1 防止HTML注入

  1. 输入验证:

    • 对所有用户输入进行严格过滤
    • 使用白名单机制允许特定字符
  2. 输出编码:

    • 对所有动态内容进行HTML实体编码
    • 使用安全的模板引擎
  3. 内容安全策略(CSP):

    • 实施严格的CSP策略
    • 限制内联脚本和外部资源

5.2 防止Cookie劫持

  1. 会话管理:

    • 注销时立即使会话token失效
    • 设置合理的会话超时
  2. Cookie安全属性:

    Set-Cookie: sessionid=xxxx; HttpOnly; Secure; SameSite=Strict; Path=/; Max-Age=3600
    
    • HttpOnly:防止JavaScript访问
    • Secure:仅通过HTTPS传输
    • SameSite:防止CSRF攻击
  3. 会话固定防护:

    • 登录后重新生成会话ID
    • 绑定用户代理和IP信息

6. 攻击扩展可能性

6.1 组合攻击变种

  1. 存储型XSS + Cookie劫持
  2. DOM型XSS + 会话固定
  3. HTML注入 + 钓鱼表单

6.2 自动化攻击

  1. 编写脚本自动收集公共计算机的cookie
  2. 构建恶意WiFi热点截获cookie
  3. 开发浏览器扩展窃取会话

7. 总结

本案例展示了HTML注入与Cookie劫持组合攻击的完整链条,强调了看似中低危漏洞组合后可能产生的高风险。防御需要多层次的安全措施,包括严格的输入输出处理、健全的会话管理机制和全面的安全头部设置。

HTML注入与Cookie劫持组合攻击技术分析 1. 漏洞概述 1.1 HTML注入漏洞 HTML注入是一种注入类漏洞,当攻击者能够控制输入点并将任意HTML代码注入易受攻击的网页时发生。这种漏洞可能导致: 用户会话cookie泄露 页面内容被篡改 冒充受害者身份 1.2 Cookie劫持漏洞 会话劫持攻击利用Web会话控制机制(通常由会话令牌管理)的缺陷。关键问题在于: 会话令牌在注销后未失效 Cookie长期有效(案例中为一年) 可通过简单工具复制和使用 2. 漏洞发现过程 2.1 初始测试 对每个输入点进行手动测试 发现输入验证不足 需要登录账户才能激活HTML代码 2.2 第一次尝试:CSRF登录攻击 失败原因 :公司已通过Token机制处理客户端登录问题 2.3 第二次尝试:Cookie劫持 成功原因: 测试账户注销后cookie仍存储在浏览器中 管理会话的cookie有效期一年 使用"Edit This Cookie"工具复制cookie 在Mozilla Firefox中手动添加复制的cookie 成功重定向到受害者个人资料 3. 组合攻击实施 3.1 确认HTML注入漏洞 使用Burp Suite拦截请求 在"customer_ name"参数中插入H1标签 向自己账户发送密码恢复邮件 成功确认漏洞存在 3.2 攻击场景构建 局域网环境攻击 : 受害者在局域网登录账户后注销 攻击者访问同一公共计算机 捕获cookie并登录受害者账户 HTML注入配合钓鱼 : 攻击者在易受攻击字段插入自定义HTML代码 受害者重新访问账户时看到定制页面 结合网络钓鱼技术提高成功率 4. 漏洞根本原因分析 4.1 HTML注入原因 "customer_ name"参数未对HTML标签进行过滤 系统直接渲染用户输入的HTML内容 4.2 Cookie劫持原因 会话管理不当: 注销操作未使会话token失效 长期有效的cookie(一年) 缺乏安全措施: 未实现cookie的HttpOnly标志 未使用Secure标志(仅限HTTPS) 缺少SameSite属性防护 5. 防御措施 5.1 防止HTML注入 输入验证: 对所有用户输入进行严格过滤 使用白名单机制允许特定字符 输出编码: 对所有动态内容进行HTML实体编码 使用安全的模板引擎 内容安全策略(CSP): 实施严格的CSP策略 限制内联脚本和外部资源 5.2 防止Cookie劫持 会话管理: 注销时立即使会话token失效 设置合理的会话超时 Cookie安全属性: HttpOnly:防止JavaScript访问 Secure:仅通过HTTPS传输 SameSite:防止CSRF攻击 会话固定防护: 登录后重新生成会话ID 绑定用户代理和IP信息 6. 攻击扩展可能性 6.1 组合攻击变种 存储型XSS + Cookie劫持 DOM型XSS + 会话固定 HTML注入 + 钓鱼表单 6.2 自动化攻击 编写脚本自动收集公共计算机的cookie 构建恶意WiFi热点截获cookie 开发浏览器扩展窃取会话 7. 总结 本案例展示了HTML注入与Cookie劫持组合攻击的完整链条,强调了看似中低危漏洞组合后可能产生的高风险。防御需要多层次的安全措施,包括严格的输入输出处理、健全的会话管理机制和全面的安全头部设置。