EricRHancock-coder/CVE-2026-24072-Analysis
GitHub: EricRHancock-coder/CVE-2026-24072-Analysis
该仓库详细分析了Apache HTTP Server通过ap_expr实现本地提权的CVE-2026-24072漏洞,并提供了包含补丁对比和PoC的Docker自动化测试环境。
Stars: 0 | Forks: 0
# CVE-2026-24072:Apache HTTP Server mod_rewrite 权限提升分析
## 概述
| 字段 | 值 |
|-------|-------|
| **CVE ID** | CVE-2026-24072 |
| **严重性** | 中等 (本地权限提升 / 信息泄露) |
| **受影响版本** | Apache HTTP Server <= 2.4.66 |
| **修复版本** | Apache HTTP Server 2.4.67 |
| **攻击向量** | 本地 (需要 `.htaccess` 写入权限) |
## 快速开始
- 阅读完整分析:[`CVE-2026-24072-analysis.md`](CVE-2026-24072-analysis.md)
- 查看补丁:[`mod_rewrite.diff`](mod_rewrite.diff),[`mod_setenvif.diff`](mod_setenvif.diff),[`mod_proxy_fcgi.diff`](mod_proxy_fcgi.diff)
- 查看概念验证示例:[`examples/`](examples/)
## 根本原因
Apache 的表达式评估引擎 (`ap_expr`) 提供了文件系统内省函数:
- `file(path)` — 读取文件内容
- `filesize(path)` — 返回文件大小
- `-d path`、`-e path`、`-f path`、`-s path`、`-L path`、`-h path`、`-x path` — 文件系统测试
在 **2.4.66 及更早版本**中,`mod_rewrite` (通过 `RewriteCond expr=...`)、`mod_setenvif` (通过 `SetEnvIfExpr`) 和 `mod_proxy_fcgi` (通过 `ProxyFCGIBackendType` 条件表达式) 等模块在 `.htaccess` 上下文中运行时,解析和评估 `ap_expr` 表达式时**没有**传递 `AP_EXPR_FLAG_RESTRICTED` 标志。这意味着任何能够写入 `.htaccess` 文件的本地用户,都可以使用这些表达式函数以 `httpd` 进程的完整权限探测或读取文件系统。
## 修复方案
该修复在概念上很简单:**在 `.htaccess` 上下文中解析 `ap_expr` 表达式时,传递 `AP_EXPR_FLAG_RESTRICTED` 标志。**
所有三个打过补丁的模块都使用相同的惯用法来检测 `.htaccess` 解析上下文:
```
int in_htaccess = cmd->pool == cmd->temp_pool;
```
当 Apache 解析 `.htaccess` 文件时,每个目录的配置池 (`cmd->pool`) 与临时池 (`cmd->temp_pool`) 相同。这是一个众所周知的 Apache 内部约定,用于区分 `.htaccess` (每个目录) 上下文与主服务器/虚拟主机上下文。
## 此仓库中的文件
| 文件 | 描述 |
|------|-------------|
| `CVE-2026-24072-analysis.md` | 完整的技术分析和影响评估 |
| `mod_rewrite.diff` | 针对 `modules/mappers/mod_rewrite.c` 的补丁 |
| `mod_setenvif.diff` | 针对 `modules/metadata/mod_setenvif.c` 的补丁 |
| `mod_proxy_fcgi.diff` | 针对 `modules/proxy/mod_proxy_fcgi.c` 的补丁 |
| `httpd-2.4.66/` | 存在漏洞的 Apache 版本的源代码树 |
| `httpd-2.4.67/` | 已修复的 Apache 版本的源代码树 |
| `examples/` | 概念验证 `.htaccess` 文件 |
## 验证补丁
此仓库包含一个 **Docker 化的测试实验室**,允许您在存在漏洞的和已修复的 `mod_rewrite` 模块之间切换,以验证修复是否有效:
```
# 构建并启动 lab
make build
make up
# 运行完整的自动化测试矩阵(两种 variants)
make test
```
该实验室使用了一个**哨兵文件** (`/opt/sentinel/secret.txt`),该文件仅对 `daemon` 用户 (运行 httpd 的用户) 可读。在存在漏洞的构建版本中,`.htaccess` 表达式可以读取并匹配哨兵文件的内容。在已修复的构建版本中,解析会失败并提示 `not available in restricted context`。
完整指南请参见 [`docs/TESTING.md`](docs/TESTING.md)。
## 此仓库中的文件
| 文件 | 描述 |
|------|-------------|
| `CVE-2026-24072-analysis.md` | 完整的技术分析和影响评估 |
| `mod_rewrite.diff` | 针对 `modules/mappers/mod_rewrite.c` 的补丁 |
| `mod_setenvif.diff` | 针对 `modules/metadata/mod_setenvif.c` 的补丁 |
| `mod_proxy_fcgi.diff` | 针对 `modules/proxy/mod_proxy_fcgi.c` 的补丁 |
| `httpd-2.4.66/` | 存在漏洞的 Apache 版本的源代码树 |
| `httpd-2.4.67/` | 已修复的 Apache 版本的源代码树 |
| `examples/` | 概念验证 `.htaccess` 文件 |
| `docker/` | 测试实验室的 Docker 构建文件 |
| `scripts/` | 切换和测试脚本 |
| `tests/` | 测试夹具和矩阵 |
| `docs/TESTING.md` | 完整的测试指南 |
| `docs/session/` | 设计过程的会话导出 |
## 参考
- [CVE-2026-24072 - Apache HTTP Server:通过 ap_expr 实现的 mod_rewrite 权限提升](https://cvefeed.io/vuln/detail/CVE-2026-24072)
- [Apache HTTP Server 2.4 安全漏洞](https://httpd.apache.org/security/vulnerabilities_24.html)
- [cPanel CVE-2026-24072 安全公告](https://support.cpanel.net/hc/en-us/articles/40232024538775-Security-CVE-2026-24072-Apache-HTTP-Server-mod-rewrite-elevation-of-privileges-via-ap-expr)
## 免责声明
此仓库仅用于教育和防御目的。这些概念验证示例旨在帮助安全专业人士理解和防御此漏洞。请勿在您不拥有或未获得明确测试权限的系统上使用这些技术。
标签:0-day, Apache HTTP Server, ap_expr, CVE, CVE-2026-24072, htaccess, HTTP工具, LPE, mod_proxy_fcgi, mod_rewrite, mod_setenvif, PoC, Web安全, Web报告查看器, 中间件安全, 信息泄露, 协议分析, 安全补丁, 客户端加密, 应用安全, 数字签名, 文件系统读取, 暴力破解, 本地提权, 权限提升, 权限绕过, 漏洞分析, 网络安全, 蓝队分析, 表达式解析, 请求拦截, 路径探测, 隐私保护