IIS服务有哪些安全隐患,应该怎样进行安全加固?

IIS服务有哪些安全隐患,应该怎样进行安全加固?,第1张

IIS服务一般照默认的,打好补丁就ok了。但关键是你里面的网站的安全~!

比如有的网站有上传功能,要进行上传过滤等~!还有网站数据库防猜解等~!

因为iis一般还会搭配s-u使用,所以他的默认用户名和密码也要设置哦~!

不包括反序列化漏洞

Internet Information Services(IIS,以前称为 Internet Information Server)互联网信息服务是 Microsoft 公司提供的可扩展 Web 服务器,支持 HTTP,HTTP/2,HTTPS,FTP,FTPS,SMTP 和 NNTP 等。起初用于 Windows NT 系列,随后内置在 Windows 2000、Windows XP Professional、Windows Server 2003 和后续版本一起发行。IIS 目前只适用于 Windows 系统,不适用于其他操作系统。

根据 Netcraft 在 2018 年 9 月的最新全球 Web 服务器报告显示,Microsoft IIS 依旧以 9.57% 的比例占据全球第三大最繁忙服务器,落后于 Apache 34.07%和 Nginx 25.45%。目前流行的 Windows 版本都默认安装 IIS 服务 , 但同时 IIS 的安全性一直被业内诟病,一旦 IIS 出现高危漏洞,将会出现范围广、影响深的特点。

目前 IIS 一共发行 12 个版本,从 IIS 1.0 版本至 IIS 10.0 版本,IIS 1.0-4.0 已经基本退出市场,IIS 5.0-10.0 是 Web 市场主要使用的网站服务器。随着 Windows 版本发布和不断更新,IIS 自身的安全性也有了较大的提升。在 2005-2018 年期间,IIS 漏洞呈现逐年减少的趋势,同时也说明了 IIS 漏洞 POC 公布越来越少、漏洞挖掘的难度也在提升。

从上述 IIS 漏洞统计表格可以看出,IIS 7.5、IIS 8.5 和 IIS 10.0 是目前全球使用最多的三款 IIS 版本,分别对应受影响漏洞 12 个、4 个和 2 个,呈现受影响漏洞数量递减的趋势。同时,在历年的 IIS 版本漏洞中,IIS 6.0、IIS 5.1、IIS 7.5 和 IIS 7.0 受影响的漏洞数居前四位。

二、IIS 漏洞分析

千里目实验室针对 IIS 近十几年(2005 年以后)的 35 个漏洞进行和整理和分析,IIS 漏洞主要分布在缓冲区溢出、认证绕过、DOS 拒绝服务、代码执行和信息泄露,其中以 MS15-034 远程代码执行漏洞最为严重。

由上表可以看到,IIS 历年漏洞主要以远程漏洞为主,占漏洞总数 85.71%,本地漏洞有 5 个,占漏洞总数 14.29%。其中 5 个本地漏洞分别是: ( MS12-073 ) Microsoft IIS 密码信息泄露漏洞 CVE-2012-2531、 Microsoft IIS 源代码泄露漏洞 CVE-2005-2678、 ( MS17-016 ) Microsoft Internet 信息服务器跨站脚本漏洞 CVE-2017-0055、 ( MS16-016 ) IIS WEBDAV 特权提升漏洞 CVE-2016-0051、 ( MS08-005 ) Microsoft IIS 文件更改通知本地权限提升漏洞 CVE-2008-0074。

以下主要针对 IIS 漏洞中可以远程利用的重点漏洞做分析和复现:

1. 缓冲区溢出漏洞

1.1 ( MS09-053 ) Microsoft IIS FTPd 服务 NLST 命令栈缓冲区 CVE-2009-3023

1.1.1 漏洞描述

Microsoft IIS 内嵌的 FTP 服务器中存在基于栈的缓冲区溢出漏洞。如果远程攻击者对带有特制名称的目录发布了包含有通配符的 FTP NLST ( NAME LIST ) 命令的话,就可以触发这个溢出,导致执行任意代码。仅在攻击者拥有写访问权限的情况下才可以创建带有特殊名称的目录。

1.1.2 漏洞分析和复现

· 漏洞影响版本:IIS 5.0、IIS 5.1、IIS 6.0

· 漏洞分析:

IIS 包括用于通过 TCP 计算机网络交换和操作文件的 FTP 服务器服务。它默认侦听端口 21 以获取来自 FTP 客户端的传入连接。IIS 支持的 FTP 命令之一是名称列表(NLST)命令。此命令用于将目录列表从服务器传输到客户端。该命令的语法如下:

