Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cpanel-cve-2026-41940-ioc — CVE-2026-41940 cPanel/WHM 认证绕过 IOC 扫描器 — 修复上游检测脚本中的误报,新增日志交叉关联功能 | Kitploit
工具/GitHubGitHub/andrei-dr/cpanel-cve-2026-41940-ioc
防御工具漏洞扫描器Web安全身份验证事件响应日志分析
GitHubandrei-dr/cpanel-cve-2026-41940-ioc

cpanel-cve-2026-41940-ioc

CVE-2026-41940 cPanel/WHM 认证绕过 IOC 扫描器 — 修复上游检测脚本中的误报,新增日志交叉关联功能

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
484个月前尚未审核

CVE-2026-41940 IOC 扫描器

用于检测 cPanel/WHM 身份验证绕过(CVE-2026-41940)的检测脚本,该漏洞影响 11.40 之后的所有 cPanel 版本。

这是对上游 cPanel 检测脚本的重写,修复了误报问题并增加了日志关联功能。

功能说明

扫描 /var/cpanel/sessions/raw/ 目录,查找显示换行注入利用迹象的会话文件,然后将可疑 IP 和会话令牌与 cPanel 访问/登录/错误日志进行交叉比对。同时扫描 access_log 以发现会话文件已过期或被清除的历史利用痕迹。

相对上游脚本的修复

  1. 移除了有缺陷的多行 pass 正则表达式,该正则会在生产环境中对每个已认证会话产生误报(该正则匹配任何 pass= 字段后跟另一行的情况,而每个会话文件都符合此模式)。
  2. 泛化了注入检测,改为 method=badpass 来源 + 任意认证后属性 组合,而非要求狭窄的 token_denied + cp_security_token 组合。可捕获省略 token_denied 的 PoC 变体。
  3. 三级严重性分级,基于观察到的结果而非二元标志:
    • CRITICAL — 注入的令牌在 access_log 中观察到 2xx/3xx 响应(利用成功),或在会话过期后在 access_log 中发现历史利用痕迹
    • HIGH — 注入写入已落地,但令牌从未出现在 access_log 中(已暂存,仍可能被利用)
    • MEDIUM — 令牌被尝试使用,但所有请求均返回 4xx/5xx(服务器已阻止)
  4. 分级修复建议 — CRITICAL/HIGH 触发完整的事件响应;仅 MEDIUM 表示服务器已抵御攻击,只需较轻的清理步骤。
  5. 通过 cpsessid 和 IP 双重交叉比对,从注入令牌的 access_log 命中记录中提取信息,捕获攻击者在注入后的 IP 跳转。
  6. 仅基于 access_log 的检测 — 通过关联失败的登录尝试(POST /login/?login_only=1 -> 401)与随后来自同一 IP 的成功 cpsess 令牌使用,捕获会话文件已过期或被清除的利用行为。
  7. --extended 模式,可对更多日志源进行深度扫描。

快速运行(无需克隆)

