标签归档:安全

关于短文件名

8.3

8.3是一种限制对文件名称的长度的方法,这在DOS和Microsoft Windows的Windows 95及Windows NT 3.5以的前版本中,在FAT文件系统中的常用方法。在以前的CP/M及某些的通用数据和迪吉多微型电脑操作系统中使用。
8.3文件名称最多只可以含有8个字符,跟着最多3个字符的扩展名,利用‘.’号将两者连接起来。文件及目录名称是全部使用大写字母的。

对于8.3与长档名的兼容性

VFAT,是对于FAT系统中的加强版,在Windows 95和Windows NT 3.5加入。VFAT文件系统可允许比传统的8.3档名,支持更长、而且能大小写混合的长档名(LFN)。
要维持对以前的应用程序(例如DOS和Windows 3.1)中的向下兼容性,每一个长档名便会自动产生一个相应的8.3文件名称,可容许文件可以继续更名、删除或打开。
由于这对于一个长档名没有一个必然的算法创建一个8.3档名,Windows会使用以下的常规以决定一个8.3文件名称是如何产生:
如果长档名是8.3大写字母,在磁盘上不会存储任何长档名。
例如:”TEXTFILE.TXT”
如果长档名是8.3大小写混合字母,那么长档名会存储大小写混合字母的档名,在8.3的名称会存储它的大写字母版本。
例如:”TextFile.Txt”会转换成”TEXTFILE.TXT”。
长档名只会保留基本名称的首6位半角字符,以一个~号连接着,再以一个数字作结尾以作识别,最后以扩展名的首3位字符作退出。从这个结果中再对无法使用的字符再作删除,像(+)号会转换成(_)号,另外这也会转成全大写字母。
例如:”TextFile1.Mine.txt”会转换成”TEXTFI~1.TXT”;”附属应用程序”会转换成”附属应~1″(或如果”TEXTFI~1.TXT”已经存在的情况下,会存储作”TEXTFI~2.TXT”)。”ver +1.2.text”会转换成”VER_12~1.TEX”。
从Windows 2000开始,如果最少4个文件或文件夹的短档名的首6个字符是相同的话,该长档名会另行将档名转作基本名称的首2位字符(或如果基本名称只有1个字符的话,便全取文件名称1个字符),再以4位十六进制的文件名称的切细值连接上,接着~号,再接着一位的数字及.号,最后以首3位的扩展名作为结尾。结果,相比之中,这档名是已经分拆及改用全大写字母。
例如:”TextFile.Mine.txt”会转换成”TE021F~1.TXT”。
在Windows NT family中的NTFS文件系统本身已经对长档名作出支持,但8.3的名称仍然会保留,供旧有的应用程序使用。这可以选择性地关上这个功能以增加性能。

以上来源于维基百科

为了支持兼容性,NTFS文件系统也提供了一个可选的特性:8.3兼容性格式。Windows中这个特性默认是on,也就是说每当建立一个长文件名的对象的同时,系统的NTFS驱动模块会自动创建一个合适的8.3格式短名称指向这个对象。需要指出的是,这个特性并不像FAT文件系统中那样是强制执行的,因此不同的磁盘实用程序或者操作系统可能有不同的执行方式。

PS:关于短文件名漏洞:

攻击者通过iis返回的错误信息推断文件名,如果统一处理错误返回信息,将对攻击起到很好的防御作用。

IIS短文件名泄露漏洞

IIS短文件名泄露漏洞,Windows short filenames “漏洞”、利用 Windows 短文件名猜文件。

描述:
危害:
攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。
解决方案:
三种修复方案只有第二和第三种能彻底修复该问题,可以联系空间提供商协助修改.方案1.修改注册列表HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation的值为1,或者,可以直接点此下载,然后运行,再重启下机器。(此修改只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除)。该修改不能完全修复,只是禁止创建推荐使用后面的修复建议
方案2.如果你的web环境不需要asp.net的支持你可以进入Internet 信息服务(IIS)管理器 — Web 服务扩展 – ASP.NET 选择禁止此功能。(推荐)方案3.升级net framework 至4.0以上版本.(推荐)

稍后附上个人处理方案:
当前问题站点服务器已经是4.0.30319,但是问题依然暴露;当前站点采用asp.net所以方案二不可行,方案一则直接不考虑。针对在推测文件名过程中使用~可以针对“~”进行请求过滤,或者自定义错误返回页面,