Jovicaa/CVE-2026041940-IoC-forensics-instructions

GitHub: Jovicaa/CVE-2026041940-IoC-forensics-instructions

针对 cPanel/WHM/WP2 服务器的 CVE-2026-41940 漏洞利用的数字取证与应急响应指南,涵盖证据保存、会话分析、日志排查和修复建议。

Stars: 0 | Forks: 0

# 技术文档:cPanel/WHM 或 WP Squared 服务器数字取证指南 — 疑似 CVE-2026-41940 漏洞利用 **文档版本:** 1.0 **日期:** 2026-05-04 **用途:** 针对通过 **CVE-2026-41940** 疑似入侵的 Linux 服务器(安装 cPanel & WHM 或 WP Squared)的应急响应/数字取证。 **范围:** 本指南涵盖隔离、证据保存、实时响应采集、cPanel 会话分析、日志分析、持久化机制、Web 后门、用户账户、API 令牌、SSH 密钥以及恢复建议。 ## 1. 事件背景 cPanel 针对 **CVE-2026-41940** 发布了一份安全公告,描述了 cPanel 软件(包括 DNSOnly)中的 **身份验证绕过** 问题,并指出受影响版本为 **11.40** 之后的所有版本。该公告于 2026-05-04 更新,文章最后修改时间为 2026-05-03 21:43 CST,旨在澄清补丁版本。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) 根据 cPanel 通知,已打补丁的 cPanel & WHM 版本至少包括:`11.86.0.41+`、`11.110.0.97+`、`11.118.0.63+`、`11.124.0.35+`、`11.126.0.54+`、`11.130.0.19+`、`11.132.0.29+`、`11.134.0.20+`、`11.136.0.5+`,WP Squared 的补丁版本为 `136.1.7+`。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) cPanel 建议的必需操作包括:通过 `/scripts/upcp --force` 紧急更新,使用 `/usr/local/cpanel/cpanel -V` 检查版本,并通过 `/scripts/restartsrv_cpsrvd --hard` 硬重启 cpsrvd 服务。如果服务器无法立即更新,建议的缓解措施包括阻止端口 `2083`、`2087`、`2095` 和 `2096` 的入站流量,以及停止 cpsrvd 和 cpdavd 服务。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) ## 2. 取证调查目标 目标是: 1. 确定服务器是否使用了受影响版本。 2. 确定 cPanel/WHM/WP2 会话中是否存在入侵指标。 3. 识别与可疑活动相关的源 IP 地址、时间范围和用户账户。 4. 确定攻击者是否获得了 WHM/root 访问权限。 5. 识别持久化机制: - SSH 密钥 - cron/systemd - Web shell/后门 - 新用户 - API 令牌 - 被修改的 cPanel/WHM 账户 - `/etc/passwd`、`/etc/shadow`、`/etc/sudoers` 的修改 6. 以符合内部、监管或法律调查要求的方式保存证据。 7. 做出决策:清理、重建、迁移到干净服务器或从备份恢复。 ## 3. 首要规则:不破坏证据 在执行补丁、清除会话、清理恶意软件或重启服务之前,如果操作情况允许,请执行以下操作: - 创建 VM 或云盘快照 - 复制相关日志 - 对收集的证据进行哈希计算 - 记录时间、命令和操作员 **重要提示:** cPanel 检测脚本支持 `--purge` 选项,但该选项具有破坏性,因为它会删除受影响的会话文件和 preauth 标记;执行清除之前,必须保存 `/var/cpanel/sessions` 和相关日志的副本。cPanel 脚本中将 `--purge` 标记为对实时会话文件具有破坏性影响的操作。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) ## 4. 角色与职责 | 角色 | 职责 | |---|---| | 应急指挥官 | 协调事件,批准隔离和恢复措施 | | 取证分析师 | 收集和分析证据 | | Linux/cPanel 管理员 | 技术支持、快照、配置、打补丁 | | 安全负责人/CISO | 风险评估、沟通、事件报告决策 | | 法务/合规人员 | 证据链、监管义务 | ## 5. 工作环境准备 在取证工作站或临时安全服务器上准备目录: ``` mkdir -p /forensics/cpanel-cve-2026-41940/{evidence,hashes,logs,volatile,sessions,timelines,reports,scripts} chmod 700 /forensics/cpanel-cve-2026-41940 ``` 设置变量: ``` export CASE_ID="CPANEL-CVE-2026-41940-$(date -u +%Y%m%dT%H%M%SZ)" export EVIDENCE_ROOT="/forensics/cpanel-cve-2026-41940" ``` 创建初始记录: ``` cat > "$EVIDENCE_ROOT/reports/chain_of_custody.txt" </dev/null rpm -qa | grep -Ei 'cpanel|wp|whm' | sort ``` 将版本与 cPanel 通知中的补丁版本进行比较。如果版本低于相应的补丁分支,则将服务器视为可能存在漏洞。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) ### 6.3. 不关机隔离 如果入侵活动正在进行中,目标是阻止进一步访问而不破坏易失性证据。 选项 A — 仅通过防火墙阻止 cPanel/Webmail 端口: ``` iptables -I INPUT -p tcp -m multiport --dports 2083,2087,2095,2096 -j DROP iptables -I INPUT -p tcp -m multiport --dports 2082,2086,2095,2096 -j DROP ``` 如果使用 `firewalld`: ``` firewall-cmd --add-rich-rule='rule family="ipv4" port port="2083" protocol="tcp" drop' firewall-cmd --add-rich-rule='rule family="ipv4" port port="2087" protocol="tcp" drop' firewall-cmd --add-rich-rule='rule family="ipv4" port port="2095" protocol="tcp" drop' firewall-cmd --add-rich-rule='rule family="ipv4" port port="2096" protocol="tcp" drop' ``` 选项 B — 停止 `cpsrvd` 和 `cpdavd`,如果业务影响允许。cPanel 通知将此缓解措施作为端口阻止的替代方案。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) ``` whmapi1 configureservice service=cpsrvd enabled=0 monitored=0 whmapi1 configureservice service=cpdavd enabled=0 monitored=0 /scripts/restartsrv_cpsrvd --stop /scripts/restartsrv_cpdavd --stop ``` **注意:** 如果可能,在停止服务之前,先从第 8 节收集易失性数据。 ## 7. 第二阶段 — 证据保存 ### 7.1. 快照/磁盘镜像 如果是云服务器,首先通过云控制台为所有挂载的磁盘创建快照。记录: - 快照 ID - 磁盘 ID - 快照时间(UTC) - 执行快照的人员 - 区域/可用区 如果是物理服务器,首选从 rescue/取证环境进行全磁盘镜像: ``` dd if=/dev/sda of=/mnt/forensics/server-sda.img bs=4M status=progress conv=noerror,sync sha256sum /mnt/forensics/server-sda.img | tee /mnt/forensics/server-sda.img.sha256 ``` 对于 LVM: ``` lsblk pvs vgs lvs ``` 如果是实时采集,如果可用,使用 `dc3dd` 或 `ddrescue`: ``` dc3dd if=/dev/sda of=/mnt/forensics/server-sda.img hash=sha256 log=/mnt/forensics/dc3dd.log ``` ### 7.2. 对所有收集的工件进行哈希计算 ``` find "$EVIDENCE_ROOT/evidence" -type f -exec sha256sum {} \; \ | tee "$EVIDENCE_ROOT/hashes/evidence_sha256_$(date -u +%Y%m%dT%H%M%SZ).txt" ``` ### 7.3. 证据链记录 对于每个副本: ``` Evidence ID: Filename: Source path: Acquisition method: Acquired by: UTC time: SHA256: Storage location: Notes: ``` ## 8. 第三阶段 — 实时响应采集 使用 `root` 权限运行这些命令。将所有输出保存到稍后复制到安全位置的目录。 ``` mkdir -p /root/ir-collect/{system,network,process,users,cpanel,logs,persistence} chmod 700 /root/ir-collect ``` ### 8.1. 时间和基本系统信息 ``` date -u +"%Y-%m-%dT%H:%M:%SZ" | tee /root/ir-collect/system/date_utc.txt date | tee /root/ir-collect/system/date_local.txt uptime | tee /root/ir-collect/system/uptime.txt hostnamectl | tee /root/ir-collect/system/hostnamectl.txt uname -a | tee /root/ir-collect/system/uname.txt cat /etc/os-release | tee /root/ir-collect/system/os-release.txt timedatectl | tee /root/ir-collect/system/timedatectl.txt ``` ### 8.2. 活动进程 ``` ps auxwwf | tee /root/ir-collect/process/ps_auxwwf.txt pstree -apul | tee /root/ir-collect/process/pstree.txt top -b -n1 | tee /root/ir-collect/process/top.txt ``` 如果 `lsof` 可用: ``` lsof -nP | tee /root/ir-collect/process/lsof_all.txt lsof -nP -i | tee /root/ir-collect/network/lsof_network.txt ``` ### 8.3. 网络连接 ``` ss -plantue | tee /root/ir-collect/network/ss_plantue.txt netstat -plantue 2>/dev/null | tee /root/ir-collect/network/netstat_plantue.txt ip addr show | tee /root/ir-collect/network/ip_addr.txt ip route show table all | tee /root/ir-collect/network/ip_route.txt iptables-save | tee /root/ir-collect/network/iptables-save.txt nft list ruleset 2>/dev/null | tee /root/ir-collect/network/nft_ruleset.txt ``` ### 8.4. 用户和登录历史 ``` cp -a /etc/passwd /root/ir-collect/users/passwd cp -a /etc/shadow /root/ir-collect/users/shadow cp -a /etc/group /root/ir-collect/users/group cp -a /etc/sudoers /root/ir-collect/users/sudoers 2>/dev/null cp -a /etc/sudoers.d /root/ir-collect/users/sudoers.d 2>/dev/null last -Faiwx | tee /root/ir-collect/users/last_Faiwx.txt lastlog | tee /root/ir-collect/users/lastlog.txt who -a | tee /root/ir-collect/users/who.txt w | tee /root/ir-collect/users/w.txt ``` ### 8.5. cPanel 基本工件 ``` /usr/local/cpanel/cpanel -V | tee /root/ir-collect/cpanel/cpanel_version.txt readlink /usr/local/cpanel/server.type | tee /root/ir-collect/cpanel/server_type.txt whmapi1 version 2>/dev/null | tee /root/ir-collect/cpanel/whmapi1_version.txt whmapi1 listaccts 2>/dev/null | tee /root/ir-collect/cpanel/listaccts.txt whmapi1 listresellers 2>/dev/null | tee /root/ir-collect/cpanel/listresellers.txt ``` ### 8.6. 复制关键 cPanel 目录 cPanel 日志文档指出 `/usr/local/cpanel/logs/access_log` 是 cPanel & WHM 用户的访问日志,`/usr/local/cpanel/logs/login_log` 是 cpsrvd 的登录尝试日志,`/usr/local/cpanel/logs/session_log` 是 cPanel 会话期间的活动日志,`/usr/local/cpanel/logs/error_log` 是常规 cPanel 错误日志。([docs.cpanel.net](https://docs.cpanel.net/knowledge-base/cpanel-product/the-cpanel-log-files/)) ``` rsync -aHAX --numeric-ids /usr/local/cpanel/logs/ /root/ir-collect/logs/usr_local_cpanel_logs/ rsync -aHAX --numeric-ids /var/cpanel/sessions/ /root/ir-collect/cpanel/var_cpanel_sessions/ rsync -aHAX --numeric-ids /var/cpanel/ /root/ir-collect/cpanel/var_cpanel/ \ --exclude='sessions' \ --exclude='bandwidth' \ --exclude='logs/mysql' 2>/dev/null ``` ### 8.7. 系统日志 ``` mkdir -p /root/ir-collect/logs/var_log rsync -aHAX --numeric-ids /var/log/ /root/ir-collect/logs/var_log/ journalctl --no-pager -o short-iso > /root/ir-collect/logs/journalctl_all.txt 2>/dev/null journalctl --no-pager -u sshd -o short-iso > /root/ir-collect/logs/journalctl_sshd.txt 2>/dev/null journalctl --no-pager -u cpsrvd -o short-iso > /root/ir-collect/logs/journalctl_cpsrvd.txt 2>/dev/null ``` ### 8.8. 持久化工件 ``` systemctl list-units --type=service --all | tee /root/ir-collect/persistence/systemd_services.txt systemctl list-timers --all | tee /root/ir-collect/persistence/systemd_timers.txt find /etc/systemd/system /usr/lib/systemd/system -type f -mtime -30 -ls \ | tee /root/ir-collect/persistence/systemd_recent_30d.txt crontab -l -u root > /root/ir-collect/persistence/root_crontab.txt 2>&1 for u in $(cut -d: -f1 /etc/passwd); do crontab -l -u "$u" > "/root/ir-collect/persistence/crontab_$u.txt" 2>&1 done rsync -aHAX --numeric-ids /etc/cron.d /etc/cron.daily /etc/cron.hourly /etc/cron.weekly /etc/cron.monthly \ /root/ir-collect/persistence/cron_dirs/ 2>/dev/null ``` ### 8.9. 打包实时响应数据 ``` tar --xattrs --acls --numeric-owner -czf /root/ir-collect-$CASE_ID.tar.gz /root/ir-collect sha256sum /root/ir-collect-$CASE_ID.tar.gz | tee /root/ir-collect-$CASE_ID.tar.gz.sha256 ``` 复制到取证服务器: ``` scp /root/ir-collect-$CASE_ID.tar.gz* analyst@forensic-host:/forensics/cpanel-cve-2026-41940/evidence/ ``` ## 9. 第四阶段 — CVE-2026-41940 专项分析 ### 9.1. 运行 cPanel 检测脚本 cPanel 在公告中发布了检测脚本 `ioc_checksessions_files.sh`,用于检查入侵指标和文件系统的 cPanel 会话。脚本默认使用 `SESSIONS_DIR="/var/cpanel/sessions"` 和 `ACCESS_LOG="/usr/local/cpanel/logs/access_log"`。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) **推荐做法:** 首先不带 `--purge` 运行脚本。 ``` cd /root vi ioc_checksessions_files.sh chmod 700 ioc_checksessions_files.sh /bin/bash ./ioc_checksessions_files.sh | tee /root/ir-collect/cpanel/ioc_checksessions_output.txt echo "${PIPESTATUS[0]}" | tee /root/ir-collect/cpanel/ioc_checksessions_exitcode.txt ``` 如果是分析副本: ``` /bin/bash ./ioc_checksessions_files.sh \ --sessions-dir /root/ir-collect/cpanel/var_cpanel_sessions \ --access-log /root/ir-collect/logs/usr_local_cpanel_logs/access_log \ --verbose \ | tee /root/ir-collect/cpanel/ioc_checksessions_offline_verbose.txt ``` Panel 检测脚本使用的退出代码:`2` 表示至少有一个 `CRITICAL` 或 `WARNING` 发现,`1` 表示仅有 `ATTEMPT` 或 `INFO` 发现,`0` 表示扫描干净。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) ### 9.2. 结果解读 根据 cPanel 脚本,重要发现包括: | 严重级别 | 含义 | |---|---| | `CRITICAL` | 利用指标/可能已入侵的会话 | | `WARNING` | 可疑会话,需要进一步分析 | | `ATTEMPT` | 利用尝试,但未确认成功入侵 | | `INFO` | 可能相关的工件,但未确认入侵 | 脚本会查找 cPanel 会话文件中的异常,包括 `token_denied`、`cp_security_token`、`origin_as_string` 与 `method=badpass` 的组合、auth 时间戳字段、`hasroot`、`tfa_verified`、preauth 标记和其他会话异常。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) ### 9.3. 手动分析 cPanel 会话 创建会话副本: ``` mkdir -p /root/manual-session-review rsync -aHAX --numeric-ids /var/cpanel/sessions/ /root/manual-session-review/sessions/ ``` 搜索关键指标: ``` cd /root/manual-session-review/sessions grep -RIl '^token_denied=' raw/ > token_denied_files.txt grep -RIl '^cp_security_token=' raw/ > cp_security_token_files.txt grep -RIl 'method=badpass' raw/ > badpass_origin_files.txt grep -RIl '^successful_.*_auth_with_timestamp=' raw/ > auth_timestamp_files.txt grep -RIl '^hasroot=1' raw/ > hasroot_files.txt grep -RIl '^tfa_verified=1' raw/ > tfa_verified_files.txt ``` 关联分析: ``` comm -12 <(sort token_denied_files.txt) <(sort cp_security_token_files.txt) > token_and_cpsecurity.txt comm -12 <(sort token_and_cpsecurity.txt) <(sort badpass_origin_files.txt) > suspicious_badpass_token_sessions.txt ``` 对于每个可疑会话: ``` while read f; do echo "===== $f =====" stat "$f" cat "$f" echo done < suspicious_badpass_token_sessions.txt \ | tee /root/manual-session-review/suspicious_sessions_dump.txt ``` 如果会话有 `cp_security_token`,在访问日志中查找: ``` while read f; do token=$(grep '^cp_security_token=' "$f" | head -1 | cut -d= -f2-) [ -n "$token" ] && grep -aF "$token" /usr/local/cpanel/logs/access_log done < suspicious_badpass_token_sessions.txt \ | tee /root/manual-session-review/access_log_hits_for_tokens.txt ``` ## 10. 第五阶段 — cPanel/WHM 日志分析 ### 10.1. 关键日志 | 工件 | 用途 | |---|---| | `/usr/local/cpanel/logs/access_log` | 访问 cPanel/WHM/Webmail 服务 | | `/usr/local/cpanel/logs/login_log` | cpsrvd 的登录尝试 | | `/usr/local/cpanel/logs/session_log` | cPanel 会话期间的用户活动 | | `/usr/local/cpanel/logs/error_log` | 常规错误 | | `/usr/local/cpanel/logs/cphulkd.log` | cPHulk 活动 | | `/usr/local/cpanel/logs/cphulkd_errors.log` | cPHulk 错误 | | `/usr/local/cpanel/logs/cpwrapd_log` | cpsrvd 服务管理器活动 | | `/usr/local/cpanel/logs/cpdavd_session_log` | Web Disk/DAV 活动 | | `/usr/local/cpanel/logs/cpdavd_error_log` | Web Disk/DAV 错误 | cPanel 文档确认了这些日志的用途:`access_log` 记录 cPanel & WHM 用户何时访问账户,`cphulkd.log` 记录暴力破解防护守护进程的活动,`cpwrapd_log` 记录 cpsrvd 的活动,`error_log` 包含常规 cPanel & WHM 错误。([docs.cpanel.net](https://docs.cpanel.net/knowledge-base/cpanel-product/the-cpanel-log-files/)) ### 10.2. 调查时间范围 初始时间范围: - 公告前至少 7 天:从 **2026-04-21** 开始 - 公告和补丁期间:**2026-04-28** 之后 - 到服务器隔离时为止 从 2026-04-21 开始提取日志的示例: ``` mkdir -p /root/log-review grep -aE '21/Apr/2026|22/Apr/2026|23/Apr/2026|24/Apr/2026|25/Apr/2026|26/Apr/2026|27/Apr/2026|28/Apr/2026|29/Apr/2026|30/Apr/2026|01/May/2026|02/May/2026|03/May/2026|04/May/2026' \ /usr/local/cpanel/logs/access_log* \ > /root/log-review/cpanel_access_relevant_window.txt ``` ### 10.3. 从 cPanel 访问日志提取 IP 地址 ``` awk '{print $1}' /usr/local/cpanel/logs/access_log \ | sort | uniq -c | sort -nr \ | tee /root/log-review/top_ips_cpanel_access.txt ``` 可疑端口: ``` grep -aE ' 2083$| 2087$| 2095$| 2096$' /usr/local/cpanel/logs/access_log \ > /root/log-review/cpanel_sensitive_ports.txt ``` 可疑状态码: ``` awk '{print $9}' /usr/local/cpanel/logs/access_log | sort | uniq -c | sort -nr \ | tee /root/log-review/http_status_distribution.txt ``` ### 10.4. 将会话令牌与 IP 地址关联 如果检测脚本返回受影响的会话文件,提取令牌: ``` SESSION_FILE="/var/cpanel/sessions/raw/:example" TOKEN=$(grep '^cp_security_token=' "$SESSION_FILE" | head -1 | cut -d= -f2-) grep -aF "$TOKEN" /usr/local/cpanel/logs/access_log \ | tee "/root/log-review/access_hits_${TOKEN}.txt" ``` 提取 IP 地址: ``` grep -aF "$TOKEN" /usr/local/cpanel/logs/access_log \ | awk '{print $1}' | sort -u ``` ### 10.5. 登录日志分析 ``` grep -aiE 'root|whm|login|failed|success|invalid|denied' /usr/local/cpanel/logs/login_log* \ | tee /root/log-review/login_log_suspicious.txt ``` ### 10.6. WHM 操作分析 查找 API 令牌创建、经销商变更、所有权变更、账户创建等活动: ``` grep -RaiE 'CREATEAPITOKEN|UPDATEAPITOKEN|REVOKEAPITOKEN|ADDRESELLER|CREATE|CHANGEOWNER|TERMINATE|SUSPEND|UNSUSPEND|PASSWORD|PASSWD' \ /usr/local/cpanel/logs/ /var/cpanel/ \ | tee /root/log-review/whm_admin_actions.txt ``` cPanel 日志文档指出 `accounting.log` 可能包含 `CREATEAPITOKEN`、`ADDRESELLER`、`CHANGEOWNER` 等操作以及其他管理操作,这对检查入侵后变更很有意义。([docs.cpanel.net](https://docs.cpanel.net/knowledge-base/cpanel-product/the-cpanel-log-files/)) ## 11. 第六阶段 — 系统取证 ### 11.1. SSH 访问 ``` grep -Rai 'Accepted' /var/log/secure* /var/log/auth.log* 2>/dev/null \ | awk '{for(i=1;i<=NF;i++) if ($i=="from") print $(i+1)}' \ | sort | uniq -c | sort -nr \ | tee /root/log-review/ssh_accepted_top_ips.txt ``` SSH 登录的前几位 IP 地址: ``` find /root /home -path '*/.ssh/authorized_keys' -type f -print \ -exec stat {} \; \ -exec cat {} \; \ > /root/log-review/authorized_keys_review.txt ``` ### 11.2. SSH authorized_keys ``` find /root /home -path '*/.ssh/authorized_keys' -type f -mtime -30 -ls \ | tee /root/log-review/authorized_keys_modified_30d.txt ``` 查找最近的修改: ``` awk -F: '($3 == 0) {print}' /etc/passwd \ | tee /root/log-review/uid0_users.txt find /etc -maxdepth 1 \( -name passwd -o -name shadow -o -name group -o -name sudoers \) -ls \ | tee /root/log-review/etc_identity_files_stat.txt ``` ### 11.3. 新建或修改的用户 ``` awk -F: '$7 ~ /(bash|sh|zsh|ksh)$/ {print}' /etc/passwd \ | tee /root/log-review/users_with_shell.txt ``` 检查有 shell 的用户: ``` grep -RaiE 'curl|wget|bash|sh|python|perl|php|nc|ncat|socat|base64|openssl|/tmp|/dev/shm|mkfifo' \ /etc/cron* /var/spool/cron /var/spool/cron/crontabs 2>/dev/null \ | tee /root/log-review/suspicious_cron_entries.txt ``` ### 11.4. Cron 持久化 ``` grep -RaiE 'curl|wget|bash|sh|python|perl|php|nc|ncat|socat|base64|/tmp|/dev/shm' \ /etc/systemd/system /usr/lib/systemd/system 2>/dev/null \ | tee /root/log-review/suspicious_systemd_units.txt find /etc/systemd/system -type f -mtime -30 -ls \ | tee /root/log-review/systemd_units_modified_30d.txt ``` ### 11.5. systemd 持久化 ``` find / -xdev -perm -4000 -type f -ls 2>/dev/null \ | tee /root/log-review/suid_files.txt find / -xdev -perm -2000 -type f -ls 2>/dev/null \ | tee /root/log-review/sgid_files.txt find / -xdev -perm -4000 -type f -mtime -30 -ls 2>/dev/null \ | tee /root/log-review/suid_modified_30d.txt ``` ### 11.6. SUID/SGID 文件 ``` find /tmp /var/tmp /dev/shm -xdev -ls 2>/dev/null \ | tee /root/log-review/tmp_var_tmp_dev_shm_listing.txt find /tmp /var/tmp /dev/shm -xdev -type f -mtime -30 -ls 2>/dev/null \ | tee /root/log-review/tmp_recent_30d.txt grep -RaiE 'base64_decode|eval\(|assert\(|shell_exec|system\(|passthru|proc_open|popen|curl_exec|gzinflate|str_rot13' \ /tmp /var/tmp /dev/shm 2>/dev/null \ | tee /root/log-review/tmp_suspicious_content.txt ``` ### 11.7. 临时目录 ``` find /home -type f \( -name '*.php' -o -name '*.phtml' -o -name '*.php[0-9]' \) -mtime -14 -ls \ | tee /root/log-review/recent_php_14d.txt ``` ## 12. 第七阶段 — Web 托管工件和 Web Shell 分析 cPanel 服务器通常在 `/home/$USER/public_html` 中托管多个用户的 web 根目录。如果 WHM/root 被入侵,攻击者可能在任何账户中放置 web shell。 ### 12.1. 最近修改的 PHP 文件 ``` grep -RaiE 'eval\s*\(|assert\s*\(|base64_decode\s*\(|gzinflate\s*\(|str_rot13\s*\(|shell_exec\s*\(|system\s*\(|passthru\s*\(|proc_open\s*\(|popen\s*\(|move_uploaded_file\s*\(' \ /home/*/public_html 2>/dev/null \ | tee /root/log-review/suspicious_php_patterns.txt ``` ### 12.2. 可疑的 PHP 模式 ``` find /home -type f \( -path '*/uploads/*' -o -path '*/wp-content/*' \) \ \( -name '*.php' -o -name '*.phtml' -o -name '*.phar' \) -ls 2>/dev/null \ | tee /root/log-review/php_in_upload_dirs.txt ``` ### 12.3. 上传目录中的意外文件 ``` find /home -name wp-config.php -type f \ | tee /root/log-review/wp_config_files.txt ``` ### 12.4. WordPress 管理员用户 如果存在 WordPress 网站: ``` wp user list --role=administrator --path=/home/USER/public_html --allow-root ``` 对于每个 WordPress 网站,使用 `wp-cli`(如果可用)检查管理员用户: ``` whmapi1 listaccts --output=jsonpretty > /root/log-review/whm_listaccts.json 2>/dev/null whmapi1 listresellers --output=jsonpretty > /root/log-review/whm_listresellers.json 2>/dev/null ``` ## 13. 第八阶段 — API 令牌、WHM 用户和经销商 ### 13.1. WHM/cPanel 用户 ``` grep -RaiE 'CREATEAPITOKEN|UPDATEAPITOKEN|REVOKEAPITOKEN|api.token|apitoken|token' \ /usr/local/cpanel/logs /var/cpanel 2>/dev/null \ | tee /root/log-review/api_token_activity.txt ``` ### 13.2. API 令牌工件 在日志中查找 API 令牌的创建或修改: ``` find / -xdev -printf '%T@ %TY-%Tm-%Td %TH:%TM:%TS %u %g %m %p\n' 2>/dev/null \ | sort -n \ > /root/log-review/filesystem_mtime_timeline.txt ``` ### 13.3. Root 和 WHM 密码重置 如果 cPanel 检测脚本有 `CRITICAL` 或 `WARNING` 发现,cPanel 建议清除受影响的会话,强制重置 root 和所有 WHM 用户的密码,审计 `/var/log/wtmp` 和 WHM 访问日志,并检查持久化机制。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) 在重置密码之前完成取证收集。 ## 14. 第九阶段 — 时间线分析 ### 14.1. 快速文件系统时间线 ``` for d in /usr/local/cpanel /var/cpanel /etc /root /home /tmp /var/tmp /dev/shm; do find "$d" -xdev -printf '%T@ %TY-%Tm-%Td %TH:%TM:%TS %u %g %m %p\n' 2>/dev/null done | sort -n > /root/log-review/keydirs_mtime_timeline.txt ``` ### 14.2. 关键目录的时间线 ``` log2timeline.py /forensics/cpanel-cve-2026-41940/timelines/server.plaso /mnt/server-image psort.py -o l2tcsv /forensics/cpanel-cve-2026-41940/timelines/server.plaso \ > /forensics/cpanel-cve-2026-41940/timelines/server_timeline.csv ``` ### 14.3. Plaso/log2timeline(如果可用) 在取证磁盘副本上: ``` grep -E '2026-04-2[1-9]|2026-04-30|2026-05-0[1-4]' server_timeline.csv \ > server_timeline_relevant_window.csv ``` 过滤时间范围: ``` /scripts/upcp --force /usr/local/cpanel/cpanel -V /scripts/restartsrv_cpsrvd --hard ``` ## 15. 第十阶段 — 入侵判定标准 ### 15.1. 确认入侵 如果存在以下任一情况,视为确认入侵: - cPanel 检测脚本返回退出代码 `2` - 会话中存在 `CRITICAL` 发现 - 可疑会话的会话令牌在 `access_log` 中被使用,且 HTTP 状态为成功 - 来自未知 IP 地址的未授权 WHM/root 登录 - 创建了 API 令牌、经销商或新用户,且无合法活动 - 发现持久化机制 - 发现 Web shell 或在可疑 WHM 访问后放置的后门 ### 15.2. 尝试但未确认入侵 可能情况: - 检测脚本仅返回 `ATTEMPT` - 没有 auth 标记 - 令牌在 `access_log` 中没有成功使用 - 没有后续 WHM/root 活动 - 没有持久化工件 ### 15.3. 无指标 可能情况: - 服务器在暴露前已是补丁版本 - 检测脚本返回 `0` - 没有可疑的登录、会话、令牌或持久化 - 日志覆盖相关期间且未被轮询/删除 ## 16. 第十一阶段 — 修复 ### 16.1. 打补丁 如果尚未完成,保存证据后: ``` whmapi1 set_tier tier=11.110 /scripts/upcp --force ``` 这对应于 cPanel 针对 CVE-2026-41940 的必需操作。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) 对于 CentOS 7 或 CloudLinux 7,cPanel 文章指出如果更新被固定或禁用,需要将层级设置为 `11.110`。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) ``` whmapi1 set_tier tier=11.110.0.103 /scripts/upcp --force ``` 对于 CentOS 6/CloudLinux 6 在 `v110.0.50`,cPanel 指出直接更新到 `v110.0.103` 使用命令 `whmapi1 set_tier tier=11.110.0.103`,然后进行标准。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) ``` /bin/bash ./ioc_checksessions_files.sh --purge ``` ### 16.2. 清除受入侵的会话 只有在复制 `/var/cpanel/sessions` 和日志之后: ``` /bin/bash ./ioc_checksessions_files.sh --purge --yes ``` 对于自动化环境: ``` 1. Executive Summary - Kratak opis incidenta - Da li je kompromitacija potvrđena - Uticaj na korisnike/podatke - Status oporavka 2. Scope - Hostname - IP adrese - cPanel/WP2 verzija - Period istrage 3. Timeline - Prvi sumnjivi događaj - Prvi uspješan pristup - Administrativne promjene - Containment - Patch - Remedijacija 4. Evidence Collected - Disk snapshot/image - Logovi - cPanel sessions - Hash vrijednosti - Chain of custody 5. Findings - CVE exposure status - Detection script output - Sumnjive IP adrese - Pogođeni nalozi - Persistence - Web shell / malware - Exfiltration indikatori 6. Impact Assessment - Root compromise: da/ne/nepoznato - WHM compromise: da/ne/nepoznato - cPanel account compromise: lista - Data exposure: procjena 7. Remediation Actions - Patch - Password reset - Token revoke - Session purge - Rebuild/migration - Malware removal 8. Recommendations - MFA - IP allowlisting za WHM - Centralizovani logovi - EDR/FIM - Backup immutable storage - Redovni cPanel update-i ``` ### 16.3. 重置凭据 如果有确认或强烈怀疑: - 重置 root 密码 - 重置所有 WHM 经销商/root 级账户 - 重置在可疑期间有活动的 cPanel 账户 - 撤销所有 WHM API 令牌 - 轮换 SSH 密钥 - 如果 web 根被入侵,轮换数据库密码 - 如果从服务器可访问备份/存储/云密钥,轮换这些密钥 ### 16.4. 移除持久化 移除: - 未知 SSH 密钥 - 未知 cron 作业 - 可疑的 systemd 单元 - 未知 UID 0 用户 - Web shell 文件 - 可疑的 PHP include/后门文件 - 未知 WHM API 令牌 - 未知经销商账户 ### 16.5. 重建/迁移 如果确认 root 级入侵,建议重建或迁移到已知干净服务器。cPanel 文章明确指出,如果服务器确认被 root 入侵,应将 cPanel 账户迁移到已知干净服务器或重新安装操作系统并从备份恢复账户。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026)) ## 17. 返回生产环境前的最小"go/no-go"检查清单 只有满足所有项目才能将服务器返回生产环境: - [ ] cPanel/WP2 版本已打补丁。 - [ ] 补丁后已重启 cpsrvd。 - [ ] cPanel 检测脚本无 `CRITICAL` 或 `WARNING` 发现。 - [ ] 保存证据后,所有受影响的会话文件已被清除。 - [ ] Root 和 WHM 密码已重置。 - [ ] API 令牌已审查,不必要的已撤销。 - [ ] SSH 密钥已审查。 - [ ] Cron 和 systemd 持久化已审查。 - [ ] Web 根已扫描 Web shell。 - [ ] 无未知 UID 0 用户。 - [ ] 无未知经销商/管理员账户。 - [ ] 备份已验证。 - [ ] 监控已加强至少 14 天。 ## 18. 最终报告建议格式 ``` # 版本和类型 /usr/local/cpanel/cpanel -V readlink /usr/local/cpanel/server.type # 端口隔离 iptables -I INPUT -p tcp -m multiport --dports 2083,2087,2095,2096 -j DROP # 收集 cPanel 日志和会话 rsync -aHAX --numeric-ids /usr/local/cpanel/logs/ /root/ir-collect/logs/usr_local_cpanel_logs/ rsync -aHAX --numeric-ids /var/cpanel/sessions/ /root/ir-collect/cpanel/var_cpanel_sessions/ # 检测脚本 — 先不执行 purge /bin/bash ./ioc_checksessions_files.sh | tee /root/ir-collect/cpanel/ioc_checksessions_output.txt # Patch /scripts/upcp --force /usr/local/cpanel/cpanel -V /scripts/restartsrv_cpsrvd --hard # 保存证据后 — 清除被入侵的会话 /bin/bash ./ioc_checksessions_files.sh --purge ``` ## 19. 快速命令摘要 ## 20. 关键建议 如果检测脚本显示 `CRITICAL` 或 `WARNING`,在证明相反之前,请将服务器视为已入侵。如果确认 root 级入侵,最安全的路径不是"清理"现有操作系统,而是将账户迁移到已知干净服务器或重新安装操作系统并从经过验证的备份恢复,这与 cPanel 对 root 级入侵系统的建议一致。([support.cpanel.net](https://support.cpanel.net/hc/en-us/articles/40073787579671-Security-CVE-2026-41940-cPanel-WHM-WP2-Security-Update-04-28-2026))
标签:API安全, CISA项目, cPanel, CVE-2026-41940, DAST, JSON输出, Linux服务器安全, PE 加载器, SSH安全, Web主机安全, WHM, WP Squared, 主机取证, 后门检测, 安全更新, 安全漏洞, 应用安全, 恶意软件分析, 控制面板安全, 数字取证, 漏洞修复, 端点安全, 网络安全培训, 网络安全审计, 自动化脚本, 补丁管理, 认证绕过