Web安全-IIS短文件名泄露

简介: Web安全-IIS短文件名泄露

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

在Windows下查看对应的短文件名,可以使用命令dir /x。

比如,我在D盘下创建了一个名为aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.html文件:

D:>dir /x
驱动器 D 中的卷是 Data
卷的序列号是 3EDF-2E00

D:\ 的目录

2014/10/11 13:08 256,515,706 2014101.sql
2014/10/13 17:01 0 AAAAAA~1.HTM aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.html
2 个文件 256,515,706 字节
0 个目录 107,017,154,560 可用字节
1
2
3
4
5
6
7
8
9
10
观察命令结果,可以看到,其对应的短文件名 AAAAAA~1.HTM。该短文件名有以下特征:

(1)只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)。
(2)后缀名最长只有3位,多余的被截断。

我们可以在启用.net的IIS下暴力列举短文件名,原因是:

(1)访问构造的某个存在的短文件名,会返回404;
(2)访问构造的某个不存在的短文件名,会返回400。

【这个漏洞的意义何在】:

(1)猜解后台地址
(2)猜解敏感文件,例如备份的rar、zip、.bak、.SQL文件等。
(3)在某些情形下,甚至可以通过短文件名web直接下载对应的文件。比如下载备份SQL文件。

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

漏洞的利用
手工猜解
漏洞的利用,需要使用到通配符。在windows中,可以匹配n个字符,n可以为0。判断某站点是否存在IIS短文件名暴力破解,构造payload,分别访问如下两个URL:

http://www.target.com/*~1****/a.aspx
http://www.target.com/l1j1e*~1****/a.aspx

服务器返回404。

服务器返回400。

这里我使用了4个星号,主要是为了程序自动化猜解,逐个猜解后缀名中的3个字符,实际上,一个星号与4个星号没有任何区别(上面已经提到,*号可以匹配空)。

如果访问第一个URL,返回404。而访问第二个URL,返回400。 则目标站点存在漏洞。

判断漏洞存在后,继续猜解目录下是否存在一个a开头的文件或文件夹,访问: http://www.target.com/a*~1****/a.aspx 如果存在,将返回404。

如此反复,不断向下猜解完所有的6个字符。猜解完之后,得到的序列应该类似:http://www.target.com/abcdef*~1****/a.aspx

到了这一步,需要考虑两种情况,如果以abcdef开头的是一个文件夹,则 http://www.target.com/abcdef*~1/a.aspx 将返回404。

如果abcdef开头的是一个文件,则自动提交:http://www.target.com/abcdef*~1*g**/a.aspx 用a-z的26个字母替换上述g的位置,应该能得到多个404页面。(记住一点,404代表的是存在。)如果下面的地址返回404,http://www.target.com/abcde*~1*g**/a.aspx 则代表扩展名中肯定存在g。

按照上面的思路,继续猜解g后面的字符,直到后缀名中的3个字符都猜解完,就可以了。

工具验证

使用IIS短文件名泄漏利用工具对漏洞进行利用:

漏洞修复以后:

漏洞的局限
这个漏洞的局限有几点:
1、此漏洞只能确定前6个字符,如果后面的字符太长、包含特殊字符,很难猜解;
2、如果文件名本身太短(无短文件名)也是无法猜解的;
3、需要IIS和.net两个条件都满足;
4、不支持中文文件名,包括中文文件和中文文件夹。一个中文相当于两个英文字符,故超过4个中文字会产生短文件名,但是IIS不支持中文猜测。

漏洞的修复
CMD关闭NTFS 8.3文件格式的支持
举例:(1代表关闭,0代表开启)

Windows Server 2008 R2:

查询是否开启短文件名功能:fsutil 8dot3name query
关闭该功能:fsutil 8dot3name set 1
1
2
Windows Server 2003:

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

修改注册表禁用短文件名功能
快捷键Win+R打开命令窗口,输入regedit打开注册表窗口

