前段时间在复习文件解析漏洞,有些知识的确得记清呀~~
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文件解析
|