短文件名

概念

使用dir /x 查看短文件名(win10下无效)

C:\Users\Lee\Desktop>dir /x
 驱动器 C 中的卷是 System
 卷的序列号是 9818-3CEF

 C:\Users\Lee\Desktop 的目录

2017/09/13  21:39    <DIR>                       .
2017/09/13  21:39    <DIR>                       ..
2017/09/13  21:39    <DIR>          AAAAAA~1     aaaaaaaaaaaaaaaaaaaaa
2017/08/19  20:51               925              babun.lnk
2017/09/13  21:39                 0 BBBBBB~1.TXT bbbbbbbbbbbbbbbbb.txt
2017/09/13  21:39                 0 CCCCCC~1     cccccccccc

               8 个文件          8,631 字节
               3 个目录 11,114,876,928 可用字节

命名规则

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

文件上传 如果上传的文件前几位的命名有规律而后几位随机,可以使用短文件名访问 title title

读取备份文件 备份文件一般是以日期+随机数命名 title

IIS短文件名漏洞 可以根据http的响应进行暴力猜解 title 如IIS6中如果短文件名对应的文件存在则返回404,不存在则返回400

http://www.target.com/*~1****/a.aspx
http://www.target.com/l1j1e*~1****/a.aspx
title title 如图,如果访问第一个地址404而第二个400则存在短文件名漏洞 ~1前面的*表示任意个字符 通过不断调整*前面的字母进行猜解,直到猜解出所有~前面的6个字符 如:存在文件abcdeh781h71hdh17h29dh32hd72h 则payload如下
http://www.target.com/*~1****/a.aspx
http://www.target.com/a*~1****/a.aspx
……
http://www.target.com/abcde*~1*g**/a.aspx