常见 Web 中间件及其漏洞概述(一):IIS

目录

PUT漏洞

漏洞原理

复现

修复

短文件名猜解

漏洞原理

IIS短文件名产生 

复现

短文件漏洞的局限性

IIS短文件名扫描工具

修复

远程代码执行

解析漏洞

IIS 6.0

基于文件名

基于目录名

IIS 7.0/7.5

IIS PHP文件解析配置

复现

 漏洞修复


PUT漏洞

漏洞原理

 IIS Server 在 Web 服务扩展中开启了 WebDAV之后,支持多种请求,配合写入权限,可造成任意文件写入。

 WebDav(Web-based Distributed Authoring and Versioning)是一种基于HTTP 1.1协议的通信协议,它扩展了HTTP协议,在GET、POST、HEAD等几个HTTP标准方法外添加了一些新的方法。

复现

Win 2003 + IIS 6.0

修复

关闭WebDAV 写权限

短文件名猜解

Windows 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于 MS-DOS 16 Windows的程序访问这些文件。在cmd下输入"dir /x"即可看到短文件名的效果。

漏洞原理

IIS的短文件名机制,可以暴力猜解短文件名,访问构造的某个存在的短文件名,会返回404,访问构造的某个不存在的短文件名,返回400。

IIS短文件名产生 

        1.当后缀小于4时,短文件名产生需要文件()名前缀字符长度大于等于9位。

        2.当后缀大于等于4时,文件名前缀字符长度即使为1,也会产生短文件名。

目前IIS支持短文件名猜测的HTTP方法主要包括:DEBUGOPTIONSGETPOSTHEADTRACE六种。 IIS 8.0之后的版本只能通过OPTIONSTRACE方法被猜测成功。

复现

IIS8.0以下版本需要开启ASP.NET支持,IIS大于等于8.0版本,即使没有安装ASP.NET,通过OPTIONSTRACE方法也可以猜解成功。 以下通过开启IIS6.0 ASP.NET后进行复现。

猜解格式:

http://192.168.11.148/短文件名/.aspx   ->  短文件名格式:*~*

 当访问构造的某个存在的短文件名,会返回404

当访问构造的某个不存在的短文件名,会返回400 

短文件漏洞的局限性

        1.如果文件名本身太短也是无法猜解的。

        2.此漏洞只能确定前6个字符,如果后面的字符太长、包含特殊字符,很难猜解。

        3.如果文件名前6位带空格,8.3格式的短文件名会补进,和真实文件名不匹配。

        4.如果文件夹名前6位字符带点".",扫描程序会认为是文件而不是文件夹,最终出现误报。

        5.不支持中文文件名,包括中文文件和中文文件夹。一个中文相当于两个英文字符,故超过4个中文字会产生短文件名,但是IIS不支持中文猜测。

IIS短文件名扫描工具

        https://github.com/irsdl/IIS-ShortName-Scanner

修复

        1.CMD命令关闭NTFS 8.3文件格式的支持

                Windows Server 2003: (1代表关闭,0代表开启)

                关闭该功能:fsutil behavior set disable8dot3 1

                Windows Server 2008 R2:

                查询是否开启短文件名功能:fsutil 8dot3name query

                关闭该功能:fsutil 8dot3name set 1

                不同系统关闭命令稍有区别,该功能默认是开启的.

        2.从修改注册表关闭NTFS 8.3文件格式的支持

        快捷键Win+R打开命令窗口,输入regedit打开注册表窗口
        找到路径: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem,将其中的 NtfsDisable8dot3NameCreation这一项的值设为 11代表不创建短文件名格式。

        注:

        以上两种方式修改完成后,均需要重启系统生效。
        Note:此方法只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除,需要重新复制才会消失。 :web文件夹的内容拷贝到另一个位置,如c:wwwc:ww,然后删除原文件夹,再重命名c:wwc:www

远程代码执行

HTTP.SYS远程代码执行漏洞(MS15-034)

解析漏洞

IIS 6.0

测试代码:

<%
response.write(now())
%>

基于文件名

只要文件名中包含有 .asp .asa .cer .cdx 会优先按照 asp 格式来解析。 eg:Test.asp;.jpg

原理:IIS服务器默认不解析; 号及其后面的内容,相当于截断。

 

基于目录名

如果目录名以 .asp .asa .cer .cdx 字符串结尾,那么这个目录下的所有文件都会按照 asp 格式去解析。 eg:Test.asp/Test.jpg

 

IIS 7.0/7.5


IIS7.0/7.5 是对 php 解析时有一个类似 Nginx 的解析漏洞,对任意文件名只要在 URL 后追加上字符串 /任意文件名.php 就会按照 php 的方式去解析。

该漏洞适用于 IIS7.x版本 在Fast-CGI运行模式下。

 eg:http://www.test.com/Test/test.txt/xx.php

IIS PHP文件解析配置

IIS 如何解析 PHP 文件

复现

 漏洞修复

配置 cgi.fix_pathinfo(php.ini为 并重启 php-cgi 程序

 

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>