IIS短文件名猜解在拿权限中的巧用

一颗小胡椒2022-07-26 09:33:13

 Part1 前言 

为了能在红队项目中发现更多的打点漏洞,我曾经花了不少精力,把那些大家觉得不重要的中低危漏洞拿来研究一下,发现有几个漏洞还是很有利用价值的,比如说,“IIS短文件名猜解漏洞”。这个漏洞有以下这么几个特点:1、危害等级是中低风险。2、在当前网站应用中还广泛存在。3、微软官网不太认可这个漏洞,不出补丁。4、很多客户也选择不修复。5、漏洞利用起来极其困难,需要很大的耐心和毅力。但是我借助此漏洞间接拿权限成功了很多次,还是有很多技巧在里面的,下面分享一下详细过程。

 Part2 研究过程 

IIS短文件名猜解漏洞简介:

首先简单介绍一下IIS短文件名猜解漏洞:Windows系统为了兼容16位MS-DOS程序,为文件名较长的文件和文件夹生成了对应的Windows 8.3短文件名。比如文件名direct~1.asp中间有一个波浪号,这种就是短文件名了。

  • 查看短文件名的方法

如下图所示,使用windows自带的命令即可。打开一个文件夹,使用dir /x命令,可以直接看到每个文件或者文件夹的短文件名,短文件名只保留前六位的文件名+ ~+ 1.后缀名的前三位。

  • 短文件名命名规则

Windows短文件名的命名规则如下,实际上比以下描述要复杂一些,但是了解个大概即可,否则太费精力,不划算(这段描述参考了freebuf的文章,文末附带了freebuf文章的原文链接地址):

1.  只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)

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

3.  所有小写字母都会转换成大写字母

4.  长文件名中含有多个.,以文件名最后一个.作为短文件名后缀

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

  • 该漏洞的利用价值

此漏洞可以得到网站每个目录下文件的前6位字符,其利用价值体现在:

1.  猜解网站的后台地址。

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

3.  获取很多爬虫爬不到的未授权访问页面、获取WebService接口地址,从这些未授权访问页面中进而发现更多漏洞,如SQL注入漏洞、上传漏洞等。

IIS短文件名猜解的利用过程:

假设IIS中间件网站目录下有Databackup.zip这样一个网站备份文件,使用dir /x查看,可以得到短文件名为DATABA~1.zip。如果在红队项目过程中,得知网站下有一个DATABA为前缀的文件名,那么就可以很容易猜到完整的数据库文件名database.zip或者databackup.zip,那么就可以直接下载数据库了,这对于红队项目是非常有帮助的。

IIS早期版本和较新版本对于IIS短文件名猜解的判断方法是不一样的,下面分情况搭建虚拟机环境测试一下:

  • IIS6.0下GET请求判断

本地搭建一个IIS6.0、Win2003环境,看一下如何通过IIS短文件名猜解得到服务器文件或者文件夹地址。接下来构造如下两个URL:

http://192.168.237.128:8888/shop/databa~1****/a.aspx

如下图所示,服务器如果存在databa开头的文件,则显示404响应码:

http://192.168.237.128:8888/shop/databc~1****/a.aspx

如下图所示:如果服务器不存在databc开头的文件,则显示400响应码提示:

由此可知,通过以上判断方法,可以得到逐步猜解出低版本IIS网站目录下长文件名的前6位字符及后缀。但对于IIS较新版本,GET请求是判断不出短文件名的,需要借助OPTIONS请求或者TRACE请求,HEAD请求、GET请求、POST请求都不行。

  • IIS 10.0下OPTIONS请求判断

接下来看一下IIS 10.0的情况下,同样在wwwroot目录下放一个databackup.zip文件:

http://192.168.237.166/databa~1****/a.aspx

如果服务器存在databa开头的文件,则提示404响应码。

http://192.168.237.166/databc~1****/a.aspx

如果服务器不存在databac开头的文件名,则提示200响应码。

  • IIS 10.0下TRACE请求判断

接下来换成TRACE请求方法试一试:

http://192.168.237.166/databa~1****/a.aspx

如果服务器存在databa开头的文件,返回404响应码。

如果服务器不存在databc开头的文件,则返回501响应码。

  • 猜解方法总结如下(欢迎大家校勘):

1. 对于IIS6.0左右的低版本:

使用HEAD、GET、POST请求判断,返回响应码404则文件存在,返回响应码400则文件不存在。

2. 对于IIS10.0左右的新版本:

使用OPTIONS、TRACE请求方法判断,返回响应码404则文件存在,返回响应码200或者501则文件不存在。

IIS短文件名猜解实战案例分享:

接下来分享一下我曾经做的2个实战案例。

  • 案例一:医疗行业案例

