通达OA前台任意伪造用户登录审计和复现
字数 1055 2025-08-15 21:30:39
通达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参数
- 该文件直接接收POST参数
-
code_login参数的绕过:
- 正常情况下需要
code_login参数才能完成登录流程 - 在
general/login_code.php中发现:- 如果没有
$login_codeuid参数,系统会生成一个 - 在第37行以JSON形式输出生成的code
- 如果没有
logincheck_code.php会将uid以session形式保存
- 正常情况下需要
漏洞复现步骤
手动复现方法
-
第一步:获取codeuid
- 发送GET请求访问:
/general/login_code.php - 从响应中获取
codeuid值
- 发送GET请求访问:
-
第二步:伪造登录请求
- 发送POST请求到:
/logincheck_code.php - 必须携带以下两个参数:
uid:设置为1(管理员)或其他有效用户IDcode_login:使用第一步获取的codeuid值
- 发送POST请求到:
-
第三步:获取PHPSESSID
- 成功请求后将返回PHPSESSID
- 使用该cookie即可伪造指定用户身份登录系统
-
访问系统
- 使用伪造的cookie访问:
/general/
- 使用伪造的cookie访问:
自动化工具使用
推荐使用TongDaOA-Fake-User工具简化上述步骤:
- 运行工具自动完成上述请求流程
- 工具将生成有效的伪造cookie
- 使用生成的cookie访问系统即可
修复建议
- 升级通达OA至11.5.200417或更高版本
- 临时修复措施:
- 对
logincheck_code.php中的用户身份验证进行增强 - 增加对
code_login参数的严格校验 - 实现多因素认证机制
- 对
总结
该漏洞利用通达OA系统中用户身份验证不严格的缺陷,通过构造特定请求序列,可以绕过正常登录流程直接获取任意用户(包括管理员)的会话凭证。攻击者利用此漏洞可完全控制受影响系统,危害极大。