Exponent CMS SQL Injection

    Type

  • Exponent CMS SQL Injection
  • Severity

  • High
  • Affected products

  • Exponent CMS
  • Affected Versions

  • 2.0.0 – 2.0.4
  • Vendor

  • OIC Group Inc
  • Vendor Response

  • Vendor included fix in version 2.0.5.
  • Author

  • Rob Miller
  • Date

  • 2012-02-14
  • CVE Reference

  • N/A

The Exponent Content Management System does not correctly sanitise user input to the cron/send_reminders.php script, leading to SQL injection.

Description

File cron/send_reminders.php allows unsanitised input via the src parameter into an SQL query. It can be accessed by unauthorised users.

Impact

Blind SQL injection can allow file upload, which in turn could allow for remote command execution.

Cause

cron/send_reminders.php uses the value $_GET[‘src’] in the function selectObject. Though the value is passed through serialize(), this does not sanitise the input and so allows for SQL injection.

Interim Workaround

Revoke access permissions to send_reminders.php.

Solution

Apply vendor fix.

Technical Description

In cron/send_reminders.php, the $src value uses $_GET[‘src’]. $loc takes $src along with mod and int and passes them into:

$db->selectObject("calendarmodule_config","location_data='".serialize($loc)."'");

The serialised $loc variable is used (in the case of MySQL) in framework/core/subsystem/database/mysqli.php in the function selectObject() as the $where variable in the query:

"SELECT * FROM `" . $this->prefix . "$table` WHERE $where LIMIT 0,1”

Therefore the following request will cause a SQL timeout:

/exponent/cron/send_reminders.php?src=src%3d11"%3b}'%20or%201%3d1%20AND%20SLEEP(5)%20%3b%20--%20"