任意账户接管漏洞分析
本次漏洞挖掘的目标是一个教育类移动应用。攻击者通过分析多个关联小程序与主应用之间的接口调用逻辑,发现存在严重的越权漏洞,可导致任意用户账号被接管。
漏洞复现步骤
-
信息搜集与接口分析
首先,正常登录目标APP的任意账号。在“修改昵称”功能处进行抓包,观察相关请求接口与参数结构。
-
关联入口发现
随后,访问其关联的微信小程序,点击“切换账号”->“添加学员”。在该功能的数据包中,发现一个用于查询学员的接口。通过测试,确认学员编号规则为“地域缩写+多位数字”(例如:NJ5222****42)。利用此规律,可以构造请求遍历有效的学员编号,并从响应包中获取关键的 studentID 字段。
-
参数替换与越权登录
切换至另一个关联的“服务号”小程序,在“购买产品”流程中拦截登录或身份验证请求数据包。将上一步获取的 studentID 值,替换到主应用“修改昵称”请求中对应的 userID 参数位置,从而逆向推算出目标学员在主应用体系内的用户ID (extUserId)。
-
Token窃取与账号接管
最后,返回主APP的登录流程。抓取登录请求包,将其中包含用户身份标识的参数(如 extUserId )替换为攻击者计算出的目标用户ID。提交请求并快速拦截服务器响应,在响应包中即可获得目标用户的登录凭证(如Token)。
使用窃取到的Token,攻击者便能以该用户身份完全登录主APP,实现账号接管。
漏洞原理与危害
本漏洞的本质是多个系统间对用户身份标识(ID映射关系)的校验存在缺陷,同时关键业务接口(如修改信息、登录)未对请求者身份进行二次强验证,导致通过参数替换即可实现水平越权与身份伪造。
漏洞危害:攻击者可利用此漏洞批量遍历并接管任意学生甚至高权限账号。这将导致:
- 所有用户课程内容泄露。
- 大量学员的敏感信息(如姓名、手机号等)泄露。
- 攻击者可能利用高权限账号进行恶意操作,对核心业务造成严重影响。
安全建议:开发团队应加强涉及用户身份关键操作(登录、信息修改、权限获取)的接口校验,使用不可预测的Token(如JWT)而非简单ID进行身份鉴权,并对敏感操作增加二次验证(如短信验证码、密码确认)。了解网络安全中身份验证与授权的最佳实践至关重要。在日常渗透测试中,接口参数的可预测性与替代性是重要的测试点。使用专业的网络安全工具(如BurpSuite)进行抓包与重放测试,是发现此类逻辑漏洞的有效手段。
|