这个案例来源于一次医疗行业的红队评估项目。如下图所示:通过IIS短文件名猜解,得到了如下两个短文件名(为了防止泄露项目信息,截图都来源于本地搭建的环境,原图就不贴出来了)

patien~1.asp 由于是医疗系统,所以很容易联想到单词“病人”patient.asp

userad~1.asp 很容易联想到添加用户的功能页面:useradd.asp

访问之后发现patient.asp、useradd.asp均不存在,因为iis短文件名猜解出来的后缀名只有前三位,于是将后缀.asp换成.aspx就显示文件存在了。

于是两个未授权访问页面就出现了,对这两个页面的漏洞进行深度挖掘,追踪页面中的js链接地址。patient.aspx显示如下页面(图片是本地虚拟机环境),搜索框存在SQLServer注入漏洞,而且是sa权限,直接拿到了服务器权限。

而useradd.aspx存在未授权添加用户漏洞。都是常规操,就不做过多介绍了。

  • 案例二:WebService接口

接下来看另一个稍微难一点的案例,扫描出一个真实文件名/h/dmtkts~1.asm  

dmtkts~1.asm这个短文件名耗费了我很长时间才给试出来:后来我在想,asm后缀是什么后缀,开始以为是一个临时文件之类的后缀,后来我突然想到了:.asm 后缀就是.net的WebService接口后缀.asmx。接下来dmtkts 这个短文件名的完整名怎么猜,让我大伤脑筋,后来突然想到了,由于.asmx是WebService的接口,后面这个s字母应该是service的首字母,最终得到如下的完整文件名dmtktservice.asmx,最终拿到了一个asmx的任意接口调用。真是太难了。。

dmtktservice.asmx类似于如下图片的功能(原图就不贴了),这接口里面有一处上传功能,后续利用上传漏洞拿到权限的。

对IIS短文件名猜解的利用案例就举这两个例子吧,都是实战案例。此外,还可以通过短文件名+字典的方式枚举,我曾经用过几百万行的目录字典、单词字典去跑IIS中间件,但最常用的还是自己按照研发人员的命名习惯去手工尝试。大家也可以发散思维,找到更多更好用的思路。

iis短文件名猜解脚本改造

对于iis短文件名猜解,我下载了好几个脚本,各有优缺点吧,有的脚本不支持iis10,有的脚本算法大概是有问题,跑出的iis短文件名不全。最终我把lijiejie的脚本改造了一下,使它支持iis 10.0的猜解,脚本主要改动内容如下:

漏洞挖掘iis
本作品采用《CC 协议》,转载必须注明作者和本文链接
对于公益SRC来说,想要冲榜就不能在一个站上浪费大量时间,公益SRC对洞的质量要求不高,所以只要 花时间,还是可以上榜的。在对某站点进行测试SQL注入的时候,先通过一些方式测试是否可能存在漏洞,然后可以直接sqlmap一把梭,也可以手工测试,然后提交漏洞。任意注册算是低危漏洞,不过也有两分。不管是进行SRC漏洞挖掘,还是做项目进行渗透测试,又或者是打红蓝对抗,一定要做好信息收集。
业务漏洞挖掘笔记
2022-04-03 21:16:10
业务漏洞挖掘笔记多年的实战业务漏洞挖掘经验,为了让今后的业务漏洞挖掘工作更清晰,以及尽可能的把重复性的工作自
自己接过的一个项目,不过其实是客户自己在使用的一个SaaS平台,也就是对SaaS平台的测试本质上来说没有严格授权。由于没有严格授权也就将测试范围局限在了单个网站上,并没有根据域名进行拓展。Web应用信息通过Burp发送一定请求包,可以得到服务器如下信息:开发语言:ASP. 由于使用的是ASP.NET开发框架,因此服务器中间件大概率是IIS了。以上功能点均存在类似的通过修改请求方式的CSRF漏洞
工业互联网安全专委会 :第二期工业互联网安全讲坛成功举办!
Resin存在类似iis6.0的文件解析漏洞,影响全部版本,不仅能够丰富其他高危漏洞挖掘知识库,也给隐藏后门带来了新的一种潜在方式。
服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等) 网站指纹识别(包括,cms,cdn,证书等),dns记录 whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等) 子域名收集,旁站,C段等 google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等 扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等 传输协议,通用漏洞,ex
主要是可以拿着这些信息通过goole,或github搜索一些其他的敏感信息,扩大搜索面。效果就不多说了,在github泄漏一些账号或源码的事件简直不要太多。)如果得到的ip结果不同,即可判断使用了CDN。nmap扫描服务器进行搜集,我认为也是至关重要的一点,不能遗漏。里面的security项rename-command CONFIG ""又问:如果内容禁止使用ip如何探测内网端口1、使用dns解析2、127。
一颗小胡椒
暂无描述