Apache文件解析漏洞

目录

漏洞原理

Apache解析原理

漏洞原理

产生原因

复现过程

环境配置

下载相关程序

 复现漏洞产生原因

漏洞验证

修复方法


漏洞原理

Apache解析原理

apache通过查看mime.types文件来查看是否能够识别上传文件的文件类型。在/etc/mime.types文件中记录了大量的文件后缀和mime类型,当客户端请求一个文件时,如果后缀在该文件中,apache将返回对应的content-type给浏览器。如果不在这个文件中则不会返回content-type给浏览器,而直接文件内容,由浏览器自动处理。

漏洞原理

Apache文件解析漏洞涉及一个解析文件的特性:Apache默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法识别(不在mime.types内),则继续向左识别。

当我们请求一个文件:1.php.xxx.yyy

yyy -> 无法识别,向左

xxx -> 无法识别,向左

php -> 可以识别,交给php处理该文件

产生原因

Apache本身不存在解析漏洞,漏洞的产生是因为网站管理员在配置服务器是的不当操作产生的。

  • 在Apache虽然将1.php.xxx.yyy交给php处理文件,但是php也不认识.xxx.yyy的后缀,所以直接就输出了。但因为在网站管理人员为了使apache服务器能够解析php,而自己添加了一个handler导致了解析漏洞的产生。

复现过程

环境配置

靶机:192.168.111.147(Ubuntu 16.0)

下载相关程序

下载Apache

apt-get install apache2 

 下载php7.0

apt-get install php7.0

将apache与php以module的方式连接

apt-get install libapache2-mod-php7.0
  1. Apache和php三种结合方法
    1. CGI:通常翻译为共同网关接口,是HTTP服务器与机器上的其他程序进行通信的一个接口,让Web服务器必要时启动额外的程序处理动态内容
    2. FastCGI:CGI解释器的更快实现,可以提供良好的性能、伸缩性、Fail-Over特性等等
    3. Module:把PGP编译为apache的模块

 查看Apache状态

 复现漏洞产生原因

创建配置文件

  • 进入存放配置文件的文件夹并创建一个1.conf的配置文件

  •  AddHandler application/x-httpd-php .php的作用是为了apache把php文件交给php_module解析,但是注意到它与SetHandler:它的后缀不是用正则去匹配的。所以,在文件名的任何位置匹配到php后缀,它都会让php_module解析。

cd /etc/apache2/site-enabled/
vim 1.conf
AddHandler application/x-httpd-php .php

重启Apache服务并查看状态

service apache2 restart
service apache2 status

漏洞验证

进入根目录

cd /var/www/html

在根目录中创建一个1.php.aaa的文件,在浏览器中访问

1.php.aaa被apache以.php文件正常解析,文件解析漏洞复现完成

修复方法

不使用AddHandler改用SetHandler,写好正则匹配,就不会有解析问题。

<FilesMatch ".+\.php$">
SetHandler application /x-httpd-php
</FilesMatch>

禁止.php.这样的文件执行

<FileMatch ".+\.ph(p[3457]?|t|tml)\.">
Require all denied
</FileMatch>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值