Computer Security
[EN] securityvulns.ru
no-pyccku



Related information

  Daily web applications security vulnerabilities summary (PHP, ASP, JSP, CGI, Perl)

  phpPC 1.04 Multiples Remote File Inclusion

  Pearl Forums 2.4 Multiple Remote File Include Vulnerabilities

  PhotoCart 3.9 (adminprint.
php) Remote File Include Vulnerability

  Vulnerability in PostNuke

From:revenge <revenge_(at)_0xcafebabe.it>
Date:22.11.2006
Subject:ContentNow CMS 1.39 'pageid' Sql Injection + Path Disclosure Vulnerabilities

ContentNow CMS 1.39 Sql Injection + Path Disclosure Vulnerabilities

Severity : Medium risk
Vendor   : www.contentnow.mf4k.de
Author   : Alfredo 'revenge' Pesoli

[--------------------------------------------------]

[#] Description

ContentNow is a PHP Content Management System web 2.0 compliant, more info can be found at
vendor site.

ContentNow v1.39 is vulnerable to a sql injection and path disclosure.

[--------------------------------------------------]

Vuln #1  : Sql Injection
Impact   : Admin credentials disclosure (Manipulation of data)

Exploit  : http://www.0xcafebabe.it/sploits/contentnow_139_sqlinj.pl

The "pageid" parameter in "index.php" isn't properly sanitised before
being used in a sql query, this can be exploited to manipulate existing
SQL query by inserting arbitrary SQL code, which can disclose sensitive
information like admin credentials.

The problem is due to:
[ index.php ]
...
...
// get/set id or startpageid from config
       $pid = $_GET['pageid'];
       if (empty($pid) || $pid == 1) $pid = $cnEngine->configArray[0]['startpageid'];
       
 -->   if (false == $cnEngine->checkPid($pid)) die ('<span style="font:13px sans-serif;">
                       Error loading site. No pid found.</span>');
       
       $cnEngine->setId($pid);
...
...

[ function checkPid($pid) from /cn/library/class.engine.php ]
...
...
function checkPid($pid) {
               $cnDatabase = NewADOConnection(ADODB_DB_TYPE);
               $cnDatabase->Connect(CN_DB_HOST, CN_DB_USER, CN_DB_PASSWORD, CN_DB_NAME);
               $sql = "SELECT pageid FROM ".CN_TBL_SECTIONS." WHERE pageid = ".$pid;
               $res = $cnDatabase->Execute($sql);
               if ($res->RecordCount() > 0) {
                       return true;
               } else {
                       return false;
               }
       }
...
...

As you can see there's no input validation on "pageid" parameter.
It is also possible to disclose the full path to index.php by requesting index.php?pageid='

[#] Solution

Download 1.40 version.

[#] Disclosure timeline

2006/11/20 Bugs discovered
2006/11/20 Vendor contacted
2006/11/21 Vendor response
2006/11/21 New version 1.40 patched
2006/11/22 Public Disclosure

Alfredo 'revenge' Pesoli

About | Terms of use | Privacy Policy
© SecurityVulns, 3APA3A, Vladimir Dubrovin
Nizhny Novgorod

 
 



Rating@Mail.ru
test server