| |||||||||||||||||||||
Date: Fri, 13 Apr 2001 11:41:45 +0200
From: Security @ RA-Soft <security@RA-SOFT.COM>
To: BUGTRAQ@SECURITYFOCUS.COM
Subject: Exploitable NCM.at - Content Management System
---------------------------------------------------------------------------
Possible Security Problem in NCM - Content Management System
Package name: NCM Content Management System
Severity: Possible direct access to database of content
Date: 2001-04-10
Affected versions: ?, no information from the vendor - contact them
Found: Roland Aigner
---------------------------------------------------------------------------
Problem description:
With specific malformed http requests, a direct access to the content
database is possible. with an additional character not recognized by the
database server in use in a request variable the complete SQL error is
shown in a window.
http://www.TARGET.com/content.pl?group=49&id=140a
playing this game further, its possible to exploit this database like
following:
http://www.TARGET.com/content.pl?group=49&id=140%20or%20id>0%20or%20ls_id<1000%20or%20kategorie<10000%20or%20kategorie>10%20or%20ls_id>1%20or%20id<10%20or%20kategorie<10%20or%20kategorie>4&shortdetail=1
(sorry for the line break)
this uses the displayed (in the errorbox that i get from the first url)
databaseinformation to obtain all records.
with a correct SQL server (like MS - SQL) it should be possible (but
untested) to use a nested sql-query to even drop the database (or the
content table).
Please note: it looks like the "=" character is already filtered out, so i
had to use a > or < to get the entries.
Action:
I recommend to filter out all comparison characters and to supress SQL
error displays in actual production websites.
Location(s):
NCM homepage: http://www.ncm.at
Vendor:
Informed on 2001/04/10
Answer from them on 2001/04/11: bugs fixed, customer should get new
version immediatly
Comment:
This clearly showes again a common problem/error in handling variable
information via CGIs. Variable information should be filtered according
rules for the specific variable, not just mindless passing to a
sql-statement or whatever. another typical mistake is to display
errorresults from a database connection directly in a production
environment. its quite usable in a development environment, but on a
customer machine it makes no sense and its dangerous because it reveals a
lot of information of the used database.
| |||||||||||||||||||||