【漏洞笔记】IIS短文件名漏洞原理以及修复方法

0x00 概述

漏洞名称:IIS短文件名泄露

风险等级:低

问题类型:信息泄露

0x01 漏洞描述

此漏洞实际是由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(〜)波浪号引起的。

为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名。

Microsoft IIS 波浪号造成的信息泄露是世界网络范围内最常见的中等风险漏洞。这个问题至少从1990年开始就已经存在,但是已经证明难以发现,难以解决或容易被完全忽略。

受影响的版本:
IIS 1.0,Windows NT 3.51
IIS 3.0,Windows NT 4.0 Service Pack 2
IIS 4.0,Windows NT 4.0选项包
IIS 5.0,Windows 2000
IIS 5.1,Windows XP Professional和Windows XP Media Center Edition
IIS 6.0,Windows Server 2003和Windows XP Professional x64 Edition
IIS 7.0,Windows Server 2008和Windows Vista
IIS 7.5,Windows 7(远程启用或没有web.config)
IIS 7.5,Windows 2008(经典管道模式)
注意:IIS使用.Net Framework 4时不受影响

以上受影响范围主要是针对HTTP GET方法,且需要同时安装ASP.NET应用程序。

但是漏洞发现者Soroush Dalili之后再次在IIS7.5和IIS8.0的版本中发现,当使用OPTIONS来代替GET 方法时,如果请求中的短文件名是存在的,IIS会返回一个不一样的错误信息。

而且在之后的版本中此漏洞也都成功验证。

所以影响的版本又加上了:

IIS 8.0,Windows 8, Windows Server 2012
IIS 8.5,Windows 8.1,Windows Server 2012 R2
IIS 10.0,Windows 10, Windows Server 2016

所以,短文件名漏洞存在于目前IIS的所有版本中。

漏洞的局限性:
1、只能猜解前六位,以及扩展名的前3位。
2、名称较短的文件是没有相应的短文件名的。
3、需要IIS和.net两个条件都满足。

0x02 漏洞危害

主要危害:利用“~”字符猜解暴露短文件/文件夹名

由于短文件名的长度固定(xxxxxx~xxxx),因此黑客可直接对短文件名进行暴力破解 ,从而访问对应的文件。

举个例子,有一个数据库备份文件 backup_www.abc.com_20150101.sql ,它对应的短文件名是 backup~1.sql 。因此黑客只要暴力破解出backup~1.sql即可下载该文件,而无需破解完整的文件名。

**次要危害:.Net Framework的拒绝服务攻击 **

攻击者如果在文件夹名称中发送一个不合法的.Net文件请求,.NeFramework将递归搜索所有的根目录,消耗网站资源进而导致DOS问题。

0x03 修复建议

1、CMD关闭NTFS 8.3文件格式的支持(1代表关闭,0代表开启)

        以管理员身份运行

# Windows server 2008 R2:查询是否开启短文件名功能:fsutil8dot3name query

关闭该功能:fsutil 8dot3name set 1


# Windows Server 2003:

fsutil behavior set disable8dot3 1 

        不同系统关闭命令稍有区别,该功能默认是开启的,对于大多数用户来说无需开启。

2、修改注册表禁用短文件名功能,修改注册表键值:

         window +R键,输入regedit,打开注册表编辑器

        调整到路径HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

        修改NtfsDisable8dot3NameCreation为1。1代表不创建短文件名格式,修改完成后,需要重启系统生效。

3、关闭Web服务扩展- ASP.NET

        如果你的web环境不需要asp.net的支持你可以进入Internet 信息服务(IIS)管理器 --- Web 服务扩展 - ASP.NET 选择禁止此功能。(推荐)

4、升级netFramework至4.0以上版本

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSDN是中国最大的IT技术社区,编译原理是计算机科学中的重要课程之一。关于CSDN上编译原理笔记,我可以从以下几个方面进行回答。 首先,CSDN上编译原理笔记文档丰富多样,涵盖了编译原理的各个方面,包括词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等。这些笔记以通俗易懂的语言编写,让初学者也能够轻松理解编译原理的基本原理和实现方式。同时,笔记中还提供了大量的示例代码和实践案例,帮助读者更好地理解和应用编译原理的知识。 其次,CSDN上编译原理笔记内容全面,既包括理论知识,也包括实践经验。对于理论知识,笔记中详细介绍了编译器的工作原理、各个阶段的算法和数据结构等内容,以及常用的编译器设计模式和优化方法。对于实践经验,笔记中分享了一些常见的编译器实现技巧,如错误处理、符号表管理、代码生成等。这些内容对于编译原理的学习和实践非常有帮助。 最后,CSDN上编译原理笔记具有互动性和实时性。读者可以通过评论、提问等方式与笔记作者进行交流和讨论,解决自己在学习编译原理过程中遇到的问题。同时,笔记作者也会定期更新和修正笔记内容,确保笔记始终保持最新、最正确的信息。 综上所述,CSDN上编译原理笔记提供了丰富多样的内容,既有理论知识,又有实践经验,对于学习和理解编译原理非常有帮助。读者可以通过阅读这些笔记,深入学习编译原理的基本原理和实现方式,并应用到实际项目中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值