挖洞经验 | 美国国防部网站导致账户劫持的IDOR漏洞
字数 1397 2025-08-15 21:32:56

美国国防部网站IDOR漏洞分析与利用教学

漏洞概述

本教学文档详细分析美国国防部(DOD)网站中发现的一个IDOR(Insecure Direct Object Reference,不安全的直接对象引用)漏洞,该漏洞允许攻击者通过账户更新功能劫持任意用户账户。

漏洞背景

目标系统

  • 美国国防部(DOD)下属网站
  • 使用通用访问卡(CAC)作为主要认证方式
    • CAC是美国国防部用于多重身份验证的智能卡
    • 用于认证现役军人、后备军人、文职雇员等人员
    • 用于访问政府建筑和计算机网络

漏洞类型

  • IDOR漏洞(不安全的直接对象引用)
  • 影响:账户劫持

漏洞发现过程

初始观察

  1. 网站登录界面使用CAC认证,显得与众不同
  2. 注册成为网站用户后,访问账户设置页面:https://DOD.mil/signIn/account
  3. 初始URL路径中未发现明显的ID参数或IDOR漏洞迹象

关键发现

  1. 点击"Update"按钮时,通过Burp Suite拦截到以下POST请求:

    id=623&fName=user&lName=name&email=user@example.com&phone=123456789
    
    • 包含账户ID(623)、用户名、邮箱和电话
  2. 注册第二个账户获得ID 624

  3. 使用第一个账户(ID 623)的会话,修改POST请求中的ID为624,并更改其他参数:

    id=624&fName=hacked&lName=hacked&email=hacker@wearehackerone.com&phone=12345
    
  4. 服务器返回有效响应,确认修改成功

漏洞利用流程

  1. 拦截请求

    • 使用Burp Suite拦截点击"Update"按钮时的POST请求
  2. 修改参数

    • 将POST请求中的id参数替换为目标受害者账户ID
    • 修改emailphone参数为攻击者控制的邮箱和电话
    • 可选修改fNamelName参数
  3. 发送请求

    • 发送修改后的POST请求
  4. 账户劫持

    • 使用修改后的邮箱发起密码重置请求
    • 完成受害者账户的劫持

技术原理分析

  1. IDOR漏洞本质

    • 服务器未验证用户是否有权修改指定ID的账户信息
    • 仅依赖客户端提供的ID参数进行对象引用
  2. 权限验证缺失

    • 服务器未检查当前会话用户与请求修改的账户ID是否匹配
    • 允许任意认证用户修改其他用户的账户信息
  3. 关键安全缺陷

    • 直接使用连续数字ID,易于预测
    • 服务器端缺乏权限验证机制
    • 敏感操作(账户信息修改)未实施二次验证

防御措施

  1. 服务器端验证

    • 实现严格的权限检查,确保用户只能修改自己的账户
    • 使用会话中的用户ID而非客户端提供的ID
  2. 使用不可预测的标识符

    • 替代连续数字ID,使用UUID或其他随机标识符
  3. 审计日志

    • 记录所有账户修改操作,便于检测异常行为
  4. 二次验证

    • 对敏感操作(如邮箱/电话修改)要求额外验证
  5. 输入验证

    • 验证所有输入参数,包括ID、邮箱格式等

经验总结

  1. 思维突破

    • 即使看似安全的系统也可能存在漏洞
    • 需要"Think outside of the box"的测试方法
  2. 测试技巧

    • 注册多个账户进行对比测试
    • 关注看似无害的参数(如ID)
    • 使用代理工具(Burp Suite)拦截和分析请求
  3. IDOR测试要点

    • 寻找所有包含ID或类似标识符的请求
    • 尝试修改这些标识符,观察系统反应
    • 测试不同权限级别用户间的对象引用

参考资源

  1. 原始漏洞报告:HackerOne披露的美国国防部网站漏洞
  2. IDOR漏洞相关资源:
    • OWASP IDOR指南
    • Web应用安全测试手册

通过本教学文档,安全研究人员可以深入理解IDOR漏洞的发现和利用方法,并在实际测试中应用这些技术,同时为开发人员提供有效的防御措施。

美国国防部网站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)、用户名、邮箱和电话 注册第二个账户获得ID 624 使用第一个账户(ID 623)的会话,修改POST请求中的ID为624,并更改其他参数: 服务器返回有效响应,确认修改成功 漏洞利用流程 拦截请求 : 使用Burp Suite拦截点击"Update"按钮时的POST请求 修改参数 : 将POST请求中的 id 参数替换为目标受害者账户ID 修改 email 和 phone 参数为攻击者控制的邮箱和电话 可选修改 fName 和 lName 参数 发送请求 : 发送修改后的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漏洞的发现和利用方法,并在实际测试中应用这些技术,同时为开发人员提供有效的防御措施。