NLST

此命令中的路径名应指定目录或其他特定于系统的文件组描述符;在 pathname 为 NULL 时,使用当前目录。NLST 命令可以使用诸如“ * ”之类的通配符来引用多个路径。

Microsoft Internet 信息服务(IIS)中存在缓冲区溢出漏洞。该漏洞是由于处理 NLST FTP 命令时边界检查不足造成的。当 FTP 用户请求包含通配符的路径名过长的目录列表时,易受攻击的代码会将目录路径名复制到 0x9F(159)字节的基于堆栈的缓冲区中,而不进行边界验证。提供包含大于 0x9F(159)字节的路径名会使堆栈缓冲区溢出,从而可能会覆盖关键进程数据(如函数返回地址)。

远程身份验证的攻击者可以通过连接到易受攻击的 IIS FTP 服务器并向目标服务器发送恶意 NLST 命令来利用此漏洞。成功利用将导致使用 System 权限执行代码。如果代码执行攻击不成功,可能会导致受影响的 FTP 会话异常终止。

注意:为了成功利用此漏洞,NLST 命令中指定的长路径名必须存在于目标系统上。因此,利用此漏洞的攻击可能伴随着 MKD 命令的使用。

· 漏洞类型:可远程利用,存在缓冲区溢出漏洞,可触发代码执行

· 漏洞复现:

复现环境:Win XP SP3 x64 专业版,默认 IIS 5.1

1. 搭建好 IIS FTP 靶机环境,测试 anonymous 默认匿名用户可用,且可创建和读写目录;

2. 测试正常 MKD 创建和 NLST 正常长度的目录的功能是否正常:

以上 somefolder 为 FTP 服务器上正常长度文件夹,NLST 命令执行成功并返回结果提示 226。

3. 测试创建和 NLST 异常目录长度,服务器返回 150,打开数据连接,成功执行命令。

· 漏洞缓解:

1. 此漏洞仅在 IIS 5.x 和 6.0 版本存在,升级 IIS 版本或者更新 MS09-053 补丁即可规避此漏洞;

2. 此漏洞成功利用的条件主要包括:IIS 启用 FTP 服务且存在 FTP 默认站点、攻击者登陆 FTP 的账户有创建和读写文件夹的权限。

2.DOS 拒绝服务漏洞

2.1 ( MS07-041 ) Microsoft IIS 5.1 远程缓冲区溢出漏洞 CVE-2005-4360

2.1.1 漏洞描述

Microsoft IIS 处理某些畸形的 HTTP 请求时存在漏洞,远程攻击者可能利用此漏洞对服务器进行拒绝服务攻击。远程攻击者可以使用 WEB 浏览器之类的工具发送特制的匿名 HTTP 请求导致 IIS 服务进程 inetinfo.exe 崩溃。仅在文件夹的 " 执行权限 " 设置为 " 脚本和可执行程序 " 时才会出现这个漏洞。有漏洞的虚拟文件夹包括 "/_vti_bin" 等。此外如果提交恶意请求还可能会触发缓冲区溢出,导致在用户系统上执行任意代码。

2.1.2 漏洞分析和复现

· 漏洞影响版本:IIS 5.1

IIS 包括一个能够提供静态和动态内容的 Web 服务器组件。IIS 的 Web 组件提供 Web 应用程序功能。通过 Web 应用程序,服务器可以在后端执行脚本,并将生成的内容提供给请求客户端。客户端可以请求许多可执行资源,例如 Perl 脚本、Active Server Pages(ASP)或动态链接的库资源。用于提供动态动态内容的虚拟目录需要配置后台执行脚本的权限。

Microsoft Internet Information Services 产品的 HTTP 服务器组件中存在可远程利用的拒绝服务漏洞。在特殊情况下,当多次请求动态链接的库资源时,受影响的服务可能会因此而关闭。由于服务器无法处理格式错误的 URL 请求,因此创建了该漏洞。恶意请求必须满足几个条件才能触发此漏洞。请求 URL 必须包含来自以下字符的有限集合中的字符(注意,不可见字符需要使用以下字符范围的 URL 编码形式):

%3f

字符 %01 – %1f 的范围

请求还必须包含波形符“ ~ ”字符,后面跟一个十进制数字。

· 漏洞类型:可远程利用,可触发 DOS 攻击

1. 配置 IIS 默认 wwwroot 根目录下的虚拟目录 _vti_bin 执行权限为“脚本和可执行文件”权限;

