挖洞经验 | Mail.ru价值$1000的Cookie型XSS
字数 1130 2025-08-15 21:31:42
Mail.ru Cookie型XSS漏洞分析与利用教学文档
漏洞概述
本教学文档详细分析Mail.ru网站发现的Cookie型XSS漏洞,该漏洞通过HTTP Cookie中的"gp"参数实现跨站脚本攻击,最终获得$1000的漏洞赏金。
漏洞发现环境
- 目标网站: https://mail.ru (俄罗斯最大互联网公司)
- 测试工具:
- Burpsuite (用于拦截和分析HTTP请求/响应)
- Param Miner插件 (由James Kettle开发,用于发现隐藏参数)
- Firefox浏览器 (用于测试XSS效果)
漏洞发现过程
1. 参数发现
使用Burpsuite配合Param Miner插件扫描请求头,发现一个名为"gp"的Cookie参数,该参数的值会在响应消息中返回,存在XSS潜在风险。
2. 初步测试
尝试在Cookie的gp参数中插入基本XSS Payload:
<script>alert(document.cookie)</script>
但未能成功触发弹窗。
3. 深入分析
观察响应消息结构,发现网站使用了<script id="script:globals">标签来包含全局变量,其中GP参数的值被反射在该脚本块内。
4. 成功Payload构造
通过闭合现有script标签的方式构造有效Payload:
</script><script>alert(document.domain)</script>
成功触发XSS漏洞,执行JavaScript代码。
技术细节
请求示例
GET / HTTP/1.1
Host: mail.ru
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: gp=PAYLOAD_HERE;
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
响应结构
<script id="script:globals">
var mr = {
// 其他变量...
GP: "PAYLOAD_REFLECTED_HERE",
// 其他变量...
}
</script>
漏洞利用场景
虽然最初被认为是Self-XSS(仅影响攻击者自身),但存在以下潜在利用方式:
- 中间人攻击: 通过拦截和修改用户Cookie实现XSS攻击
- 结合其他漏洞: 如存在Cookie注入或设置漏洞,可扩大影响范围
- 社会工程学: 诱骗用户设置特定Cookie值
漏洞修复建议
- 对Cookie中的特殊字符进行HTML编码
- 实现内容安全策略(CSP)限制内联脚本执行
- 对反射型内容进行严格的输出编码
- 验证和过滤所有用户可控输入,包括HTTP头
漏洞赏金经验
- 该漏洞获得$1000赏金
- 证明即使Self-XSS在特定场景下也可能获得高额奖励
- 强调全面测试所有用户可控输入点的重要性
教学要点
- 测试所有输入点: 包括HTTP头、Cookie等非传统输入
- 上下文分析: 理解反射内容的上下文环境对构造有效Payload至关重要
- 闭合标签技巧: 在现有脚本环境中,闭合当前标签是常见绕过方法
- 工具使用: 善用Burpsuite和Param Miner等工具发现隐藏参数
- 报告技巧: 即使看似有限的漏洞,也应充分说明潜在利用场景
扩展学习
- 研究其他Cookie型XSS案例
- 学习不同上下文的XSS利用技术(HTML, JavaScript, CSS等)
- 掌握WAF绕过技术
- 了解XSS与其他漏洞的组合利用