通达OA漏洞利用威胁分析
字数 1367 2025-08-20 18:17:31
通达OA漏洞利用威胁分析教学文档
0x01 通达OA系统概述
通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。
0x02 系统目录结构及版本信息
目录结构
| 目录名称 | 用途 |
|---|---|
| attach | OA附件文件存放目录 |
| bin | Apache、PHP、Zend等主程序及配置文件,服务配置程序等 |
| data5 | MySQL数据库文件目录 |
| logs | Apache等日志文件目录 |
| MyAdmin | 通达OA的MySQL管理工具 |
| mysql5 | MySQL主程序文件 |
| nginx | Nginx Web应用服务 |
| tmp | 临时文件目录 |
| webroot | 通达OA的WEB根目录(PHP程序目录) |
版本信息检查点
- /inc/expired.php
- /inc/reg_trial.php
- /inc/reg_trial_submit.php
0x03 任意文件删除漏洞分析
漏洞位置
/module/appbuilder/assets/print.php
漏洞代码分析
<?php
$s_tmp = __DIR__ . "/../../../../logs/appbuilder/logs";
$s_tmp .= "/" . $_GET["guid"];
if (file_exists($s_tmp)) {
$arr_data = unserialize(file_get_contents($s_tmp));
unlink($s_tmp);
$s_user = $arr_data["user"];
}
else {
echo "未知参数";
exit();
}
漏洞原理
$s_tmp初始值为当前脚本目录(__DIR__)拼接相对路径/../../../../logs/appbuilder/logs- 然后拼接GET参数
guid的值,导致路径可控 - 仅使用
file_exists()检查文件存在性后直接调用unlink()删除文件
影响版本
通达OA V11.6及以下版本
漏洞利用示例
删除/module/appbuilder/assets/目录下的test.txt文件:
?guid=../../../webroot/module/appbuilder/assets/test.txt
0x04 任意用户文件上传漏洞分析
漏洞位置
/general/data_center/utils/upload.php
漏洞代码关键点
if ($action == "upload") {
if ($filetype == "xls") {
// xls处理代码
}
else if ($filetype == "img") {
// img处理代码
}
else {
// 漏洞所在代码块
$uploaddir = MYOA_ATTACH_PATH . "/data_center/attachment/";
if (!is_dir(MYOA_ATTACH_PATH . "/data_center/attachment")) {
mkdir(MYOA_ATTACH_PATH . "/data_center/attachment");
}
$s_n = $_FILES["FILE1"]["name"];
if ($s_n[0] != "{") {
$s_n = $repkid . "_" . $s_n;
}
move_uploaded_file($_FILES["FILE1"]["tmp_name"], $uploaddir . $s_n);
}
}
漏洞原理
- 当
$action为"upload"且$filetype不为"xls"或"img"时进入else代码块 - 上传目录不存在时会自动创建
- 文件名仅检查是否以"{"开头,否则简单拼接
$repkid变量 - 直接使用
move_uploaded_file()移动上传文件,无严格过滤
影响版本
通达OA V11.7以下版本
利用条件
需要后台权限(可通过删除认证文件绕过)
0x05 组合利用技术
攻击链
- 首先利用任意文件删除漏洞删除认证文件
inc/auth.inc.php?guid=../../../webroot/inc/auth.inc.php - 然后利用文件上传漏洞上传Webshell
- 通过Webshell获取服务器权限
防御建议
- 及时升级到最新版本
- 对文件操作进行严格路径校验
- 实现上传文件的严格过滤机制
- 限制关键目录的写权限
- 部署Web应用防火墙(WAF)
附录:漏洞修复方案
-
对于文件删除漏洞:
- 添加路径白名单校验
- 禁止使用相对路径跳转
- 限制可删除的文件范围
-
对于文件上传漏洞:
- 实现严格的文件类型检查
- 限制上传文件扩展名
- 对上传文件内容进行安全检查
- 存储上传文件时使用随机文件名
- 禁用危险的文件执行权限
-
通用安全措施:
- 实施最小权限原则
- 定期安全审计
- 启用日志记录和监控
- 进行输入验证和输出编码