以两记实战案例谈谈xss组合拳
字数 1501 2025-08-12 11:33:54
XSS组合拳实战教学文档
1. 前言
XSS(跨站脚本攻击)在当今网络安全环境中虽然常见,但单独存在的XSS漏洞往往危害较低。本文将通过两个实战案例,详细介绍如何通过组合其他漏洞将XSS的危害等级提升,从而更有效地证明漏洞的实际风险。
2. Self-XSS + CSRF = 从忽略变中低危
2.1 漏洞发现
在某网站的搜索框处发现一个输入点,测试发现可以执行JavaScript代码:
<script>alert(1)</script>
成功弹窗,证明存在XSS漏洞。
2.2 问题分析
这是一个典型的Self-XSS(自跨站脚本攻击),因为:
- 攻击代码只能由用户自己在自己的浏览器中执行
- 无法直接影响到其他用户
- 危害性几乎为零
2.3 组合利用 - 引入CSRF
通过Burp Suite分析触发漏洞的请求包,发现可以利用CSRF(跨站请求伪造)来提升危害:
- 使用Burp Suite生成CSRF POC
- 构造恶意页面诱导受害者点击
- 受害者点击后会向漏洞网站发送包含XSS payload的请求
2.4 攻击流程
- 攻击者构造恶意页面,包含自动提交的CSRF表单
- 受害者访问该恶意页面
- 受害者的浏览器自动向漏洞网站发送包含XSS payload的请求
- 漏洞网站返回的响应中包含可执行的恶意脚本
- 恶意脚本在受害者浏览器中执行
2.5 危害提升
虽然仍需要受害者点击恶意链接,但组合利用后:
- 将零危害的Self-XSS提升为可能造成实际危害的漏洞
- 攻击者可窃取受害者cookie、会话信息等
- 危害等级从"忽略"提升至"中低危"
3. 存储型XSS + 越权 = 从中危变高危
3.1 漏洞发现
在某网站后台发现两处漏洞:
- 越权漏洞:通过修改username参数可以查询和修改其他用户的数据(水平越权)
- 存储型XSS:在"自我介绍"字段存在未过滤的输入,可注入恶意脚本
3.2 漏洞验证
- 注册两个测试账号A和B
- 使用账号A登录,在"自我介绍"字段插入XSS payload并提交
- 抓包修改username参数为账号B
- 使用账号B登录查看,发现XSS payload已存储
3.3 组合利用
- 攻击者使用自己的账号在"自我介绍"字段插入恶意脚本
- 通过越权漏洞将该脚本注入到目标用户的资料中
- 当目标用户查看自己的资料时,恶意脚本在其浏览器中执行
3.4 攻击流程
- 攻击者发现存储型XSS和越权漏洞
- 构造恶意脚本并注入到目标用户的数据中
- 目标用户访问自己的资料页面
- 恶意脚本自动执行,无需用户交互
3.5 危害提升
组合利用后:
- 从需要用户交互的XSS变为自动执行的XSS
- 攻击范围从单个用户扩展到所有可越权访问的用户
- 危害等级从"中危"提升至"高危"
4. 其他可能的组合方式
文中提到的其他组合思路:
- 存储型XSS + CSRF
- XSS + 点击劫持
- XSS + CORS配置错误
5. 防御建议
针对上述攻击组合的防御措施:
-
防御Self-XSS:
- 对所有用户输入进行严格的过滤和转义
- 实施内容安全策略(CSP)
- 教育用户不要随意在浏览器控制台执行未知代码
-
防御CSRF:
- 使用CSRF令牌
- 检查Referer头
- 实施SameSite Cookie属性
-
防御越权:
- 实施严格的访问控制
- 使用会话中的用户ID而非请求参数
- 对每个请求进行权限验证
-
防御存储型XSS:
- 对输出进行HTML编码
- 使用安全的API处理用户输入
- 限制特殊字符的输入
6. 总结
通过组合利用不同类型的漏洞,可以显著提升XSS的实际危害等级。安全测试人员应具备这种"组合思维",不仅能够更全面地评估漏洞风险,也能帮助开发人员理解漏洞的实际影响,从而更有效地推动安全问题修复。