背景
近期,安恒Zionlab团队通过监控发现通达OA官网于2020年04月17日发布了最新11.5版本。产品更新说明中只提示修复了已知的若干问题,但经过团队成员补丁对比之后,发现官方修复了一处任意用户登录漏洞。
未经授权的攻击者可以通过构造进行任意用户登录(包括admin),登录之后可进一步上传恶意文件控制网站服务器。
通达OA < 11.5版本
补丁对比修改了如下文件:
跟进文件源码
代码第14行从redis里取标识id,判断是否存在,不存在则退出。
代码第28行存在严重逻辑错误,因为变量UID为攻击者可控,攻击者可赋值变量UID为1,从而控制该SQL语句返回的结果为USER表中UID为1的用户信息(默认UID为1的用户是管理员admin)。
代码第180行将查询到的用户信息进行相应的Session赋值,因此攻击者只需要绕过代码第14行的redis验证,便可通过伪造UID的值来达到登录任意用户的目的。
跟进另一个文件
代码第12行随机生成了一串登录的标识id,并在第35行通过set_cache方法将该标识id插入到redis缓存中,最重要的是在第37行将该标识id进行了输出。
官方已发布最新修正版本,请及时更新补丁:https://www.tongda2000.com/download/sp2019.php
目前,安恒APT预警平台、远程安全评估web扫描模块、网站安全监测平台等产品已支持对该漏洞的检测,已购买产品的客户可以通过在线升级的方式更新最新漏洞策略库进行自查。
文由ZionLab 安恒信息应急响应中心