文件解析漏洞是将静态文件错误的解析为动态文件的漏洞
1.IIS/Nginx + PHP fashcgi取值错误解析漏洞(配置错误)
开启了cgi.fix_pathinfo,如果开启以后,所执行文件不存在,会继续查找上一级文件是否存在。
index.php/id/2
并且未设置security.limit_extensions,该选项限制可以执行的文件类型
示例:abcde.jpg/.php
2.Nginx文件名逻辑漏洞(CVE-2013-4547)
影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
上传一个以空格(%20)为结尾的文件,例如“abcde.jpg ”
当访问abcde.jpg%20%00.php时,会将刚刚上传的文件,当做PHP进行执行
一般的php匹配正则: .php$
存在漏洞时,Nginx将abcde.jpg%20当做了脚本文件名
3.Apache解析漏洞(配置错误)
如果在Apache的conf文件中有如下配置
AddHandler application/x-httpd-php .php
则abcde.php.jpg也会被当做php去执行
如果在.htaccess中有如下配置,可以将扩展名.xxx当做php执行
AddType application/x-httpd-php xxx
4.IIS 5.x/6.0解析漏洞
(1)上传文件名:abcde.asp;.jpg
服务器默认不解析;后面的内容,因此文件被当做asp文件解析
(2)向xxx.asp目录下面上传abcde.jpg
服务器会将xxx.asp目录下的文件都当做asp文件解析