概述
Web容器解析漏洞会将其他类型的文件当作脚本语言的文件进行解析!
(由于Web容器自身的漏洞,导致一些特殊文件被 IIS、apache、nginx 或其他 Web服务器在某种情况下解释成脚本文件执行!)
常见的Web容器
Apache
IIS
Nginx
Tomcat
......
Apache解析漏洞
在Apache1.x和2.x的版本中,它可以识别多个文件扩展名,如果文件存在多个扩展名,会从后向前开始解析,如果遇到Apache配置文件中的mime.types没有定义的扩展名,就继续向前解析,直到识别出可以解析的扩展名,如果所有扩展名都无法解析,就会以DefaultType的默认值text/plain将该文件当作文件解析!
例如:
// test.php.wenxin 从后向前解析,如果没有定义.wenxin的程序,就当作PHP文件解析!
Apache解析漏洞防御
修改Apache的配置文件,放置文件名中有.php.的文件被执行!
CGI
CGI:Common Gateway Interface,通用网关接口,是一种规范,可以用任何语言编写CGI!Web服务器收到请求,把请求提交给CGI程序,CGI程序对请求作出处理,并把处理结果,以标准的HTML语言返回给Web服务器,Web服务器返回给客户端!(CGI实现了动态网页的功能!)
CGI每收到一个请求,Web服务器都要派生(fork)一个单独的CGI进程来处理请求,但如果在高并发访问下,会消耗太多的服务器资源!
fastcgi
基于CGI架构的扩展,在Web服务器和具体CGI程序之间建立一个中间层,统一管理CGI的运行,这样,Web服务器只要将请求提交给这个中间层处理即可,中间层派生几个可复用的CGI程序实例,再把请求分发给这些实例!而这些实例是可控的,可复用的,服务器还可以通过中间层控制和监视这些实例的运行,根据不同的状况派生或回收实例,保证服务器的稳定运行!
PHP CGI解析漏洞
cgi.fix_pathinfo=1
http://www.tony.com/tony.png/wenxin.php// 如果wenxin.php不存在,php会递归向前解析,如果tony.png存在,把它当做PHP文件解析!
IIS解析漏洞
6.0版本:
- 处理分号(;)的文件名时,会截断分号后面的部分!
http://www.tony.com/test.asp;.png// 当做ASP解析test.asp,.png被截断
- 当目录的名称是*.asp/*.asa/*.cer/*.cdx
IIS会将目录里任何扩展名的文件当作ASP文件来解析!
7.x版本:
解析PHP文件时,默认开启了cgi.fix_pathinfo,如果设置了为1,找不到*.php文件,会递归向前解析,存在*.png,会把它当做PHP文件解析!(同PHP CGI漏洞一样)
Nginx解析漏洞
同PHP CGI漏洞一样!