为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名,攻击者可利用此漏洞枚举网络服务器根目录中的文件
- 当我们访问一个长名称目录的时候:http://127.0.0.1/administrator
- 这个administrator目录可以简写为admini~1
- 根据这个上述格式,我们访问/admini~1也可以相当于访问administrator
产生:
Windows系统为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名.且这种特性被IIS中间件继承.
范围:
以IIS为中间件的asp网站(网站URL以<.asp,.aspx>为后缀结尾)
测试:
若:
-
http://127.0.0.1/*~1****/a.aspx 返回404(找不到页面)
-
http://127.0.0.1/l1j1e*~1****/a.aspx 返回400(客户端请求错误)
则:
- 网站可能存在IIS短文件枚举漏洞
注:
- 在IIS不同版本中,返回的参数会有略微差别
工具:
- nmap -Pn --script http-iis-short-name-brute
修复
百度方案:
- 禁止url中使用“~”或它的Unicode编码;
- 关闭windows的8.3格式功能;
- 将.NET Farrmework升级至4.0
最终的方案(仅作参考):
- 修改注册表项:(重启服务器生效)
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation
值为1; - 执行DOS命令, fsutil behavior set disable8dot3 1;
- 删除现有的IIS目录重新部署,完成此步骤才能完全修复