首页 -> 安全研究

安全研究

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

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

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

发布日期:2001-06-25

CVE ID:CVE-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.net/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

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

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

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

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

© 2024 绿盟科技