Microsoft FrontPage 2000服务器扩展缓冲区溢出漏洞

/ns/ld/win/data/20010626110018.htm

Microsoft FrontPage 2000服务器扩展缓冲区溢出漏洞

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


发布日期: 2001/06/25

CVE CAN ID : CAN-2001-0341
BUGTRAQ ID : 2841

受影响的软件及系统:
==================

Microsoft FrontPage 2000 Server Extensions
- Microsoft IIS 4.0
- Microsoft IIS 5.0

综述:
=====

NSFOCUS安全小组发现微软FrontPage 2000 服务器扩展软件包中的一个程序存在
一个缓冲区溢出漏洞。远程攻击者可能利用这个漏洞执行任意代码。

漏洞分析:
==========

微软FrontPage 2000 服务器扩展软件包中带了一个动态链接库:fp30reg.dll.
它存在一个缓冲区溢出漏洞。当向fp30reg.dll提交一个包含超过258字节的长
URL请求时,将触发一个基于堆栈的缓冲区溢出。成功地利用这个漏洞,攻击
者可以在被攻击的主机上远程执行任意代码。

如果fp30reg.dll收到到一个它不理解的参数时,它会返回一个错误信息给请求者:

"The server is unable to perform the method [用户提供的参数] at this
time"

这个错误信息被保存在堆栈中的一个缓冲区中。fp30reg.dll调用
USER32.wsprintfA()来构造返回消息,由于没有检查用户输入数据的长度,攻击
者可以重写某些重要的内存地址以改变程序流程,例如:异常结构或者保存的返
回地址等。

USER32.wsprintfA()用到的格式串为:

<HEAD><TITLE>HTTP Error 501</TITLE></HEAD><BODY><H1>NOT IMPLEMENTED</H1>
The server is unable to perform the method <b>%s</b> at this time.</BODY>

它也被保存在堆栈中,而且它的地址在(目标缓冲区地址 + 256字节)处,因此在
溢出发生时,格式串会被重写,攻击者必须设法使拷贝顺利完成。

如果攻击者使用随机数据,可导致IIS停止响应。
对于IIS 5.0, IIS服务会自动重新启动。而对于IIS 4.0,需要手工重启服务。

成功地利用这个漏洞,
在IIS 5.0中,攻击者可以获取IWAM_machinename用户的权限.
在IIS 4.0中,攻击者可以获取Local SYSTEM权限。

注意:

fp30reg.dll在另外一个目录:
"\Program Files\Common Files\Microsoft Shared\Web Server Extensions\40\bin\"
下有一份拷贝,名字为: fp4areg.dll.

攻击者也可以利用unicode等漏洞来访问这个程序。


漏洞测试:
==========

如果只提交258字节长的参数,溢出不会发生:

$ curl http://xx.xx.xx.xx/_vti_bin/_vti_aut/fp30reg.dll?`perl -e 'print "A"x258'`

<HEAD><TITLE>HTTP Error 501</TITLE></HEAD><BODY><H1>NOT IMPLEMENTED</H1>
The server is unable to perform the method <b>AAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAA</b> at this time.</BODY>

但是,如果长度超过258字节,就将触发缓冲区溢出:

$ curl http://xx.xx.xx.xx/_vti_bin/_vti_aut/fp30reg.dll?`perl -e 'print "A"x259'`

<html><head><title>Error</title></head><body>The remote procedure call failed.
</body></html>

我们也提供了一个演示程序:
http://www.nsfocus.com/proof/fpse2000ex.c

临时解决方法:
===========

删除或禁止任何人访问fp30reg.dll和fp4areg.dll

厂商状态:
==========

2001.4.13 我们将这个问题通报给了微软公司。
2001.4.15 微软告知重现了这个问题
2001.5.18 微软提供了补丁程序供测试,测试发现此问题已被解决
2001.6.21 微软已就此发布了一个安全公告(MS01-035)以及相应补丁

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

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

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

. Microsoft Windows NT 4.0:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=31038

. Microsoft Windows 2000:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=30727



附加信息:
==========

通用漏洞披露(Common Vulnerabilities and Exposures)组织CVE已经为此问题
分配了一个候选名 CAN-2001-0341。此名字是为了收录进CVE列表做候选之用,
(http://cve.mitre.org)CVE列表致力于使安全问题的命名标准化。候选名在被
正式加入CVE列表之前可能会有较大的变化。

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

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

关 于 我 们
===========

中联绿盟信息技术(北京)有限公司成立于2000年3月,是国内专业从事网络安
全服务的高科技企业,致力于网络安全技术研究、网络安全产品开发,提供由网
络系统入侵检测、作系统安全、网络服务安全、程序安全为重点的整体网络安
全方案,并协助建立严密的网络安全制度,提高国内的网络安全水平,为
客户提供强有力的安全保障。

  中联绿盟信息技术(北京)有限公司成立后,其安全技术研究部门对国内
外最新的网络系统安全漏洞进行最及时和最紧密的跟踪,对重大安全问题更成
立专项研究小组进行技术攻关,取得了一系列在国内、甚至是国外处于领先水
平的优秀成果。安全产品开发部门具有开发网络安全评估系统、网络/系统防火
墙、入侵监测系统、内容过滤系统等高技术含量网络安全产品的技术实力和经
验,已经推出了具有国际领先水平的安全产品系列。

  中联绿盟信息技术(北京)有限公司定位于网络系统安全集成商,提供全
面的网络安全整体解决方案、先进的网络安全技术服务和优秀的网络安全产品。

中联绿盟信息技术(北京)有限公司联系方式:

北京总部:
地址:北京朝阳区北三环东路8号静安中心8072室
邮编:100028
电话:010-64601502
传真:010-64602097
email:webmaster@nsfocus.com

上海分公司:
地址:上海四川中路126弄18号元芳商务中心202B室
邮编:200001
电话:021-33130516


广州分公司:
地址:广州市环市东路339号广东国际大厦A附楼24B
邮编:510095
电话:020-83311175, 020-83311176
传真:020-83319025


&copy;版权所有 1999-2001,中联绿盟信息技术公司