通达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文件中,主要问题在于:
$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
- 访问
-
构造恶意请求:
POST /logincheck_code.php HTTP/1.1 Host: target Content-Type: application/x-www-form-urlencoded UID=1&CODEUID={获取的CODEUID}- UID=1通常对应系统管理员账户
-
获取会话Cookie:
- 成功请求后会返回有效的会话Cookie
-
使用Cookie访问系统:
- 将获取的Cookie用于后续请求,实现任意用户登录
修复建议
-
临时解决方案:
- 备份并移除
logincheck_code.php文件 - 使用WAF等安全产品禁止
logincheck_code.php的访问
- 备份并移除
-
永久解决方案:
- 更新至官方最新补丁(11.4.200417或更高版本)
- 实施版本升级流程:
11.0.190911 → 11.4.200323 → 11.4.200417 - 升级时备份webroot文件夹,验证对应版本时更换webroot
技术总结
- 该漏洞属于身份验证绕过类型,危害性高
- 通过对比补丁文件可以快速定位漏洞点
- 登录验证功能应严格处理,避免附带非必要的功能
- 对于类似OA系统,应重点关注:
- 用户身份验证流程
- SESSION管理机制
- 参数初始化与验证
参考资源
- 阿里云漏洞预警:https://help.aliyun.com/noticelist/articleid/1060277736.html
- 详细分析文章:https://livewcs.github.io/2020/07/03/通达OA任意用户登录漏洞分析/
免责声明
本文仅用于安全研究与教育目的,未经授权对他人系统进行测试或攻击是违法行为。安全研究人员应在合法授权范围内进行漏洞验证。