[转载]IIS中间件渗透总结

原文链接:https://www.freebuf.com/vuls/304741.html

IIS 6.x 攻防详解

IIS写权限漏洞

开启webDAV引起的IIS写权限漏洞(攻击者可以上传文件)

PUT任意上传漏洞

8

改为允许,并开启脚本资源访问和写入

9

使用工具已经可以检测出漏洞

10

修改来宾用户权限

11

此时创建一个文本文档,输入一句话木马

 <%eval request("123")%> 

使用工具put方式进行上传

12

可以看到这里成功通过 PUT 的方法上传了一个含有 asp 一句话的txt文件。之所以不直接上传一个asp一句话木马是因为通常情况下上传txt文本不会出错,但是上传asp就会报错

13

为了获取shell,这里可以用MOVE方法将刚刚上传的txt文件修改为asp文件,从而将文本文件变成可执行的脚本文件。MOVE协议不会更改文件内容

开启IIS的asp解析功能

14

使用蚁剑尝试连接

15

IIS 6.0 在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞。这一漏洞有两种完全不同的利用方式:

/test.asp/test.jpg
test.asp;.jpg

第一种是新建一个名为 "test.asp" 的目录,该目录中的任何文件都被 IIS 当作 asp 程序执行(特殊符号是 “/” )

第二种是上传名为 "test.asp;.jpg" 的文件,虽然该文件真正的后缀名是 ".jpg", 但由于含有特殊符号 ";" ,仍会被 IIS 当做 asp 程序执行

IIS7.5 文件解析漏洞

test.jpg/.php

URL 中文件后缀是 .php ,便无论该文件是否存在,都直接交给 php 处理,而 php 又默认开启 "cgi.fix_pathinfo", 会对文件进行 “ 修理 ” ,可谓 “ 修理 ” ?举个例子,当 php 遇到路径 "/aaa.xxx/bbb.yyy" 时,若 "/aaa.xxx/bbb.yyy" 不存在,则会去掉最后的 “bbb.yyy" ,然后判断 "/aaa.xxx" 是否存在,若存在,则把 “/aaa.xxx" 当作文件。

若有文件 test.jpg ,访问时在其后加 /.php ,便可以把 "test.jpg/.php" 交给 php , php 修理文件路径 "test.jpg/.php" 得到 ”test.jpg" ,该文件存在,便把该文件作为 php 程序执行了。

修复建议:

IIS PUT 漏洞完全是因为管理员的一些不当配置导致的,所以修复只需要以下两点:

  1. 关闭WebDAV

  2. 关闭写入权限

文件解析漏洞

IIS文件解析漏洞:*.asp;.xxx像这样畸形(IIS 10.0 8.5 都可能存在,属于PHP版本解析漏洞)的文件

IIS只会把他当作xxx.asp文件执行不会看分号之后的内容

IIS目录解析漏洞:以 *.asp 命名的文件夹中的文件都会被当作 asp 文件执行

IIS文件解析漏洞

首先创建一个 Ylion.asp 文件

  <%eval request("123")%> 

16

复制该文件进行重命名并访问

17

18

IIS 目录解析漏洞

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

新建两个空的文件夹

19

分别复制 1.jpg 1.zip 放入,内容和上面的asp文件内容一致,分别进行访问

20

21

访问文件夹1下的,依旧是一张图片

访问文件夹1.asp下的,成功被解析

这就是IIS的文件解析漏洞

另外,IIS6.x除了会将扩展名为 .asp 的文件解析为asp之外,默认会将扩展名为 .asa、.cdx、.cer解析为 asp,从网站属性,主目录,配置 可以看出,他们都是调用了 asp.dll 进行的解析:

22

修复建议:

微软认为这个并不算是一个漏洞,也没有推出 IIS6.0 的补丁,因此漏洞需要自己修复

  1. 设置权限无

23

  1. 不允许新建目录

  2. 上传的文件需要经过重命名(时间戳+随机数+ .jpg 等)

IIS 短文件漏洞

攻击者可以利用 " ~ " 字符猜解或遍历服务器中的文件名,或对IIS服务器中的 .Net Framework 进行 拒绝服务攻击

就是存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件

简介

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

24

IIS短文件名产生:

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

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

目前 IIS 支持短文件名猜测的HTTP方法主要包括:DEBUG、OPTIONS、GET、POST、HEAD、TRACE六种。

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

复现

IIS8.0 以下版本需要开启ASP.NET支持,IIS大于等于8.0版本,即使没有安装ASP.NET,通过OPTIONS和TRACE方法也可以猜解成功

实操一下:

还是找到添加与删除程序,点击添加程序

25

找到ASP.NET,点击下一步并安装

在web服务扩展里面,右键刷新

26

随便创建个后缀长度为4的文件:

27

远程访问一下:

28

远程访问返回404

访问构造某个不存在的短文件名时,会返回400

29

EXP:(利用工具)

https://github.com/WebBreacher/tilde_enum

https://github.com/irsdl/IIS-ShortName-Scanner

工具使用:

安装JAVA7

点击run.bat 输入地址:

30

输入对应IP,选择no

31

然后一路回车,就爆破出来了

32

修复建议:

1.从CMD命令关闭NTFS 8.3 文件格式的支持