2. 浏览器发送恶意 url 远程访问靶机环境,复现成功,服务器返回 500 错误:

Eg:http://192.168.180.200/_vti_bin/.dll/%1f~0

1. 此漏洞仅在 IIS 5.1 版本存在,升级 IIS 版本或者更新 MS07-041 补丁即可规避此漏洞;

2. 此漏洞成功利用的条件主要包括:要求在服务器端将请求的虚拟目录配置为“脚本和可执行文件”权限,不开启此权限的服务器不存在漏洞。

2.2 ( MS09-053 ) Microsoft IIS FTP 服务器递归列表拒绝服务漏洞 CVE-2009-2521

2.2.1 漏洞描述

IIS 5.0 至 7.0 版本的 FTP 服务在处理递归目录列表请求时存在栈消耗漏洞。拥有对目录写访问权限的远程攻击者可以通过提交包含有通配符 ( 如星形标识符 ) 的请求导致拒绝服务(守护进程崩溃)。

2.2.2 漏洞分析和复现

· 漏洞影响版本:IIS 5.0、IIS 5.1、IIS 6.0、IIS 7.0

通过包含通配符的 list(ls)-R 命令在 Microsoft IIS FTP 服务器 5.0 到 7.0 中触发拒绝服务条件,即 ls "-R p*/../" 命令可导致 FTP 服务器拒绝服务。 此漏洞利用有三个条件:

(1)一个有效的 ftp 帐户,拥有只读或写入权限;

(2)“ FTP 发布”服务必须在启动类型中配置为“手动”模式;

(3)FTP 根目录下至少有一个目录。

1. 添加 FTP 服务器角色,IIS 信息服务管理控制台“ FTP 站点下”启动 FTP 默认站点

2. 配置 ftp 默认用户 anonymous/anonymous,拥有读写目录权限;

3. 目录下创建一个文件夹 BB,然后输入 ls "-R p*/../",成功复现 DOS 拒绝服务,ftp 连接关闭:

中间很多重复:

p*/../BB: BB

FTP 服务器提示“远程主机关闭连接”,FTP 拒绝服务,漏洞复现成功。

1. 此漏洞仅在 IIS 5.0-7.0 版本存在,升级 IIS 版本或者更新 MS09-053 补丁即可规避此漏洞;

3. 认证绕过漏洞

3.1IIS 认证绕过和源码泄露漏洞复现

3.1.1 漏洞描述

Microsoft IIS ( Internet Information Server ) 是 Microsoft Windows 系统默认自带的 Web 服务器软件,其中默认包含 FTP 服务。Microsoft IIS 中存在认证绕过漏洞和源码泄露漏洞,该漏洞源于对用户提供的输入未经正确的验证。攻击者可利用这些漏洞在服务器进程上下文中获取密码保护资源和查看源代码文件的未授权访问,且有助于进一步攻击。

3.1.2 漏洞分析和复现

· 漏洞影响版本:IIS 6.0、IIS 7.5

Microsoft IIS 由于无法正确清理用户提供的输入,容易出现身份验证绕过漏洞和源代码泄露漏洞。主要包括以下三类绕过:

(1)安装了 PHP 的 Microsoft IIS 6.0 身份验证绕过:

IIS / 6.0 加载受保护(如 :admin)目录中的 PHP 文件需要用户认证信息(用户名和密码访问),如果将“ :: $ INDEX_ALLOCATION ”后缀附加到目录名称后面,存在绕过认证并可能访问管理文件等特殊情况,导致 IIS 服务器重要信息泄露;

Eg:/admin::$INDEX_ALLOCATION/index.php

(2)Microsoft IIS 7.5 经典 ASP 身份验证绕过:

配置了经典 ASP 和 .NET Framework 4.0 的 Microsoft IIS 7.5,通过将“:$ i30:$ INDEX_ALLOCATION ”后缀附加到需要认证的请求目录名称后面,可以绕过经典的 ASP 文件访问限制;

Eg: 举例:/admin:$i30:$INDEX_ALLOCATION/index.asp

(3)Microsoft IIS 7.5 .NET 源代码公开和身份验证绕过:

在配置中安装了 PHP 的 Microsoft IIS / 7.5,存在认证绕过漏洞;

Eg:http:///admin:$i30:$INDEX_ALLOCATION/admin.php

