通达OA前台任意伪造用户登录审计和复现
字数 1055 2025-08-15 21:30:39

通达OA前台任意伪造用户登录漏洞分析与复现

漏洞概述

本漏洞存在于通达OA办公自动化系统中,允许攻击者通过构造特定请求伪造任意用户身份登录系统,包括管理员账户。漏洞影响版本为通达OA 11.5.200417之前的版本。

漏洞影响范围

  • 通达OA版本 < 11.5.200417

漏洞原理分析

关键漏洞点

漏洞主要存在于以下两个文件中:

  1. logincheck_code.php - 登录验证文件
  2. general/login_code.php - 登录码生成文件

代码审计细节

  1. logincheck_code.php中的缺陷

    • 该文件直接接收POST参数uid进行数据库查询
    • 虽然对uid进行了int类型转换,但通达OA系统中只要uid=1即代表管理员身份
    • 漏洞点在于未对用户身份进行充分验证,仅依赖可伪造的uid参数
  2. code_login参数的绕过

    • 正常情况下需要code_login参数才能完成登录流程
    • general/login_code.php中发现:
      • 如果没有$login_codeuid参数,系统会生成一个
      • 在第37行以JSON形式输出生成的code
    • logincheck_code.php会将uid以session形式保存

漏洞复现步骤

手动复现方法

  1. 第一步:获取codeuid

    • 发送GET请求访问:
      /general/login_code.php
      
    • 从响应中获取codeuid
  2. 第二步:伪造登录请求

    • 发送POST请求到:
      /logincheck_code.php
      
    • 必须携带以下两个参数:
      • uid:设置为1(管理员)或其他有效用户ID
      • code_login:使用第一步获取的codeuid值
  3. 第三步:获取PHPSESSID

    • 成功请求后将返回PHPSESSID
    • 使用该cookie即可伪造指定用户身份登录系统
  4. 访问系统

    • 使用伪造的cookie访问:
      /general/
      

自动化工具使用

推荐使用TongDaOA-Fake-User工具简化上述步骤:

  1. 运行工具自动完成上述请求流程
  2. 工具将生成有效的伪造cookie
  3. 使用生成的cookie访问系统即可

修复建议

  1. 升级通达OA至11.5.200417或更高版本
  2. 临时修复措施:
    • logincheck_code.php中的用户身份验证进行增强
    • 增加对code_login参数的严格校验
    • 实现多因素认证机制

总结

该漏洞利用通达OA系统中用户身份验证不严格的缺陷,通过构造特定请求序列,可以绕过正常登录流程直接获取任意用户(包括管理员)的会话凭证。攻击者利用此漏洞可完全控制受影响系统,危害极大。

通达OA前台任意伪造用户登录漏洞分析与复现 漏洞概述 本漏洞存在于通达OA办公自动化系统中,允许攻击者通过构造特定请求伪造任意用户身份登录系统,包括管理员账户。漏洞影响版本为通达OA 11.5.200417之前的版本。 漏洞影响范围 通达OA版本 < 11.5.200417 漏洞原理分析 关键漏洞点 漏洞主要存在于以下两个文件中: logincheck_code.php - 登录验证文件 general/login_code.php - 登录码生成文件 代码审计细节 logincheck_ code.php中的缺陷 : 该文件直接接收POST参数 uid 进行数据库查询 虽然对 uid 进行了int类型转换,但通达OA系统中只要 uid=1 即代表管理员身份 漏洞点在于未对用户身份进行充分验证,仅依赖可伪造的 uid 参数 code_ login参数的绕过 : 正常情况下需要 code_login 参数才能完成登录流程 在 general/login_code.php 中发现: 如果没有 $login_codeuid 参数,系统会生成一个 在第37行以JSON形式输出生成的code logincheck_code.php 会将 uid 以session形式保存 漏洞复现步骤 手动复现方法 第一步:获取codeuid 发送GET请求访问: 从响应中获取 codeuid 值 第二步:伪造登录请求 发送POST请求到: 必须携带以下两个参数: uid :设置为1(管理员)或其他有效用户ID code_login :使用第一步获取的codeuid值 第三步:获取PHPSESSID 成功请求后将返回PHPSESSID 使用该cookie即可伪造指定用户身份登录系统 访问系统 使用伪造的cookie访问: 自动化工具使用 推荐使用 TongDaOA-Fake-User 工具简化上述步骤: 运行工具自动完成上述请求流程 工具将生成有效的伪造cookie 使用生成的cookie访问系统即可 修复建议 升级通达OA至11.5.200417或更高版本 临时修复措施: 对 logincheck_code.php 中的用户身份验证进行增强 增加对 code_login 参数的严格校验 实现多因素认证机制 总结 该漏洞利用通达OA系统中用户身份验证不严格的缺陷,通过构造特定请求序列,可以绕过正常登录流程直接获取任意用户(包括管理员)的会话凭证。攻击者利用此漏洞可完全控制受影响系统,危害极大。