挖洞经验 | Snapchat不当输入验证漏洞导致的任意构造短信发送
字数 1041 2025-08-18 11:39:23
Snapchat 不当输入验证漏洞分析及利用教学
漏洞概述
本教学文档详细分析Snapchat网站存在的一个不当输入验证漏洞,该漏洞允许攻击者构造任意短信内容发送给受害者手机号码。漏洞最终获得了$1000的奖励。
漏洞发现过程
1. 目标定位
漏洞存在于Snapchat的官方网站:https://whatis.snapchat.com/。该网站介绍了Snapchat的功能和使用方法,在页面底部提供了两种APP下载方式:
- 直接点击下载
- 输入手机号码获取短信下载链接
2. 正常功能测试
研究人员首先进行正常功能测试:
- 输入自己的手机号码
- 点击"Send Link"按钮
- 观察后端请求和短信内容
此时系统会向app.snapchat.com发起一个HTTP POST请求:
https://app.snapchat.com/stories_everywhere/download_sms?phone_number=2133198570&country_code=US&cid=whatis
3. 关键参数发现
在请求中,cid参数及其值whatis引起了注意,因为:
- 收到的短信内容中包含
cid参数的值 - 这表明
cid参数可能直接影响短信内容
漏洞验证
1. 参数篡改测试
研究人员修改HTTP POST请求中的cid参数值为自定义内容:
cid=TES+HACKED+1337+LOL+HacKerOne.com
2. 结果验证
重放修改后的请求后,手机收到的短信内容确实包含了自定义的cid值:
TES HACKED 1337 LOL HacKerOne.com - Get Snapchat: [下载链接]
且链接点击后能有效跳转。
漏洞原理分析
该漏洞属于不当输入验证漏洞,具体表现为:
- 后端系统未对
cid参数进行有效过滤或验证 - 直接将用户可控的
cid参数值拼接到短信内容中 - 缺乏对短信内容的净化处理
漏洞利用场景
攻击者可利用此漏洞:
- 向任意手机号码发送包含恶意内容的短信
- 构造钓鱼链接诱导用户点击
- 传播恶意软件下载链接
- 进行社会工程学攻击
漏洞修复方案
Snapchat最终修复方案:
- 从短信回复机制中完全移除
cid和其他相关参数 - 对短信内容进行严格过滤和验证
教学总结
测试方法论
- 公共功能测试:优先测试网站的公共可访问功能
- 参数篡改:对请求中的每个参数进行篡改测试
- 响应观察:仔细比对修改前后的系统响应差异
漏洞挖掘技巧
- 关注用户输入点:特别是涉及短信、邮件等通信功能的输入点
- 追踪参数流向:观察用户提供的参数如何影响系统输出
- 尝试边界值:测试特殊字符、超长字符串等异常输入
经验启示
- 保持测试动力:看似简单的功能可能隐藏严重漏洞
- 全面测试思维:不放过任何一个可控制的参数
- 及时报告:发现漏洞后应及时向厂商报告
参考资源
原始漏洞报告来源:securitybreached
本文基于FreeBuf编译整理