找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2228

积分

0

好友

312

主题
发表于 2025-12-24 19:31:17 | 查看: 29| 回复: 0

近期在对一款授权的医疗健康类Android应用进行全面的渗透测试时,发现了其账号体系存在严重的逻辑缺陷,最终可利用此漏洞登录任意用户账户。

应用的功能模块较多,测试重点集中在用户账户管理相关的几个核心功能上,包括个人信息查看、报告查询、账户查询等。

在对“账户查询”功能进行测试时,发现其调用了一个关键API接口用于获取访问令牌(Token)。通常,此类接口会校验用户的登录凭证(如Session或Token)。但分析请求数据包发现,该接口的请求体(Body)中未携带任何传统的身份认证凭证,其结构类似于:

{
    "idCard": "410101199001011234"
}

初步判断,系统仅依据提交的身份证号参数来生成并返回对应的用户Token。

为了验证猜想,进行了参数值测试。将请求中的身份证号(idCard)参数值置空或修改为任意值发送请求。测试表明,当提交一个有效的、存在于系统中的身份证号码时,接口便会返回一个有效的用户Token。

这便构成了一个高危的身份认证逻辑漏洞:攻击者无需知晓用户密码或其他验证信息,仅需枚举有效的身份证号,即可获取相应用户的登录凭据,进而实现账户接管。

利用自动化工具,按照地区编码规则批量生成身份证号,并对该接口进行遍历测试。很快便成功获取到大量非测试账户的有效Token。

医疗健康APP身份认证逻辑漏洞:通过遍历身份证号实现任意账号登录 - 图片 - 1

使用获取到的Token替换当前请求中的认证信息,即可成功登录对应的用户账户,访问其个人健康数据、诊疗记录等敏感信息。

医疗健康APP身份认证逻辑漏洞:通过遍历身份证号实现任意账号登录 - 图片 - 2

漏洞原理与修复建议

漏洞根源:后端服务在设计Token生成与发放机制时,仅将用户身份证号作为唯一输入因子,且未对该请求的上下文进行任何权限校验(如验证请求者是否已处于登录状态),导致接口暴露于未授权访问之下。

修复方案

  1. 强化接口鉴权:为涉及生成核心会话凭证(如Token)的接口添加严格的权限校验,确保只有已通过初始身份验证(如密码登录、短信验证码登录)的合法会话才能调用。
  2. 引入防爆破机制:对该类敏感接口实施频率限制、IP限制、验证码等手段,防止攻击者进行大规模的参数遍历。
  3. 避免单一弱因子认证:关键的身份验证或令牌发放环节,不应仅依赖一个可能被枚举或猜测的参数(如身份证号、手机号)。



上一篇:韩顺平JavaEE从入门到精通系列课程 Java基础、JDBC与项目实战一站式学习
下一篇:快手平台遭境外黑产攻击分析:直播风控漏洞与应急响应机制
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-10 18:36 , Processed in 0.243753 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表