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:\Inetpub\wwwroot)下创建一个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_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

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

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

2.1重启系统之后,在网站根目录(C:\Inetpub\wwwroot)下创建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两个条件都满足。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

(0)

相关推荐

  • NET IIS暴绝对路径漏洞

    Title:Microsoft ASP.NET May Disclose Web Directory to Remote Users in Certain Cases Description: If the ASP.NET application does not filter the error message, the web  directory information may be disclosed to remote users by using an unavailable fil

  • IIS漏洞整理大全

    去年下半年关于IIS的漏洞层出不穷,鉴于目前IIS的广泛使用,觉得有必要把收集的资料加以总结一下. 1.介绍 这里介绍的方法主要通过端口80来完成操作,具有很大的威胁性,因为作为网络服务器80端口总要打开的.如果想方便一些,下载一些WWW.CGI扫描器来辅助检查. 而且要知道目标机器运行的是何种服务程序,你可以使用以下命令: telnet <目标机> 80 GET HEAD / HTTP/1.0 就可以返回一些域名和WEB服务程序版本,如果有些服务器把WEB服务运行在8080,81,8000,

  • IIS下ASP目录漏洞和IIS分号漏洞(;)的临时解决方法

    解决方法: 下载 银月服务器工具,使用工具->组件下载器下载ISAPI_Rewrite,解压出来. 把ISAPI_Rewrite中的ISAPI_Rewrite.dll添加为ISAPI,名字为ISAPI_Rewrite,这就是伪静态,做过的不用安装了 下载漏洞补丁包,即下图选择的项目,下载打开! 把ISAPI_Rewrite目录中的httpd.ini替换成补丁包中的httpd.ini. 或者保证ISAPI_Rewrite下面的httpd.ini有下图选择的两行规则也行!这样就能防止这两个IIS漏洞

  • IIS 7.5 解析错误 命令执行漏洞解决方案

    一.漏洞介绍 漏洞影响 IIS7 及IIS7.5 在使FastCGI方式调用php时,在php.ini里设置 cgi.fix_pathinfo=1 使得访问任意文件URL时,在URL后面添加"/x.php"等字符时,该文件被iis当php文件代码解析. 如 http://127.0.0.1/1.gif 的内容如下: 当访问 http://127.0.0.1/1.gif/1.php 可以看到1.gif里的php代码被iis解析执行了. 那么"黑客"在具体攻击网站的时候

  • IIS短文件名漏洞复现图文详解

    一.漏洞描述 此漏洞实际是由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的.它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问).攻击者可以找到通常无法从外部直接访问的重要文件,并获取有关应用程序基础结构的信息. 二.漏洞原理 IIS的短文件名机制,可以暴力猜解短文件名,访问构造的某个存在的短文件名,会返回404,访问构造的某个不存在的短文件名,返回400. 漏洞成因: 为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成

  • Android Mms之:短信发送流程(图文详解)

    信息的发送,对于Mms应用程序来讲主要就是在信息数据库中创建并维护一条信息记录,真正的发送过程交由底层(Frameworks层)函数来处理. 总体的来讲,当信息创建完成后,对于信息通常有三个去处,一个是放弃这个信息,也就是用户不想要此信息,一旦选择,信息将不会被保存:第二个去处就是保存为草稿:最后一个去处就是发送此信息. 当点击了发送后,UI层暂不会有变化,UI层要监听负责发送的各个类的回调信息和数据库的变化信息来更新UI.信息发送的第一站是WorkingMessage,它会先处理一下信息的相关

  • 设置好的iis服务器怎么打开网页(图文详解)

    让自己电脑上的网页在局域网中可以访问到,就需要我们使用IIS服务器,将网页添加到服务器上的网站,那么设置好IIS服务器之后怎样在浏览器中进行访问呢?下面我们小编告诉你! 设置好iis服务器怎么打开网页 首先我们打开IIS服务器,将服务器的下拉菜单打开,然后打开网站的下拉菜单,找到我们新建的网站. 然后我们在新建的网站位置右击鼠标,选择"切换到功能视图"选项. 这样我们就进入到了IIS服务器的功能视图页面中,可以看到左侧是我们网站所在文件夹的内容,右侧是可以使用的功能,我们选择"

  • IIS7.0 Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站的教程图文详解

    配置环境 Windows版本:Windows Server 2008 R2 Enterprise Service Pack 1 系统类型: 64 位操作系统 了解HTTPS 为什么需要 HTTPS ? 在我们浏览网站时,多数网站的URL都是以HTTP开头,HTTP协议我们比较熟悉,信息通过明文传输; 使用HTTP协议有它的优点,它与服务器间传输数据更快速准确; 但是HTTP明显是不安全的,我们也可以注意到,当我们在使用邮件或者是在线支付时,都是使用HTTPS; HTTPS传输数据需要使用证书并对

  • Python3+Pycharm+PyQt5环境搭建步骤图文详解

    搭建环境: 操作系统:Win10 64bit Python版本:3.7 Pycharm:社区免费版 一.Python3.7安装 下载链接:官网https://www.python.org/downloads/windows/或腾讯软件中心下载https://pc.qq.com/detail/5/detail_24685.html或其他站点下载.我下载的是python-3.7.0-amd64. 下载到安装包后打开,如果想安装到默认路径(C盘)的话一直点下一步就可以了,或者自定义安装到其他分区,我的

  • vue组件三大核心概念图文详解

    前言 本文主要介绍属性.事件和插槽这三个vue基础概念.使用方法及其容易被忽略的一些重要细节.如果你阅读别人写的组件,也可以从这三个部分展开,它们可以帮助你快速了解一个组件的所有功能. 本文的代码请猛戳 github博客 ,纸上得来终觉浅,大家动手多敲敲代码! 一.属性 1.自定义属性props prop 定义了这个组件有哪些可配置的属性,组件的核心功能也都是它来确定的.写通用组件时,props 最好用对象的写法,这样可以针对每个属性设置类型.默认值或自定义校验属性的值,这点在组件开发中很重要,

  • 微信推送功能实现方式图文详解

    推送的方式: 短信推送(第三方) 邮件推送 微信推送 公众号:认证的公众号(个人的认证公众号每天只能发一篇文章),粉丝可以跟公众号聊天,未认证公众号 服务号:企业认证(营业执照),沙箱环境测试主动给用户发消息(推送),用户要接收到推送消息前提是需要关注对应的服务号才行 企业号 微信小程序 微信推送的流程: 微信沙箱环境:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 使用pycharm打开微信推送demo,然后进行相关修

  • Android Studio 中运行 groovy 程序的方法图文详解

    Groovy简介 Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python.Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码.由于其运行在 JVM 上的特性,Groovy也可以使用其他非Java语言编写的库. Groovy 是 用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言.使用该种语言不必编写过多的代码,同时又具有闭包和动态语

  • Git恢复之前版本的两种方法reset、revert(图文详解)

    一.问题描述 在利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法:回退(reset).反做(revert). 二.背景知识 git的版本管理,及HEAD的理解 使用git的每次提交,Git都会自动把它们串成一条时间线,这条时间线就是一个分支.如果没有新建分支,那么只有一条时间线,即只有一个分支,在Git里,这个分支叫主分支,即master分支.有一个HEAD指针指向当前分支(只有一个分支的情况下

  • mysql8.0.21安装教程图文详解

    1.下载 下载链接 点击download,这里可能需要登录甲骨文的账号,登录一下即可 2.解压 下载好会得到一个安装包 把它解压到一个能找到的目录下即可,我的是这样(my.ini文件你们应该没有) 3.新建my.ini 如图,新建一个文件,后缀名改成ini.文件名最好不要改 打开文件,将下面的代码粘贴复制进去 [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=D:\\mysql-8.0.21-winx64 # 设置mysql数据库的数据的存

随机推荐