漏洞复现之中间件专栏|Apache HTTPD 多后缀解析漏洞 漏洞复现

前言 该漏洞并不是apache程序本身的问题,而是管理员配置不当造成。Apache支持一个文件具有多个后缀,并为不同的后缀执行不同的指令。例如以下配置文件:

AddType text/html .html AddDefaultCharset GB2312 .gb

这个配置文件给 .html后缀添加了媒体格式:text/html,给.gb后缀添加了默认编码:GB2312,如果有一个文件名为 index.gb.html,那么这两个后缀都会生效,它的媒体格式会设置成text/html,默认编码设置成BG2312
常见的媒体格式类型解释:
text/html: HTML格式
text/plain:纯文本格式
image/gif:gif图片格式
application/pdf:pdf格式
【漏洞复现之中间件专栏|Apache HTTPD 多后缀解析漏洞 漏洞复现】application/octet-stream:二进制流数据(常见的文件下载就是这种媒体格式)
漏洞环境 该环境使用vulhub搭建,该漏洞路径为 /vulhub/httpd/apache_parsing_vulnerability。进入该漏洞路径后执行以下命令:
docker-compose up -d

-d 表示后台运行。
注意:该命令必须在漏洞目录下执行,该命令是启动当前目录下的docker容器。
如果不会搭建环境可以参考官方文档:https://vulhub.org/#/docs/
原理分析 启动容器后执行以下命令查看容器ID。
docker ps

漏洞复现之中间件专栏|Apache HTTPD 多后缀解析漏洞 漏洞复现
文章图片

然后执行以下命令进入容器。
docker exec -it 容器ID /bin/bash

exec 表示在容器中执行一个命令,该命令后加容器ID和要执行命令,上面执行的命令就是/bin/bash。
-i 表示即使没有连接,也要保持STDIN打开,也就是一直监听命令的状态。
-t 表示分配一个tty终端设备,加上这个参数就具有按TAB自动补全命令等等功能。
更多详细内容可以参考:
https://blog.csdn.net/qq_40081976/article/details/84590119,docker exec 的使用-it操作。
https://xunyang1.github.io/2021/07/14/docker/,Docker初识。
漏洞复现之中间件专栏|Apache HTTPD 多后缀解析漏洞 漏洞复现
文章图片

进入容器后查看apache2的配置文件:
cat /etc/apache2/conf-available/docker-php.conf

漏洞复现之中间件专栏|Apache HTTPD 多后缀解析漏洞 漏洞复现
文章图片

发现在配置文件中的配置有点问题,文件名只要有.php的后缀就会当成php文件执行,例如 index.php.html就会当成php来执行。将这里的.php改成(.php)$就不会出现这种问题了。然后再查看文件上传功能代码:
(.php)$ 是通过正则表达式匹配.php,其中$代表在字符串的末尾匹配,所以只有.php位于文件名最后,apache才会将该文件以php的方式解析。
cd /var/www/html cat upload.php

漏洞复现之中间件专栏|Apache HTTPD 多后缀解析漏洞 漏洞复现
文章图片

发现文件上传的代码只会检查文件名最后的一个后缀,所以我们能成功上传 a.php.jpg,而且apache会把这个文件当成php来执行。
漏洞复现 将一句话木马 保存为 a.php.jpg,并上传到服务器。
网站地址为靶机IP地址。
可以通过docker ps查看容器的映射的端口。
漏洞复现之中间件专栏|Apache HTTPD 多后缀解析漏洞 漏洞复现
文章图片

漏洞复现之中间件专栏|Apache HTTPD 多后缀解析漏洞 漏洞复现
文章图片

访问一句话木马,并通过a参数传递命令。
http://192.168.119.131/uploadfiles/a.php.jpg?a=id

漏洞复现之中间件专栏|Apache HTTPD 多后缀解析漏洞 漏洞复现
文章图片

命令执行成功!
参考文献 [1] https://blog.csdn.net/qq_40081976/article/details/84590119,docker exec 的使用-it操作
[2] https://blog.csdn.net/weixin_36300275/article/details/118401719,mediatype.text html,你真的了解mediaType吗?
[3] https://xunyang1.github.io/2021/07/14/docker/,Docker初识。

    推荐阅读