IIS深入浅出之短文件漏洞知多少
字数 2141 2025-08-18 11:37:19

IIS短文件漏洞深入解析与防御指南

一、IIS基础概述

Internet Information Services (IIS) 是微软提供的可扩展Web服务器,支持HTTP、HTTPS、FTP等多种协议。IIS随Windows NT系列操作系统一起发布,目前全球市场份额约为10.19%,是全球第三大Web服务器。

各Windows版本默认IIS版本对应关系

Windows版本 默认IIS版本
Windows NT 3.51 IIS 1.0
Windows NT 4.0 SP2 IIS 3.0
Windows NT 4.0选项包 IIS 4.0
Windows 2000 IIS 5.0
Windows XP Pro/Media Center IIS 5.1
Windows Server 2003/XP Pro x64 IIS 6.0
Windows Server 2008/Vista IIS 7.0
Windows 7/Server 2008 R2 IIS 7.5
Windows 8/Server 2012 IIS 8.0
Windows 8.1/Server 2012 R2 IIS 8.5
Windows 10/Server 2016 IIS 10.0

二、IIS短文件漏洞详解

1. 漏洞背景

  • 发现时间:2010年8月由Soroush Dalili发现
  • 漏洞本质:由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(~)引起
  • 漏洞状态:微软认为未达安全更新标准,至今未完全修复

2. 影响范围

受影响版本

  • IIS 1.0 - IIS 7.5(使用GET方法,需安装ASP.NET)
  • IIS 8.0、IIS 8.5和IIS 10.0(使用OPTIONS和TRACE方法,无需ASP.NET)

不受影响情况:使用.Net Framework 4时不受影响

3. 漏洞原理

Windows支持以8.3格式生成与MS-DOS兼容的短文件名:

  • 格式:xxxxxx~xxxx(前6位字符直接显示,后续用~1指代)
  • 特征:
    1. 只有前6位字符直接显示,后续用~1指代(数字可递增)
    2. 后缀名最长3位,多余被截断
    3. 所有字母转为大写
    4. 以文件名最后一个"."作为短文件名后缀
    5. 文件名前缀长度≥9位才会生成短文件名(含空格或特殊字符时例外)

4. 漏洞危害

主要危害:信息泄露

  • 通过暴力破解短文件名访问敏感文件
  • 示例:backup_20180101.sqlbackup~1.sql

副危害:拒绝服务

  • 通过发送非法.Net文件请求导致递归搜索,消耗资源

5. 漏洞利用方法

探测技术

  • 低版本IIS:使用GET方法,根据404/400状态码判断
  • 高版本IIS:使用OPTIONS/TRACE方法,根据404/200或501状态码判断

利用方式

  1. 暴力破解:对短文件名进行暴力破解
  2. 结合爬虫/Fuzz:建立字典库猜测完整文件名
  3. 绕过认证:特定配置下可绕过Basic/Windows认证
    /AuthNeeded::$Index_Allocation/*~1*/.aspx
    /AuthNeeded:$I30:$Index_Allocation/*~1*/.aspx
    
  4. 结合其他软件:如Apache/WordPress在Windows下运行时可直接访问短文件

6. 漏洞局限性

  1. 只能确定前6个字符
  2. 文件名太短无法猜解
  3. 文件名前6位带空格时匹配不准确
  4. 文件夹名前6位带"."时会出现误报
  5. 不支持中文文件名(超过4个中文字会产生短文件名但无法猜测)

三、漏洞复现与验证