root@kitploit:~
# Bash — 通用,无依赖
bash <(curl -fsSL https://raw.githubusercontent.com/AndreiG6/cpanel-cve-2026-41940-ioc/main/ioc.sh)

# Python — 在大型会话目录上更快,支持 --json
curl -fsSLo /tmp/ioc.py https://raw.githubusercontent.com/AndreiG6/cpanel-cve-2026-41940-ioc/main/ioc.py
python3 /tmp/ioc.py

# 扩展扫描(任一版本)
bash <(curl -fsSL https://raw.githubusercontent.com/AndreiG6/cpanel-cve-2026-41940-ioc/main/ioc.sh) --extended
python3 /tmp/ioc.py --extended

# 运行后检查退出码($? = 0 干净,1 发现 IOC,2 环境错误)
echo $?

curl 标志说明:-f 在 HTTP 错误时失败而非将错误页面管道传入 bash,-s 静默(无进度条),-S 在 -s 下仍显示错误,-L 跟随重定向。

JSON 输出(仅 Python 版本)

Python 版本支持 --json 以输出结构化结果,可管道传入 jq、导入 SIEM 或以编程方式处理。

root@kitploit:~
# 完整 JSON 输出
python3 ioc.py --json

# 仅汇总计数
python3 ioc.py --json | jq '.counts'

# 列出所有 CRITICAL 发现
python3 ioc.py --json | jq '[.findings[] | select(.severity == "CRITICAL")]'

# 提取唯一攻击者 IP
python3 ioc.py --json | jq '.suspect_ips[]'

# 显示带来源 IP 的发现(用于防火墙封禁列表)
python3 ioc.py --json | jq '[.findings[] | {severity, source_ip, token: .cp_security_token}]'

# 获取所有成功使用令牌的 IP(用于立即封禁)
python3 ioc.py --json | jq '[.findings[] | select(.severity == "CRITICAL") | .source_ip] | unique'

# 获取特定 IP 的交叉引用数据
python3 ioc.py --json | jq '.cross_ref[.suspect_ips[0]]'

JSON 结构示例:

root@kitploit:~
{
  "findings": [
    {
      "severity": "CRITICAL",
      "file": "/var/cpanel/sessions/raw/:Q3f8Ag2epeBuTaIZ",
      "verdict": "Injected token used successfully (2xx/3xx in access_log)",
      "origin": "address=203.0.113.50,app=whostmgrd,method=badpass",
      "source_ip": "203.0.113.50",
      "user": "root",
      "hasroot": "1",
      "tfa_verified": "0",
      "cp_security_token": "/cpsess04396539398",
      "token_denied": "1",
      "successful_internal_auth_with_timestamp": "9999999999",
      "token_hits": [
        "203.0.113.50 - root [04/30/2026:12:12:01 -0000] \"GET /cpsess04396539398/json-api/version HTTP/1.1\" 200 0 ..."
      ]
    },
    {
      "severity": "MEDIUM",
      "file": "/var/cpanel/sessions/raw/:2TDiaHwh_r8qOH5y",
      "verdict": "Injection landed; token was tried but BLOCKED (all 4xx/5xx)",
      "source_ip": "198.51.100.23",
      "cp_security_token": "/cpsess5637704041",
      "token_hits": [
        "198.51.100.23 - root [04/30/2026:04:08:09 -0000] \"GET /cpsess5637704041/json-api/version HTTP/1.1\" 403 0 ..."
      ]
    },
    {
      "severity": "CRITICAL",
      "file": null,
      "verdict": "Injected cpsess token used with 2xx/3xx after failed login; session expired or purged",
      "source_ip": "203.0.113.99",
      "cp_security_token": "/cpsess8705792557",
      "token_hits": ["..."]
    }
  ],
  "counts": {"critical": 2, "high": 15, "medium": 71, "warning": 0},
  "suspect_ips": ["203.0.113.50", "198.51.100.23", "203.0.113.99"],
  "suspect_ips_omitted": 0,
  "cross_ref": {
    "203.0.113.50": {
      "cpanel_access_log": ["...last 5 lines..."],
      "cpanel_login_log": ["..."]
    }
  },
  "advisory": "https://support.cpanel.net/hc/en-us/articles/40073787579671"
}

使用方法(本地副本)

root@kitploit:~
git clone https://github.com/AndreiG6/cpanel-cve-2026-41940-ioc.git
cd cpanel-cve-2026-41940-ioc

# Bash 版本
bash ioc.sh                # 默认(展开 CRITICAL/HIGH,MEDIUM/WARNING 仅计数)
bash ioc.sh -v             # 详细(展开所有发现)
bash ioc.sh --extended     # 详细 + 更深层日志 + 交叉引用中所有 IP

# Python 版本(相同检测逻辑,更快,结构化输出)
python3 ioc.py             # 默认(与 bash 相同的折叠行为)
python3 ioc.py -v          # 详细
python3 ioc.py --extended  # 详细 + 更深层日志
python3 ioc.py --json      # 结构化 JSON(始终包含所有发现)

必须在目标 cPanel 服务器上以 root 身份运行。Python 版本需要 Python 3.6+(CentOS 7 / CloudLinux 7+ 自带)。

退出码

代码含义
0未发现任何指标
1检测到 IOC
2环境错误(非 cPanel 服务器)

参考

  • cPanel 安全公告
  • CVE-2026-41940:cPanel 会话处理中的换行注入导致身份验证绕过

许可证

MIT

下载工具