首页 -> 安全研究

安全研究

安全公告
绿盟科技安全公告(SA2001-06)

NSFOCUS安全小组(security@nsfocus.com)
http://www.nsfocus.com

Microsoft IIS ssinc.dll缓冲区溢出漏洞

发布日期:2001-08-17

CVE ID:CVE-2001-0506
BUGTRAQ ID:3190

受影响的软件及系统:
====================
- Microsoft IIS 4.0
- Microsoft IIS 5.0

综述:
======
NSFOCUS安全小组发现微软IIS 4.0/5.0所带的一个动态链接库(ssinc.dll)在处理包含文件时存在一个缓冲区溢出漏洞,攻击者可能利用这个漏洞获取SYSTEM权限。

分析:
======
微软IIS支持SSI(Server Side Include)功能。ssinc.dll就是一个SSI解释器。默认情况下,扩展名 .stm、.shtm 和 .shtml 被映射到解释程序(Ssinc.dll)。

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

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

ssinc.dll在处理"#include"指令时,会将shtml文件所在的目录名加在包含文件的前面形成一个新的字符串。

例如:

创建一个"test.shtml"文件,将其保存在"wwwroot/abcd/"目录下。"test.shtml"的内容如下:

<!--#include file="ABCD"-->

那么生成的新字符串就是"/abcd/ABCD"。ssinc.dll会将这个字符串拷贝到一个0x804(2052)字节长的缓冲区去。

ssinc.dll在从test.shtml中获取包含文件名时,检查了包含文件名的长度,如果发现超过0x801字节,就截断为0x801字节,并在末尾添加'\0'。这样,包含文件的名字最长为0x802(2550)字节,包括最后的'\0'。

但是,它没有检查在增加了当前目录名后的新字符串的长度。因此,如果将包含文件名设置成一个超过0x801字节的字符串,并将"test.shtml"放到一个长度为9字节的目录中,那么新字符串的总长度就会是

9 + 2(两个'/'字符) + 0x801 = 0x80C (2060)字节

这将触发一个缓冲区溢出,完全覆盖堆栈中保存的EIP(末尾的'\0'将会覆盖第一个形参)。

这时ssinc.dll运行在SYSTEM环境下,如果攻击者小心地构造溢出数据,就可能改变程序流程,并以SYSTEM权限执行任意代码。

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

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

测试方法:
==========
1. 创建一个文件名为"test.shtml",文件内容包括如下内容:

   <!--#include file="AAAA[...]AA"-->

   'A'的数目应该大于2049个。

2. 在web根目录下创建一个目录,例如"a"。
   将"test.shtml"拷贝到"a"目录下

3. 通过web浏览器请求"test.shtml":
   http://webhost/a/test.shtml

4. IIS会返回一个空白页面,这说明溢出已经发生了。这时实际上只是用末尾的'\0'覆盖了EBP的最后一个字节。
  
   作为对照,如果将包含文件的名字设置为一个较短的名字,例如'AA'。
   发送请求时,IIS会返回处理 SSI 文件 '/a/AA' 错误的信息。

解决方法:
==========
1、禁止不可信用户对web目录拥有写权限
2、如果您不需要SSI功能,删除.shtml、.shtm、.stm映射

厂商状态:
==========
2001.6.11  我们将这个问题通报给了微软公司。
2001.6.11  微软告知重现了这个问题
2001.8.15  微软已就此发布了一个安全公告(MS01-044)以及相应补丁

您可以在下列地址看到微软安全公告的详细内容:

http://www.microsoft.com/technet/security/bulletin/ms01-044.asp

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

. Microsoft IIS 4.0:
  http://www.microsoft.com/Downloads/Release.asp?ReleaseID=32061

. Microsoft IIS 5.0:
  http://www.microsoft.com/Downloads/Release.asp?ReleaseID=32011

声 明
==========

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技
============

绿盟科技(NSFOCUS Co., Ltd.)是中国网络安全领域的领导企业,致力于网络和系统安全问题的研究、高端网络安全产品的研发、销售与网络安全服务,在入侵检测/保护、远程评估、 DDoS攻击防护等方面提供具有国际竞争能力的先进产品,是国内最具安全服务经验的专业公司。有关绿盟科技的详情请参见: http://www.nsfocus.com

© 2024 绿盟科技