通达OA 任意用户登录漏洞

通达 OA 存在认证绕过漏洞,由外部可控的参数可登录任意用户

漏洞描述

通达 OA 是一套国内常用的办公系统,2020年4月17日,通达OA官方发布了最新的通达OA 11.5.200417版本,该版本修复了若干安全问题。

对于部分版本,存在一个认证绕过漏洞,利用该漏洞可以实现任意用户登录,包括管理员

影响范围

  • 通达 OA 2017 版
  • 通达 OA V11.X < V11.5

漏洞复现

通达 OA V11.4

访问/general/login_code.php获取code_uid

POST传递CODEUID和被伪造用户的UID到/logincheck_code.php,返回的SESSID即其身份

携带SESSID访问

漏洞分析

源码在程序安装目录的webroot目录下,用工具解密

/logincheck_code.php

UID参数可控,在通过15行对login_codeuid的判断后,该值会被直接代入SQL语句进行查询,最后会返回对应UID的用户的信息,通达OA默认的第一个用户是管理员admin账户,所以可以设置UID为1,即可获取到admin管理员的信息,要通过15行的判断需要获取code_uid

/general/login_code.php

当login_codeuid为空时会生成一个存入redis缓存并在最后输出

参考

实用工具:免费Zend 5.2 5.3 5.4解密工具

TongDaOA-Fake-User

漏洞安全公告|通达OA 任意用户登录漏洞