首页 -> 安全研究

安全研究

安全漏洞
Microsoft IIS ssinc.dll长文件名缓冲区溢出漏洞(MS03-018)

发布日期:2003-05-27
更新日期:2003-06-03

受影响系统:
Microsoft IIS 4.0
    - Microsoft Windows NT 4.0
Microsoft IIS 5.0
    - Microsoft Windows 2000 Server SP2
    - Microsoft Windows 2000 Server SP1
    - Microsoft Windows 2000 Server
    - Microsoft Windows 2000 Professional SP2
    - Microsoft Windows 2000 Professional SP1
    - Microsoft Windows 2000 Professional
    - Microsoft Windows 2000 Datacenter Server SP2
    - Microsoft Windows 2000 Datacenter Server SP1
    - Microsoft Windows 2000 Datacenter Server
    - Microsoft Windows 2000 Advanced Server SP2
    - Microsoft Windows 2000 Advanced Server SP1
    - Microsoft Windows 2000 Advanced Server
Microsoft IIS 5.1
    - Microsoft Windows XP Professional SP1
    - Microsoft Windows XP Professional
    - Microsoft Windows XP Home SP1
    - Microsoft Windows XP Home
    - Microsoft Windows XP 64-bit Edition SP1
    - Microsoft Windows XP 64-bit Edition
不受影响系统:
Microsoft IIS 6.0
    - Microsoft Windows 2003 Web Edition
Microsoft IIS 6.0
    - Microsoft Windows 2003 Standard Edition
Microsoft IIS 6.0
    - Microsoft Windows 2003 Enterprise Edition 64-bit
Microsoft IIS 6.0
    - Microsoft Windows 2003 Enterprise Edition
Microsoft IIS 6.0
    - Microsoft Windows 2003 Datacenter Edition 64-bit
Microsoft IIS 6.0
    - Microsoft Windows 2003 Datacenter Edition
描述:
BUGTRAQ  ID: 7734
CVE(CAN) ID: CVE-2003-0224

Microsoft IIS 5.0(Internet Infomation Server 5)是Microsoft Windows 2000自带的一个网络信息服务器。IIS支持SSI(Server Side Include)功能。ssinc.dll就是一个SSI解释器。默认情况下,扩展名 .stm、.shtm 和 .shtml 被映射到解释程序(ssinc.dll)。

IIS 4.0/5.0所带的一个动态链接库(ssinc.dll)在处理包含文件时存在一个缓冲区溢出漏洞,本地攻击者可能利用这个漏洞获取Local System权限。

SSI支持"#include"指令,通常的使用方式是:

<!--#include file="文件名"-->

ssinc.dll在处理"#include"指令时,会首先试图获取该shtml文件的物理路径,因此它会将URI请求拷贝到一个固定大小的缓冲区中,例如当请求下列shtml文件时:
http://iishost/abc/test.shtml

它会将"/abc/test.shtml"保存到一个固定大小的缓冲区中。由于在拷贝时没有对shtml文件名的长度进行检查,导致一个栈缓冲区溢出。

NSFocus安全小组曾发现过一个类似的问题,参见
http://www.nsfocus.net/index.php?act=advisory&do=view&adv_id=17,
相应的微软安全公告为
http://www.microsoft.com/technet/security/bulletin/ms01-044.asp。

本漏洞是在原来的那个漏洞之前发生的。

IIS检测了过长的shtml文件名以避免缓冲区溢出,然而遗憾地是IIS的处理方法是将长文件名截短至合法长度然后试图打开它,而打开之后ssinc.dll仍然会使用初始的URI进行拷贝。因此通过创建一个特定长度的WEB文件就有可能绕过这个检查,然后再请求一个长文件名的shtml文件就会产生溢出,可导致IIS停止响应。如果精心地构造溢出数据,就可能改变程序流程,并以local System权限执行任意代码。

攻击者要进行攻击需要有两个条件:

1. 攻击者需要有权限在web目录下创建文件。
2. 攻击者需要能够通过web服务访问创建的文件。

<*来源:Nsfocus Security Team (security@nsfocus.com
  
  链接:http://www.microsoft.com/technet/security/bulletin/MS03-018.asp
*>

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

1、禁止不可信用户对web目录拥有写权限
2、如果您不需要SSI功能,删除.shtml、.shtm、.stm映射
3、安装微软提供的IIS Lockdown工具:
   http://www.microsoft.com/downloads/details.aspx?familyid=dde9efc0-bb30-47eb-9a61-fd755d23cdec&displaylang=en

厂商补丁:

Microsoft
---------
Microsoft已经为此发布了一个安全公告(MS03-018)以及相应补丁:
MS03-018:Cumulative Patch for Internet Information Service (811114)
链接:http://www.microsoft.com/technet/security/bulletin/MS03-018.asp

补丁程序可以在下列地址下载:

http://microsoft.com/downloads/details.aspx?FamilyId=2F5D9852-4ADD-44F8-8715-AC3D7D7D94BF

浏览次数:4998
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障