shahidmallaofficial/cpanel-cve-2026-41940-fix
GitHub: shahidmallaofficial/cpanel-cve-2026-41940-fix
针对 cPanel CVE-2026-41940 高危预认证绕过漏洞的一体化 Bash 应急响应脚本,集漏洞检测、入侵排查、恶意软件清除与版本修补于一体。
Stars: 4 | Forks: 0
# cpanel-cve-2026-41940 修复
[]()
[](#license)
[](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)
[]()
## 这是什么
在 **2026 年 4 月 28 日**,cPanel 披露了一个 **预认证** 身份验证绕过漏洞(CVE-2026-41940,CVSS 9.8),影响 **11.40 之后的所有受支持的 cPanel & WHM 版本**。只需向端口 2087 发送一个 HTTP 请求,未经身份验证的攻击者就能注入一个 `user=root` 会话,并直接进入 WHM。
自 **2026 年 2 月 23 日**起,就已发现在野外(in-the-wild)被积极利用——这比补丁发布早了六周。我们在多台服务器上清理的攻击活动投放了一个名为 **`nuclear.x86`** 的 Linux 僵尸网络,以及一个基于 XMRig 的加密货币挖矿程序。
本仓库包含一个 Bash 脚本,它可以:
* 检测您的服务器是否 **存在漏洞**(cPanel 版本检查)
* 检测您的服务器是否 **已被入侵**(11 项 IOC 检查)
* 安全地 **修复** —— 终止恶意软件,封禁 C2 IP,清除伪造的会话,重启 cpsrvd
* 通过 `/scripts/upcp --force` **修补** cPanel/WHM
* 生成取证报告并保留证据
它专为需要快速对服务器集群进行分诊排查的 **托管服务提供商、系统管理员和 cPanel 经销商** 设计。
## ⚠️ 运行前的注意事项
如果您在尝试下载文件时,`wget` 或 `curl` 返回了 **`Killed`**,**说明恶意软件仍在运行** —— `nuclear.x86` 会主动终止下载工具以阻止清理操作。请先运行终止步骤(脚本在 `--fix` 模式下会为您执行此操作)。
如果因此而无法下载本脚本,请通过 SSH 从您的笔记本电脑复制粘贴,或者使用 `scp`。
## 安装
```
# 以 root 用户身份,在 cPanel 服务器上:
cd /root
wget https://raw.githubusercontent.com/shahidmallaofficial/cpanel-cve-2026-41940-fix/main/fix-cpanel-cve-2026-41940.sh
chmod +x fix-cpanel-cve-2026-41940.sh
```
或者使用 `curl`:
```
cd /root
curl -fsSLO https://raw.githubusercontent.com/shahidmallaofficial/cpanel-cve-2026-41940-fix/main/fix-cpanel-cve-2026-41940.sh
chmod +x fix-cpanel-cve-2026-41940.sh
```
**单行命令**(请先审查脚本,然后再运行):
```
cd /root && \
curl -fsSLO https://raw.githubusercontent.com/shahidmallaofficial/cpanel-cve-2026-41940-fix/main/fix-cpanel-cve-2026-41940.sh && \
chmod +x fix-cpanel-cve-2026-41940.sh && \
less fix-cpanel-cve-2026-41940.sh
# 审核完成后,运行它:
./fix-cpanel-cve-2026-41940.sh
```
## 用法
### 三种模式
```
# 1. 仅扫描(默认,不作更改 — 始终可安全运行)
./fix-cpanel-cve-2026-41940.sh
# 2. 扫描 + 修复,对每个破坏性操作进行确认提示
./fix-cpanel-cve-2026-41940.sh --fix
# 3. 完全自动:修复 + cPanel 更新 + 清除缓存 + 轻度加固
./fix-cpanel-cve-2026-41940.sh --auto
# 4. 无人值守(无提示 — 适用于 cron、jump-boxes、fleet scripts)
./fix-cpanel-cve-2026-41940.sh --auto -y
# 5. 帮助
./fix-cpanel-cve-2026-41940.sh --help
```
### 退出码
| 代码 | 含义 |
|------|---------|
| `0` | 干净 —— 未检测到 IOC |
| `2` | 检测到入侵指标(请审查报告) |
| `1` / 其他 | 预检失败(非 root 用户、非 cPanel 服务器等) |
### 输出位置
* **日志:** `/var/log/cpanel-cve-fix/scan-.log`
* **报告:** `/var/log/cpanel-cve-fix/report-.txt`
* **证据备份:** `/root/cve-cleanup-backup-/`
## 检查内容(扫描阶段)
| # | 检查项 | 捕获目标 |
|---|-------|-----------------|
| 1 | cPanel 构建版本与已修补版本对比 | 存在漏洞的主机(列出所有 6 个已修补的版本) |
| 2 | 运行中的进程 | `nuclear.x86`, `xmrig`, `cpuminer`, `minerd`, `xmr-stak`, `4thepool_miner` |
| 3 | 活动网络连接 | 三个已知 C2 IP + 挖矿池端口 |
| 4 | Shell 历史文件 | `bash_history` / `zsh_history` 中的 IOC 命令 |
| 5 | 防火墙完整性 | `iptables -F` 破坏步骤 |
| 6 | cPanel 会话原始目录 | 伪造的 `user=root` 会话文件 |
| 7 | `/tmp`, `/var/tmp`, `/dev/shm` | 最近投放的可执行文件 |
| 8 | Cron 条目 | 持久化(系统级 + 每用户) |
| 9 | `authorized_keys` 文件 | 新增的 SSH 密钥 —— 只读审计 |
| 10 | cPanel 访问日志 | `Go-http-client` / `python-requests` 漏洞利用特征 |
| 11 | 关键二进制文件 | 被篡改的 `wget` / `curl` / `ls` / `ps`(mtime + RPM 校验) |
## 执行操作(修复 / 自动阶段)
* **终止** 已知的恶意软件进程(在拍摄 PID、命令行、可执行文件路径的快照之后)
* **封禁** 已知的 C2 IP,如果存在 CSF 则使用 CSF,否则使用 iptables(并持久化规则)
* **清除** `/var/cpanel/sessions/raw/*`(首先会进行 tar.gz 备份)
* **重启** `cpsrvd`, `cpdavd`, `cphulkd`, `queueprocd`, `dnsadmin`
* **修补** cPanel,通过 `/scripts/upcap --force`(仅在 `--auto` 模式下)
* **清理** 包管理器缓存、BIND DNS 缓存(`rndc flush`)、旧的 journal 日志
* **加固** 如果可用,通过启用 CSF 的 `LF_INTEGRITY` 实现
## 刻意不做的事情
当通过 SSH 无人值守运行时,这些操作弊大于利,因此它们被写入手动操作报告中:
* ❌ 轮换(更换) SSH 密钥(这会导致您被当前正在操作的服务器拒之门外)
* ❌ 轮换 cPanel / MySQL / 邮箱密码(脚本无法更新所有相关的配置文件)
* ❌ 从备份恢复数据(只有您知道自己上次已知良好的还原点)
* ❌ 删除 `/home/*/public_html` 中的任意文件
* ❌ 批量删除 cron 条目
## 服务器集群批量使用
用于从跳板机扫描多台服务器:
```
mkdir -p reports
while read -r host; do
echo "=== $host ==="
scp fix-cpanel-cve-2026-41940.sh "root@${host}:/root/" >/dev/null
ssh "root@${host}" '/root/fix-cpanel-cve-2026-41940.sh --auto -y'
scp "root@${host}:/var/log/cpanel-cve-fix/report-*.txt" "reports/${host}.txt" 2>/dev/null
done < servers.txt
```
然后过滤报告内容:
```
grep -l "COMPROMISE INDICATORS PRESENT" reports/*
```
## 运行脚本后仍必须执行的手动操作
脚本会在其报告中列出这些内容。**这些操作都无法安全地自动执行。**
1. 轮换 **所有本地 Linux 密码**(攻击者已获取 `/etc/shadow`)
2. 从 WHM 轮换 **cPanel 和经销商密码**
3. 轮换 **所有 MySQL/数据库密码**,并更新 `wp-config.php`、`.env`、`config.php` 等
4. 轮换 **所有电子邮件账户密码**
5. 轮换 **所有 API token**(cPanel、WHM、第三方)
6. 重新生成 **root 及所有 IT 用户的 SSH 密钥** —— 并从 GitHub / GitLab / Bitbucket / CI / 部署目标中移除旧的公钥
7. 审计 `/home/*/public_html` 以查找 **Web Shell**(最近修改过的 `.php` 文件)
8. 审计 cPanel **电子邮件转发器 / FTP 账户 / cron 作业** 以排查后门
9. 从 **第一个 IOC 时间戳之前** 拍摄的备份中恢复数据(行业内公认该时间约为 2026 年 2 月 23 日)
10. 告知受影响的客户在他们 **重复使用过该密码的其他任何地方** 轮换其 cPanel 密码
## 已修补的 cPanel / WHM 版本
您需要升级到或高于以下版本之一:
| 轨道 | 已修补的构建版本 |
|---------|-----------------|
| 110.0.x | `11.110.0.97` |
| 118.0.x | `11.118.0.63` |
| 126.0.x | `11.126.0.54` |
| 132.0.x | `11.132.0.29` |
| 134.0.x | `11.134.0.20` |
| 136.0.x | `11.136.0.5` |
| WP² | `11.136.1.7` |
使用 `/usr/local/cpanel/cpanel -V` 检查您的版本。
## 入侵指标
| 类型 | 指标 |
|------|-----------|
| IP | `87.121.84.78` (nuclear.x86 投放) |
| IP | `45.148.120.23` (nuclear.x86 备用投放) |
| IP | `31.57.109.131` (挖矿脚本) |
| 文件 | `nuclear.x86` (Mirai 衍生版 ELF) |
| 进程 | `nuclear.x86 xd` |
| 脚本 | `4thepool_miner.sh` |
| User-Agent | `Go-http-client/1.1` 访问端口 2087 |
| User-Agent | `python-requests/*` 访问端口 2087 |
| 模式 | `/var/cpanel/sessions/raw/` 中包含 `user=root` 的新文件,但在 `login_log` 中没有匹配的成功登录记录 |
| 模式 | 空 / 被清空的 `iptables` 规则集 |
## 常见问题解答
**在健康的服务器上运行安全吗?**
是的。默认模式为仅扫描,不作任何更改。修复和自动模式具有幂等性。
**会导致停机吗?**
`--fix` 在重启 `cpsrvd` 时会导致短暂的 WHM/cPanel 中断(约 10 秒)。`--auto` 运行 `/scripts/upcp --force` 可能需要 10-30 分钟 —— 在此期间网站保持正常访问,但 WHM 在结束时会出现短暂不可用。
**我的 cPanel 版本不在已修补列表中 —— 我安全吗?**
如果您使用的版本轨道早于 110.0.x,说明您正处于生命周期已结束的版本。cPanel 不会发布针对该版本的补丁。在证明清白之前,**请将该主机视为已被入侵**,并立即进行升级。
**脚本在尝试执行任何操作时显示 `Killed`。**
这是 `nuclear.x86` 正在主动终止您的工具。请先手动运行终止步骤:
```
pkill -9 -f nuclear.x86
```
然后重新运行该脚本。
**这适用于 AlmaLinux / Rocky / CloudLinux / CentOS 吗?**
是的 —— 适用于所有标准的 cPanel 平台。已在 AlmaLinux 8、Rocky 9、CloudLinux 7+ 上通过测试。
**它会动我客户的网站吗?**
不会。该脚本不会修改 `/home/*/public_html` 中的任何内容。它只涉及操作系统级别的配置、cPanel 会话、防火墙规则以及已知的恶意进程。
## 贡献
欢迎提交 PR —— 特别是关于:
* 在野外发现的额外 IOC(新的 C2 IP、新的恶意软件名称)
* 针对特定操作系统的安全加固调整
* 报告输出的翻译
请不要添加任何自动轮换凭据或删除用户数据的功能 —— 保持极小的破坏性范围是故意的安排。
## 许可证
MIT。可随意使用、分支或将其集成到您自己的工具中。感谢保留署名,但非强制要求。
## 致谢
由 **[WHMCSPilot.com](https://whmcspilot.com)** 构建 —— `SM`。
漏洞研究致谢:cPanel 安全团队、watchTowr Labs、Rapid7、KnownHost,以及在攻击活动展开时分享 IOC 的广大托管社区。
## 免责声明
本脚本按“原样”提供,不作任何担保。它是一个 **首选响应分诊工具** —— 不能替代完整的事件响应流程。如果您处理涉及 PII(个人身份信息)、支付数据或其他受监管数据,在宣布受感染主机安全之前,请咨询您的数据保护官 (DPO) 和合格的 IR(事件响应)公司。
如果服务器已被主动入侵,**最安全的途径始终是从已知良好的备份中重建,而不是在原地进行清理。**
标签:AMSI绕过, Awesome, C2阻断, CISA项目, cPanel, CVE-2026-41940, GPT, IOC检测, IP 地址批量处理, nuclear.x86, Web主机管理, WHM, XMRig, 僵尸网络, 入侵分析, 加密货币挖矿, 威胁检测, 安全补丁, 库, 应急响应, 应用安全, 恶意软件清除, 托管服务提供商, 模块化设计, 漏洞修复, 漏洞管理, 系统加固, 系统管理, 网站空间, 网络信息收集, 网络安全, 网络安全培训, 自动化修复, 自动化运维, 身份验证绕过, 隐私保护, 预认证漏洞, 高危漏洞