前言
Apache 是世界使用排名第一的 Web 服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。
Apache解析漏洞
Apache 默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法识别(不在 mime.tyoes 内),则继续向左识别。例如这样的一个文件:shell.php.xx.yy。当右边yy无法识别的时候就会往左边继续进行识别直到识别到apache可以解析的内容。
修复方法
在apache配置文件中把AddType application/x-httpd-php .php .html.phtml
删除掉即可,重启apache即可。
.htaccess文件解析
原理:.htaccess文件(或者”分布式配置文件”),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
条件:
- php5.6以下不带nts的版本
- 服务器没有禁止.htaccess文件的上传,且服务商允许用户使用自定义.htaccess文件
一般出于安全性考虑根目录的AllowOverride属性一般都配置成不允许任何Override,即要设置为None。要想使.htaccess文件生效需要把None改成ALL。当是在测试过程中发现phpstudy无论是否修改都可以解析。。。。。具体可以看看该文章
所以开发过程中切忌不要使用集成环境,不够安全
上传文件.htaccess中代码为:
<FilesMatch "shell.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
该目录包括子目录下的所有名为shell.jpg的文件都会解析为php文件
Apache HTTPD 多后缀解析漏洞
Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析成php文件,利用Apache httpd这个特性,就可以绕过上传文件的白名单。无关apache版本和php版本是用户配置错误漏洞
开发的错误配置:
AddHandler application/x-httpd-php .php
直接上传一个名为shell.php.jpg
的文件,可以成功解析:
Apache HTTPD 换行解析漏洞
Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A
将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
vulhub上的详细复现和环境:https://vulhub.org/#/environments/httpd/CVE-2017-15715/
个人复现:
利用vulhub提供的靶场环境上传文件,在php处做好标记:
在php后面插入\x0A
,在把前面的标志删掉。
使用蚁剑进行连接可以成功利用:
apache提权-CVE-2019-0211
暂时没有复现成功,可以参考文章:https://paper.seebug.org/889/