Apache HTTPD 多后缀解析漏洞

简介 Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析成php文件,利用Apache httpd这个特性,就可以绕过上传文件的白名单。
该漏洞和apache版本和php版本无关,属于用户配置不当造成的解析漏洞
原理 由于管理员的错误配置, AddHandler application/x-httpd-php .php,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。
运维人员给.php后缀增加了处理器:
AddHandler application/x-httpd-php .php
那么,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。
环境搭建与复现 运行如下命令启动一个稳定版Apache,并附带PHP 7.3环境:
docker-compose up -d
Apache HTTPD 多后缀解析漏洞
文章图片

浏览器访问http://172.17.0.1/uploadfiles/phpinfo.php.jpg,发现phpinfo被执行了,该文件被解析为php脚本
Apache HTTPD 多后缀解析漏洞
文章图片

修复建议 1、使用SetHandler,写好正则

SetHandler application/x-httpd-php

2、禁止.php这样的文件执行

Require all denied
【Apache HTTPD 多后缀解析漏洞】

    推荐阅读