• IIS短文件名漏洞复现


    一、漏洞描述

    此漏洞实际是由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的。它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问)。攻击者可以找到通常无法从外部直接访问的重要文件,并获取有关应用程序基础结构的信息。

    二、漏洞原理

    IIS的短文件名机制,可以暴力猜解短文件名,访问构造的某个存在的短文件名,会返回404,访问构造的某个不存在的短文件名,返回400。

    漏洞成因:

    为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3短文件名。

    在Windows下查看对应的短文件名,可以使用命令dir  /x

      

    短文件名特征:

    1.只显示前6位的字符,后续字符用~1代替。其中数字1是可以递增。如果存在文件名类似的文件,则前面的6个字符是相同的,后面的数字进行递增

      

    2.后缀名最长只有3位,超过3位的会生成短文件名,且后缀多余的部分会截断。

      

    3.所有小写字母均转换成大写的字母

    4.长文件名中包含多个”.”的时候,以文件最后一个”.”作为短文件名的后缀

      

    5.长文件名前缀/文件夹名字符长度符合0-9和A-Z、a-z范围且需要大于等于9位才会生成短文件名,如果包含空格或者其他部分特殊字符,不论长度均会生成短文件。

      

    三、漏洞环境搭建及漏洞复现

    1、 测试环境为windows server 2003 r2,开启webdav服务和net服务。

      

    2、使用payload验证目标是否存在IIS短文件名漏洞,下图显示的404,说明目标存在该短文件名

    Payload: http://192.168.10.130 /*~1*/a.aspx

    http://192.168.10.130/ttt*~1*/a.aspx

    注:*可以匹配n个字符,n可以为0 

      

    3、浏览器访问一个不存在的短文件名,返回”Bad Request(400)”,说明目标不存在该短文件名

      

    4、通过浏览器访问上面两个payload,根据返回的结果,可以说明目标存在IIS短文件漏洞

    5、判断漏洞存在后,接下来手工详细分析猜解IIS短文件名原理

    5.1、在网站根目录(C:Inetpubwwwroot)下创建一个abcdef123456.txt文件

    5.2、浏览器分别访问http://192.168.10.130/a*~1*/a.aspx, http://192.168.10.130/b*~1*/a.aspx

      

      

    5.3、通过以上两个图片,可以看出存在一个以a开头的短文件名

    5.4、按照上面的方法依次猜解可以得到http://192.168.10.130/abcdef*~1*/a.aspx,到此,已经猜解出来短文件名,到了这一步,需要考虑两种情况,以abcdef开头的是一个文件夹还是一个文件。

    如果以abcdef开头的是一个文件夹,那么浏览器访问http://192.168.10.130/abcdef*~1/a.aspx,将返回404,如果abcdef开头的是一个文件,需要猜解后缀名

    5.5、浏览器访问http://192.168.10.130/abcdef*~1/a.aspx,根据下图返回结果说明以abcdef开头的不是一个文件夹,而是一个文件

      

    5.6、浏览器访问http://192.168.10.130/abcdef*~1.a*/a.aspx,根据下图返回说明该短文件后缀的第一位不是a 

      

    5.7、用a-z的26个字母依次替换上述a的位置,当替换成t时,返回404页面,说明该短文件的第一位后缀是t

      

    5.8、按照上面的方法依次猜解得到该短文件名的后缀是txt

    5.9、到此为止,已经猜解出该短文件名为abcdef~1.txt

    6、根据已经猜解出来的短文件名abcdef~1.txt,继续猜解出该短文件名的完全文件名为abcdef123456.txt

    7、使用IIS短文件名扫描软件,获取目标存在哪些短文件名

      

    四、漏洞防御

    1、升级.net framework

    2、修改注册表键值:

    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem

    修改NtfsDisable8dot3NameCreation为1。修改完成后,需要重启系统生效。

    注:此方法只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除,需要重新复制才会消失。如果不重新复制,已经存在的短文件名则是不会消失的

    2.1重启系统之后,在网站根目录(C:Inetpubwwwroot)下创建hhhhhhhhhhhhhhhhhhhh.txt,然后查看是否会生成短文件名。下图可以看到,没有生成短文件名,说明防御生效。

      

    2.2、将wwwroot目录下文件复制到另一个back文件下,然后删除原wwwroot目录下所有内容,再把back下的内容重新复制到wwwroot目录下,这时重新查看,则不存在短文件名了

      

    五、总结

    该漏洞的意义:

    1、 猜解后台地址

    2、 猜解敏感文件,例如备份的rar、zip、.bak、.sql文件等。

    3、 在某些情形下,甚至可以通过短文件名web直接下载对应的文件。

    该漏洞的局限性:

    1、 只能猜解前六位,以及扩展名的前三位。

    2、 名称较短的文件是没有相应的短文件名的。

    3、 不支持中文文件名

    4、 如果文件名前6位带空格,8.3格式的短文件名会补进,和真实文件名不匹配

    5、 需要IIS和.net两个条件都满足。

     

    文章来源 :https://www.cnblogs.com/yuzly/p/11221685.html

  • 相关阅读:
    转载Python中__getattr__ __getattribute__ __get__解释
    python异常介绍
    Javascript创建对象的几种方式
    python类高级话题
    python运算符重载2
    python运算符重载
    python面向对象编程基础
    PHP学习之提示标签
    Web自动化测试构建学习小结(二)
    Web自动化测试构建学习小结(一)
  • 原文地址:https://www.cnblogs.com/xzlive/p/15161898.html
Copyright © 2020-2023  润新知