Awesome-POC/中间件漏洞/Apache HTTPd 多后缀解析漏洞.md
2024-11-06 14:10:36 +08:00

38 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Apache HTTPd 多后缀解析漏洞
## 漏洞描述
Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如,如下配置文件:
```
AddType text/html .html
AddLanguage zh-CN .cn
```
其给`.html`后缀增加了media-type值为`text/html`;给`.cn`后缀增加了语言,值为`zh-CN`。此时,如果用户请求文件`index.cn.html`他将返回一个中文的html页面。
以上就是Apache多后缀的特性。如果运维人员给`.php`后缀增加了处理器:
```
AddHandler application/x-httpd-php .php
```
那么,在有多个后缀的情况下,只要一个文件含有`.php`后缀的文件即将被识别成PHP文件没必要是最后一个后缀。利用这个特性将会造成一个可以绕过上传白名单的解析漏洞。
## 环境搭建
Vulhub运行如下命令启动一个稳定版Apache并附带PHP 7.3环境:
```
docker-compose up -d
```
## 漏洞复现
环境运行后,访问`http://your-ip/uploadfiles/apache.php.jpeg`即可发现phpinfo被执行了该文件被解析为php脚本。
![image-20220221190348386](images/202202211904167.png)
`http://your-ip/index.php`中是一个白名单检查文件后缀的上传组件,上传完成后并未重命名。我们可以通过上传文件名为`xxx.php.jpg``xxx.php.jpeg`的文件利用Apache解析漏洞进行getshell。