漏洞复现之中间件专栏|Apache HTTPD 多后缀解析漏洞 漏洞复现
前言 该漏洞并不是apache程序本身的问题,而是管理员配置不当造成。Apache支持一个文件具有多个后缀,并为不同的后缀执行不同的指令。例如以下配置文件:
AddType text/html .html
AddDefaultCharset GB2312 .gb
这个配置文件给
.html
后缀添加了媒体格式:text/html
,给.gb
后缀添加了默认编码:GB2312
,如果有一个文件名为 index.gb.html
,那么这两个后缀都会生效,它的媒体格式会设置成text/html
,默认编码设置成BG2312
。常见的媒体格式类型解释:漏洞环境 该环境使用vulhub搭建,该漏洞路径为
text/html: HTML格式
text/plain:纯文本格式
image/gif:gif图片格式
application/pdf:pdf格式
【漏洞复现之中间件专栏|Apache HTTPD 多后缀解析漏洞 漏洞复现】application/octet-stream:二进制流数据(常见的文件下载就是这种媒体格式)
/vulhub/httpd/apache_parsing_vulnerability
。进入该漏洞路径后执行以下命令:docker-compose up -d
-d 表示后台运行。原理分析 启动容器后执行以下命令查看容器ID。
注意:该命令必须在漏洞目录下执行,该命令是启动当前目录下的docker容器。
如果不会搭建环境可以参考官方文档:https://vulhub.org/#/docs/
docker ps
文章图片
然后执行以下命令进入容器。
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初识。
文章图片
进入容器后查看apache2的配置文件:
cat /etc/apache2/conf-available/docker-php.conf
文章图片
发现在配置文件中的配置有点问题,文件名只要有.php的后缀就会当成php文件执行,例如
index.php.html
就会当成php来执行。将这里的.php
改成(.php)$
就不会出现这种问题了。然后再查看文件上传功能代码:(.php)$ 是通过正则表达式匹配.php,其中$代表在字符串的末尾匹配,所以只有.php位于文件名最后,apache才会将该文件以php的方式解析。
cd /var/www/html
cat upload.php
文章图片
发现文件上传的代码只会检查文件名最后的一个后缀,所以我们能成功上传
a.php.jpg
,而且apache会把这个文件当成php来执行。漏洞复现 将一句话木马
保存为 a.php.jpg
,并上传到服务器。网站地址为靶机IP地址。
可以通过docker ps查看容器的映射的端口。
文章图片
文章图片
访问一句话木马,并通过a参数传递命令。
http://192.168.119.131/uploadfiles/a.php.jpg?a=id
文章图片
命令执行成功!
参考文献 [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初识。
推荐阅读
- CVE-2020-16898|CVE-2020-16898 TCP/IP远程代码执行漏洞
- PMSJ寻平面设计师之现代(Hyundai)
- 太平之莲
- 闲杂“细雨”
- 七年之痒之后
- 深入理解Go之generate
- 由浅入深理解AOP
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 生活随笔|好天气下的意外之喜
- 感恩之旅第75天