一、什么是解析漏洞
二、常见的解析漏洞
1、IIS 5.x/6.0解析漏洞
2、IIS 7.0/IIS 7.5/ Nginx <8.03畸形解析漏洞
3、Nginx <8.03 空字节代码执行漏洞
4、Apache解析漏洞
解析漏洞是指服务器应用程序在解析某些精心构造的后缀文件时,会将其解析成网页脚本,从而导致网站的沦陷。大部分解析漏洞的产生都是由应用程序本身的漏洞导致的。
此类漏洞中具有代表性的便是IIS6.0解析漏洞,此漏洞又有目录解析和文件解析两种利用方式,但也有少部分是由于配置的疏忽所产生的,如Nginx < 8.03的畸形解析漏洞。
在IIS5.X和IIS6.0版本中存在以下两个解析漏洞。
(1)目录解析漏洞
在网站中建立名字为*.asp、*.asa的文件夹,其目录内的任何扩展名文件都会被IIS当做ASP文件来解析并执行。
例如:创建一个目录test.asp,那么/test.asp/1.jpg将被当做ASP文件来执行。
/xx.asp/xx.jpg
(2)文件解析漏洞
网站上传图片的时候,如果将网页木马文件的名字改成"*.asp;1.jpg",分号后面的不被解析,也就是说,"*.asp;1.jpg"会被服务器看成是*.asp,就可以绕过服务器禁止上传ASP文件的限制,这样的畸形文件也同样会被IIS当做ASP文件来解析并执行。
例如:上传一个图片文件名为"test.asp;1.jpg"的木马文件,该文件可以被当做ASP文件解析并执行。
在IIS6.0版本中,默认可执行文件除了test.asp以外,还包括test.asa、test.cer、test.cdx这三种,同样也存在解析漏洞。
test.asp;1.jpg
test.asa;1.jpg
test.cer;1.jpg
test.cdx;1.jpg
IIS 7.0/IIS 7.5/ Nginx <8.03在Fast-CGI运行模式下,在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为 php 文件。
在某些使用有漏洞的网站中,访问http://127.0.0.1/1.jpg/1.php,此时的1.jpg会被当作PHP脚本来解析,此时1.php是不存在的。
这就意味着攻击者可以上传合法的“图片”(图片木马)然后在URL后面加上“/xxx.php”,就可以获得网站的WebShell,在使用菜刀链接即可。
1.jpg/1.php
影响版:0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37
当使用PHP-FastCGI执行PHP时,遇到url里面存在%00空字节时与FastCGI的处理不一致,导致可在非PHP文件中嵌入PHP代码,通过访问url+%00.PHP来执行其中的PHP代码。
例如:"http://127.0.0.1/1.jpg%00.php"会把1.jpg文件(木马文件)当做PHP文件来执行。
xxx.jpg%00.php
在Apache 1.x和Apache 2.x中也存在解析漏洞。
例如:1.php.rar会被当作php文件执行。
Apache在解析文件时有一个原则:按照识别“.”后的扩展名来解析,当碰到不认识的扩展名时,将会从后面向前解析,直到碰到认识的扩展名为止。
例如:1.php.aa.bb.cc
1.php.aa.bb.cc
会先解析cc,若cc不存在则解析bb,bb不存在则解析aa,aa不存在则只能解析PHP了。如果解析完还没有碰到可以解析的扩展名,就会暴露源文件。
这种方法可以绕过基于黑名单的检查。(如网站限制,不允许上传后缀名为PHP、ASP、ASA等的文件)