7. IIS短文件/文件夹漏洞(汇总整理)
漏洞的成因与分析:
1)利用“~”字符猜解暴露短文件/文件夹名。
2).Net Framework的拒绝服务攻击。
现在看大部分的分析讨论都是第一个的。第二个比较少。这里简单复述一下其他研究人员的分析。
1)利用“~”字符猜解暴露短文件/文件夹名
Windows 还以 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于 MS-DOS 或 16 位 Windows的程序访问这些文件。在cmd下输入“dir /x”即可看到短文件名的效果。
Soroush Dalili的说法是,通配符”*” 和 “?”发送一个请求到iis,当IIS接收到一个文件路径中包含”~”的请求时,它的反应是不同的.基于这个特点,可以根据http的响应区分一个可用或者不可用
aegis_inst.exe对应的短文件名为aegis_~1.exe。根据此特性,我们能够通过访问短文件名间接访问它对应的文件。
由于短文件名的长度固定(xxxxxx~xxxx),因此黑客可直接对短文件名进行暴力破解 ,从而访问对应的文件。
举个例子,有一个数据库备份文件 backup_www.abc.com_20150101.sql ,它对应的短文件名是backup~1.sql 。因此黑客只要暴力破解出backup~1.sql即可下载该文件,
而无需破解完整的文件名。
其实, 也就只能确定前6个字符,如果后面的字符太长、包含特殊字符,那么就很难猜解。另外如果文件本身太短也是无法猜解的。Soroush Dalilide研究是通过对目标网站或同类型网站
爬虫,爬出建立一个字典库,再与得到的短文件名来猜剩下的字符。第二是可以利用fuzzdb(一个应用程序模糊测试(fuzzing)数据库)来猜解。第三个是结合OWASP的 dirbuster(一款路径
及网页暴力破解的工具)。
另外,Soroush Dalilide研究中还提到可以绕过Basic and Windows认证,猜解认证目录下的文件。以下是II5.0绕过认证的方法:详细可见原文研究http://soroush.secproject.com/blog/2010/07/iis5-1-directory-authentication-bypass-by-using-i30index_allocation/
“/AuthNeeded:$i30:$INDEX_ALLOCATION/secretfile.asp”
Instead of:
“/AuthNeeded/secretfile.asp”
但是并不是所有版本的IIS都能够绕过认证。应该是在可绕过的前提下猜解,形式如下:
/AuthNeeded::$Index_Allocation/*~1*/.aspx
或者
/AuthNeeded:$I30:$Index_Allocation/*~1*/.aspx
2).Net Framework的拒绝服务攻击
Soroush Dalilide研究发现,当请求文件夹名称包含~1的请求,会导致不存在该文件的.Net framework去递归所有根目录。特别是第一次请求时,会造成的文件读取特别多。
漏洞利用代码:
http://www.exploit-id.com/dospoc/net-framework-tilde-character-dos
在wooyun网站上也有相关的讨论。
http://zone.wooyun.org/content/487
其中完美世界那个漏洞就是用的这种手法。
http://www.wooyun.org/bugs/wooyun-2010-09202
关于windows文件名背景知识:
Windows 支持的长文件名最多为 255 个字符。Windows 还以 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于 MS-DOS 或 16 位 Windows 的程序访问这些文件。
Windows 按以下方式从长文件名生成短文件名:
Windows 删除文件名中的任何无效字符和空格。无效字符包括:. ” / \ [ ] : ; = ,
由于短文件名只能包含一个英文句点 (.),因此,Windows 将删除文件名中的其他英文句点,即使文件名中最后一个英文句点后面是有效的非空格字符,也是如此。
例如,
Windows 从长文件名 This is a really long filename.123.456.789.txt 生成短文件名: Thisis~1.txt
否则,
Windows 将忽略最后一个英文句点,而使用倒数第二个英文句点。例如,Windows 从长文件名
This is a really long filename.123.456.789. 生成短文件名: Thisis~1.789
生成短文件名如果需要的话,Windows 将文件名截断为 6 个字符,并在后边附加一个波形符 (~) 和一个数字。例如,创建的每个以”~1″结尾的唯一文件名。复制文件名以”~2″、”~3″等结尾。
生成短文件名Windows 将文件扩展名截断为 3 个字符或更短。
生成短文件名Windows 将文件名及扩展名中的所有字符转为大写。
例如:假设 http://www.f4ck.net/iloveyou.txt 这个文件是存在的
暴力猜解:
1.访问 http://www.f4ck.net/*~1*/.aspx
404 存在短文件名~的文件/文件夹
400 不存在短文件名~的文件/文件夹
2.访问 http://www.f4ck.net/a*~1*/.aspx
404 存在a开头的短文件名~的文件/文件夹
400 不存在a开头的短文件名~的文件/文件夹
以此类推,直到猜解到第六位为止,猜出来应该为ilovey~1
猜解后缀名,即可猜解出ilovey~1.txt
这样的话在 IIS 环境下,可以继续总结规则+字典爆破猜解出文件全名
若在apache环境下,可以直接访问 http://www.f4ck.net/ilovey~1.txt
漏洞的利用:
漏洞的利用,需要使用到通配符。在windows中,可以匹配n个字符,n可以为0. 判断某站点是否存在IIS短文件名暴力破解,构造payload,分别访问如下两个URL:
1. http://www.target.com/*~1****/a.aspx 2. http://www.target.com/l1j1e*~1****/a.aspx
这里我使用了4个星号,主要是为了程序自动化猜解,逐个猜解后缀名中的3个字符,实际上,一个星号与4个星号没有任何区别(上面已经提到,*号可以匹配空)。
如果访问第一个URL,返回404,
而访问第二个URL,返回400, 则目标站点存在漏洞。
判断漏洞存在后,继续猜解目录下是否存在一个a开头的文件或文件夹,访问:
http://www.target.com/a*~1****/a.aspx
如果存在,将返回404。 如此反复,不断向下猜解完所有的6个字符。
猜解完之后,得到的序列应该类似:
http://www.target.com/abcdef*~1****/a.aspx
到了这一步,需要考虑两种情况,如果以abcdef开头的是一个文件夹,则
http://www.target.com/abcdef*~1/a.aspx
将返回404.
如果abcdef开头的是一个文件,则自动提交
http://www.target.com/abcdef*~1*g**/a.aspx
用a-z的26个字母替换上述g的位置,应该能得到多个404页面。(记住一点,404代表的是存在。)如果下面的地址返回404,
http://www.target.com/abcde*~1*g**/a.aspx
则代表扩展名中肯定存在g。
按照上面的思路,继续猜解g后面的字符,直到后缀名中的3个字符都猜解完,就可以了。
以上介绍了怎么手工猜解,这个漏洞的意义何在:
1. 猜解后台地址
2. 猜解敏感文件,例如备份的rar、zip、.bak、.SQL文件等。 3. 在某些情形下,甚至可以通过短文件名web直接下载对应的文件。比如下载备份SQL文件。
该短文件名有以下特征:
1. 只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)。
2. 后缀名最长只有3位,多余的被截断。
我们可以在启用.net的IIS下暴力列举短文件名,原因是:
3. 访问构造的某个存在的短文件名,会返回404
4. 访问构造的某个不存在的短文件名,会返回400
漏洞的局限性:
这个漏洞的局限有几点:
1) 只能猜解前六位,以及扩展名的前3位。
2) 名称较短的文件是没有相应的短文件名的。
3)需要IIS和.net两个条件都满足
IIS短文件名泄漏漏洞危害:
Microsoft IIS在实现上存在文件枚举漏洞,***者可利用此漏洞枚举网络服务器根目录中的文件。
危害:***者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务***。
修复建议:
1)通用有效方法:
禁用windows系统中的短文件名功能。
打开注册表,并打开此目录:HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
或者直接使用cmd命令:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v NtfsDisable8dot3NameCreation /d 1 /t REG_DWORD /f
修改完成后,重新启动系统生效,不过此修改只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除
2)简单有效方法:CMD命令:
Windows Server 2008 R2
查询是否开启短文件名功能:fsutil 8dot3name query
关闭该功能 :fsutil 8dot3name set 1
Windows Server 2003
关闭该功能 :fsutil behavior set disable8dot3 1
3)手动验证:
新建文件夹并创建几个文件,打开CMD进入该文件夹呢执行dir /x 检测,看不到有显示短文件名则成功。
4) 其他方法:
禁止url中使用“~”或它的Unicode编码。
关闭NTFS 8.3文件格式的支持。该功能默认是开启的,对于大多数用户来说无需开启。
如果是虚拟主机空间用户,可采用以下修复方案:
如果你的web环境不需要asp.net的支持你可以进入Internet 信息服务(IIS)管理器 --- Web 服务扩展 - ASP.NET 选择禁止此功能。
升级net framework 至4.0以上版本。将web文件夹的内容拷贝到另一个位置,比如 D:\www 到 D:\www.back,然后删除原文件夹D:\www,再重命名D:\www.back到D:\www。如果不重新复制,已经存在的短文件名则是不会消失的。 攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。
注: 1.windows Server 2003修改后需要重新启动服务器才能生效!
2.已存在的文件短文件名不会取消,只对以后创建的文件有效
参考链接:
http://www.freebuf.com/articles/4908.html
https://blog.csdn.net/baidu_38795342/article/details/79483865
https://segmentfault.com/a/1190000006225568
转载于:https://www.cnblogs.com/bmjoker/p/9469293.html
7. IIS短文件/文件夹漏洞(汇总整理)相关推荐
- IIS短文件/文件夹泄露漏洞
0x01:漏洞描述 Windows 还以 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于 MS-DOS 或 16 位 Windows的程序访问这些文件.在cmd下输入"di ...
- android扫描文件夹过滤文件夹,Android - 简单编写一个空文件/文件夹的扫描器
Android - 简单编写一个空文件/文件夹的扫描器 前言 顾名思义,空文件就是大小为0字节的文件,空文件夹就是子目录没有文件或文件夹的文件夹 实际上,这个功能在很早就有了,大概是在2012-201 ...
- 从一键还原7.25说到windows文件夹漏洞
前几天重装了一下系统,顺便从网上下了个一键还原精灵,做了备份.为了防止意外发生.我想把备份出来的ghost镜像再备份一下.可是找了半天,却没有发现.gho的文件.无解中-- 看了这个版本的介绍更是无解 ...
- Windows Internet Information Services(IIS) 与 inetpub 文件夹
Windows 7+ 系统 自带了IIS 和 framework,不需要单独去下载,只需要开启后就可以运行程序. Windows 7 和 Windows 10 个别地方只是表述不一样,其效果相同,注意 ...
- IIS部署图片文件夹,采用HTTP协议可获取图片
IIS部署可采用http访问的图片文件夹 IIS是window系统下的服务器管理器 平时我们看到网上的图片,在控制台打开页面后,显示的路径是一个URL 例如: 关于安装IIS,使用IIS的文章可参考使 ...
- 掌控板iis服务器文件读写,iis 设置网站文件夹或文件读写 编辑 删除权限
我这个是抄的别人,害怕那个网站挂掉,所以在这里记录下,以上内容均来自:http://www.longshannet.com/ne... 近日在调试网站过程中需要用到,对网站某个文件夹或文件 设置读写 ...
- C++ :常用文件、文件夹操作汇总
文件.文件夹操作 1.创建文件夹 2.创建文件 3.删除文件 4.删除文件夹 5.删除一个目录下所有的文件夹 6.清空文件夹 7.读取文件 8.写入文件 9.写入随机文件 10.读取文件属性 11.写 ...
- 对症下药:删除顽固文件夹方法汇总
一.常规解决办法 1.注消或重启电脑,然后再试着删除. 2.进入"安全模式删除". 3.在纯DOS命令行下使用DEL.DELTREE和RD命令将其删除. 4.如果是文件夹中有比较多 ...
- batchplot放到哪个文件夹_如何整理文件夹?来看腾讯设计师的方法
我猜很多设计师的电脑桌面都有过下面这种情况吧: 如果电脑桌面长期这样混乱,一定会非常影响我们查找目标文件,导致工作效率低下. 这时候我们就需要一个好的分类方法来管理这些文件,今天我把自己的分类方法分享 ...
最新文章
- Linux学习整理(一)
- python csv数据处理_python处理csv数据的方法
- mailbox 编程_MailboxProcessor从C#
- 【hdu6588】2019多校第一场K题function,反演
- EF异常:“System.InvalidOperationException”类型的未经处理的异常在 mscorlib.dll 中发生
- 算法—12.广度优先搜索
- 20190825 On Java8 第十三章 函数式编程
- 事务机制主要是利用undo、redo日志?
- 分布式机器学习原理及实战(Pyspark)
- STM8S(stm8s003F) ADC AIN7的使用
- 登录搜狐邮箱并发送邮件的3中方法
- Http缓存机制(强缓存与协商缓存)及过程
- Gateway集成Nacos和Sentinel
- 机器学习实战2-聚类算法分析亚洲足球梯队
- 动手下载网易课程视频 -- Eclipse通过pip安装python插件
- ffmpeg老版本下载地址
- 【智能制造】制造业生产线设备用语简介
- 百度云的高速下载技巧系列3---批量文件下载工具pandownload v1.3.5版 (PC)
- fwr171改无线服务器,迅捷(Fast)FWR171无线路由模式设置
- Linux下的磁盘碎片整理