一、全球第三大网络服务器
InternetInformationServices(IIS,以前称为InternetInformationServer)互联网信息服务是Microsoft公司提供的可扩展Web服务器,支持HTTP,HTTP/2,HTTPS,FTP,FTPS,SMTP和NNTP等。起初用于WindowsNT系列,随后内置在Windows、WindowsXPProfessional、WindowsServer和后续版本一起发行。IIS目前只适用于Windows系统,不适用于其他操作系统。
根据Netcraft在年9月的最新全球Web服务器报告显示,MicrosoftIIS依旧以9.57%的比例占据全球第三大最繁忙服务器,落后于Apache34.07%和Nginx25.45%。目前流行的Windows版本都默认安装IIS服务,但同时IIS的安全性一直被业内诟病,一旦IIS出现高危漏洞,将会出现范围广、影响深的特点。
目前IIS一共发行12个版本,从IIS1.0版本至IIS10.0版本,IIS1.0-4.0已经基本退出市场,IIS5.0-10.0是Web市场主要使用的网站服务器。随着Windows版本发布和不断更新,IIS自身的安全性也有了较大的提升。在-年期间,IIS漏洞呈现逐年减少的趋势,同时也说明了IIS漏洞POC公布越来越少、漏洞挖掘的难度也在提升。
从上述IIS漏洞统计表格可以看出,IIS7.5、IIS8.5和IIS10.0是目前全球使用最多的三款IIS版本,分别对应受影响漏洞12个、4个和2个,呈现受影响漏洞数量递减的趋势。同时,在历年的IIS版本漏洞中,IIS6.0、IIS5.1、IIS7.5和IIS7.0受影响的漏洞数居前四位。
二、IIS漏洞分析
千里目实验室针对IIS近十几年(年以后)的35个漏洞进行和整理和分析,IIS漏洞主要分布在缓冲区溢出、认证绕过、DOS拒绝服务、代码执行和信息泄露,其中以MS15-远程代码执行漏洞最为严重。
由上表可以看到,IIS历年漏洞主要以远程漏洞为主,占漏洞总数85.71%,本地漏洞有5个,占漏洞总数14.29%。
其中5个本地漏洞分别是:
(MS12-)MicrosoftIIS密码信息泄露漏洞CVE--
MicrosoftIIS源代码泄露漏洞CVE--
(MS17-)MicrosoftInternet信息服务器跨站脚本漏洞CVE--
(MS16-)IISWEBDAV特权提升漏洞CVE-2-
(MS08-)MicrosoftIIS文件更改通知本地权限提升漏洞CVE--
以下主要针对IIS漏洞中可以远程利用的重点漏洞做分析和复现:
1.缓冲区溢出漏洞
1.1(MS09-)MicrosoftIISFTPd服务NLST命令栈缓冲区CVE--
1.1.1漏洞描述
MicrosoftIIS内嵌的FTP服务器中存在基于栈的缓冲区溢出漏洞。
如果远程攻击者对带有特制名称的目录发布了包含有通配符的FTPNLST(NAMELIST)命令的话,就可以触发这个溢出,导致执行任意代码。
仅在攻击者拥有写访问权限的情况下才可以创建带有特殊名称的目录。
1.1.2漏洞分析和复现
漏洞影响版本:IIS5.0、IIS5.1、IIS6.0
漏洞分析:
IIS包括用于通过TCP计算机网络交换和操作文件的FTP服务器服务。
它默认侦听端口21以获取来自FTP客户端的传入连接。
IIS支持的FTP命令之一是名称列表(NLST)命令。
此命令用于将目录列表从服务器传输到客户端。该命令的语法如下:
NLSTSPACEpathnameCRLF
此命令中的路径名应指定目录或其他特定于系统的文件组描述符;在pathname为NULL时,使用当前目录。
NLST命令可以使用诸如“*”之类的通配符来引用多个路径。
MicrosoftInternet信息服务(IIS)中存在缓冲区溢出漏洞。
该漏洞是由于处理NLSTFTP命令时边界检查不足造成的。
当FTP用户请求包含通配符的路径名过长的目录列表时,易受攻击的代码会将目录路径名复制到0x9F()字节的基于堆栈的缓冲区中,而不进行边界验证。提供包含大于0x9F()字节的路径名会使堆栈缓冲区溢出,从而可能会覆盖关键进程数据(如函数返回地址)。
远程身份验证的攻击者可以通过连接到易受攻击的IISFTP服务器并向目标服务器发送恶意NLST命令来利用此漏洞。
成功利用将导致使用System权限执行代码。如果代码执行攻击不成功,可能会导致受影响的FTP会话异常终止。
注意:为了成功利用此漏洞,NLST命令中指定的长路径名必须存在于目标系统上。因此,利用此漏洞的攻击可能伴随着MKD命令的使用。
漏洞类型:可远程利用,存在缓冲区溢出漏洞,可触发代码执行
漏洞复现:
复现环境:WinXPSP3x64专业版,默认IIS5.1
1.搭建好IISFTP靶机环境,测试anonymous默认匿名用户可用,且可创建和读写目录;
2.测试正常MKD创建和NLST正常长度的目录的功能是否正常:
以上somefolder为FTP服务器上正常长度文件夹,NLST命令执行成功并返回结果提示。3.测试创建和NLST异常目录长度,服务器返回,打开数据连接,成功执行命令。
漏洞缓解:
1.此漏洞仅在IIS5.x和6.0版本存在,升级IIS版本或者更新MS09-补丁即可规避此漏洞;
2.此漏洞成功利用的条件主要包括:IIS启用FTP服务且存在FTP默认站点、攻击者登陆FTP的账户有创建和读写文件夹的权限。
2.DOS拒绝服务漏洞
2.1(MS07-)MicrosoftIIS5.1远程缓冲区溢出漏洞CVE--
2.1.1漏洞描述
MicrosoftIIS处理某些畸形的HTTP请求时存在漏洞,远程攻击者可能利用此漏洞对服务器进行拒绝服务攻击。
远程攻击者可以使用WEB浏览器之类的工具发送特制的匿名HTTP请求导致IIS服务进程inetinfo.exe崩溃。
仅在文件夹的"执行权限"设置为"脚本和可执行程序"时才会出现这个漏洞。有漏洞的虚拟文件夹包括"/_vti_bin"等。
此外如果提交恶意请求还可能会触发缓冲区溢出,导致在用户系统上执行任意代码。
2.1.2漏洞分析和复现
漏洞影响版本:IIS5.1
漏洞分析:
IIS包括一个能够提供静态和动态内容的Web服务器组件。IIS的Web组件提供Web应用程序功能。
通过Web应用程序,服务器可以在后端执行脚本,并将生成的内容提供给请求客户端。
客户端可以请求许多可执行资源,例如Perl脚本、ActiveServerPages(ASP)或动态链接的库资源。用于提供动态动态内容的虚拟目录需要配置后台执行脚本的权限。
MicrosoftInternetInformationServices产品的HTTP服务器组件中存在可远程利用的拒绝服务漏洞。
在特殊情况下,当多次请求动态链接的库资源时,受影响的服务可能会因此而关闭。由于服务器无法处理格式错误的URL请求,因此创建了该漏洞。
恶意请求必须满足几个条件才能触发此漏洞。请求URL必须包含来自以下字符的有限集合中的字符(注意,不可见字符需要使用以下字符范围的URL编码形式):
?%3f
?”
?*
?:
?
?
?字符%01-%1f的范围
请求还必须包含波形符“~”字符,后面跟一个十进制数字。
漏洞类型:可远程利用,可触发DOS攻击
漏洞复现:
复现环境:WinXPSP3x64专业版,默认IIS5.1
1.配置IIS默认