通达OA 任意用户登录漏洞
通达 OA 存在认证绕过漏洞,由外部可控的参数可登录任意用户
漏洞描述
通达 OA 是一套国内常用的办公系统,2020年4月17日,通达OA官方发布了最新的通达OA 11.5.200417版本,该版本修复了若干安全问题。
对于部分版本,存在一个认证绕过漏洞,利用该漏洞可以实现任意用户登录,包括管理员
影响范围
- 通达 OA 2017 版
- 通达 OA V11.X < V11.5
漏洞复现
访问/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缓存并在最后输出