漏洞描述:
IIS短文件名泄露漏洞,Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件。

危害:
攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。

Windows 还以 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于 MS-DOS 或 16 位 Windows的程序访问这些文件。在cmd下输入“dir /x”即可看到短文件名的效果。
通配符”*” 和 “?”发送一个请求到iis,当IIS接收到一个文件路径中包含”~”的请求时,它的反应是不同的.基于这个特点,可以根据http的响应区分一个可用或者不可用的文件。如下图所示不同IIS版本返回信息的不同。

IIS短文件名漏洞修复-JE2Se ' Blog

根据返回值不同判断漏洞是否存在,简单举例,www.test.com根目录下存在一个je2se.sql文件。

通过构造请求

GET /je*~1*/ HTTP1.1       根据返回404,正确的名

GET /je11*~1*/ HTTP1.1    返回400      ,错误的名

我们就判断存在II短文件漏洞,当然还有自动化扫描工具

链接如下:

https://github.com/lijiejie/IIS_shortname_Scanner

修复方法:
方法1、修改注册列表HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation的值为1,或者,可以直接点此下载,然后运行,再重启下机器。(此修改只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除)。该修改不能完全修复,只是禁止创建推荐使用后面的修复建议

方法2、如果你的web环境不需要asp.net的支持你可以进入Internet 信息服务(IIS)管理器 --- Web 服务扩展 - ASP.NET 选择禁止此功能。(推荐修复方法,能彻底修复)

方法3、升级net framework 至4.0以上版本。(推荐修复方法,能彻底修复)