IIS6中的解析漏洞
下面是iis6文件解析的原理:
1、当WEB目录下,文件名以 xxx.asp;xxx.xxx 来进行命名的时候,此文件将送交asp.dll解析(也就是执行脚本)
2、当WEB目录下,在访问以 xxx.asp 命名的目录下的任意文件时,此文件将送交asp.dll解析(也就是执行脚本)
我们都知道IIS6中间件主要解析的就是asp语言的文件,如果你放入一个JAVA语言的文件,php语言的文件他是不会进行解析的,只能当做文本文件进行显示出来,而里面语法所表达的意思是不会执行的。那么从iis底层审计原理和测试发现IIS6在解析文件时存在如下问题:
1、后缀如下会被当做asp程序进行执行 .asp .cer .asa .cdx
2、IIS 6.0在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞。这一漏洞有两种完全不同的利用方式: /test.asp/test.jpg test.asp;.jpg
为什么说这样的解析我们叫做漏洞呢?而不叫做多一种解析方式呢?
主要的原因是很多研发在编写上传功能的时候会进行黑名单活着白名单的判断,而往往不了解这种解析漏洞,忽略了这种校验,从而被其他人绕过上传能解析的大小马。
比如:有一个头像上传功能,开发者后台只允许上传后缀为jpg的文件,其他文件不允许上传,而黑客利用第二条解析漏洞上传了个1.asp;.jpg这时候能顺利的将该文件上传到服务器中,如果服务器只是将其按照图片解析,那么里面插入的asp马脚本就解析不成功无法发挥马的作用,但是iis6会将其安装asp文件解析,因此这个马就能起到马的作用,从而被黑客利用。
而iis6由于是设计上的缺陷,因此该漏洞没有厂家的修复方案,只要研发在本身上传功能上对上述漏洞进行过滤。
IIS7/IIS7.5中的解析漏洞
漏洞影响 IIS7 及IIS7.5 在使FastCGI方式调用php时,在php.ini里设置cgi.fix_pathinfo=1
使得访问任意文件URL时,在URL后面添加“/x.php”等字符时,该文件被iis当php文件代码解析。
如制作1.gif图片马(在图片中插入php马脚本)正常情况下访问 http://127.0.0.1/1.gif 的内容为正常的图片,里面的php脚本并不会执行,因为IIS7/IIS7.5只会按照图片的解析格式来进行解析。当访问 http://127.0.0.1/1.gif/1.php可以看到1.gif里的php代码被iis解析执行了。 那么“黑客”在具体利用网站漏洞的时候,先可以通过网站提供的图片上传功能(也可以是其他的手段)上传一个包含了恶意PHP代码的图片文件。然后通过上面描叙方法,让iis解析执行任意恶意的php代码,控制网站及主机,最终导致网站被“脱库”、“挂马”、“植入非法seo链接”等等严重后果。
IIS7/IIS7.5解析漏洞的修复方案有如下几个:
第1种方案:继续使用FastCGI方式调用PHP,要解决这个安全问题可以在php.ini里设置 cgi.fix_pathinfo=0 ,修改保存后建议重启iis(注意可能影响到某些应用程序功能)。
第2种方案:使用ISAPI的方式调用PHP。(注意:PHP5.3.10已经摒弃了 ISAPI 方式)
第3种方案:可以使用其他web服务器软件,如Apache等。
IIS漏洞发展史
在文章的最后我们引用“千里目实验室“搜集的近十五载的IIS相关漏洞,中、高危漏洞共计39个,其中15年爆发的(MS15-034)HTTP.sys 远程执行代码漏洞和16年的(MS16-016)WebDAV 特权提升漏洞影响范围尤其广泛。