windows server 2003:(1代表关闭,0代表开启)

关闭该功能:

fsutil behavior set disable8dot3 1

windows server 2008 R2:

查询是否开启短文件名功能:fsutil 8dot3name query

关闭该功能:fsutil 8dot3name set 1

不同系统关闭命令稍有区别,该功能是默认开启的

2.或从修改注册表关闭NTFS 8.3文件格式的支持

快捷键Win+R打开命令窗口,输入regedit打开注册表窗口

找到路径:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

33

将其中选中的那一项的值设为1,1代表不创建短文件名格式

注意:

以上两种方式修改完成后,均需要重启系统生效。

此方法只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除,需要重新复制才会消失

IIS短文件漏洞局限性:

  1. 如果文件名本身太短也是无法猜解的;

  2. 此漏洞只能确定前6个字符,如果后面的字符太长、包含特殊字符,很难猜解;

  3. 如果文件名前6位带空格,8.3格式的短文件名会补进,和真实文件名不匹配;

  4. 如果文件名前6位带点 "." ,扫描程序会认为是文件而不是文件夹,最终出现误报;

  5. 不支持中文文件名,包括中文文件和中文文件夹。一个中文相当于两个英文字符,故超过4个中文字会产生短文件名,但是IIS不支持中文猜测

实战用处:

猜后台

猜敏感文件,例如备份的rarzip.bak.SQL文件等

在某种情形下,甚至可以通过短文件名直接下载对应的文件。比如下载备份SQL文件

RCE-CVE-2017-7269

简介

Mcrosoft Windows Server 2003 R2中的Internet信息服务(IIS)6.0中的 WebDAV 服务中的 ScStoragePathFromUrl函数中的缓冲区溢出允许远程攻击者通过以 "If : <http://" 开头的长标执行任意代码 PROPFIND 请求

影响范围:

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

复现

EXP:

https://github.com/edwardz246003/IIS_exploit/blob/master/exploit.py

对ip及对应端口进行修改:

34

任务管理器开启了 calc.exe 进程,因为计算机是网络服务权限打开的,所以我们在桌面上看不见

需要python2环境

漏洞修复

关闭 WebDAV 服务

使用相关防护设备

远程代码执行实战运用

前提条件:

IIS 6.0 开启 WebDAV

35

确保开启WebDAV

exp下载地址:

https://github.com/zcgonvh/cve-2017-7269

下载后放入msf中,路径为 /url/share/metasploit-framework/modules/exploits/windows/iis/

注意文件名中-修改为_,否则无法识别,然后拿到了shell(失败后靶机恢复快照,否则可能之后的攻击无效)

放入后直接执行:

36

use exploit/windows/iis/cve_2017-7269

set rhosts 192.168.27.182

37

失败了,检查原因:

38

默认网站->属性,在IP地址中未分配,可以解释为非默认绑定。该EXP只适用于默认绑定和默认路径的情况才可以提权

39

设置完重启系统

批量检测工具:

https://github.com/admintony/Windows-Exploit/tree/master/IIS6_WebDAV_Scanner

python IIS6_WebDAV_Scanner.py -p 12.txt

python2环境执行,检测出长度为19

然后在msf上设置PhysicalPathLength为19

set PhysicalPathLength 19

40

成功拿到低权用户,然后使用pr提权,利用msf上传pr.exe

upload '/root/Desktop/pr.exe' c:\Windows\system32\inetsrv

然后进行创建用户

pr.exe "net user a002 963852 /add"

添加到管理员组

pr.exe "net localgroup administrators a002 /add

IIS 7.x 攻防详解

解析漏洞

新建png文件,其中写有php语句,直接访问,发现不可以

点击确定,访问路径后面加上 /.php 尝试

成功解析为php文件

IIS 7.x 版本在 Fast-CGI 运行模式下,在任意文件,例:Ylion.png 加上 /.php ,会将 Ylion.png.php 解析为php文件

修复建议:配置cgi.fix_pathinfo(php.ini中)为0并重启php-cgi程序

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

IIS的安全脆弱性曾长时间被业内诟病,一旦IIS出现远程执行漏洞威胁将会非常严重。远程代码漏洞威胁将会非常严重。远程执行代码漏洞存在于HTTP协议堆栈中,当HTTP.sys未正确分析经特殊设计的HTTP请求时会导致此漏洞。成功利用此漏洞的攻击者可以在系统账户的上下文中执行任意代码,可以导致IIS服务器所在机器蓝屏或读取其内存中的机密数据。

影响范围

Windows7、Windows server 2008 R2、Windows8、Windows server2012、Windows8.1和Windows server 2012 R2

漏洞影响版本:

IIS 7.5、IIS 8.0、IIS 8.5

复现

在Windows7 上安装 IIS 7.5

访问 IIS 7.5

编辑请求头: Range: bytes=0-18446744073709551615

增加字段,若返回码状态为416 Requested Range Not Satisfiable,则存在 HTTP.SYS远程代码执行漏洞

54

修复建议

安装修复补丁(KB3042553)

作者:拾瑾
个性签名:愿历经千帆,归来仍少年.
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
原文地址:https://www.cnblogs.com/ayoung/p/15567214.html