攻击方法(转自http://blog.sina.com.cn/s/blog_64a3795a01017xqt.html)
一直在寻找一种方法,如果我可以使用通配符"*" 和 "?"发送一个请求到iis,我意识到当IIS接收到一个文件路径中包含"~"的请求时,它的反应是不同的.基于这个特点,我们可以根据http的响应区分一个可用或者不可用的文件。在以下的表中,文件validxxx.xxx是存在于网站服务器根目录的。(备注:xxx.xxx是指不确定,还需要继续猜解判断)。下图主要是不同版本的IIS返回根据请求的返回错误来判断是否存在某个文件。
举例说明如果一个IIS6网站http://www.xxx.com的短文件猜解方法。(注意一定要支持aspx,可用x.aspx判断)
请求 http://www.xxx.com/a*~1*/.aspx 返回404,就说明存在a开头的一个axxx.xxx的文件(其中xxx.xxx还需要进一步确定判断是什么字母,什么后缀)。
请求http://www.xxx.com/a*~1*/.aspx 返回400,说明不存在a开头的一个axxx.xxx的文件(其中xxx.xxx还需要进一步确定判断是什么字母,什么后缀)。
防范方法
危害级别:轻微
IIS短文件名泄露漏洞
WASC Threat Classification
描述: Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件。
1.Internet Information Services(IIS,互联网信息服务)是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。
Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件。
危害: 攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。
解决方案:
1.关闭NTFS 8.3文件格式的支持。该功能默认是开启的,对于大多数用户来说无需开启。
如果是虚拟主机空间用户,请联系空间提供商进行修复。
修改方法:
1)修改注册列表HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation的值为1,或者,可以直接点此下载,然后运行,再重启下机器。(此修改只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除),
2)如果你的web环境不需要asp.net的支持你可以进入Internet 信息服务(IIS)管理器 --- Web 服务扩展 - ASP.NET 选择禁止此功能。
3)升级net framework 至4.0以上版本.
将web文件夹的内容拷贝到另一个位置,比如D:\www到D:\www.back,然后删除原文件夹D:\www,再重命名D:\www.back到D:\www。如果不重新复制,已经存在的短文件名则是不会消失的。
攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。