windows文件命名特性利用漏洞

windows文件命名特性利用

0x00

windows不能以以下这些名字命名文件或文件夹: aux、com1、com2、prn、con、nul,因为这些名称都属于设备名称,等价于DOS设备,但我们可以通过cmd来创建这样的文件
>md com2\
>md \\.\d:\com1\\
>copy test.txt \\.\d:\com1.txt
#注意文件夹名例如aux.txt也是不行的,如果通过cmd命令创建了这样的文件夹,它同样具备dos设备属性,另外

正常在GUI界面是不能删除上面创建的文件,可以通过如下的命令删除
rmdir /s \\.\d:\com1.txt /s表示删除目录树,即包括子文件夹和文件
del \\.\D:\aux.txt
rmdir .\aux\#这个我是直接在aux文件夹的父目录上操作的命令
rmdir F:\com1\#可以加\\.?也可以不加,两者区别我不清楚在哪,这个被称为UNC?路径格式,就是网上邻居的路径格式,比如d:/temp的UNC?路径为//./d:/temp

0x01

接下来这个说是windows命名漏洞,但没找到详细的说明
简单来说就是文件夹名字后面有个.
直接通过GUI操作是不能建立这样的文件夹的,windows会默认去掉后面的.
可以通过如下方式创建
>md test..\ #这里是两个. 显示上也会是直接的test..,我并不明白这是怎么回事,可能是win10改了特性吧,而且它并不会不能打开

根据测试,创建的test..这个文件夹不可直接删除,如果将别的文件移入此文件夹中,系统将会自动生成test文件夹(空),并且test..文件夹里的东西不可见了,这时若删除test文件夹,tset..文件夹中内容便可见了,没有删除时,test文件夹里有什么,test..文件夹里同样会显示,但打不开,会提示不存在。
还一个有趣的发现是test文件夹的属性中占用空间大小是多少test..文件夹的也会是多少
同时如果手动创建一个test文件夹,效用和上面是一样的,这样的话如果本身就存在一个文件夹,而我们创建一个同样名字加..的文件夹,那么也会实现上面的特性
不过其也可以通过cmd删除:删除命令>rmdir /s test..\

0x02

名字为空的文件夹
>md "\test\ \"#注意?\之间有一个空格,这个命令会在当前目录的根目录下创建一个test文件夹,并且里面含有一个空白文件夹,这个test文件夹也是不可直接删除
删除命令rd "D:\test\ \"#这会删除test目录下的空白文件夹,如果空白文件夹里已经有了文件需要加/s参数,另外test文件夹里的其它所有内容也会在空白文件夹中显示。

0x03

更改文件名,在文件名后加上.{CLSID},可是我在我的win10上面试了并没有用,可能也更新修复了吧

0x04

对于. 或者空格 结尾的文件,windows会自动去除.和空格,两者相互结合也是一样

test.txt....  ->    test.txt
test.txt      ->    test.txt    #这里前面的后缀后面有一个空格
test.txt..    ->    test.txt

本来应该还有其它的特殊命名,但windows命名规则改了不允许出现:符号,所以其它的也就没有用了,这些可以用来躲避上传黑名单限制

我自己测试时和网上很多其它文章描述并不一样,windows改了挺多特性,具体详细情况需要各位自己亲自试验,利用得当的话 这些对于用来上传webshell是挺好的

windows文件命名特性利用漏洞

上一篇:Android-SQLiteOpenHelper里增删改查


下一篇:干货 | 调用AI api 实现网页文字朗读