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

举报
互联网老辛 发表于 2021/06/08 23:53:47 2021/06/08
【摘要】 文章目录 一. 漏洞描述二. 漏洞原理三. 实验环境1. apache版本2. 在网站根目录我们建一个index.php,测试是否解析3. 修改文件名测试4. 用文件名不包含php的文件测试5. 漏洞怎么使用? 四. 如何解决 一. 漏洞描述 Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件...

一. 漏洞描述

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]# 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
2. 在网站根目录我们建一个index.php,测试是否解析
[root@gaosh-1 html]# cat index.php 
<?php 
phpinfo(); 
?>

  
 
  • 1
  • 2
  • 3
  • 4

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

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

3. 修改文件名测试

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

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

  
 
  • 1

测试:
在这里插入图片描述
在这里插入图片描述
还是可以解析,证明不管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>

  
 
  • 1
  • 2
  • 3
  • 4

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

测试:
在这里插入图片描述

文章来源: zmedu.blog.csdn.net,作者:互联网老辛,版权归原作者所有,如需转载,请联系作者。

原文链接:zmedu.blog.csdn.net/article/details/107647037

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。