Twenty Year Anniversary

RUS-CERT.apache.auth.txt

RUS-CERT.apache.auth.txt
Posted Aug 30, 2001
Site cert.uni-stuttgart.de

RUS-CERT Advisory - Several Apache authentication modules which use SQL databases have remote vulnerabilities. Any Apache server using database-based authentication with the following modules is vulnerable - AuthPG 1.2b2, mod_auth_mysql 1.9, mod_auth_oracle 0.5.1, mod_auth_pgsql 0.9.5, and mod_auth_pgsql_sys 0.9.4. An attacker can execute arbitrary PostgreSQL or Oracle statements.

tags | exploit, remote, arbitrary, vulnerability
MD5 | 9193b07708544bcfec9f707cd421690c

RUS-CERT.apache.auth.txt

Change Mirror Download

Vulnerabilities in several Apache authentication modules

RUS-CERT has discovered that several Apache authentication modules
which use SQL databases to store authentication information are
vulnerable to a remote SQL code injection attack.

Systems Affected

Any Apache server using database-based authentication with the
following modules:

* AuthPG 1.2b2 by Min S. Kim (also known as mod_auth_pg)
* mod_auth_mysql 1.9 by Vivek Khera
* mod_auth_oracle 0.5.1 by Serg Oskin
* mod_auth_pgsql 0.9.5 by Guiseppe Tanzilli and Matthias Eckermann
* mod_auth_pgsql_sys 0.9.4 (by the same authors, modifications by
Victor Glushchenko)

It is possible that other authentication modules not listed above are
affected.

Systems Not Affected

RUS-CERT has examined the following authentication modules and
verified that an Apache server using these modules is not vulnerable
to the problem described in this document:

* mod_auth_mysql 2.20 by Zeev Suraski
* mod_auth_ora7 1.0 by Ben Reser
* mod_auth_ora8 1.0 by Ben Reser

Attack vector

HTTP requests sent to the Apache server using the vulnerable
authentication modules.

Impact

In the case of the PostgreSQL modules, an attack can execute arbitrary
SQL statements or cause the database query for the password to return
arbitrary data. As a result, unauthorized access to the web server is
possible.

With the Oracle module, the attacker can call stored procedures and
cause the database query for the password to return arbitrary data.
The impact with MySQL is currently unclear, but with the advent of
stored procedures, harmful side effects might become possible as well.

Vulnerability Type

SQL code insertion attack

Description

During the authentication process, the password hash has to be looked
up in the database, so a SQL SELECT statement has to be built. In the
vulnerable modules, this is done using code equivalent to the
following pseudocode:

Query := Sprintf ("SELECT %s FROM %s WHERE %s = '%s'",
Password_Column, User_Table, User_Column,
User);

Later on, the retrieved password hash is compared with the one
supplied by the user trying to authenticate.

However, the value of User has been received over the network. Suppose
an attacker choses the string (note the single quotation mark at the
beginning):

'; SELECT 'wA8aGH92dPQnIDD

Now the resulting string contains two SQL statements:

SELECT password_column FROM user_table WHERE user_column = '';
SELECT 'wA8aGH92dPQnIDD'

PostgreSQL's libpq client library will transmit both statements to the
PostgreSQL server. The server will execute both statements and return
the result of the second to the client. This way, an attacker can make
it appear to the authentication code that the database contains the
proper hash for the password it just has provided. Other forms of
attacks are possible by issuing INSERT or DELETE statements in
essentially the same manner, of course.

In the MySQL and Oracle cases, the impact of the vulnerability is
different. Oracle does not seem to allow multiple SQL statements per
query, but using a UNION clause to add additional data seems to be
possible, so the attack given above can be duplicated. In addition,
stored procedures can be called, with a potential for harmful side
effects. We were unable to obtain a definite answer if the
vulnerability is exploitable if a MySQL database is used, since MySQL
neither supports UNION clauses nor stored procedures.

Proposed Solution

PostgreSQL

We believe that the fact that the essentially the same vulnerability
is present in many PostgreSQL applications is related to the lack of a
suitable string quoting function in the PostgreSQL client library (and
not just to code reuse and overlap among the authors).

Therefore, we propose that a function which escapes characters treated
specially by the PostgreSQL by replacing them with safe character
sequences is included in the PostgreSQL client library. We provide a
mostly untested sample implementation:

* Escaping Strings in PostgreSQL Queries
(http://cert.uni-stuttgart.de/doc/postgresql/escape/)

Some of the fixed versions below already implement this suggestion.

MySQL and Oracle

Both the MySQL and Oracle client libraries provide a suitable function
for quoting strings in SQL queries. The authentication modules which
are not vulnerable (see above) use them, so we propose to use these
modules, or the fixed versions below.

Patched Versions

Several authors have already reacted and released new versions:

* AuthPG 1.3 by Min S. Kim (http://authpg.sourceforge.net/)
* mod_auth_mysql 1.10 by Vivek Khera (ftp://ftp.kcilink.com/pub/)
* mod_auth_pgsql 0.9.6 by Guiseppe Tanzilli
(http://www.giuseppetanzilli.it/mod_auth_pgsql/dist/)

Serg Oskin has announced a fixed version as well.

Contact Status

RUS-CERT contacted the authors of the vulnerable authentication
modules on 2001-08-23.

About RUS-CERT

RUS-CERT (http://cert.uni-stuttgart.de/) is the Computer Emergency
Response Team located at the Computing Center (RUS) of the
University of Stuttgart, Germany.

URI For This Advisory

http://cert.uni-stuttgart.de/advisories/apache_auth.php

--
Florian Weimer Florian.Weimer@RUS.Uni-Stuttgart.DE
University of Stuttgart http://cert.uni-stuttgart.de/
RUS-CERT +49-711-685-5973/fax +49-711-685-5898


Comments

RSS Feed Subscribe to this comment feed

No comments yet, be the first!

Login or Register to post a comment

File Archive:

December 2018

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Dec 1st
    11 Files
  • 2
    Dec 2nd
    1 Files
  • 3
    Dec 3rd
    18 Files
  • 4
    Dec 4th
    40 Files
  • 5
    Dec 5th
    16 Files
  • 6
    Dec 6th
    50 Files
  • 7
    Dec 7th
    12 Files
  • 8
    Dec 8th
    1 Files
  • 9
    Dec 9th
    1 Files
  • 10
    Dec 10th
    15 Files
  • 11
    Dec 11th
    30 Files
  • 12
    Dec 12th
    25 Files
  • 13
    Dec 13th
    0 Files
  • 14
    Dec 14th
    0 Files
  • 15
    Dec 15th
    0 Files
  • 16
    Dec 16th
    0 Files
  • 17
    Dec 17th
    0 Files
  • 18
    Dec 18th
    0 Files
  • 19
    Dec 19th
    0 Files
  • 20
    Dec 20th
    0 Files
  • 21
    Dec 21st
    0 Files
  • 22
    Dec 22nd
    0 Files
  • 23
    Dec 23rd
    0 Files
  • 24
    Dec 24th
    0 Files
  • 25
    Dec 25th
    0 Files
  • 26
    Dec 26th
    0 Files
  • 27
    Dec 27th
    0 Files
  • 28
    Dec 28th
    0 Files
  • 29
    Dec 29th
    0 Files
  • 30
    Dec 30th
    0 Files
  • 31
    Dec 31st
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2018 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close