挖洞经验 | Mail.ru用户隐私信息泄漏的XSS漏洞分析
字数 1408 2025-08-15 21:31:27
Mail.ru用户隐私信息泄漏的XSS漏洞分析教学文档
漏洞概述
本教学文档详细分析Mail.ru应用中发现的存储型XSS漏洞,该漏洞允许攻击者通过SVG文件注入恶意脚本,窃取用户邮件交流记录、通讯录等隐私信息。
漏洞背景
- 受影响系统:Mail.ru应用及myMail iOS客户端
- 漏洞类型:存储型XSS(或跨应用程序脚本CAS)
- 危害等级:高危
- 漏洞奖励:$1000
- 发现时间:2020年7月
Mail.ru是俄罗斯最大的电邮和网络服务平台,也是俄罗斯第一个成功在伦敦上市的互联网公司。
漏洞原理
漏洞根源
Mail.ru的某个功能点对SVG图片文件未做充分安全检查,导致可以注入恶意JavaScript代码。
SVG文件结构分析
SVG(可缩放矢量图形)是一种基于XML的图像格式,支持嵌入JavaScript脚本。漏洞利用的关键在于SVG文件可以包含<script>标签。
漏洞利用示例
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
<polygon id="triangle" points="0,0 0,50 50,0" fill="#009900" stroke="#004400"/>
<script type="text/javascript">
alert("XSS");
</script>
</svg>
当用户浏览包含此SVG的页面时,嵌入的JavaScript代码会被执行。
漏洞利用过程
1. 信息收集
- 使用越狱的iPhone 5设备分析Mail.ru应用的文件结构
- 发现应用数据存储在路径:
/private/var/mobile/Containers/Shared/AppGroup/ - 通过XSS弹窗(
alert(location.href))确认具体应用路径
2. 敏感数据定位
在应用目录下发现多个SQLite数据库文件,其中mail_cache.sq3包含:
- 用户邮件交流记录
- 通讯录信息
- 支付记录等敏感数据
3. 数据提取技术
通过XSS构造脚本读取并外传SQLite数据库文件:
- 首先定位Mail.ru的文件夹位置
- 获取
mail_cache.sq3文件路径 - 将文件内容发送到攻击者控制的服务器
4. PoC开发
经过多次调试(约4小时),开发出完整的利用脚本,能够完整提取mail_cache.sq3文件。
漏洞分类争议
Mail.ru安全团队认为此漏洞属于"跨应用程序脚本(Cross Application Scripting, CAS)"而非传统XSS。
CAS特点:
- 影响无法详尽检查输入的应用程序
- 允许攻击者插入修改特定应用程序行为的数据
- 可以从用户系统内部提取数据
- 可获得应用程序的全部特权
防御措施
针对开发人员
-
输入验证:
- 对上传的SVG文件进行严格的内容检查
- 过滤或转义
<script>标签和JavaScript代码
-
内容安全策略(CSP):
- 实施严格的CSP策略,限制脚本执行来源
- 禁用内联脚本
-
沙盒限制:
- 限制应用文件系统的访问权限
- 敏感数据加密存储
-
文件上传处理:
- 对上传的SVG文件进行解析和重写
- 移除所有潜在的危险元素和属性
针对用户
- 保持应用和操作系统更新
- 谨慎打开未知来源的SVG文件
- 避免使用越狱设备处理敏感信息
漏洞报告流程
- 发现漏洞后立即报告给Mail.ru官方
- 提供详细的漏洞描述和复现步骤
- 提交完整的PoC证明漏洞危害
- 等待厂商确认和修复
- 获得漏洞奖励($1000)
总结
本案例展示了SVG文件处理不当可能导致严重的安全问题,即使是看似无害的图像文件也可能成为攻击载体。开发人员需要对所有用户上传内容保持警惕,实施多层防御措施。同时,此案例也展示了从漏洞发现到利用再到报告的全过程,为安全研究人员提供了有价值的参考。