未受保护的API端点导致荷兰1.5万医生用户名和哈希密码泄露
背景
作者身兼医疗从业者与安全研究员双重身份,旨在通过道德黑客技术评估医疗系统安全性。本次研究对象为荷兰两大全科医生专业组织:Nederlandse Huisartsen Genootschap(NHG)与Landelijke Huisartsen Vereniging(LHV),二者共同服务全国1.3万名全科医生。
侦察过程
两大组织采用统一单点登录(SSO)系统(hawebsso.nl),该系统的突破意味着可访问所有关联应用(如HAweb.nl在线社区和richtlijnen.nhg.org指南平台)。通过检查OpenID配置端点(/.well-known/openid-configuration),发现系统支持多种权限范围(scopes),如WaarneemApp排班工具访问权限。
漏洞发现
登录页面引用的admin.js文件暴露关键端点:
|
|
该端点未实施权限验证,返回当前登录用户的全部信息(含密码哈希)。进一步测试发现,将URL中的/admin替换为数字ID(如/api/v1/user/15000)可获取任意用户数据,确认为IDOR(不安全的直接对象引用)漏洞。
技术细节
- 漏洞类型:IDOR + 关键功能缺失认证
- 影响范围:所有注册hawebsso.nl的用户(约1.5万医生)
- 数据泄露内容:邮箱、全名、密码哈希、会员详情
- 哈希算法分析:ASP.NET Core Identity V3的PBKDF2 with HMAC-SHA256(128位盐、256位子密钥、10000次迭代),抗彩虹表攻击
利用方式
- 端点猜测:使用Assetnote.io等单词表暴力枚举端点(如
/api/v1/user/{id}) - JS文件扫描:通过LinkFinder等工具发现隐藏端点
- 无认证访问:即使在未登录状态下也可直接获取数据
防护建议
- 启用双因素认证(2FA)(系统已支持但未默认开启)
- 避免密码复用,防止凭据填充攻击
- 实施威胁建模(如INCLUDESNODIRT.com方法)
- 建立漏洞披露政策(当前仅LHV官网提供,NHG及hawebsso.nl缺失)
- 结合渗透测试与漏洞众测(如HackerOne平台)
时间线
- 2022-12-04:发现并报告漏洞
- 2022-12-06:确认漏洞存在3年(2019年末引入)
- 2022-12-12:通知全体成员重置密码
- 2022-12-14:公开披露(根据协调披露政策)
深度讨论
- 行业认证(如ISO 27001)不能替代实际安全防护
- 需在所有数字资产明确标注漏洞披露政策
- 透明度构建信任:LHV隐私官全程保持沟通更新
- 社区协作模式(如Hack the Hague)可提升安全水平
漏洞可能实际存在5年(Web存档显示admin.js早于2017年存在),凸显持续安全监测的重要性。