第10篇:IIS短文件名猜解在拿权限中的巧用,付脚本下载

 Part1 前言 

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

 Part2 研究过程 

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

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

  • 查看短文件名的方法

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

2d522ad4e146e23297cb52a89a6b0843.png

  • 短文件名命名规则

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,那么就可以直接下载数据库了,这对于红队项目是非常有帮助的。

1efc1e138186e36e070a98549d26c0ad.png

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

  • IIS6.0下GET请求判断

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

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

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

00dbeef46a906ab7e3ac9dc8470b7ce5.png

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

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

3856ad4a15af1443d8ff395f42a9ee83.png

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

  • IIS 10.0下OPTIONS请求判断

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

432fc590f8a66b9e87fb847c2000e9ce.png

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

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

01cb634cd953e6afd58bcf58643d5d19.png

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

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

5e43e151c87acc1c52c5fc47084f480a.png

  • IIS 10.0下TRACE请求判断

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

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

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

2cde760b98f2b74d29d1d40284dde2af.png

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

a515c09d90fbae86cd783c57df1e0537.png

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

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

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

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

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

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

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

  • 案例一:医疗行业案例

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

99fb1429780b04ac935de2fb7ee02e7a.png

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

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

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

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

5a98446f0857dd95d2a0e6d0876bfbcf.png

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

1fb5a21bfc2a9473498364b27fdfe0ed.png

  • 案例二:WebService接口

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

3fe56e4c2b6ece5039e8a1bfdb91b411.png

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

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

17bfdba735aa498db3c4aabda3800aa1.png

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

iis短文件名猜解脚本改造

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

03152456d48f74e958632782d9c7d066.png

7175128735461122f554c19b12fa7c67.png

关注公众号,回复数字“222”,即可得到由ABC_123修改的,适用于IIS 10.0版本,的漏洞扫描脚本的下载地址。

 Part3 总结 

1.  没有0day的时候,就把Nday用到极致。

2.  对于IIS短文件名猜解的利用,一定要按照研发人员的思维去猜测完整文件名。

参考链接:

https://www.freebuf.com/articles/web/172561.html

12c4999e24c3f580e8f7f2a3d4640623.png

专注于红队、蓝队技术分享

每周一篇,敬请关注

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
IIS文件名漏洞,也称为8.3文件名漏洞,是指在IIS(Internet Information Services)Web服务器上存在的一个安全漏洞。该漏洞允许攻击者通过构造特定的URL请求来访问Web服务器上本不公开的文件和目录。 要复现IIS文件名漏洞,可以按照以下步骤进行: 1. 首先,确保你有一个运行IISWeb服务器,并且可以进行配置和测试。 2. 设置IIS服务器,使其启用文件名。可以通过修改IIS配置文件或使用命令行工具进行设置。 3. 创建一个包含敏感信息的文件,例如“secret.txt”,并将其放置在不公开访问的目录下,如“C:\inetpub\wwwroot\secret”。 4. 使用不带扩展名的文件名创建一个符号链接(Symlink),指向要访问的目标文件。例如,可以使用命令“mklink secret.lnk C:\inetpub\wwwroot\secret.txt”。 5. 访问IIS服务器上的网页,并构造一个特定的URL请求来访问该文件。例如,“http://localhost/secret.lnk”。 6. 如果IIS服务器启用了文件名,并且漏洞存在,那么访问该URL后,应该能够直接显示或下载“secret.txt”文件,即使该文件被放置在不公开访问的目录下。 复现IIS文件名漏洞的过程可以帮助管理员更好地理解漏洞的存在和影响,并采取相应的措施来修复该漏洞。修复方法包括禁用IIS文件名功能、更新IIS服务器补丁、限制目录访问权限等,以增强服务器的安全性。同时,定期更新和管理服务器的安全措施也是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

希潭实验室

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值