IIS攻击与日志(一)

来源:岁月联盟 编辑:zhuzhu 时间:2005-09-30
IIS攻击与日志


不管在操作系统上进行了多么精心的配置,不管网络的安全根基打的多么的好,运行其
上的脆弱的应用程序总是能轻松的将它们化为乌有。


INTERNET信息服务(IIS)是WINDOWS 2000服务器上应用最广泛的服务,作为微软的主
流WEB服务器,IIS遍布全球的服务器上,因此,几乎所有

的IIS漏洞都可能成为一次全球性蠕虫袭击的源头,漏洞发现----蠕虫来袭,几乎成了
WINDOWS 2000服务器大灾难的一般规律,尽管发现的漏洞

都已经一一提供了补丁,但是还是让很多网管和媒体手忙脚乱一阵,而我们要做好IIS
的安全防范,日志是很重要的安全检查手段之一,下面,

我们有必要首先了解一些IIS攻击的基本知识。



知识点之一:HTTP请求过程简介

浏览器一般是图形界面的,因此我们图形界面后面所发生的详细细节。
实际上,它的请求过程是这样的:首先,你看到的网址通过DNS来转换成的IP地址,你
的计算机会同这个IP地址建立TCP连接,连接建立后,就

开始HTTP请求过程了,

以下是一个完整的HTTP请求过程,首先我们点击http://www.chinaload.com/download/

Tue Aug 12 11:47:28 2003 正在连接 www.chinaload.com:80
Tue Aug 12 11:47:28 2003 正在连接 www.chinaload.com [IP=66.111.34.91:80]
Tue Aug 12 11:47:29 2003 已连接.
Tue Aug 12 11:47:29 2003 GET /download/  HTTP/1.1
Tue Aug 12 11:47:29 2003 Host: www.chinaload.com
Tue Aug 12 11:47:29 2003 Accept: */*
Tue Aug 12 11:47:29 2003 Referer: http://www.chinaload.com/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 OK
Tue Aug 12 11:47:30 2003 Date: Tue, 12 Aug 2003 04:46:42 GMT
Tue Aug 12 11:47:30 2003 Server: Apache
Tue Aug 12 11:47:30 2003 Last-Modified: Mon, 09 Jun 2003 02:47:17 GMT
Tue Aug 12 11:47:30 2003 Content-Type: text/plain

由于HTTP是基于文本,所以它非常容易看懂,在浏览器里我们输入的请求是这样的:
http://www.chinaload.com/download/
这是在请求打开虚拟目录里的DOWNLOAD目录,而这个虚拟目录实际上影射的是系统里的
一个实际目录:比如说是c:/wwwroot/download/

所以在服务器看来,这个请求就是这样的:

GET /download/  HTTP/1.1

这里举的例子是请求一个目录,请求一个文件也是一样的,比如说我们请求的是:
http://www.chinaload.com/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

例如:对于www.bbs.com/data下的“BAK DATA FILE.DBA”的十六进制表达方式就是:

http://www.bbs.com/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 80
192.168.0.100: inverse host lookup failed: h_errno 11004: NO_DATA
(UNKNOWN) [192.168.0.100] 80 (http) open
get / http/1.1

HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/5.0
Date: Mon, 15 Dec 2003 03:51:30 GMT
Content-Type: text/html
Content-Length: 87

<html><head><title>Error</title></head><body>The parameter is incorrect.
</body>
</html>sent 16, rcvd 224: NOTSOCK

E:/>

我们可以看到建立了连接以后,目标会告诉我们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服务器。

(待续)