组合攻击: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劫持
成功原因:
- 测试账户注销后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安全属性:
Set-Cookie: sessionid=xxxx; HttpOnly; Secure; SameSite=Strict; Path=/; Max-Age=3600- HttpOnly:防止JavaScript访问
- Secure:仅通过HTTPS传输
- SameSite:防止CSRF攻击
-
会话固定防护:
- 登录后重新生成会话ID
- 绑定用户代理和IP信息
6. 攻击扩展可能性
6.1 组合攻击变种
- 存储型XSS + Cookie劫持
- DOM型XSS + 会话固定
- HTML注入 + 钓鱼表单
6.2 自动化攻击
- 编写脚本自动收集公共计算机的cookie
- 构建恶意WiFi热点截获cookie
- 开发浏览器扩展窃取会话
7. 总结
本案例展示了HTML注入与Cookie劫持组合攻击的完整链条,强调了看似中低危漏洞组合后可能产生的高风险。防御需要多层次的安全措施,包括严格的输入输出处理、健全的会话管理机制和全面的安全头部设置。