Sploitus

Exploit for web-server-audit_CVE-2026-42945

kitploit · 2026-09-05

Exploit Code

MARKDOWN204 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SIBERSAN-WEB-SERVER-AUDIT_CVE-2026-42945
# web_server_audit

> **不要问你是否易受攻击。问你是否可被利用。**

一个单文件 Python 工具,通过检查已安装版本 _以及_ 通过你的配置是否实际可达脆弱代码路径,来审计 nginx 和 Apache 已知 CVE。

## 为什么?

大多数 CVE 扫描器只停留在版本匹配上: _"nginx 1.18.0 — CVE-2026-42945,高危,你易受攻击。"_ 但许多 CVE 需要特定的配置模式才能被利用。忽略配置的扫描器会向你发出大量与真实风险不符的红色警报——更糟的是,它会掩盖那些 _如果_ 你明天改变了配置就会变成真实风险的潜在风险。

`web_server_audit` 针对每个 CVE 回答两个不同的问题:

  1. **安装的版本是否在受影响范围内?**
  2. **触发模式是否存在于当前配置中?**



将两者结合,得出三种诚实的分类:

分类| 含义  
---|---  
🔴 **活跃利用风险**|  版本受影响 _且_ 触发模式存在。今天即可被利用。  
🟡 **潜在风险**|  版本受影响,但无触发模式。如果配置变更引入该模式,则可能被利用。  
⚪ **未验证**|  配置不可读;状态未知。  
  
## 功能

  * 🎯 针对每个 CVE 的触发检测(不仅仅是版本匹配)
  * 🟢 执行摘要中区分活跃与潜在风险
  * 🐧 Ubuntu Pro / ESM 感知——标记来自 ESM 覆盖范围之外的软件包
  * 🔬 ASLR 检查、服务状态、监听端口、近期 SIGSEGV 计数
  * 🎨 彩色终端输出,JSON 用于自动化
  * 📦 单文件,Python 3.5+,无第三方依赖
  * 🔌 极易扩展——添加一个新 CVE 只需约 10 行



## 快速开始

root@kitploit:~
    
    
    git clone https://github.com/YOUR_USERNAME/web-server-audit.git
    cd web-server-audit
    sudo python3 web_server_audit.py
    

## 支持的 CVE(nginx)

Apache CVE 列表当前为空,但框架已就位——参见下面的扩展。

## 其他检查

除了 CVE 之外,该工具还报告:

  * **ASLR 状态** (`/proc/sys/kernel/randomize_va_space`)——完整的 ASLR 可显著降低内存错误的 RCE 可利用性
  * **操作系统版本和 EOL 状态** ——标记已终止支持或仅 ESM 支持的发行版
  * **Ubuntu Pro (ESM) 订阅状态** (针对 `esm-infra` 和 `esm-apps`)
  * **服务状态** ——nginx/Apache 是否实际运行,以及监听端口
  * **软件包来源** ——区分 ESM、PPA 和标准仓库安装(Ubuntu)
  * **工作进程崩溃** ——统计过去 30 天内的 SIGSEGV 事件,作为活跃利用的指标



## 需求

  * Python 3.5+(适用于 Ubuntu 18.04 自带的 Python 3.6)
  * 无需第三方包——仅标准库
  * 当可用时使用 `nginx`、`apache2`、`systemctl`、`ss`、`journalctl`;否则优雅跳过检查



## 用法

root@kitploit:~
    
    
    # 紧凑报告(默认——隐藏 OK 行)
    sudo python3 web_server_audit.py
    
    # 包括 OK 行的所有发现
    sudo python3 web_server_audit.py --verbose
    
    # 无 ANSI 颜色(适用于管道、日志、CI 输出)
    sudo python3 web_server_audit.py --no-color
    
    # 机器可读 JSON
    sudo python3 web_server_audit.py --json
    

### 退出码

代码| 含义  
---|---  
0| 无问题  
1| 仅警告或非 CVE 关键发现  
2| 至少一个 CVE **可被主动利用**  
  
