首页 -> 安全研究

安全研究

安全漏洞
Microsoft FrontPage 2000服务器扩展fp30reg.dll远程缓冲区溢出漏洞(MS01-035)

发布日期:2001-07-18
更新日期:2001-07-18

受影响系统:
Microsoft FrontPage 2000 Server Extensions
    - Microsoft Windows NT 4.0 SP6
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows NT 4.0 SP4
    - Microsoft Windows NT 4.0 SP3
    - Microsoft Windows NT 4.0 SP2
    - Microsoft Windows NT 4.0 SP1
    - Microsoft Windows NT 4.0
    - Microsoft Windows 2000 Server SP2
    - Microsoft Windows 2000 Server SP1
    - Microsoft Windows 2000 Server
描述:
BUGTRAQ  ID: 2906
CVE(CAN) ID: CVE-2001-0341

Microsoft FrontPage 2000服务器扩展是Microsoft公司开发的用于加强IIS Web服务器的功能的软件包。

FrontPage 2000服务器扩展软件包中带了一个动态链接库:fp30reg.dll。NSFOCUS安全小组发现它存在一个缓冲区溢出漏洞。如果成功地利用这个漏洞,远程攻击者可以在被攻击的主机上执行任意指令。

当向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等漏洞来访问这个程序。

<*来源:Nsfocus Security Team (security@nsfocus.com
  
  链接:http://www.nsfocus.com/sa01-03.htm
        http://www.microsoft.com/technet/security/bulletin/MS01-035.asp
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

Nsfocus Security Team (security@nsfocus.com)提供了如下测试方法:

如果只提交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>

Nsfocus Security Team 也提供了一个演示程序:
http://www.nsfocus.net/proof/fpse2000ex.c

建议:
临时解决方法:

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

* FrontPage 2000 服务器扩展会被安装在下列目录(缺省在C:\)中:
"\Program Files\Common Files\Microsoft Shared\Web Server Extensions\40\"
您可以通过"Internet 服务管理器"检查_vti_bin目录的路径来得到准确的路径名。

如果您发现"\Program Files\Common Files\Microsoft Shared\Web Server Extensions\40\isapi\_vti_aut\fp30reg.dll"文件存在的话,那么您的系统就可能被直接进行攻击。我们建议您删除此文件或者重新设置权限禁止任何人执行它。

* 我们建议您将"\Program Files\Common Files\Microsoft Shared\Web Server Extensions\40\bin\fp4areg.dll"的权限也设置为禁止任何人执行。

* 如果您不需要FrontPage 2000服务器扩展,我们强烈建议您完全删除此服务。方法是:

1、打开一个命令行窗口,进入FPSE所在的驱动器,默认是C:\
2、cd \Program Files\Common Files\Microsoft Shared\Web Server Extensions\40\bin
3、fpsrvadm -o uninstall -p all

这个漏洞是Nsfocus安全小组发现的并提交给微软的,详细情况请参考Nsfocus安全公告:

http://www.nsfocus.com/sa01-03.htm

厂商补丁:

Microsoft
---------
Microsoft已经为此发布了一个安全公告(MS01-035)以及相应补丁:
MS01-035:FrontPage Server Extension Sub-Component Contains Unchecked Buffer
链接: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

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