找到路径:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,将其中的 NtfsDisable8dot3NameCreation这一项的值设为 1,1代表不创建短文件名格式

修改完成后,需要重启系统生效

注:此方法只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除,需要重新复制才会消失。

以下两种方法仅适用于缓解GET 方法,其他方法依旧可以猜解。

关闭Web服务扩展- ASP.NET

升级netFramework至4.0以上版本

漏洞的复现
1、漏洞环境搭建

基于Win 10安装默认IIS 10.0 (未安装APS.NET)
IIS短文件漏洞扫描Java程序(需要配置Java环境变量)
1
2
2、漏洞环境调试准备

IIS 安装成功以后,会默认在C盘目录下生成intpub目录,网站的根目录位于C:\inetpub\wwwroot,此时查看下根目录是否存在短文件名:

由上图可知,默认IIS 10.0 网站根目录不存在短文件名,只有默认的htm和png文件,且名称长度未达到生成短文件的要求。下面使用IIS短文件扫描程序检测下有无短文件信息泄漏漏洞:

3、漏洞环境复现

手动创建网站长文件名“IIS10test.html” ,自动生成对应短文件名“IIS10T~1.HTM”:

使用IIS短文件扫描程序再次扫描,扫描发现存在短文件漏洞,且通过HTTP OPTIONS方法成功猜解出短文件名称:IIS10T.HTM

修改漏洞扫描程序,注视掉OPTIONS方法,尝试是否还有其他HTTP方法可以猜解成功。

验证发现,除了OPTIONS方法外,HTTP TRACE方法也能成功猜解出短文件名称
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_39190897/article/details/88031228

目录
相关文章
|
1月前
|
开发框架 .NET API
在IIS上部署ASP.NET Core Web API和Blazor Wasm详细教程
在IIS上部署ASP.NET Core Web API和Blazor Wasm详细教程
116 3
|
1月前
|
开发工具 开发者 Windows
Windows10 IIS Web服务器安装配置
Windows10 IIS Web服务器安装配置
|
24天前
【Azure 云服务】Azure Cloud Service 为 Web Role(IIS Host)增加自定义字段 (把HTTP Request Header中的User-Agent字段增加到IIS输出日志中)
【Azure 云服务】Azure Cloud Service 为 Web Role(IIS Host)增加自定义字段 (把HTTP Request Header中的User-Agent字段增加到IIS输出日志中)
|
3月前
|
Windows
win10家庭版安装iis 微软web服务器 windows安装IIS web服务器
win10家庭版安装iis 微软web服务器 windows安装IIS web服务器
46 0
|
11月前
|
安全 关系型数据库 MySQL
【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网穿透」
【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网穿透」
|
4月前
web后端-IIS-web发布
web后端-IIS-web发布
|
4月前
Visual Studio 2022无法连接到Web服务器IIS Express
Visual Studio 2022无法连接到Web服务器IIS Express
106 2
|
4月前
|
关系型数据库 MySQL 应用服务中间件
【IIS搭建网站】在本地电脑上搭建web服务器并实现外网访问
在网上各种教程和介绍中,搭建网页都会借助各种软件的帮助,比如网页运行的Apache和Nginx、数据库软件MySQL和MSSQL之类,为方便用户使用,还出现了XAMPP、PHPStudy、宝塔面板等等一系列集成服务,都是为了方便我们能快速建立网站。是不是不适用这些软件就无法建立网站了呢?答案当然是否定的,在Windows系统中实际上集成了建立网站所必须的软件环境。今天就让我们来看看,如何使用Windows自带的网站程序建立网站吧。
|
11月前
|
C# Windows
C#建立最简单的web服务,无需IIS
C#建立最简单的web服务,无需IIS
Visual Studio提示“无法启动IIS Express Web服务器”的解决方法
Visual Studio提示“无法启动IIS Express Web服务器”的解决方法
Visual Studio提示“无法启动IIS Express Web服务器”的解决方法