退出码 `2` 是自然的 CI/CD 失败信号。

## 示例输出

root@kitploit:~
    
    
    ========================================================================
    Web Server Audit - 2026-05-16T01:24:55
    主机: web-prod-01
    web_server_audit.py v1.0.0 - SiberSAN - MIT 许可证
    ========================================================================
    
    [系统]
    ------------------------------------------------------------------------
      [OK] OK    ASLR 完全启用(randomize_va_space=2)
      [i] INFO  操作系统: Ubuntu 18.04.6 LTS
      [!] WARN  Ubuntu 18.04 仅受 ESM 支持
    
    [nginx] 版本 1.18.0(活跃中)
    ------------------------------------------------------------------------
      [i] INFO  nginx 监听于: 0.0.0.0:80, 0.0.0.0:443
      [i] INFO  CVE-2026-42945 (高): 版本受影响但未触发
               触发条件: rewrite + 未命名捕获($1,$2) + 替换中含 '?'
               证据: 配置中无 rewrite 指令
      [i] INFO  CVE-2026-42946 (中): 版本受影响但未触发
      [!] WARN  nginx 通过 PPA 安装 (1.18.0-3ubuntu1+bionic1)
    
    ========================================================================
    真实风险总结
    ------------------------------------------------------------------------
    活跃利用风险: 未检测到。
    
    潜在风险 - 版本受影响,但配置中无触发模式 (3):
      - [nginx] CVE-2026-42945 (高)
      - [nginx] CVE-2026-42946 (中)
      - [nginx] CVE-2026-42934 (低)
      如果配置变更引入触发模式,这些将成为可利用风险。
      缓解措施: 配置变更纪律 + 计划升级。
    
    ========================================================================
    发现: 0 个严重,2 个警告
    ========================================================================
    

## 扩展

添加一个新 CVE 需要两步。

**1.** 编写一个触发函数,接受完整配置文本(`nginx -T` 输出)并返回 `(触发了: bool, 证据: str)`:

root@kitploit:~
    
    
    def _trigger_my_cve(conf):
        hits = [l for l in conf.splitlines() if re.search(r'risky_directive', l)]
        if hits:
            return True, "发现: " + hits[0]
        return False, "模式不存在"
    

**2.** 将条目添加到 `NGINX_CVES`(或 `APACHE_CVES`):

root@kitploit:~
    
    
    {
        "id": "CVE-XXXX-NNNNN",
        "name": "描述性名称",
        "severity": "高",
        "affected": ("1.10.0", "1.25.0"),
        "fixed_in": ["1.25.1"],
        "trigger_desc": "人类可读的触发描述",
        "trigger_fn": _trigger_my_cve,
    },
    

就这样。框架会自动处理分类、输出格式、JSON、退出码和执行摘要。

## 限制

  * **无主动利用测试。** 不发送任何概念验证请求。这是一个纯粹的配置和版本分析工具。
  * CVE 数据库是**内嵌且手动整理的** ;无在线同步。保持列表最新是用户的责任。
  * 触发检测器是**启发式的** 。复杂的配置(深层嵌套的 include 或异常引号)可能产生误报或漏报。如有疑问,使用 `--verbose` 查看详细信息。
  * 已在 Ubuntu 18.04、20.04、22.04 和 24.04 上测试。该工具很可能在其他 Linux 发行版上运行,但**软件包来源检测(ESM/PPA)是 Ubuntu 特有的** 。



## 贡献

欢迎提交 Pull Request、Issue、新的 CVE 检测器以及对其他 Web 服务器(lighttpd、Caddy、HAProxy 等)的支持。

在提议新的 CVE 检测器时,请包含:

  * CVE 记录的链接(NVD、供应商公告或上游变更日志)
  * 能够触发检测器的最小配置片段
  * 一个 _不应_ 触发它的反例



## 许可证

根据 MIT 许可证 发布。

版权所有 © 2026 SiberSAN