安装IIS后,必须立即修复短文件名漏洞,否则攻击者可通过短文件名枚举获取服务器敏感信息,严重威胁网站安全,通过禁用短文件名生成功能即可有效修复。
IIS短文件名漏洞原理及修复方法
漏洞原理
Windows系统为每个长文件名自动生成8.3格式的短文件名,用于兼容16位程序,IIS在处理URL请求时,如果短文件名存在,攻击者可以通过在URL末尾添加字符或利用等通配符,从服务器响应中推断出短文件名,进而还原出完整文件名,这个漏洞并非IIS代码缺陷,而是Windows短文件名特性被滥用,业内专家指出,此问题在IIS 5.0到8.0版本中普遍存在,只要服务器运行在NTFS分区且未禁用短文件名生成,就可能被利用。
漏洞利用场景
攻击者通常先通过短文件名枚举获取网站目录结构,然后定位到敏感文件,比如web.config、Global.asax或源代码文件,假设网站根目录存在一个名为important_config_backup.xml的文件,攻击者可以通过发送http://target/~得到类似IMPOR~1.XML的短文件名,从而确认文件存在并进一步猜测内容,这一过程不需要目录浏览权限,只需IIS能够处理请求即可。
影响版本范围
| IIS版本 | 对应Windows版本 | 受影响情况 |
|---|---|---|
| 0 | Windows 2000 | 完全受影响 |
| 0 | Windows Server 2003 | 完全受影响 |
| 0 | Windows Vista / Server 2008 | 完全受影响 |
| 5 | Windows 7 / Server 2008 R2 | 受影响 |
| 0 | Windows 8 / Server 2012 | 受影响 |
| 5 | Windows 8.1 / Server 2012 R2 | 受影响 |
| 0 | Windows 10 / Server 2016+ | 默认禁用,但若开启则受影响 |
主要有三种方式:禁用短文件名生成、修改注册表即时生效、使用URL重写规则缓解,禁用短文件名生成是最根本的方法,但需要重启服务器;修改注册表可以不重启但部分环境可能无效;URL重写作为临时补充,无法完全消除漏洞。
IIS短文件名漏洞怎么修复
以下方法均建议在测试环境验证后,再应用到生产服务器。
禁用短文件名生成(彻底修复)
通过修改注册表彻底关闭NTFS的8.3短文件名创建功能,操作步骤如下:
- 以管理员身份打开注册表编辑器(运行
regedit)。 - 定位到
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem。 - 找到
NtfsDisable8dot3NameCreation,双击将其值改为1(默认值为0,表示启用)。 - 关闭注册表编辑器,重启服务器使更改生效。
重启后,所有新创建的文件将不再生成短文件名,但已存在的短文件名不会自动清除,如果需要清除现有短文件名,可以使用fsutil命令:
fsutil 8dot3name scan C:
fsutil 8dot3name strip C:
strip操作会删除指定卷上所有文件的短文件名,但可能影响仍依赖短文件名的旧程序,请谨慎使用。
修改注册表并强制刷新(不重启)
如果服务器不能立即重启,可以修改注册表后通过命令刷新,但行业共识认为,重启是最可靠的方式,不重启的情况下,部分系统可能不会立即生效,你可以使用以下命令检查当前状态:
fsutil 8dot3name query
该命令会输出每个卷的短文件名设置状态,如果某个卷显示为0,表示仍然启用,需要进一步处理。
使用URL重写规则(临时防护)
在IIS中安装URL重写模块,添加一条规则来阻止包含的请求,但这种方法无法完全防御,因为攻击者可能通过其他变种字符绕过,仅作为无法改动系统配置时的过渡方案。
修复验证工具
修复完成后,建议使用IIS短文件名漏洞检测工具验证,在命令行运行:
python iis_shortname_scanner.py -u http://target
如果返回结果为空或只显示No vulnerability found,则修复成功,注意,部分检测工具需要Python环境,且可能被安全软件拦截,建议在隔离环境测试。
安装IIS后如何配置短文件名防护
安装IIS之前就应做好安全基线,安装后立刻执行防护配置,避免留下窗口期。
安装前的系统准备
在Windows Server上安装IIS角色前,先检查并禁用短文件名生成,具体操作:
- 打开命令提示符,运行
fsutil 8dot3name query。 - 如果任何卷显示为
0,则说明短文件名仍启用。 - 修改注册表
NtfsDisable8dot3NameCreation为1,然后重启服务器。
确保在干净的系统中提前禁用,这样安装IIS后所有文件都不会生成短文件名。
通过服务器管理器安装IIS
以Windows Server 2012 R2为例,安装IIS 8.5的典型步骤:
- 打开服务器管理器,点击“添加角色和功能”。
- 选择“Web服务器(IIS)”角色,按需勾选常见功能(如ASP.NET、静态内容、默认文档等)。
- 完成安装后,在“管理工具”中打开IIS管理器。
- 在部署网站前,再次确认短文件名已禁用。
安装后立即执行的修复操作
即使安装前已禁用,安装过程可能创建了部分短文件名,建议安装后立即执行以下操作:
- 使用
fsutil 8dot3name query确认所有卷设置为1。 - 运行
fsutil 8dot3name scan扫描所有卷,查看是否有短文件名残留。 - 如果发现残留,使用
strip命令清除,但务必先备份重要数据。 - 最后重启服务器,并使用检测工具验证漏洞是否消失。
通过组策略统一管理
在企业环境中,可以通过域组策略统一配置短文件名禁用,设置路径为:计算机配置 → 管理模板 → 系统 → 文件系统 → 启用NTFS 8.3名称创建限制,选择“已启用”,这样所有加入域的服务器都会自动应用,避免遗漏。
IIS短文件名漏洞常见问题解答
IIS短文件名漏洞怎么检测?
可以使用专用检测工具,如IIS-ShortName-Scanner或基于Python的脚本,在命令行中执行python scanner.py -u http://target,如果返回类似CONFI~1.XML的短文件名,则存在漏洞,也可以手动测试:在URL后添加或,观察响应区别,但手动测试可靠性较低,建议使用工具。
修复后会影响网站正常访问吗?
绝大多数情况下不会,现代Web应用使用长文件名,IIS和ASP.NET等框架也依赖长文件名,但如果网站有古老的ActiveX组件或经典ASP代码直接引用短文件名,则可能出现问题,建议在测试环境验证,尤其是使用fsutil strip命令前,务必确认无依赖,长期来看,禁用短文件名是安全且无害的。
为什么安装IIS后需要立刻修复这个漏洞?
因为短文件名漏洞在安装后默认存在,攻击者可能通过简单扫描快速获取服务器信息,为后续攻击提供跳板,据统计,大部分针对IIS的信息泄露事件都与短文件名枚举有关,在安装IIS后第一时间修复,是最基本的安全实践。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/544046.html