除此之外,通过将 /.php 附加到 ASPX 文件(或使用未通过请求过滤规则阻止的 .NET 框架的任何其他文件,如错误配置:.CS,.VB 等文件)。IIS 7.5 使用文件的完整源代码进行响应,并将其作为 PHP 代码执行。这意味着通过使用上传功能,可以(在特殊情况下)执行任意 PHP 代码。

Eg: http:///Default.aspx/.php(php 任意代码执行)

· 漏洞类型:可远程利用,可触发认证绕过和信息泄露

复现环境:Windows 7 x64 位,默认 IIS 7.5

以下验证复现上述(3)的漏洞,(1)和(2)类似此处不做验证:

1.IIS 网站根目录下创建 admin 用户目录,关闭默认用户认证,换言之,访问 /admin/index.php 目录下的文件需要认证信息,认证失败或者无认证信息将会返回 401 未授权页面;

2. 配置完成后,重启 IIS 服务器,浏览器远程访问此文件:http://192.168.180.207/admin/index.php,默认 IIS 账户访问提示 401 未授权;

3. 接下来,利用 :$i30:$INDEX_ALLOCATION 来绕过此限制,浏览器远程访问:

http://192.168.180.207/admin:$i30:$INDEX_ALLOCATION/index.php,成功绕过并访问到敏感信息;

4. 除此之外,如果目标站点限制上传和访问 php 文件,可以利用上传 aspx(.net 支持解析的文件类型)文件逃避限制,将其当做 php 代码执行;

Eg:网站目录下有一个 index.aspx 的文件,里面写有 php 代码,正常通过 http://192.168.180.207/admin:$i30:$INDEX_ALLOCATION/index.aspx 访问此文件无法执行代码,通过在末尾加上 index.aspx/.php 形式访问将会成功执行 php 代码;

a. 正常绕过访问 index.aspx 文件,页面返回乱码,未执行 phpinfo 代码:

b. 通过在末尾加上 /.php,成功执行 php 代码:

1.IIS 7.5 配置 .NET Framework 2.0 不受上述 ( 2 ) 的绕过影响;

2. 攻击者需要事先获取 IIS 服务器受认证保护目录;

4. 信息泄露漏洞

4.1Microsoft IIS 短文件名泄露漏洞

4.1.1 漏洞描述

IIS 短文件名漏洞是由于 HTTP 请求中携带旧 DOS 8.3 名称约定(SFN)的代字符(~)波浪号引起的。它允许远程攻击者在 Web 根目录下公开文件和文件夹名称(不应该可被访问)。攻击者可以找到通常无法从外部直接访问的重要文件,并获取有关应用程序基础结构的信息。

4.1.2 漏洞分析和复现

· 漏洞影响版本:IIS 5.0-10.0 全系列版本

Windows 支持以 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于 MS-DOS 或 16 位 Windows 的程序访问这些文件。基于 Windows 的 IIS 服务器默认根目录 C:inetpubwwwroot 下的网页脚本文件和目录符合一定条件时,会生成相应的短文件名。此时,攻击者利用 HTTP 的 DEBUG、OPTIONS、GET、POST、HEAD、TRACE 等方法携带波浪号,可以对 IIS 服务器短文件名进行暴力猜解,依据返回的页面信息和状态码来确认真实存在的文件名,从而获取服务器敏感信息,为下一步攻击做准备。

· 漏洞类型:可远程利用,可触发信息泄露

1. 通过 cmd 下进入 IIS 网站根目录 C:inetpubwwwroot,输入“ dir /x ”查看已存在的短文件名:

2. 使用公开 POC 或者扫描程序探测目标靶机的短文件名,成功猜解到服务器根目录短文件名称:

1. 限制 IIS 服务器 HTTP 方法,除了必要的 GET、POST 方法,其他 HTTP 方法建议关闭,视情况开启;

2.IIS 服务器文件建议使用复杂字符或者中文命名,增后期攻击者暴力破解难度;

3. 针对已存在的 IIS 服务器,建议关闭 NTFS 8.3 文件格式的支持或者修改注册表禁用短文件名功能。

注:详细原理和解决方案请参考:https://www.freebuf.com/articles/web/172561.html

5. 代码执行漏洞

5.1Microsoft IIS 畸形文件扩展名绕过安全限制漏洞 CVE-2009-4444

5.1.1 漏洞描述

IIS 服务器错误的执行了带有多个扩展名的文件中所包含的 ASP 代码。例如,malicious.asp.jpg 被执行为了 ASP 文件。很多文件上传程序仅检查文件扩展名的最后部分,因此这可能导致绕过保护机制向服务器上传恶意可执行文件。

