通达OA前台任意用户伪造登录漏洞安全通告
1. 漏洞类型:
TAG: |
通达信科、OA、用户伪造 |
危害等级: |
高 |
应急等级: |
黄色 |
2. 漏洞影响:
通达OA是一套办公系统.2020年04月17日,通达OA官方在更新了一个v11版本安全补丁,其中修复了一个任意用户伪造登录漏洞。此漏洞可使得未授权的远程攻击者通过精心构造的请求包,伪造任意用户登录,包括管理员。相关用户需及时更新补丁。
3. 受影响版本:
4. 漏洞分析:
1)方法一:使用POC工具检测漏洞并利用,首先使用并获取SESSIONID。
图1 利用漏洞获取到SESSIONID
访问主页/general/index.php,抓包改cookie。
图2 修改cookie
2)方法二:分析源码逻辑漏洞后,根据代码抓包复现漏洞。
首先分析学习Login_code.php
图3 其他版本所需的codeuid变量获取办法
第8行 获取codeuid;
第33行 输出codeuid(在11.3版本无codeid验证可忽略)Logincheck_code.php文件
图4 row数组赋值
13行 $UID可控
19行 直接对用户的UID进行查询(默认admin的uid等于1)
22行 查询的结果复制给$ROW数组,并且把数组中的字段值赋值给对应的变量(当UID的为1,查询的是admin用户的信息),这些变量将在后面的sesion赋值时使用。
图5 session赋值
Burp抓包获取cookie。
图6 获取登录凭证
更换cookie访问主页。
图7 利用登录凭证访问主页
5. 漏洞检测:
我中心已具备通达OA前台任意用户伪造登录漏洞检测工具 “tongdaOA-fake-user-POC.py”( 如有需要请联系负责人邓先生获取,13825014512),在包含检测脚本“tongdaOA-fake-user-POC.py”的目录中,打开命令行,并运行以下语句:
tongdaOA-fake-user-POC.py -v XX -url xxxxxx
参数解释:
需要安装Python 3的运行环境,以执行Python指令;
-v 后输入11或2017(11和2017为版本号);
-url 后输入通达服务器地址;
若获取到SESSIONID则存在此漏洞。
6. 修复建议: