IIS攻击与日志不管在操作系统上进行了多么精心的配置,不管网络的安全根基打的多么的好,运行其上的脆弱的应用程序总是能轻松的将它们化为乌有。
INTERNET信息服务(IIS)是WINDOWS 2000服务器上应用最广泛的服务,作为微软的主流WEB服务器,IIS遍布全球的服务器上,因此,几乎所有的IIS漏洞都可能成为一次全球性蠕虫袭击的源头,漏洞发现----蠕虫来袭,几乎成了WINDOWS 2000服务器大灾难的一般规律,尽管发现的漏洞都已经一一提供了补丁,但是还是让很多网管和媒体手忙脚乱一阵,而我们要做好IIS的安全防范,日志是很重要的安全检查手段之一,下面,我们有必要首先了解一些IIS攻击的基本知识。
知识点之一:HTTP请求过程简介浏览器一般是图形界面的,因此我们图形界面后面所发生的详细细节。
实际上,它的请求过程是这样的:首先,你看到的网址通过DNS来转换成的IP地址,你的计算机会同这个IP地址建立TCP连接,连接建立后,就开始HTTP请求过程了,以下是一个完整的HTTP请求过程,首先我们点击/download/Tue Aug 12 11:47:28 2003 正在连接:80Tue Aug 12 11:47:28 2003 正在连接 [IP=66.111.34.91:80]Tue Aug 12 11:47:29 2003 已连接.Tue Aug 12 11:47:29 2003 GET /download/ HTTP/1.1Tue Aug 12 11:47:29 2003 Host: Tue Aug 12 11:47:29 2003 Accept: */*Tue Aug 12 11:47:29 2003 Referer: /download/Tue Aug 12 11:47:29 2003 User-Agent: Mozilla/4.0 (compatible; MSIE 5.00;Windows 98)Tue Aug 12 11:47:30 2003 HTTP/1.1 200 OKTue Aug 12 11:47:30 2003 Date: Tue, 12 Aug 2003 04:46:42 GMTTue Aug 12 11:47:30 2003 Server: ApacheTue Aug 12 11:47:30 2003 Last-Modified: Mon, 09 Jun 2003 02:47:17 GMTTue Aug 12 11:47:30 2003 Content-Type: text/plain由于HTTP是基于文本,所以它非常容易看懂,在浏览器里我们输入的请求是这样的:/download/这是在请求打开虚拟目录里的DOWNLOAD目录,而这个虚拟目录实际上影射的是系统里的一个实际目录:比如说是c:\wwwroot\download\所以在服务器看来,这个请求就是这样的:GET /download/ HTTP/1.1这里举的例子是请求一个目录,请求一个文件也是一样的,比如说我们请求的是:/download/index.html在服务器看来是:GET /download/index.html HTTP/1.1如果这个文件是存在的,而且服务器运行正常,那么服务器就会返回index.html的数据,并通过浏览器对数据的解析,呈现出我们平时看到的页面,在成功的获取了文件的数据的情况下,服务器会产生HTTP 200 OK的应答记录。
如果这个文件不存在就会产生404 notfound,如果权限不够就会产生403 access denied,其他的HTTP常见应答代码还包括:202 Accepted 已经接受请求,但处理尚未完成;301 Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL;401 Unauthorized 客户试图未经授权访问受密码保护的页面。
应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求;414 Request URI Too Long URI太长;500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。
如果想得到一份完整的HTTP应答代码列表,可以在GOOGLE里搜索,网络上很多地方可以提供该列表。
知识点之二:URL的十六进制编码HTTP在URL的请求中允许使用十六进制编码来代替输入的ASCII字符。
常用的ASCII字符和十六进制编码的对应表:ASCII 十六进制编码/正斜线%2F\反斜线%5C空格%20+加号%2B.句点%2E?问号%3C:冒号%3A例如:对于/data下的“BAK DA TA FILE.DBA”的十六进制表达方式就是:/data/bak%20data%20file.dba知识点之三:netcat的使用netcat有”网络瑞士军刀“之称,我们在这里主要介绍一下它在WEB攻击中的应用。
首先,netcat允许原始的HTTP输入,这与IE等浏览器不同,IE浏览器会删除额外的输入,例如“../../”,这会禁止部分遍历攻击。
其次,netcat也允许原始的HTTP输出,这样得到的服务器应答将会更全面、更细致,而浏览器则只会显示HTML那些在源码里注释过的内容,忽略了更重要的信息。
下面我们来看一个例子:Microsoft Windows [版本5.2.3790](C) 版权所有1985-2003 Microsoft Corp.C:\Documents and Settings\Administrator>e:E:\>E:\>nc -vv 192.168.0.100 80192.168.0.100: inverse host lookup failed: h_errno 11004: NO_DATA(UNKNOWN) [192.168.0.100] 80 (http) openget / http/1.1HTTP/1.1 400 Bad RequestServer: Microsoft-IIS/5.0Date: Mon, 15 Dec 2003 03:51:30 GMTContent-Type: text/htmlContent-Length: 87The parameter is incorrect.sent 16, rcvd 224: NOTSOCKE:\>我们可以看到建立了连接以后,目标会告诉我们80端口开放,然后我们输入get /http/1.1来请求WWWROOT里的默认文件,回车。
于是原始的HTTP应答便完整的显示在了屏幕上,包括IIS的类型和完整的脚本输出。
如果为了节省时间,提高速度,可以将需要输入的内容事先作成一个TXT文本,比如说文件名是1.txt,然后使用E:\>nc -vv 192.168.0.100 80 < 1.txt可以得到相同的返回内容。
更多的有趣内容可以通过nc -h命令了解到,需要注意的一点是:netcat不能连接到被SSL保护的WEB服务器。
目前最有威胁的IIS5攻击有两种,一种是IIS5缓冲区溢出,另外的一种是IIS拒绝服务。
IIS5缓冲区溢出我曾经粗略做了一个统计,WINDOWS涉及到溢出的漏洞稍微多于LINUX,而WINDOWS 的大量的溢出漏洞与IIS有关,所以没有IIS的WINDOWS的整体安全性绝对要高于LINUX,这几句话涉及到了WINDOWS与LINUX之争,所以就不再多说了,免得又引起无谓的“口水战”。
熟悉缓冲区溢出攻击必须对溢出的工作方式有所了解,由于本身溢出就是一个很大的课题,所以我们只简单的介绍一下:如果一个程序没有限制输入的字符长度或者检查输入长度是否正确,就会发生溢出。
一个没有进行限制的输入就有可能因为输入长度的问题“溢出”到CPU运行栈的另一部分去,如果这个输入被精心的设计过,那么它可以被用来运行指定的代码。
而IIS运行的帐户环境是SYSTEM,所以通过溢出得到的是SYSTEM权限,而SYSTEM权限是系统内的最高技术权限,因此IIS缓冲区溢出造成的灾难往往是致命的。
IPP缓冲区溢出这个漏洞比较早了,但是一直私下里认为这是一个很典型的IIS溢出漏洞攻击,所以又翻了出来,这个漏洞存在于处理.printer文件的ISAPI过滤器(c:\winnt\system32\msw3prt.dll),它为WIN2000提供INTERNET打印协议,即IPP 的支持,可实现对网络打印机的基于WEB的控制,在.printer ISAPI请求中,在HTTP HOST:头中发送420字节的缓冲区,就会发生溢出,如下:GET /NULL.PRINTER HTTP/1.0HOST:[BUFFER为420个字符]发生溢出后IIS异常终止,但是为了2000为了保障WEB的弹性运行,这时会自动重新运行IIS(inetinfo.exe),在后面提供的日志里你可以充分的注意到这一点。
互联网上流行的最成功的一个IPP漏洞利用工具是IIS5HACK,不过最近的这个工具的版本好象都被加了木马。
操作如下:E:\>iis5hack 192.168.0.87 80 0 1256iis5 remote .printer overflow. writen by sunxfor test only, dont used to hack, :pconnecting...sending...checking...Now you can telnet to 1256 portgood luck :)E:\>这时使用“telnet 192.168.0.87 1256”就可以连接到目标服务器上,我们可以看到目标服务器系统装在H盘上。
Microsoft Windows 2000 [V ersion 5.00.2195](C) 版权所有1985-1998 Microsoft Corp.H:\WINNT\system32>在这个过程里,IIS日志里一般不会出现记录,但是在事件查看器里的系统日志项目里将会出现IIS各个组建停止的信息,安全项目里也将出现以下的日志:事件类型: 成功审核事件来源: Security事件种类: 系统事件事件ID: 515日期: 2003-12-16事件: 15:34:13用户: NT AUTHORITY\SYSTEM计算机: 123-DK8KIFN4NZR描述:受信任的登录过程已经在本地安全机制机构注册。
将信任这个登录过程来提交登录申请。