IIS短文件名漏洞原理与挖掘思路
首先来几个网址先了解一下
https://www.jb51.net/article/166405.htm
https://www.freebuf.com/articles/web/172561.html
总结:
一、漏洞描述:
此漏洞实际是由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的。它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问)。攻击者可以找到通常无法从外部直接访问的重要文件,并获取有关应用程序基础结构的信息。
二、漏洞原理
==》IIS短文件名漏洞原理:
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服务。
四、防御
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两个条件都满足。
好的,上面全是复制粘贴,大概了解一下了吧
下面开始实战:
首先github有开源工具 https://github.com/lijiejie/IIS_shortname_Scanner,可以直接下载,需要python2环境【因为p2和p3语法有比较大的差距,使用py3需要修改源码语法,没有必要】。
①环境搭建:
这里选取window2003的IIS6来复现IIS短文件名漏洞,攻击机使用kali,不用win7是因为装了python3,懒得重新安装python2环境了。开时Web服务器的三个配置,访问cms网站成功,开时操作。

在网站的根目录 c:\inetpub\wwroot下使用 dir /x命令,可见确实有短文件名存在。
②攻击靶机
kali ip为192.168.3.110,windows2003是192.168.3.48,kali ping 2003服务器成功,证明两者连通性,在github下载的工具目录下执行:python2 iis_shortname_Scan.py 192.168.3.48,报错,137行 if not s.isvul():

查看下载的配置文件 iis_shortname_Scan.py,使用编辑器打开,vi iis_shortname_Scan.py,查看137行的if not s.isvul(),根据参数target可以看到应该是传参错误,上面有个参考,前面+http://

重新再来,python2 iis_shortname_Scan.py http://192.168.3.48

可以看见上面,py脚本成功执行,也猜解正确了短文件名。
③ 实战环境,开启代理
1.拿到一个XX市XX单位站点,必须为为IIS+asp服务器,网站XXX
使用Payload开撸:python2 iis_shortname_Scan.py http://目标网站

失败!哪有一帆风顺的事情,看到刚才源代码,这是139行的print,Server is not vulunerable 证明无此漏洞,继续。
2.再战,paylaod: python2 iis_shortname_Scan.py 目标站点

确实有上面短文件名,证明该网站IIS短文件名漏洞真实存在。
修复建议:参考最前面的文档说明。
特别声明:
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,我不为此承担任何责任。
作者有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者的允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。 切勿用于非法,仅供学习参考
IIS短文件名漏洞原理与挖掘思路的更多相关文章
- IIS短文件名漏洞复现
IIS短文件名漏洞复现 一.漏洞描述 此漏洞实际是由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的.它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问). ...
- 利用URLScan工具过滤URL中的特殊字符(仅针对IIS6)-- 解决IIS短文件名漏洞
IIS短文件名漏洞在windows服务器上面非常常见,也就是利用“~”字符猜解暴露短文件/文件夹名,比如,采用这种方式构造URL:http://aaa.com/abc~1/.aspx,根据IIS返回的 ...
- IIS6利用URLScan修复IIS短文件名漏洞
一.下载URLScan 3.1 链接: http://pan.baidu.com/s/1i4HfKrj 密码: dmud 二.安装URLScan 3.1 安装完成以后,我们可以在System32/In ...
- IIS短文件名漏洞修补方法之一改注册表一个注意项
1)1.png 为漏洞存在没有做任何修复的时候的扫描 修复:2) 修改注册表键值: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSy ...
- IIS短文件名泄露漏洞危害及防范方法
危害级别:轻微 IIS短文件名泄露漏洞 WASC Threat Classification 描述: Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件 ...
- IIS系统短文件名漏洞猜解过程
今天看教程的时候,老师关于后台管理说到了短文件名漏洞,我就随便找了个网站猜解,可能是运气太好了,有了这次实践的过程,因为这个漏洞是13年的时候比较火,现在差不多都修复了,抓到一条漏网之鱼, 短文件名漏 ...
- IIS短文件名泄露漏洞危害及防范方法(转)
攻击方法(转自http://blog.sina.com.cn/s/blog_64a3795a01017xqt.html) 一直在寻找一种方法,如果我可以使用通配符"*" 和 &qu ...
- IIS6.0文件解析漏洞和短文件名漏洞复现
一.IIS6.0文件解析漏洞 1.ASP一句话木马的准备 新建木马文件“muma.txt”,将“我asp是一句话木马:<%eval request("asp")%>”写 ...
- 【中间件】IIS短文件名枚举漏洞
1.1.1 漏洞描述 为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名. 在Windows下查看对应的短文件名,可以使用命令 ...
随机推荐
- 精尽Spring Boot源码分析 - 文章导读
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...
- 头条面试题:判断一个数是否是happy number(每一位的平方和最终为1)
朋友面试头条二轮了,一轮的题目请看这一篇:头条面试题:求用户在线峰值和持续时间 这次的面试题目是:判断一个数是否是happy number(每一位的平方和最终为1) 知道题目首先要理解题目.所谓hap ...
- 4、基本数据类型(init、bool)
4.1.数字: 1.age = 21 weight = 64 fight = 5 2.数字的特点: (1)数字是不可变数据类型(不可以增加,删除,修改元素) (2)数字可以直接访问 (3)数字不可使用 ...
- solidity基础知识
1.solidity是一种语法类似JavaScript的高级语言,它被设计成以编译的方式生成以太坊虚拟机代码.在后续的内容中你将会发现,使用它很容易创建用于投票.众筹.封闭拍卖.多重签名钱包等等的合约 ...
- python导入模块--案例
1 导入模块 1.1 问题 本案例要求先编写一个star模块,主要要求如下: 建立工作目录 ~/bin/ 创建模块文件 ~/bin/star.py 模块中创建pstar函数,实现打印50个星号的功能 ...
- 面试题五:Spring
Spring IoC 什么是IoC? 容器创建Bean对象,将他们装配在一起,配置并且管理它们的完整生命周期. Spring容器使用依赖注入来管理组成应用程序的Bean对象: 容器通过提供的配置元数据 ...
- 其他:IDEA插件无法安装——网络代理设置
1.网络代理设置 IDEA配置代理,是在File-> Setting-> plugins中设置 查看自己主机的IP地址 文章转载至:https://www.jianshu.com/p/62 ...
- SpringMVC(5)数据绑定-2
在SpringMVC(4)数据绑定-1中我们介绍了如何用@RequestParam来绑定数据,下面我们来看一下其它几个数据绑定注解的使用方法. 1.@PathVariable 用来绑定URL模板变量值 ...
- TestComplete 最新安装教程
在安装TestComplete之前阅读许可协议.通过安装TestComplete,您确认您同意许可的条款和条件. 查看"安装注意事项"部分,确保您的计算机满足硬件和软件要求. 安装 ...
- 第二章 python基本语法元素
python有两种编程方式,交互式和文件式. 交互式:对每个输入语句即时运行结果------适合语法练习 文件式:批量执行一组语句并运行结果------编程的主要方式 实例1:圆面积的计算(根据半径r ...