前段时间在复习文件解析漏洞,有些知识的确得记清呀~~

00x0 前言

    解析漏洞主要是指攻击者利用一些服务器的特性,精心构造的文件后缀被服务器解析为脚本文件,从而导致网站沦陷。

00x1 Apache

1、phpcgi漏洞

1
2
3
4
test.jpg/x.php         

其中,x.php是不存在的文件,所以会向前递归解析,而test.jpg会被当做php文件执行。
此时,可以修改请求包将test.jpg的内容替换为php的内容,或者上传图片马。

2、Apache陌生后缀解析漏洞

1
2
3
4
5
6
7
8
test.php.aaa

Apache 1.x/2.x版本

因为Apache判断文件后缀是从右往左的,所以遇到aaa不认识,就会继续向左解析,直到遇到认识的后缀。
此时随意编写字符串作为后缀即可绕过黑名单检测。
如果白名单中设置了Apache不认识的后缀,则也可绕过白名单检测。
(关于具体的Apache不认识的后缀可以在Apache路径下的conf的mime.types文件中查看。)

3、Apache换行解析漏洞

1
2
3
test.php%0a

%0a是换行符,Apache会直接忽略,当test.php%0a不在黑名单中时,可绕过黑名单检测。

00x2 IIS

1、phpcgi漏洞

1
2
3
4
5
test.jpg/x.asp

IIS 7.0/7.5版本 且fast-cgi默认开启

和Apache的phpcgi漏洞一样的道理,x.asp是不存在的文件,所以会向前递归解析,而test.jpg会被当做asp文件执行。

2、IIS分号漏洞

1
2
3
4
5
test1.asp;test2.jpg 或 test1.asp;.jpg

IIS 6.0版本

IIS会将分号后的内容丢弃,所以会以asp脚本来执行。

3、目录解析漏洞

1
2
3
4
5
6
7
8
9
/test1.asp/test2.jpg

IIS 6.0版本

如果网站目录下有一个“test1.asp”的文件夹,那么该文件夹下的一切内容都会当做asp脚本来执行。
默认的可执行文件除了asp之外还包括:
/test.asa
/test.cer
/test.cdx

00x3 Nginx

1、phpcgi漏洞

1
2
3
4
5
test.jpg/x.php

Nginx < 8.03版本

和前面的phpcgi解析漏洞一样的原理,x.php是不存在的文件,所以会向前递归解析,而test.jpg会被当做php文件执行。

2、Nginx空字节漏洞

1
2
3
4
5
test.jpg%00.php

Nginx 0.5/0.6/0.7<=0.765/0.8<=0.837版本

会把test.jpg当做php文件解析