挖洞经验 | 看我如何发现Pinterest任意账号劫持漏洞
字数 1194 2025-08-18 11:37:53
Pinterest任意账号劫持漏洞分析报告
漏洞概述
本报告详细分析了Pinterest网站存在的一个严重CSRF漏洞,该漏洞允许攻击者通过构造特殊请求劫持任意用户账号。漏洞核心在于服务端对HTTP GET请求的CSRF令牌验证缺失,导致攻击者可以修改用户的关键账户信息。
漏洞背景
Pinterest是美国热门的图片社交网站,每月活跃用户达2.5亿。该平台允许用户保存和分享感兴趣的图片,功能类似于图片版的Twitter。
漏洞发现过程
初始观察
- 发现Pinterest使用"X-CSRFToken"HTTP头传输CSRF令牌
- 常规POST请求格式:
POST /_ngjs/resource/UserSettingsResource/update/ HTTP/1.1 Host: www.pinterest.com Content-Type: application/x-www-form-urlencoded X-CSRFToken: <CSRF Token>
测试步骤
-
移除X-CSRFToken头测试:
- 响应错误:"...didn't finish after 8 seconds"
- 表明CSRF令牌验证机制存在
-
修改请求方法测试:
- 将POST改为GET请求
- 移除X-CSRFToken头
- 响应变为"200 OK"
- 确认GET请求不验证CSRF令牌
漏洞利用方法
攻击链构建
-
构造恶意GET请求:
- 使用Burp Suite的"change request method"功能转换请求
- 示例攻击URL(已编码):
https://www.pinterest.com/_ngjs/resource/UserSettingsResource/update/?source_url=%2Fsettings%2F&data=%7B%22options%22%3A%7B...%7D%7D
-
关键参数说明:
first_name: 修改为攻击者控制的用户名(如"dummyuser")- 邮箱地址可被修改为攻击者控制的邮箱(如"anytestemail@user.com")
完整攻击流程
- 诱使受害者点击构造的恶意链接
- 受害者账户的邮箱和用户名被修改为攻击者控制的值
- 攻击者访问密码重置页面:
https://www.pinterest.com/password/reset/ - 使用控制的邮箱接收重置链接
- 重置密码并完全控制受害者账户
漏洞影响
- 影响范围:所有Pinterest用户(2.5亿月活用户)
- 严重性:高危,可导致完全账户劫持
- 利用条件:
- 受害者需点击恶意链接
- 无需其他交互或特殊权限
防御建议
对开发者的建议
-
统一验证策略:
- 对所有修改操作的请求(无论GET/POST)都进行CSRF令牌验证
- 避免HTTP方法影响安全验证逻辑
-
安全设计原则:
- 遵循"默认拒绝"原则
- 对关键操作使用POST方法
- 实现同源策略检查
-
补充防御措施:
- 实施敏感操作二次验证
- 添加关键修改操作的安全通知
对用户的建议
- 警惕不明链接,特别是涉及账户设置的URL
- 定期检查账户安全设置
- 启用双因素认证(如平台支持)
漏洞修复流程
- 漏洞通过合法渠道报告给Pinterest安全团队
- 团队快速响应并修复漏洞
- 获得官方授权后公开漏洞细节
技术总结
本案例展示了HTTP方法对安全验证的影响,强调了:
- CSRF防护需要全面覆盖所有请求方法
- 安全验证逻辑应独立于业务功能实现
- 关键账户操作需要多层防护机制
此漏洞的发现和修复过程也体现了负责任的漏洞披露流程对互联网安全的重要性。