0x01:漏洞描述
Windows 还以 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于 MS-DOS 或 16 位 Windows的程序访问这些文件。在cmd下输入“dir /x”即可看到短文件名的效果。
在Windows下查看对应的短文件名,可以使用命令dir /x
短文件名特点:
1、只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)
2、后缀名最长只显示3位,多余的被截断
3、生成短文件名后, 将文件名及扩展名中的所有字符转为大写。
0x02 漏洞利用
手工测试:
可以在启用.net的IIS下暴力列举短文件名,原因是:
1、访问构造的某个存在的短文件名,会返回404
2、访问构造的某个不存在的短文件名,会返回400
例如:
http://www.target.com/*~1*/a.aspx 返回404
http://www.target.com/admi*~1*/a.aspx 返回400
脚本测试:
java scanner 2 0 http://www.target.com/ 2代表频率2s 0代表不需要使用代理
不同IIS和.NET版本,服务器返回信息不同:
0x03 漏洞意义
这个漏洞的意义何在:
1、猜解后台地址
2、猜解敏感文件,例如备份的rar、zip、.bak、.SQL文件等。
3、在某些情形下,甚至可以通过短文件名web直接下载对应的文件。比如下载备份SQL文件。
0x04.漏洞的局限性
这个漏洞的局限有几点:
1) 只能猜解前六位,以及扩展名的前3位。
2) 名称较短的文件是没有相应的短文件名的。
3)需要IIS和.net两个条件都满足。
0x05. 漏洞的修复
1) 升级.net framework4.0以上
2) 修改注册表键值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
修改NtfsDisable8dot3NameCreation为1。
3)如果你的web环境不需要asp.net的支持你可以进入Internet 信息服务(IIS)管理器 --- Web 服务扩展 - ASP.NET 选择禁止此功能
4) 将web文件夹的内容拷贝到另一个位置,比如D:\www到D:\www.back,然后删除原文件夹D:\www,再重命名D:\www.back到D:\www
如果不重新复制,已经存在的短文件名则是不会消失的。
参考链接:
http://www.freebuf.com/articles/4908.html
http://www.lijiejie.com/iis-win8-3-shortname-brute/
http://www.baiwanzhan.com/site/t129697/