apache多后缀文件解析漏洞复现

文章目录

一. 漏洞描述
二. 漏洞原理
三. 实验环境

  1. apache版本
  2. 在网站根目录我们建一个index.php,测试是否解析
  3. 修改文件名测试
  4. 用文件名不包含php的文件测试
  5. 漏洞怎么使用?
    四. 如何解决

一. 漏洞描述

Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析成php文件,利用Apache httpd这个特性,就可以绕过上传文件的白名单。

该漏洞和apache版本和php版本无关,属于用户配置不当造成的解析漏洞,尤其是使用module模式与php结合的所有版本

apache支持php有多种模式,常见的有module、cgi、fastcgi等,此漏洞存在于module模式

二. 漏洞原理

由于管理员的错误配置, AddHandler application/x-httpd-php .php,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。

三. 实验环境

1. apache版本

[root@gaosh-1 modules]# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Jun 19 2018 15:45:13
[root@gaosh-1 modules]# 
2. 在网站根目录我们建一个index.php,测试是否解析
[root@gaosh-1 html]# cat index.php 
<?php 
phpinfo(); 
?>

我们在网页端执行,看看会不会被解析:

解析成功,apache调用了模块进行了解析
在这里插入图片描述

3. 修改文件名测试

接着我们来改一下文件名字L:把index.php 改为index.php.aaa

[root@gaosh-1 html]# mv index.php index.php.aaa

测试:
在这里插入图片描述
在这里插入图片描述
还是可以解析,证明不管php是不是在最后面,哪怕在中间,也能被解析

4. 用文件名不包含php的文件测试

我们再次修改文件名,这次不要出现php
[root@gaosh-1 html]# mv index.php.aaa index.aaa
在这里插入图片描述
从这里可以看到,虽然还是php代码,但是文件名没有出现php,这个文件就被当作txt文件来处理了。

在apache与php的结合的网站中,php处理的是.php文件的解析,而apache只负责解析和接受http的请求,Php将.php文件解释执行完毕后,将生成的HTML代码发送给apache,再由 apache将HTML代码发送给客户端。

5. 漏洞怎么使用?

一般的网站可以上传图片,我们把图片的名字命名为 gaosh.php.jpg, 文件名的内容写php代码,然后上传,网站管理人员以为是jpg图片,事实上我们写的是php代码。
在这里插入图片描述
在这里插入图片描述

四. 如何解决

在apache配置文件里写正则 FileMatch
在httpd.conf的文件最后添加:

<FilesMatch ".(php.|php3.|php4.|php5.)">
Order Deny,Allow
Deny from all
</FilesMatch>

[root@gaosh-1 html]# service httpd restart

测试:
在这里插入图片描述
本文转自 ID: 互联网老辛 更多内容关注公众号《极客运维之家》,扫码添加:

apache多后缀文件解析漏洞复现_第1张图片

你可能感兴趣的:(linux,apache,nginx,服务器,负载均衡)