短文件名攻击

 Stardustsky   2014-11-28 10:21   3158 人阅读  0 条评论

这是个比较老的漏洞了,现在很难再看到它的身影,不过在一些CTF中还是可以见到,再加上网上相关的资料也很少,所以在这里做一个算是小的介绍吧。

一、产生原因

Windows中带有短文件名的规则,可以在cmd中用dir /x查看,这种短文件名通常是以截取长文件名前六个字符~1.XXX这样的形式构成,比如我的c盘windows下面

1.jpg

可以看到其命名规则,如果是复制类的文件则会以~2~3这样的形式存在。那为什么有的文件又没有短文件名呢?那是因为windows中只会为名字>8个字符的文件创建短文件名,不过这样说似乎不太准确,因为少于8个字符的文件名中如果含有空格也是会被创建短文件名的哦。

二、漏洞利用

在早版本的服务器中,是可以通过短文件名来直接读取相应的文件的,不过这个在IIS和Apache中不一样,IIS中只能通过字符+通配符这样的方式来猜解文件名,就算猜解出来也是无法查看其内容的,只能用于确定该文件是否真实的存在,而在Apache中则是可以直接读取文件内容,所以相对而言危害更大。

下面详细说明一下,针对短文件名攻击大致有两种方式:文件名的读取和拒绝服务攻击

1.文件名读取

因为短文件名是取长文件名前六位+~1+后缀,所以可以通过遍历+通配符的方式对文件名进行暴力猜解。以一个实际的案例来看:http://www.wooyun.org/bugs/wooyun-2010-09202

这是乌云里面发的一个完美时空的短文件名漏洞,看了之后想必就能大概明白了。这是在IIS服务器上该漏洞的利用形式,通过服务器返回的错误状态不同而进行文件是否存在的判断。

如果文件不存在,返回的错误是:

如果文件存在,则返回:

3.jpg

通过这样的方式,洞主遍历字母和数字,从而猜解出该目录下字符>8的所有文件的短文件名,可用来攻击一些藏有数据库文件的目录,在一些CTF中也会藏一些flag让你利用这个漏洞去找,下面附上不同的IIS版本对于这种请求的不同反应结果和猜解方式。



 

2.拒绝服务攻击

另外,当访问的文件名中包含~1这样的请求时,如果不存在此文件,就会导致服务器递归遍历所有的根目录,从而消耗大量的系统资源,使得DDOS攻击形成,当然,现在版本的服务器中是不会存在这样狗血的漏洞了,这个漏洞主要存在于早期的.NET Framework中。

三、详情及修复

关于这个漏洞更加详细的分析可以看:

http://www.exploit-db.com/wp-content/themes/exploit/docs/19527.pdf

修复方式可以参考(即将注册表 HKLM\SYSTEM\CurrentControlSet\Control\FileSystem下的REG_DWORD的键值设为1):

http://technet.microsoft.com/en-us/library/cc959352.aspx

通过禁止NTFS创建短文件名来防止此类漏洞的产生 。

 


本文地址:http://www.stardustsky.net/index.php/post/12.html
版权声明:本文为原创文章,版权归 Stardustsky 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?