通达OA任意用户登陆分析
字数 1148 2025-08-25 22:59:02

通达OA任意用户登录漏洞分析与利用

漏洞概述

通达OA系统存在一个严重的身份验证绕过漏洞,攻击者可以通过构造特定请求实现任意用户登录,包括管理员账户(默认UID=1)。该漏洞于2020年4月20日由阿里云漏洞预警系统首次披露。

受影响版本

  • 通达OA 11.0.190911
  • 通达OA 11.4.200323(更新前)
  • 可能影响其他未打补丁的版本

漏洞分析

关键漏洞点

漏洞存在于logincheck_code.php文件中,主要问题在于:

  1. $UID参数直接从POST请求中获取,未进行充分验证
  2. 系统允许通过CODEUID参数绕过正常认证流程
  3. 当满足特定条件时,系统直接将提供的UID存入SESSION,完成登录

补丁对比

官方在11.4.200417版本中修复了此漏洞,主要修改包括:

  1. $UID进行初始化
  2. 增加对UID是否为0的判断
  3. 加强了身份验证逻辑

漏洞利用步骤

准备工作

  1. 获取通达OA系统(如TDOA11.0.exe)
  2. 安装并配置通达OA服务
  3. 准备文件对比工具(如DiffMerge)
  4. 准备Zend解密工具(用于分析加密的PHP文件)

利用过程

  1. 获取CODEUID

    • 访问login_code.php获取code_uid参数值
    • 如果login_codeuid为空,系统会通过getUniqid()返回CODEUID
  2. 构造恶意请求

    POST /logincheck_code.php HTTP/1.1
    Host: target
    Content-Type: application/x-www-form-urlencoded
    
    UID=1&CODEUID={获取的CODEUID}
    
    • UID=1通常对应系统管理员账户
  3. 获取会话Cookie

    • 成功请求后会返回有效的会话Cookie
  4. 使用Cookie访问系统

    • 将获取的Cookie用于后续请求,实现任意用户登录

修复建议

  1. 临时解决方案

    • 备份并移除logincheck_code.php文件
    • 使用WAF等安全产品禁止logincheck_code.php的访问
  2. 永久解决方案

    • 更新至官方最新补丁(11.4.200417或更高版本)
    • 实施版本升级流程:
      11.0.190911 → 11.4.200323 → 11.4.200417
      
    • 升级时备份webroot文件夹,验证对应版本时更换webroot

技术总结

  1. 该漏洞属于身份验证绕过类型,危害性高
  2. 通过对比补丁文件可以快速定位漏洞点
  3. 登录验证功能应严格处理,避免附带非必要的功能
  4. 对于类似OA系统,应重点关注:
    • 用户身份验证流程
    • SESSION管理机制
    • 参数初始化与验证

参考资源

  1. 阿里云漏洞预警:https://help.aliyun.com/noticelist/articleid/1060277736.html
  2. 详细分析文章:https://livewcs.github.io/2020/07/03/通达OA任意用户登录漏洞分析/

免责声明

本文仅用于安全研究与教育目的,未经授权对他人系统进行测试或攻击是违法行为。安全研究人员应在合法授权范围内进行漏洞验证。

通达OA任意用户登录漏洞分析与利用 漏洞概述 通达OA系统存在一个严重的身份验证绕过漏洞,攻击者可以通过构造特定请求实现任意用户登录,包括管理员账户(默认UID=1)。该漏洞于2020年4月20日由阿里云漏洞预警系统首次披露。 受影响版本 通达OA 11.0.190911 通达OA 11.4.200323(更新前) 可能影响其他未打补丁的版本 漏洞分析 关键漏洞点 漏洞存在于 logincheck_code.php 文件中,主要问题在于: $UID 参数直接从POST请求中获取,未进行充分验证 系统允许通过 CODEUID 参数绕过正常认证流程 当满足特定条件时,系统直接将提供的UID存入SESSION,完成登录 补丁对比 官方在11.4.200417版本中修复了此漏洞,主要修改包括: 对 $UID 进行初始化 增加对UID是否为0的判断 加强了身份验证逻辑 漏洞利用步骤 准备工作 获取通达OA系统(如TDOA11.0.exe) 安装并配置通达OA服务 准备文件对比工具(如DiffMerge) 准备Zend解密工具(用于分析加密的PHP文件) 利用过程 获取CODEUID : 访问 login_code.php 获取 code_uid 参数值 如果 login_codeuid 为空,系统会通过 getUniqid() 返回CODEUID 构造恶意请求 : UID=1通常对应系统管理员账户 获取会话Cookie : 成功请求后会返回有效的会话Cookie 使用Cookie访问系统 : 将获取的Cookie用于后续请求,实现任意用户登录 修复建议 临时解决方案 : 备份并移除 logincheck_code.php 文件 使用WAF等安全产品禁止 logincheck_code.php 的访问 永久解决方案 : 更新至官方最新补丁(11.4.200417或更高版本) 实施版本升级流程: 升级时备份webroot文件夹,验证对应版本时更换webroot 技术总结 该漏洞属于身份验证绕过类型,危害性高 通过对比补丁文件可以快速定位漏洞点 登录验证功能应严格处理,避免附带非必要的功能 对于类似OA系统,应重点关注: 用户身份验证流程 SESSION管理机制 参数初始化与验证 参考资源 阿里云漏洞预警:https://help.aliyun.com/noticelist/articleid/1060277736.html 详细分析文章:https://livewcs.github.io/2020/07/03/通达OA任意用户登录漏洞分析/ 免责声明 本文仅用于安全研究与教育目的,未经授权对他人系统进行测试或攻击是违法行为。安全研究人员应在合法授权范围内进行漏洞验证。