挖洞经验 | 美国国防部网站导致账户劫持的IDOR漏洞
字数 1397 2025-08-15 21:32:56
美国国防部网站IDOR漏洞分析与利用教学
漏洞概述
本教学文档详细分析美国国防部(DOD)网站中发现的一个IDOR(Insecure Direct Object Reference,不安全的直接对象引用)漏洞,该漏洞允许攻击者通过账户更新功能劫持任意用户账户。
漏洞背景
目标系统
- 美国国防部(DOD)下属网站
- 使用通用访问卡(CAC)作为主要认证方式
- CAC是美国国防部用于多重身份验证的智能卡
- 用于认证现役军人、后备军人、文职雇员等人员
- 用于访问政府建筑和计算机网络
漏洞类型
- IDOR漏洞(不安全的直接对象引用)
- 影响:账户劫持
漏洞发现过程
初始观察
- 网站登录界面使用CAC认证,显得与众不同
- 注册成为网站用户后,访问账户设置页面:
https://DOD.mil/signIn/account - 初始URL路径中未发现明显的ID参数或IDOR漏洞迹象
关键发现
-
点击"Update"按钮时,通过Burp Suite拦截到以下POST请求:
id=623&fName=user&lName=name&email=user@example.com&phone=123456789- 包含账户ID(623)、用户名、邮箱和电话
-
注册第二个账户获得ID 624
-
使用第一个账户(ID 623)的会话,修改POST请求中的ID为624,并更改其他参数:
id=624&fName=hacked&lName=hacked&email=hacker@wearehackerone.com&phone=12345 -
服务器返回有效响应,确认修改成功
漏洞利用流程
-
拦截请求:
- 使用Burp Suite拦截点击"Update"按钮时的POST请求
-
修改参数:
- 将POST请求中的
id参数替换为目标受害者账户ID - 修改
email和phone参数为攻击者控制的邮箱和电话 - 可选修改
fName和lName参数
- 将POST请求中的
-
发送请求:
- 发送修改后的POST请求
-
账户劫持:
- 使用修改后的邮箱发起密码重置请求
- 完成受害者账户的劫持
技术原理分析
-
IDOR漏洞本质:
- 服务器未验证用户是否有权修改指定ID的账户信息
- 仅依赖客户端提供的ID参数进行对象引用
-
权限验证缺失:
- 服务器未检查当前会话用户与请求修改的账户ID是否匹配
- 允许任意认证用户修改其他用户的账户信息
-
关键安全缺陷:
- 直接使用连续数字ID,易于预测
- 服务器端缺乏权限验证机制
- 敏感操作(账户信息修改)未实施二次验证
防御措施
-
服务器端验证:
- 实现严格的权限检查,确保用户只能修改自己的账户
- 使用会话中的用户ID而非客户端提供的ID
-
使用不可预测的标识符:
- 替代连续数字ID,使用UUID或其他随机标识符
-
审计日志:
- 记录所有账户修改操作,便于检测异常行为
-
二次验证:
- 对敏感操作(如邮箱/电话修改)要求额外验证
-
输入验证:
- 验证所有输入参数,包括ID、邮箱格式等
经验总结
-
思维突破:
- 即使看似安全的系统也可能存在漏洞
- 需要"Think outside of the box"的测试方法
-
测试技巧:
- 注册多个账户进行对比测试
- 关注看似无害的参数(如ID)
- 使用代理工具(Burp Suite)拦截和分析请求
-
IDOR测试要点:
- 寻找所有包含ID或类似标识符的请求
- 尝试修改这些标识符,观察系统反应
- 测试不同权限级别用户间的对象引用
参考资源
- 原始漏洞报告:HackerOne披露的美国国防部网站漏洞
- IDOR漏洞相关资源:
- OWASP IDOR指南
- Web应用安全测试手册
通过本教学文档,安全研究人员可以深入理解IDOR漏洞的发现和利用方法,并在实际测试中应用这些技术,同时为开发人员提供有效的防御措施。