挖洞经验 | Townscript票务平台的任意账户劫持
字数 1330 2025-08-15 21:30:55

Townscript票务平台任意账户劫持漏洞分析报告

漏洞概述

本报告详细分析了印度票务平台Townscript存在的安全漏洞组合,这些漏洞可导致任意账户劫持。主要漏洞包括:

  1. 密码重置功能缺乏速率限制(Rate Limiting)
  2. 密码重置验证码可被暴力枚举
  3. 用户绑定邮箱可被恶意修改

漏洞发现背景

Townscript是一家印度在线活动票务公司,提供各类活动的登记、注册和售票服务。2017年被BookMyShow收购。研究人员因忘记账户密码而发现这些安全漏洞。

详细漏洞分析

1. 密码重置功能缺乏速率限制

漏洞描述

  • 密码重置功能未实施请求频率限制
  • 攻击者可无限次尝试密码重置请求

影响

  • 为暴力破解攻击创造条件
  • 可能导致账户被接管

2. 密码重置验证码可被暴力枚举

漏洞细节

  • 密码重置链接格式简单:包含邮箱和6位数字验证码
  • 示例链接:https://www.townscript.com/reset-password?email=user@example.com&code=123456
  • 6位数字验证码空间有限(000000-999999)

攻击方法

  1. 使用Burp Suite等工具构造6位数字字典
  2. 对目标邮箱发起暴力枚举攻击
  3. 通过响应长度差异识别有效验证码(391字节的响应表示成功)

技术要点

  • 大多数尝试返回404页面(302响应)
  • 成功响应有独特长度特征
  • 获取有效验证码后可进入密码重置页面

3. 用户绑定邮箱可被恶意修改

漏洞细节

  • 账户设置中禁止通过UI修改绑定邮箱
  • 但通过抓包修改请求参数可绕过限制

攻击方法

  1. 拦截用户设置(edit)操作请求
  2. 修改请求中的邮箱参数
  3. 提交请求实现邮箱替换

影响

  • 彻底劫持目标账户
  • 原用户无法通过原邮箱找回账户

完整攻击链

  1. 信息收集:获取目标用户的Townscript绑定邮箱
  2. 暴力枚举:利用无速率限制的密码重置功能暴力破解6位验证码
  3. 密码重置:使用获取的验证码重置账户密码
  4. 邮箱替换:通过修改请求参数替换绑定邮箱
  5. 完全控制:实现账户的永久劫持

漏洞修复建议

  1. 实施速率限制

    • 密码重置请求限制为5-10次/小时
    • 验证码尝试限制为3-5次
  2. 增强验证码安全性

    • 使用更长、更复杂的验证码(字母+数字组合)
    • 设置验证码有效期(如15分钟)
    • 验证码使用后立即失效
  3. 加强邮箱修改控制

    • 邮箱修改需原邮箱确认
    • 记录并通知所有账户信息变更
    • 实施二次验证机制
  4. 监控异常行为

    • 记录并分析异常数量的密码重置请求
    • 对可疑活动实施临时锁定

经验总结

  1. 密码重置功能是高风险区域,应特别关注其安全性设计
  2. 速率限制是基础安全措施,所有敏感操作都应实施
  3. 前端限制不等于安全,后端必须进行严格的输入验证
  4. 漏洞组合利用往往能产生更严重的后果
  5. 响应分析是识别漏洞的重要技术,如通过响应长度差异判断验证码是否正确

测试方法论

  1. 优先测试认证和授权相关功能
  2. 关注看似简单的功能(如密码重置)中的安全隐患
  3. 结合自动化工具(Burp Suite)和手动测试
  4. 不局限于UI限制,测试直接API请求
  5. 注意异常响应模式的分析

本案例展示了如何通过系统性的安全测试发现严重漏洞,强调了基础安全措施的重要性。

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请求 注意异常响应模式的分析 本案例展示了如何通过系统性的安全测试发现严重漏洞,强调了基础安全措施的重要性。