Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,shell.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
Apache HTTPd 2.4.0~2.4.29
$ git clone https://github.com/vulhub/vulhub.git
$ cd vulhub/httpd/CVE-2017-15715
$ sudo docker-compose build
$ sudo docker-compose up -d
访问http://ip:8080/,出现以下页面即为环境搭建成功
上传php后门文件,shell.php
文件上传失败
抓取数据包,在shell.php后面插入一个0a,上传成功
访问url,php代码执行成功
http://ip:8080/shell.php%0A
在对漏洞介绍之前我们先对httpd.conf文件进行一个介绍,httpd.conf是apache的一个总配置文件,在该文件中,有很多对apache解析网页参数的设置,我们挑三个来介绍
有了这个基础之后,我们再来讲解漏洞原理
Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令,比如,我们在httpd.conf中添加如下配置文件
AddType text/html .html
AddLanguage zh-CN .cn
此时,如果用户请求文件index.cn.html,他将返回一个中文的html页面(.cn后缀对应的AddLanguage是zh-CN,.html对应的AddType是text/html,.html和.cn标记的属性同时被apache执行了),那么,如果在apache配置文件中添加了php对应的解析的话,我们上传的文件中只要包含.php,php文件就会被执行
# 在配置文件中添加此项,将会造成一个可以绕过上传白名单的解析漏洞
AddHandler application/x-httpd-php .php
跟服务器配置有关,与apache版本无关
$ git clone https://github.com/vulhub/vulhub.git
$ cd vulhub/httpd/apache_parsing_vulnerability
$ sudo docker-compose build
$ sudo docker-compose up -d
访问http://ip/,出现以下页面即为环境搭建成功
我们查看一下apache的配置文件
# 在vulhub/httpd/apache_parsing_vulnerability/conf目录下
$ cat docker-php.conf
AddHandler application/x-httpd-php .php
DirectoryIndex disabled
DirectoryIndex index.php index.html
<Directory /var/www/>
Options -Indexes
AllowOverride All
可以看到添加了对php文件的解析设置:AddHandler application/x-httpd-php .php
上传php文件
上传失败
将shell.php,修改为shell.php.png
上传成功,访问:http://ip/uploadfiles/shell.php.png ,php代码执行成功
Apache文件解析漏洞复现,CVE-2017-15715复现,Apache多后缀解析漏洞复现
原文:https://www.cnblogs.com/shley/p/14797164.html