apache 解析漏洞如下
1、多后缀名
在Apache认为,一个文件可以有多个后缀,如:werner.txt.png.mp3。
这一文件,放在Windows里,毫无疑问,就是个mp3文件。Windows只认最后一个“.”及其后面的字符“mp3”,觉得该文件后缀为“.mp3”,这也是大多数操作系统、应用软件的处理方式、是正常人习惯。
而在Apache中,则可能有所不同,如果有必要,Apache会从后(右)往前(左),一一辨别后缀,但是当Apache不认识某个后缀时,就出现问题了。
如某文件名为:werner.mp3.qwe.arex,Apache在处理时,先读取最后一个后缀,为“.arex”,然后从后 往前解析,如该文件名,就会理解成 该文件为 mp3漏洞
apache版本在以下范围内
Apache 2.0.x <= 2.0.59 Apache 2.2.x <= 2.2.17 Apache 2.2.2 <= 2.2.8 都可以通过解析漏洞配合上传使用。
2、罕见的后缀
为什么说是罕见呢,如我们 查看计算机中的 mime.types 文件
werner@Yasser:~$ cat /etc/mime.types | grep php
#application/x-httpd-php phtml pht php
#application/x-httpd-php-source phps
#application/x-httpd-php3 php3
#application/x-httpd-php3-preprocessed php3p
#application/x-httpd-php4 php4
#application/x-httpd-php5 php5
也就是说,如果当配置文件 做解析正则匹配 文件的时候,配置不当,就会出现解析 多文件,如php3,php4,php5 phtml,后缀的文件 等等
如下匹配规则,就会解析
正则表达式”.+\.ph(p[345]?|t|tml)$”
3,配置不当
1,利用修改.htaccess
2,利用修改Apache的配置文件
注意:下文修改代码也可以用于 apache的配置文件
为什么说是利用.htaccess呢?我们在之前的实战中,经常会用来修改该文件,“感染”配置文件,达到扰乱蓝队判断
因为在apache中,一般来说,配置文件的作用范围都是全局的,但Apache提供了一种很方便的、可作用于当前目录及其子目录的配置文件——.htaccess(分布式配置文件)
要想使.htaccess文件生效,需要两个条件,一是在Apache的配置文件中写上:
AllowOverride All
若这样写则.htaccess不会生效:
AllowOverride None
二是Apache要加载mod_Rewrite模块。加载该模块,需要在Apache的配置文件中写上:
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
是不是有点麻烦?但是在部分实战当中,特别是资源加载过多的情况下,遇到开启的情况还是挺多的。一些第三方的应用默认也是开启的状态
因为.htaccess文件可以配置很多事情,如是否开启站点的图片缓存、自定义错误页面、自定义默认文档、设置WWW域名重定向、设置网页重定向、设置图片防盗链和访问权限控制。
所以,我们只需要在文件里面修改MIME类型解析即可
如在.htaccess文件中写入:
AddType application/x-httpd-php .xxx
就成功地使该.htaccess文件所在目录及其子目录中的后缀为.xxx的文件被Apache当做php文件
另一种写法是:
<FilesMatch "shell.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
该语句会让Apache把shell.jpg文件解析为php文件。
4,换行解析
该是 CVE-2017-15715 漏洞
原理如下:
Apache可以通过mod_php来运行PHP网页。
其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,解析到下面例子时候:
1.php\x0A
将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。(%0a即编码中的换行符,于是这个解析漏洞叫换行解析)
复现如下:
如图可以看出,是不可以上传php后缀的文件的

我们在 在Hex编码下,该处插入(insert byte)0a作为换行符

可以成功
