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指代) - 特征:
- 只有前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认证
/AuthNeeded::$Index_Allocation/*~1*/.aspx /AuthNeeded:$I30:$Index_Allocation/*~1*/.aspx - 结合其他软件:如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:
fsutil 8 dot3name query # 查询状态 fsutil 8dot3name set 1 # 关闭 - Windows Server 2003:
fsutil behavior set disable8dot3 1
2. 修改注册表
- 打开注册表:
regedit - 导航至:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem - 修改
NtfsDisable8dot3NameCreation值为1 - 注意:需重启生效,且对已存在的短文件名无效
3. 其他缓解措施
- 关闭Web服务扩展中的ASP.NET
- 升级.NET Framework至4.0以上版本
- 使用WAF过滤包含波浪号(~)的请求
五、参考资源
总结
IIS短文件漏洞是一个长期存在的中危漏洞,虽然微软未提供官方补丁,但通过禁用8.3文件名格式等系统配置可有效防御。安全团队应特别注意使用OPTIONS/TRACE方法的高版本IIS系统,并定期检查服务器配置。