解析漏洞(Web漏洞及防御)


解析漏洞(Web漏洞及防御)文章插图
概述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.的文件被执行!
CGICGI: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
// 如果wenxin.php不存在 , php会递归向前解析 , 如果tony.png存在 , 把它当做PHP文件解析!IIS解析漏洞6.0版本:

  1. 处理分号(;)的文件名时 , 会截断分号后面的部分!
;.png// 当做ASP解析test.asp,.png被截断
  1. 当目录的名称是*.asp/*.asa/*.cer/*.cdx
IIS会将目录里任何扩展名的文件当作ASP文件来解析!
7.x版本:
解析PHP文件时 , 默认开启了cgi.fix_pathinfo , 如果设置了为1 , 找不到*.php文件 , 会递归向前解析 , 存在*.png , 会把它当做PHP文件解析!(同PHP CGI漏洞一样)
Nginx解析漏洞【解析漏洞(Web漏洞及防御)】同PHP CGI漏洞一样!