5.1.2 漏洞分析和复现

· 漏洞影响版本:IIS 6.0

此漏洞主要原因是 IIS 第三方上传应用没有限制文件上传格式或者限制不够严格,只检查了文件末尾的格式,导致攻击者可以将如 Asp webshell 伪装成 malicious.asp.jpg 文件格式上传到 IIS 服务器。IIS 的 Classic ASP 功能在处理 asp 文件时,被此畸形文件格式的分号截断了,认为是 asp 文件并进行相应的解析处理。攻击者则在获取上传路径后通过远程访问执行此 webshell,控制 IIS 服务器甚至 Windows 宿主机器。

· 漏洞类型:可远程利用,文件上传绕过可触发代码执行

复现环境:Win server 2003 Sp2 32 位企业版,默认 IIS 6.0

1.IIS 服务器根目录下创建一个名为 aspwebshell.asp.jpg 的文件,用记事本打开,放入 asp webshell 代码(实际利用过程中是通过第三方应用上传绕过漏洞上传此文件,并设法获取此上传路径);

2. 通过浏览器远程访问此文件,http://192.168.180.201/aspwebshell.asp.jpg,成功执行 asp webshell 代码:

1. 严格限制 IIS 第三方应用上传文件的格式;

2. 此漏洞仅影响 IIS 6.0,其他版本解析 asp 文件不会被分号截断,可升级至无此漏洞的 IIS 版本。

5.2 ( MS15-034 ) Microsoft IIS 远程代码执行漏洞复现 CVE-2015-1635

5.2.1 漏洞描述

Microsoft Windows 是美国微软(Microsoft)公司发布的一系列操作系统。Microsoft Internet Information Services(IIS)是一套运行于 Microsoft Windows 中的互联网基本服务。使用 Microsoft IIS 6.0 以上版本的 Microsoft Windows 的 HTTP 协议堆栈 ( HTTP.sys ) 中存在远程执行代码漏洞,该漏洞源于 HTTP.sys 文件没有正确分析经特殊设计的 HTTP 请求。成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。

5.2.2 漏洞分析和复现

· 漏洞影响版本:IIS 7.5、IIS 8.0、IIS 8.5

IIS 进程 w3wp.exe 接收到 HTTP 请求后,将数据缓存到内核中,并整合 HTTP 回应头,最后由 http.sys 组织数据包经由网络内核组件发送出去。请求中包括 Range 对象的指定范围,而缓存中则包含了 http 文件和大小信息等。

根据公开 POC,构造包含“ Range: bytes=0-18446744073709551615 ”的 HTTP 请求并发送到 IIS 7.5-8.5 服务器,如果 IIS 服务器返回“ Requested Range Not Satisfiable ”,则存在漏洞,如果返回“ The request has an invalid header name ”或者没有回应,则说明漏洞已经修补或者不存在漏洞。

· 漏洞类型:可远程利用,可触发代码执行

复现环境:Win server 2008 R2 64 位企业版,默认 IIS 7.5

1. 开启 IIS 默认网站

2. 根据公开 poc 发送包含特殊设计的 Range 字段攻击靶机环境,成功检测到漏洞:

1. 禁用 IIS 内核缓存,详情见微软官方公告:

https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2015/ms15-034

2. 升级 IIS 至 IIS 10.0 版本,此版本不存在此漏洞。

三、漏洞总结

IIS 远程漏洞主要包括缓冲区溢出、认证绕过、拒绝服务、代码执行和信息泄露漏洞,本地漏洞主要分布在信息泄露和权限提升漏洞分类,大部分漏洞利用难度较大,但是一旦成功被攻击者利用,影响的不仅仅只是 IIS 服务器,甚至可能是运行 IIS 的 Windows 主机。如果用户主机被利用,那么攻击者可以将此台主机当作肉鸡攻击内网中的其他主机、服务器或者网络设备等,后果不堪设想。

如果 IIS 服务器的网站配置不当,攻击者可以通过 IIS 短文件名猜解和暴力破解用户隐私文件并进行认证绕过访问,获取用户隐私信息。此外,不合理的上传限制也会导致攻击者上传含有恶意代码或 webshell 并伪装成合法的文件,进而导致 IIS 服务器被攻陷。攻击者利用提权漏洞或者命令执行等漏洞,对 IIS 服务器甚至是 Windows 操作系统进行进一步的攻击。无论是对 IIS 服务器本身的服务还是该 IIS 服务器所处的网络环境,IIS 漏洞都是一个极大的隐患。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/328532.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存