Apache文件解析漏洞

Apache文件解析漏洞

风险级别:高风险

风险描述:Apache在解析文件时当遇到无法识别的扩展名时,将会从后向前解析,直到遇到识别的扩展名为止;

风险分析:在控制上传文件时,判断文件名是否是PHP、ASP、ASPX、ASA、CER、ASPX等脚本扩展名,如果是,则不允许上传,防止攻击者上传1.php.rar等扩展名来绕过程序检测,配合解析漏洞,得到webshell;



解析漏洞主要存在于三大WEB服务程序,分别是IIS、NGINX和Apache。

IIS6.0下主要是有两个解析漏洞,一个是目录解析,如/xx.asp/xx.jpg,另一个是文件解析,如xx.asp;.jpg,可通过此漏洞上传shell,对服务器危害较大。

Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断。比如xxx.php.rar对apache来说rar是不可解析的,所以就会解析成xxx.php。

Apache并不认识rar后缀名,对它来说会看成test.php。解析成功。其实漏洞的关键就是apache的"合法后缀",不是"合法后缀"的都可以被非法利用。



漏洞复现

漏洞复现环境:

Windows
Apache
PhpStudy
安装Phpstudy用到的版本:
Apache + PHP 5.2

漏洞原理

Apache文件解析漏洞与用户的配置有密切的关系,严格来说属于用户配置问题。Apache文件解析漏洞涉及到一个解析文件的特性。Apache默认一个文件可以有多个以点.分割的后缀,当右边的后缀无法识别,则继续向左识别;

漏洞复现过程

复现1:(本地简单文件上传)

首先创建了一个aaaa.shell的文件:

显然.shell的文件后缀是未知的后缀名,但是浏览器将它当做php文件执行解析!!!

我们把后缀换成其他非法的格式:aaaa.php.aaa;

可以发现,仍然能够正常的解析php;


复现2:(DVWA靶场文件上传)

首先我们打开dvwa靶场的文件上传模块,上传一句话木马(php文件),可以看到文件正常上传,且可以被正常解析,后续我们可以使用菜刀,或者中国蚁剑进行连接得到webshell;

在这里插入图片描述

如果我们将php文件设置为.rar后缀,那么文件上传时,服务器会正常解析嘛?
在这里插入图片描述
可以发现.rar后缀,文件仍然将它正常解析;
在这里插入图片描述


配置文件的含义和作用

1.mime类型文件

/etc/mime.types

这里记录了大量的文件后缀和mime类型,当客户端请求一个文件时,如果后缀在这个列表里,那么Apache就返回对应的content-type给浏览器。如果不在列表,Apache不会返回content-type给浏览器,而是直接返回文件内容,由浏览器自动处理。

在Ubuntu中,该文件位于/etc/mime.types;
在Windows中,该文件位于C:/apache/conf/mime.types;
(注意Apache的安装路径)。

2.Apache解析PHP的方法

/etc/apache2/mods-enabled/php7.2.conf

意思是如果请求的文件名满足正则表达式(文件的最后一个后缀是php|php3…)就把文件交给PHP处理器(php_module)来处理,处理完之后结果返回给Apache,再由Apache发送给浏览器。


漏洞防御:

通过修改apache配置文件进行防御:

由上面可知,在/upload/下已经成功上传了test.php.rar,并且可错误解析成php。

现在对apache的配置文件做适当修改,在文件中添加下面代码:

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

禁止*.php.*文件的访问权限



参考博客:

https://www.cnblogs.com/vawter/p/7791633.html
https://blog.csdn.net/qq_32434307/article/details/79480316
https://www.jianshu.com/p/3cf34c60a6e8

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值