挖洞经验 | 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(仅影响攻击者自身),但存在以下潜在利用方式:

  1. 中间人攻击: 通过拦截和修改用户Cookie实现XSS攻击
  2. 结合其他漏洞: 如存在Cookie注入或设置漏洞,可扩大影响范围
  3. 社会工程学: 诱骗用户设置特定Cookie值

漏洞修复建议

  1. 对Cookie中的特殊字符进行HTML编码
  2. 实现内容安全策略(CSP)限制内联脚本执行
  3. 对反射型内容进行严格的输出编码
  4. 验证和过滤所有用户可控输入,包括HTTP头

漏洞赏金经验

  • 该漏洞获得$1000赏金
  • 证明即使Self-XSS在特定场景下也可能获得高额奖励
  • 强调全面测试所有用户可控输入点的重要性

教学要点

  1. 测试所有输入点: 包括HTTP头、Cookie等非传统输入
  2. 上下文分析: 理解反射内容的上下文环境对构造有效Payload至关重要
  3. 闭合标签技巧: 在现有脚本环境中,闭合当前标签是常见绕过方法
  4. 工具使用: 善用Burpsuite和Param Miner等工具发现隐藏参数
  5. 报告技巧: 即使看似有限的漏洞,也应充分说明潜在利用场景

扩展学习

  1. 研究其他Cookie型XSS案例
  2. 学习不同上下文的XSS利用技术(HTML, JavaScript, CSS等)
  3. 掌握WAF绕过技术
  4. 了解XSS与其他漏洞的组合利用
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: 但未能成功触发弹窗。 3. 深入分析 观察响应消息结构,发现网站使用了 <script id="script:globals"> 标签来包含全局变量,其中GP参数的值被反射在该脚本块内。 4. 成功Payload构造 通过闭合现有script标签的方式构造有效Payload: 成功触发XSS漏洞,执行JavaScript代码。 技术细节 请求示例 响应结构 漏洞利用场景 虽然最初被认为是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与其他漏洞的组合利用