0xh7ml/CVE-2026-27626-PoC
GitHub: 0xh7ml/CVE-2026-27626-PoC
该项目是 OliveTin CVE-2026-27626 OS 命令注入漏洞的概念验证工具,用于演示和验证两条可绕过安全检查的远程代码执行路径。
Stars: 1 | Forks: 2
# CVE-2026-27626 — OliveTin OS 命令注入
## 摘要
| | |
|---|---|
| **CVE ID** | CVE-2026-27626 |
| **组件** | [OliveTin](https://github.com/OliveTin/OliveTin) |
| **漏洞类别** | CWE-78: OS 命令中使用的特殊元素的不当中和处理 |
| **CVSS 3.1** | 9.9–10.0 (严重) — `AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H` |
| **受影响版本** | 所有版本 ≤ `3000.10.0` (commit 早于 `0.0.0-20260222101908-4bbd2eab1532`) |
| **修复版本** | `0.0.0-20260222101908-4bbd2eab1532` 或更高版本 |
| **安全公告** | [GHSA-49gm-hh7w-wfvf](https://github.com/OliveTin/OliveTin/security/advisories/GHSA-49gm-hh7w-wfvf) |
| **披露日期** | 2026-02-22 (公告), 2026-02-25 (NVD) |
OliveTin 是一个自托管的 Web UI,用于向最终用户暴露预定义的 shell 命令。本仓库包含一个 PoC,演示了 OliveTin 的 Shell 模式执行路径中两个独立的 OS 命令注入攻击向量,它们均绕过了应用程序预期的 shell 参数安全检查。
## 背景
OliveTin 允许管理员定义 **Action** —— 即带有参数化参数的 shell 命令 —— 经过身份验证(或者取决于配置,匿名)的用户可以通过 Web UI 或 webhook 触发这些命令。为了防止用户通过参数值脱离预期运行的命令,OliveTin 会将每个用户提供的参数通过 `checkShellArgumentSafety()` 处理,然后再将其模板化为命令字符串并交给 `sh -c` 执行。
这正是该漏洞所破坏的安全边界。OliveTin 明确区分了“由管理员定义命令”和“由用户提供值”——安全检查的存在正是为了防止用户将参数值转化为执行任意命令的途径。
## 根本原因
### 攻击向量 1 — `password` 参数类型未被检查
`checkShellArgumentSafety()` 仅对固定允许列表中的参数类型进行清理:
```
func checkShellArgumentSafety(argType string, value string) bool {
dangerousTypes := []string{"string", "int", "bool", "choice"}
for _, dt := range dangerousTypes {
if argType == dt {
return sanitizeInput(value)
}
}
// BUG: "password" type not checked
return true // Assumes safe
}
```
`password` 是一种已记录在案的、用于接收敏感用户输入的预期参数类型——但它并不在 `dangerousTypes` 中,因此它会直接落至 `return true` 而未被清理。任何能够在 Shell 模式 Action 中填充 `password` 类型参数的用户,都可以注入 shell 元字符(如 `;`, `|`, `` ` ``, `$()` 等),以 OliveTin 进程用户的身份执行任意命令。
由于 OliveTin 的默认设置,此处的可利用性被放大:自注册功能默认开启,并且开箱即用设置为 `authType: none`,因此在许多实际部署中,“经过身份验证的用户”根本不需要任何真实的屏障。
### 攻击向量 2 — Webhook JSON 提取完全跳过类型检查
独立于攻击向量 1,OliveTin 的 webhook 处理程序会从入站 webhook 的 JSON body 中提取任意键/值对,并直接注入到 `ExecutionRequest.Arguments` 中 (`service/internal/executor/handler.go:153-157`)。
因为这些源自 webhook 的键在 Action 的配置中没有定义相应的 `ActionArgument`,`parseActionArguments()` (`arguments.go`) 找不到用于检查的参数类型,因此**完全跳过了 `checkShellArgumentSafety()`** —— 不仅仅是针对 `password`,而是针对所有类型。原始值被直接模板化到 shell 命令中,并在没有任何验证的情况下传递给 `sh -c`。
由于接收来自外部/不受信任来源的入站 webhook 是 OliveTin 主要支持的用例之一,因此此攻击向量**完全不需要身份验证**。
### 综合影响
任何在 Shell 模式下运行且带有 webhook 触发 Action 的 OliveTin 实例,都容易遭受**无需身份验证的远程代码执行**漏洞,并拥有 OliveTin 进程的权限 —— 根据 OliveTin 的部署方式(裸机还是容器、授予的 capabilities 等),这可能导致整个主机被完全攻陷。
## 受影响的配置
如果您的 OliveTin 实例符合以下情况,则可能容易受到攻击:
- 在 **Shell 模式**下运行 Action,*并且*
- 至少有一个带有 `password` 类型参数的 Action 暴露给不受信任或低权限用户(攻击向量 1),**或者**
- 拥有可通过 webhook 触发的 Action,尤其是那些可以从您的信任边界之外访问到的 Action(攻击向量 2)
## 使用方法
```
python3 CVE-2026-27626.py -u [OPTIONS]
```
## 参数
| 选项 | 描述 | 默认值 |
|---------|-------------|---------|
| `-u`, `--url` | 目标主机/IP | **必填** |
| `-p`, `--port` | OliveTin 端口 | `1337` |
| `-x`, `--cmd` | 要执行的命令 | `id` |
## 影响
- 以 OliveTin 服务账户身份执行任意 OS 命令
- 彻底攻陷运行 OliveTin 的主机或容器
- 横向渗透到 OliveTin 可以触达的任何环境(它通常以高权限运行以管理其他服务)
- 攻击向量 2 可以在**零凭证**的情况下,针对任何接受 webhook 且暴露在互联网上的实例实现上述影响
## 修复方案
1. 一旦您的更新渠道提供支持,请**立即升级** OliveTin 至 `0.0.0-20260222101908-4bbd2eab1532` 或更高版本。
2. 在未修补之前:
- 如果不需要,请禁用 Shell 模式。
- 避免在 Shell 模式下使用 webhook 触发的 Action。
- 移除或避免在任何不受信任用户可以访问的 Action 上使用 `password` 类型的参数。
- 禁用自注册并强制执行真实的身份验证(将 `authType` 设置为非 `none`)。
- 通过防火墙/反向代理白名单机制,将 OliveTin 的 webhook 端点的网络访问权限限制为仅受信任的来源。
- 在具有最小 capabilities 集和严格的 seccomp 配置文件的容器中运行 OliveTin,以便在遭受攻击时限制其影响范围。
- 监控 OliveTin 进程日志/主机审计日志,查看是否有由 OliveTin 服务生成的意外子进程。
## 时间线
| 日期 | 事件 |
|---|---|
| 2026-02-20 | 预留 CVE |
| 2026-02-22 | 发布 GitHub Security Advisory |
| 2026-02-25 | NVD 发布 |
| 2026-02-27 | 更新安全公告 |
## 参考
- GitHub Security Advisory: [GHSA-49gm-hh7w-wfvf](https://github.com/OliveTin/OliveTin/security/advisories/GHSA-49gm-hh7w-wfvf)
- NVD: [CVE-2026-27626](https://nvd.nist.gov/vuln/detail/CVE-2026-27626)
- OliveTin 项目: [github.com/OliveTin/OliveTin](https://github.com/OliveTin/OliveTin)
## 负责任的使用
本 PoC 仅出于防御性研究、检测工程和授权渗透测试的目的发布。请勿对您不拥有或未获得明确书面授权进行测试的系统运行此程序。滥用此代码攻击第三方系统可能违反计算机犯罪法(例如美国的 CFAA、英国的 Computer Misuse Act 以及其他地区的同等法规),执行此操作的责任完全由执行者本人承担。
## 作者
Md Saikat (0xh7ml)
标签:Go语言工具, PoC, Web安全, 命令注入, 暴力破解, 蓝队分析, 逆向工具