APISandbox | 4ASystem: 4A认证系统下的API平行越权
字数 1142 2025-08-29 22:41:38

4A认证系统下的API平行越权漏洞分析与利用教学

一、漏洞背景

4A系统(Account, Authentication, Authorization, Audit)是企业级统一身份认证系统,本案例中涉及:

  • 1个4A认证系统
  • 3个Web应用(web1, web2, web3)
  • 每个应用使用独立的密码体系,无法通过撞库攻击

二、环境搭建

1. 容器部署

docker-compose build
docker-compose up -d
docker ps -a  # 查看容器及端口映射关系

2. 初始凭证

通过查看4A系统日志获取:

docker logs <container_id>

输出内容:

sql.db does not exist!
create sql.db success!
web1: admin/admin888
web2: admin/638ef46bd9053f30932c7d4ce08bb2f8
web3: admin/e1168c6a97223bac0b0aef9ab8682fb4

三、漏洞发现过程

1. 弱口令爆破

使用Burp Suite对web1进行爆破:

  1. 设置Payload位置(用户名和密码字段)
  2. 使用常见弱口令字典攻击
  3. 通过响应中的"success"识别有效凭证

成功获取web1凭证:admin/admin888

2. 源代码泄露

通过目录扫描发现源码泄露,审计发现关键漏洞点。

四、漏洞分析

1. 密码重置流程

正常流程:

  1. 用户登录web1后台
  2. 在重置密码界面输入:用户名、老密码、新密码
  3. web1后端向4A系统API验证用户名密码
  4. 验证通过后,web1后端向4A系统发起改密码请求

2. 漏洞代码片段

$data = array(
    'username' => $username,
    'newpasswd' => $newpassword,
    'application' => 'web1' 
);

关键问题:

  • 未验证用户输入的newpassword
  • 未要求提供旧密码
  • application参数可被篡改

3. API接口

  • 登录验证API: http://192.168.10.10:8080/api/v1/sys_authenticate
  • 密码重置API: http://192.168.10.10:8080/api/v1/sys_passwdreset

五、漏洞利用

1. 平行越权攻击

攻击者可以:

  1. 使用web1的弱口令登录
  2. 构造恶意请求修改web2/web3的密码
  3. 通过修改application参数指定目标系统

2. 攻击步骤

  1. 登录web1系统(admin/admin888)
  2. 访问密码重置功能
  3. 构造POST请求:
    POST /reset.php?action=changepass HTTP/1.1
    Host: web1.example.com
    Content-Type: application/x-www-form-urlencoded
    Cookie: PHPSESSID=...
    
    username=admin&oldpassword=admin888&newpassword=hacked123&application=web2
    
  4. 成功将web2的admin密码修改为hacked123

六、漏洞修复建议

  1. 输入验证

    • newpassword进行严格验证
    • 强制要求提供旧密码
  2. 权限控制

    • 在4A系统API端验证请求来源应用的合法性
    • 禁止跨应用密码修改
  3. 会话验证

    • 加强会话令牌的验证
    • 确保密码修改请求来自合法会话
  4. 日志审计

    • 记录所有密码修改操作的详细日志
    • 包括请求来源、时间、修改的应用等
  5. 安全设计

    • 实现CSRF防护机制
    • 对敏感操作进行二次认证

七、总结

本案例展示了在4A认证系统架构下,由于API调用缺乏足够的安全验证导致的平行越权漏洞。攻击者可以利用此漏洞跨系统修改其他应用的密码,完全绕过设计中的隔离机制。这类漏洞在企业级统一认证系统中危害极大,需要开发者特别注意API间的权限控制和参数验证。

4A认证系统下的API平行越权漏洞分析与利用教学 一、漏洞背景 4A系统(Account, Authentication, Authorization, Audit)是企业级统一身份认证系统,本案例中涉及: 1个4A认证系统 3个Web应用(web1, web2, web3) 每个应用使用独立的密码体系,无法通过撞库攻击 二、环境搭建 1. 容器部署 2. 初始凭证 通过查看4A系统日志获取: 输出内容: 三、漏洞发现过程 1. 弱口令爆破 使用Burp Suite对web1进行爆破: 设置Payload位置(用户名和密码字段) 使用常见弱口令字典攻击 通过响应中的"success"识别有效凭证 成功获取web1凭证: admin/admin888 2. 源代码泄露 通过目录扫描发现源码泄露,审计发现关键漏洞点。 四、漏洞分析 1. 密码重置流程 正常流程: 用户登录web1后台 在重置密码界面输入:用户名、老密码、新密码 web1后端向4A系统API验证用户名密码 验证通过后,web1后端向4A系统发起改密码请求 2. 漏洞代码片段 关键问题: 未验证用户输入的 newpassword 未要求提供旧密码 application 参数可被篡改 3. API接口 登录验证API: http://192.168.10.10:8080/api/v1/sys_authenticate 密码重置API: http://192.168.10.10:8080/api/v1/sys_passwdreset 五、漏洞利用 1. 平行越权攻击 攻击者可以: 使用web1的弱口令登录 构造恶意请求修改web2/web3的密码 通过修改 application 参数指定目标系统 2. 攻击步骤 登录web1系统( admin/admin888 ) 访问密码重置功能 构造POST请求: 成功将web2的admin密码修改为 hacked123 六、漏洞修复建议 输入验证 : 对 newpassword 进行严格验证 强制要求提供旧密码 权限控制 : 在4A系统API端验证请求来源应用的合法性 禁止跨应用密码修改 会话验证 : 加强会话令牌的验证 确保密码修改请求来自合法会话 日志审计 : 记录所有密码修改操作的详细日志 包括请求来源、时间、修改的应用等 安全设计 : 实现CSRF防护机制 对敏感操作进行二次认证 七、总结 本案例展示了在4A认证系统架构下,由于API调用缺乏足够的安全验证导致的平行越权漏洞。攻击者可以利用此漏洞跨系统修改其他应用的密码,完全绕过设计中的隔离机制。这类漏洞在企业级统一认证系统中危害极大,需要开发者特别注意API间的权限控制和参数验证。