微软Windows 2000 IIS 5的打印ISAPI扩展接口建立了.printer扩展名到msw3prt.dll的映射关系,默认情况下该映射存在。当远程用户提交对.printer的URL请求时,IIS 5调用msw3prt.dll解释该请求。由于msw3prt.dll缺乏足够的缓冲区边界检查,远程用户可以提交一个精心构造的针对.printer的URL请求,其Host:域包含大约420字节的数据,此时在msw3prt.dll中发生典型的缓冲区溢出,潜在允许执行任意代码。溢出发生后,Web服务停止响应,Windows 2000可以检查到Web服务停止响应,从而自动重启它,因此系统管理员很难意识到受到攻击。默认情况下,IIS 5.0服务器存在一个后缀为printer的应用程序映射,这个映射使用位于\WINNT\System32\下的名为 msw3prt.dll 的动态库文件。这个功能是用于基于Web控制的网络打印的,是Windows 2000为Internet Printing Protocol(IPP)协议而设置的应用程序功能。但是这个映射存在一个缓冲区溢出错误,可以导致inetinfo.exe出错,允许入侵者通过Web获取服务器的管理权限,入侵者制造一个 .printer 的ISAPI请求,当Http host参数的值达到420个字符时就会发生缓冲区溢出:
GET /NULL.printer HTTP/1.0
Host: [buffer]
这时,Web Server会停止响应。Windows 2000操作系统发现Web异常停止后,会自动重启。通过构造包含适当的Shell Code的脚本,入侵者可以以system用户的身份,不停地远程通过Web执行任何指令。这个漏洞的危害比IISHACK更大,原因是由于IIS 4.0不自动重启,用IISHACK的入侵者只能获得一次Shell,而通过这个漏洞入侵者可以不停地利用。目前Internet上已经有一个exploit程序,可以绑定系统的cmd.exe程序,自由地执行指令。
临时解决方法:立刻删除.printer映射,如图4-14所示。
图4-14 删除printer脚本映射
厂商补丁程序:
微软已经为此发布了一个安全公告(MS01-023)以及相应补丁程序程序:
http://www.microsoft.com/technet/security/bulletin/MS01-023.asp
补丁程序下载:
Microsoft Windows 2000:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=29321
Microsoft Windows 2000 Datacenter Server:
注意:
由于Windows 2000数据中心服务器的补丁程序因硬件不同,须向原设备制造商索取。
漏洞介绍:Windows 2000运行到登录验证的提示界面时,任何用户都可以打开各种输入法的帮助栏,并且可以利用其具有的一些功能访问文件系统。这也就是说可以绕过Windows 2000的用户登录验证机制,并且能以最高管理员权限访问整个系统,所以说这个漏洞的危害性是很大的,而且当我们进入系统后,还可以利用Terminal Server远程通信这个漏洞对系统进行攻击。默认的Windows 2000系统自带的输入法中有这个漏洞的是:智能ABC、微软拼音、内码、全拼、双拼和郑码输入法。
漏洞修补:
(1) 把不需要的输入法删除掉,例如郑码等。
(2) 删除输入法的帮助文件。这些帮助文件通常在Windows 2000的安装目录下(如Winnt\help目录下,对应的帮助文件是:
WINIME.CHM,输入法操作指南
WINSP.CHM,双拼输入法帮助
WINZM.CHM,郑码输入法帮助
WINPY.CHM,全拼输入法帮助
WINGB.CHM,内码输入法帮助
(3) 微软公司对于此问题发布了MS00-069安全公告,并在因特网上给出了简体中文Windows 2000和英文版Windows 2000的补丁程序。
……