IIS 短命名文件泄露
2019-03-19 本文已影响0人
鸡翅儿
漏洞简介
为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名
Windows下使用dir /x
命令查看对应的短文件名
短文件名特征:
- 只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)。
- 后缀名最长只有3位,多余的被截断。
可以在启用.net的IIS下暴力列举短文件名,
漏洞成因:
访问构造的某个存在的短文件名,会返回 404
访问构造的某个不存在的短文件名,会返回 400
漏洞探测:
漏洞的利用,需要使用到通配符。在windows中,可以匹配n个字符,n可以为0. 判断某站点是否存在IIS短文件名暴力破解,构造payload,分别访问如下两个URL:
A:www.test.com/~1****/a.aspx
B:www.test.com/wtest~1****/a.aspx
访问 A 返回 404,访问 B 返回 400,则站点存在漏洞
目录猜解
- 访问 www.test.com/a*~1****/a.aspx
如果返回 404,则证明存在以 a 开头的文件或文件夹
以此来猜解出六位字符 - 例猜解完结果为:www.test.com/abcdef~1****/a.aspx
如果以 abcdef 开头的是一个文件夹,则访问 www.test.com/abcdef~1/a.aspx 返回 404
如果以 abcdef 开头的是一个文件,则继续猜解 www.test.com/abcdef~1g**/a.aspx
继续猜解 g 位置的字符,返回 404 则代表存在。以此猜解完后缀名中的三个字符。
漏洞局限性
- 只能猜解前六位,以及扩展名的前3位。
- 名称较短的文件是没有相应的短文件名的。
- 需要 IIS 和 .net 两个条件都满足。
漏洞修复
- 通用有效方法
禁用windows系统中的短文件名功能。
打开注册表并打开此目录 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
修改 NtfsDisable8dot3NameCreation 的值为1 。
修改完成后,需要重启系统生效。 - 简单有效方法:CMD命令
- Windows Server 2008 R2
查询是否开启短文件名功能:fsutil 8dot3name query
关闭该功能:fsutil 8dot3name set 1
- Windows Server 2003
关闭该功能:fsutil behavior set disable8dot3 1
- 手动验证
新建文件夹并创建几个文件,打开CMD进入该文件夹呢执行dir /x 检测,看不到有显示短文件名则成功。
注: 1. Windows Server 2003修改后需要重启服务器生效!
2. 已存在的文件短文件名不会取消,只对以后创建的文件有效!
3. WEB站点需要将内容拷贝到另一个位置,
如D:\www到D:\www.back,然后删除原文件夹D:\www,再重命名D:\www.back到D:\www。
如果不重新复制,已经存在的短文件名则是不会消失的。