首页
运维教程
Linux基础
系统服务
系统架构
数据库
shell脚本
虚拟化
大数据
DevOps
企业案例
运维开发
python
go语言
运维安全
行业资讯
网络基础
系统安全
运维面试
学习路线
学习方法
面试题库
职场解惑
软件
运维软件
办公软件
书籍资源
技术陪跑营
重要信息
首页 运维教程系统服务【linux】 apache多后缀文件解析漏洞复现

【linux】 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

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

本文链接:http://www.geekyunwei.com/922.html

网友评论comments

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2021 极客运维 公众号《极客运维之家》
扫二维码
扫二维码
返回顶部