环境搭建

  1. Windows系统安装IIS(推荐Win10+IIS10)
  2. 创建长度≥9的文件名(如IIS10test.html
  3. 使用短文件扫描工具(Java/Python实现)

验证过程

  1. 使用dir /x命令查看短文件名
  2. 使用OPTIONS/TRACE方法探测
  3. 分析HTTP响应状态码:
    • 存在:404
    • 不存在:400(GET)或200/501(OPTIONS/TRACE)

四、防御方案

1. 禁用NTFS 8.3文件格式

  • Windows Server 2008 R2
    fsutil 8 dot3name query  # 查询状态
    fsutil 8dot3name set 1   # 关闭
    
  • Windows Server 2003
    fsutil behavior set disable8dot3 1
    

2. 修改注册表

  1. 打开注册表:regedit
  2. 导航至:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
  3. 修改NtfsDisable8dot3NameCreation值为1
  4. 注意:需重启生效,且对已存在的短文件名无效

3. 其他缓解措施

  • 关闭Web服务扩展中的ASP.NET
  • 升级.NET Framework至4.0以上版本
  • 使用WAF过滤包含波浪号(~)的请求

五、参考资源

  1. Soroush Dalili研究报告
  2. Acunetix研究结果

总结

IIS短文件漏洞是一个长期存在的中危漏洞,虽然微软未提供官方补丁,但通过禁用8.3文件名格式等系统配置可有效防御。安全团队应特别注意使用OPTIONS/TRACE方法的高版本IIS系统,并定期检查服务器配置。

IIS短文件漏洞深入解析与防御指南 一、IIS基础概述 Internet Information Services (IIS) 是微软提供的可扩展Web服务器,支持HTTP、HTTPS、FTP等多种协议。IIS随Windows NT系列操作系统一起发布,目前全球市场份额约为10.19%,是全球第三大Web服务器。 各Windows版本默认IIS版本对应关系 | Windows版本 | 默认IIS版本 | |------------|------------| | Windows NT 3.51 | IIS 1.0 | | Windows NT 4.0 SP2 | IIS 3.0 | | Windows NT 4.0选项包 | IIS 4.0 | | Windows 2000 | IIS 5.0 | | Windows XP Pro/Media Center | IIS 5.1 | | Windows Server 2003/XP Pro x64 | IIS 6.0 | | Windows Server 2008/Vista | IIS 7.0 | | Windows 7/Server 2008 R2 | IIS 7.5 | | Windows 8/Server 2012 | IIS 8.0 | | Windows 8.1/Server 2012 R2 | IIS 8.5 | | Windows 10/Server 2016 | IIS 10.0 | 二、IIS短文件漏洞详解 1. 漏洞背景 发现时间 :2010年8月由Soroush Dalili发现 漏洞本质 :由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(~)引起 漏洞状态 :微软认为未达安全更新标准,至今未完全修复 2. 影响范围 受影响版本 : IIS 1.0 - IIS 7.5(使用GET方法,需安装ASP.NET) IIS 8.0、IIS 8.5和IIS 10.0(使用OPTIONS和TRACE方法,无需ASP.NET) 不受影响情况 :使用.Net Framework 4时不受影响 3. 漏洞原理 Windows支持以8.3格式生成与MS-DOS兼容的短文件名: 格式: xxxxxx~xxxx (前6位字符直接显示,后续用~1指代) 特征: 只有前6位字符直接显示,后续用~1指代(数字可递增) 后缀名最长3位,多余被截断 所有字母转为大写 以文件名最后一个"."作为短文件名后缀 文件名前缀长度≥9位才会生成短文件名(含空格或特殊字符时例外) 4. 漏洞危害 主要危害:信息泄露 通过暴力破解短文件名访问敏感文件 示例: backup_20180101.sql → backup~1.sql 副危害:拒绝服务 通过发送非法.Net文件请求导致递归搜索,消耗资源 5. 漏洞利用方法 探测技术 低版本IIS :使用GET方法,根据404/400状态码判断 高版本IIS :使用OPTIONS/TRACE方法,根据404/200或501状态码判断 利用方式 暴力破解 :对短文件名进行暴力破解 结合爬虫/Fuzz :建立字典库猜测完整文件名 绕过认证 :特定配置下可绕过Basic/Windows认证 结合其他软件 :如Apache/WordPress在Windows下运行时可直接访问短文件 6. 漏洞局限性 只能确定前6个字符 文件名太短无法猜解 文件名前6位带空格时匹配不准确 文件夹名前6位带"."时会出现误报 不支持中文文件名(超过4个中文字会产生短文件名但无法猜测) 三、漏洞复现与验证 环境搭建 Windows系统安装IIS(推荐Win10+IIS10) 创建长度≥9的文件名(如 IIS10test.html ) 使用短文件扫描工具(Java/Python实现) 验证过程 使用 dir /x 命令查看短文件名 使用OPTIONS/TRACE方法探测 分析HTTP响应状态码: 存在:404 不存在:400(GET)或200/501(OPTIONS/TRACE) 四、防御方案 1. 禁用NTFS 8.3文件格式 Windows Server 2008 R2 : Windows Server 2003 : 2. 修改注册表 打开注册表: regedit 导航至: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 修改 NtfsDisable8dot3NameCreation 值为 1 注意 :需重启生效,且对已存在的短文件名无效 3. 其他缓解措施 关闭Web服务扩展中的ASP.NET 升级.NET Framework至4.0以上版本 使用WAF过滤包含波浪号(~)的请求 五、参考资源 Soroush Dalili研究报告 Acunetix研究结果 总结 IIS短文件漏洞是一个长期存在的中危漏洞,虽然微软未提供官方补丁,但通过禁用8.3文件名格式等系统配置可有效防御。安全团队应特别注意使用OPTIONS/TRACE方法的高版本IIS系统,并定期检查服务器配置。