移动应用登录接口越权漏洞挖掘实战
1. 引言
在移动应用安全测试中,水平越权(Horizontal Privilege Escalation)和垂直越权(Vertical Privilege Escalation)是常见的高危漏洞类型。其中,基于 IDOR(Insecure Direct Object Reference,不安全的直接对象引用)的越权漏洞尤为普遍。本文通过一个实际案例,详细讲解如何挖掘移动应用登录接口中的越权漏洞,分析其成因,并提供相应的修复建议。
2. 漏洞原理
IDOR 漏洞通常发生在服务器端未对请求中的资源标识符进行严格的权限校验时。攻击者可以通过修改请求参数(如用户 ID、订单号等),访问或操作其他用户的资源。
在本案例中,漏洞出现在登录流程中。当用户登录成功后,服务端返回包含 userId、token 等敏感信息的响应包。如果服务端在后续业务逻辑中仅依赖前端传递的 userId 来判断当前操作用户身份,而未在服务端会话(Session)或 Token 中绑定该 ID,则攻击者可以截获他人的登录响应包,替换其中的 userId,从而冒充他人账号登录。
3. 复现步骤
3.1 环境准备
- 目标:某移动 APP 登录模块
- 工具:Burp Suite、抓包工具(如 Charles)、手机模拟器或真机
- 前提:拥有合法的用户账号,能够正常注册和登录
3.2 流量捕获与分析
-
注册与登录 使用手机号 A 注册并登录 APP。配置代理工具拦截登录请求。
-
提取关键参数 观察登录成功的响应报文,提取以下字段:
loginToken: 登录凭证userId: 用户唯一标识phoneNo: 手机号tokenAesResult: 加密后的令牌结果
-
对比不同账号报文 退出账号,使用手机号 B 注册并登录。再次抓取登录成功报文。对比两个报文的差异,重点关注
userId的值。发现userId为随机生成或无规律递增,无法直接预测他人 ID。
3.3 漏洞验证
-
参数篡改测试 使用 Burp Suite 的 Repeater 模块,将手机号 A 的登录请求包发送给服务器。尝试修改响应包中的
userId字段。 -
获取目标 ID 由于无法预测
userId,需寻找其他途径获取目标用户的 ID。检查 APP 的其他功能模块,如'讨论区'、'个人中心'等。在某处发现公开接口可获取到特定用户的userId。 -
实施攻击
- 退出当前账号。
- 使用未注册的手机号尝试登录(模拟新用户)。
- 拦截登录请求,修改响应包中的
userId为目标用户的 ID。 - 发送请求。
-
验证结果 若服务器未校验
userId与当前登录凭证的绑定关系,则登录成功页面会显示为目标用户的个人信息,证明存在越权漏洞。
4. 危害分析
一旦该漏洞被利用,攻击者可实现以下危害:
- 数据泄露:查看其他用户的隐私信息(昵称、头像、联系方式等)。
- 身份冒充:以受害者身份发布内容、进行交易或接收验证码。
- 账户接管:结合其他弱口令或短信劫持手段,进一步控制账户。


