挖洞经验 | Townscript票务平台的任意账户劫持
字数 1330 2025-08-15 21:30:55
Townscript票务平台任意账户劫持漏洞分析报告
漏洞概述
本报告详细分析了印度票务平台Townscript存在的安全漏洞组合,这些漏洞可导致任意账户劫持。主要漏洞包括:
- 密码重置功能缺乏速率限制(Rate Limiting)
- 密码重置验证码可被暴力枚举
- 用户绑定邮箱可被恶意修改
漏洞发现背景
Townscript是一家印度在线活动票务公司,提供各类活动的登记、注册和售票服务。2017年被BookMyShow收购。研究人员因忘记账户密码而发现这些安全漏洞。
详细漏洞分析
1. 密码重置功能缺乏速率限制
漏洞描述:
- 密码重置功能未实施请求频率限制
- 攻击者可无限次尝试密码重置请求
影响:
- 为暴力破解攻击创造条件
- 可能导致账户被接管
2. 密码重置验证码可被暴力枚举
漏洞细节:
- 密码重置链接格式简单:包含邮箱和6位数字验证码
- 示例链接:
https://www.townscript.com/reset-password?email=user@example.com&code=123456 - 6位数字验证码空间有限(000000-999999)
攻击方法:
- 使用Burp Suite等工具构造6位数字字典
- 对目标邮箱发起暴力枚举攻击
- 通过响应长度差异识别有效验证码(391字节的响应表示成功)
技术要点:
- 大多数尝试返回404页面(302响应)
- 成功响应有独特长度特征
- 获取有效验证码后可进入密码重置页面
3. 用户绑定邮箱可被恶意修改
漏洞细节:
- 账户设置中禁止通过UI修改绑定邮箱
- 但通过抓包修改请求参数可绕过限制
攻击方法:
- 拦截用户设置(edit)操作请求
- 修改请求中的邮箱参数
- 提交请求实现邮箱替换
影响:
- 彻底劫持目标账户
- 原用户无法通过原邮箱找回账户
完整攻击链
- 信息收集:获取目标用户的Townscript绑定邮箱
- 暴力枚举:利用无速率限制的密码重置功能暴力破解6位验证码
- 密码重置:使用获取的验证码重置账户密码
- 邮箱替换:通过修改请求参数替换绑定邮箱
- 完全控制:实现账户的永久劫持
漏洞修复建议
-
实施速率限制:
- 密码重置请求限制为5-10次/小时
- 验证码尝试限制为3-5次
-
增强验证码安全性:
- 使用更长、更复杂的验证码(字母+数字组合)
- 设置验证码有效期(如15分钟)
- 验证码使用后立即失效
-
加强邮箱修改控制:
- 邮箱修改需原邮箱确认
- 记录并通知所有账户信息变更
- 实施二次验证机制
-
监控异常行为:
- 记录并分析异常数量的密码重置请求
- 对可疑活动实施临时锁定
经验总结
- 密码重置功能是高风险区域,应特别关注其安全性设计
- 速率限制是基础安全措施,所有敏感操作都应实施
- 前端限制不等于安全,后端必须进行严格的输入验证
- 漏洞组合利用往往能产生更严重的后果
- 响应分析是识别漏洞的重要技术,如通过响应长度差异判断验证码是否正确
测试方法论
- 优先测试认证和授权相关功能
- 关注看似简单的功能(如密码重置)中的安全隐患
- 结合自动化工具(Burp Suite)和手动测试
- 不局限于UI限制,测试直接API请求
- 注意异常响应模式的分析
本案例展示了如何通过系统性的安全测试发现严重漏洞,强调了基础安全措施的重要性。