[prev in list] [next in list] [prev in thread] [next in thread] 

List:       full-disclosure
Subject:    [FD] Pimcore v3.0 & v2.3.0 CMS - SQL Injection Vulnerability
From:       Vulnerability Lab <research () vulnerability-lab ! com>
Date:       2014-12-25 10:20:36
Message-ID: 549BE4F4.3030509 () vulnerability-lab ! com
[Download RAW message or body]

Document Title:
===============
Pimcore v3.0 & v2.3.0 CMS - SQL Injection Vulnerability


References (Source):
====================
http://vulnerability-lab.com/get_content.php?id=1363


Release Date:
=============
2014-12-16


Vulnerability Laboratory ID (VL-ID):
====================================
1363


Common Vulnerability Scoring System:
====================================
6.4


Product & Service Introduction:
===============================
Pimcore is a powerful and robust Zend Framework based PHP content management system (CMS) for \
creating and managing digital  content and assets licensed under the open-source BSD license. \
Create outstanding digital experiences on the most flexible  content management platform \
available. Manage and edit any type of digital content, for any device and channel in a 100%  \
flexible and personalized way. Pimcore features award-winning single-source and multi-channel \
publishing functionality  making it easy to manage, update, and integrate content and data from \
various sources. With pimcore brands can create  and manage rich digital experiences for all of \
their output channels at once: web, mobile, apps, social platforms,  print and digital signage. \
With pimcore you can truly `edit once & reuse anywhere`.

(Copy of the Homepage: https://www.pimcore.org/ )



Abstract Advisory Information:
==============================
The Vulnerability Laboratory Research Team discovered a sql injection vulnerability in the \
official Pimcore v3.0 & v2.3.0 Content Management System (Web-Application).


Vulnerability Disclosure Timeline:
==================================
2014-12-16:	Public Disclosure (Vulnerability Laboratory)


Discovery Status:
=================
Published


Affected Product(s):
====================
Pimcore GmbH
Product: PimCore - Content Management System 3.0 Release Candidate & 2.3.0


Exploitation Technique:
=======================
Remote


Severity Level:
===============
High


Technical Details & Description:
================================
A remote sql injection web vulnerability has been discovered in the official Pimcore v3.0 & \
v2.3.0 Content Management System.  The vulnerability allows remote attackers and local \
privileged user accounts to  inject own sql commands to compromise  the web-server dbms of \
pimcore.

The security vulnerability is located in the name value GET method request of the pimcore mysql \
module.  Remote attackers  and local privileged user accounts are able to compromise the \
application service by injection of malicious sql commands. The request  method to inject the \
code is GET and the attack vector is on the application-side of the modules. Remote attackers \
are able to use the  inner application functions of the class module to perform an execution on \
the application-side unauthorized through the admin acp. 

The security risk of the sql vulnerability is estimated as high with a cvss (common \
vulnerability scoring system) count of 6.4. Exploitation of the remote sql injection web \
vulnerability requires no privileged application user account or a low privileged  user account \
without user interaction. Successful exploitation of the sql injection vulnerability results in \
application and  web-service or dbms compromise.

Request Method(s):
				[+] GET

Vulnerable Module(s):
				[+] backup/mysql

Vulnerable Parameter(s):
				[+] name


Proof of Concept (PoC):
=======================
The sql injection vulnerability can be exploited by remote attackers with low privileged \
application user account and without user interaction. For security demonstration or to \
reproduce the security vulnerability follow the provided information and steps below to \
continue.

PoC: 
./backup/mysql?_dc=1415886023081&name=-1%27[SQL INJECTION VULNERABILITY!]--&type=BASE%20TABLE


--- PoC Session Logs [GET] ---
Status: 200[OK]
GET http://pimcore.localhost:8080/admin/backup/mysql?_dc=1415886023081&name=-1%27[SQL INJECTION \
VULNERABILITY!]--&type=BASE%20TABLE  Load Flags[VALIDATE_NEVER  LOAD_DOCUMENT_URI  \
LOAD_INITIAL_DOCUMENT_URI  ] Größe des Inhalts[495] Mime Type[text/html]  Request Header:
      Host[pimcore.localhost:8080]
      User-Agent[Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0]
      Accept[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
      Accept-Language[de,en-US;q=0.7,en;q=0.3]
      Accept-Encoding[gzip, deflate]
      Cookie[__utma=59704236.87754243.1415885491.1415885491.1415885491.1; 
__utmb=59704236.1.10.1415885491; __utmc=59704236; 
__utmz=59704236.1415885491.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); 
pimcore_admin_sid=28vctg6ilpedepa26b81gqeps5]
      Connection[keep-alive]
   Response Header:
      Date[Thu, 13 Nov 2014 13:55:50 GMT]
      Server[Apache/2.2.22 (Debian)]
      Set-Cookie[pimcore_admin_sid=28vctg6ilpedepa26b81gqeps5; path=/; HttpOnly]
      Expires[Thu, 19 Nov 1981 08:52:00 GMT]
      Cache-Control[no-store, no-cache, must-revalidate, post-check=0, pre-check=0]
      Pragma[no-cache]
      Connection[close]
      Content-Encoding[gzip]
      X-Powered-By[pimcore]
      Content-Length[495]
      Content-Type[text/html]


--- Error & Exception Logs ---
Fatal error: Uncaught exception 'Zend_Db_Statement_Mysqli_Exception' with message 'Mysqli \
prepare error:  You have an error in your SQL syntax; check the manual that corresponds to your \
MySQL server version for the right syntax to use near '-1'' at line 1'  in \
                /home/pimcore-service/www/pimcore/lib/Zend/Db/Statement/Mysqli.php:77 
-
Stack trace: #0 /home/pimcore-service/www/pimcore/lib/Zend/Db/Statement.php(115): \
Zend_Db_Statement_Mysqli->_prepare('SELECT * FROM -...')  #1 \
/home/pimcore-service/www/pimcore/lib/Zend/Db/Adapter/Mysqli.php(388): \
Zend_Db_Statement->__construct(Object(Zend_Db_Adapter_Mysqli), 'SELECT * FROM -...')  #2 \
/home/pimcore-service/www/pimcore/lib/Zend/Db/Adapter/Abstract.php(479): \
Zend_Db_Adapter_Mysqli->prepare('SELECT * FROM -...')  #3 \
/home/pimcore-service/www/pimcore/lib/Zend/Db/Adapter/Abstract.php(737): \
Zend_Db_Adapter_Abstract->query('SELECT * FROM -...', Array)  #4 [internal function]: \
Zend_Db_Adapter_Abstract->fetchAll('SELECT * FROM -...') #5 \
/home/pimcore-service/www/pimcore/lib/Pimcore/Resource/Wrapper.php(230):  call in \
                /home/pimcore-service/www/pimcore/lib/Zend/Db/Statement/Mysqli.php on line 77
-
Fatal error: Call to a member function isAllowed() on a non-object in \
                /home/pimcore-service/www/pimcore/lib/Pimcore/Controller/Action/Admin/Element.php \
                on line 37
-
Fatal error: Uncaught exception 'Zend_Db_Statement_Mysqli_Exception' with message 'Mysqli \
prepare error:  You have an error in your SQL syntax; check the manual that corresponds to your \
MySQL server version for the right syntax to use near '-1'' at line 1'  in \
                /home/pimcore-service/www/pimcore/lib/Zend/Db/Statement/Mysqli.php:77 
-
Stack trace: #0 /home/pimcore-service/www/pimcore/lib/Zend/Db/Statement.php(115): \
Zend_Db_Statement_Mysqli->_prepare('SELECT * FROM -...')  #1 \
/home/pimcore-service/www/pimcore/lib/Zend/Db/Adapter/Mysqli.php(388): \
Zend_Db_Statement->__construct(Object(Zend_Db_Adapter_Mysqli), 'SELECT * FROM -...')  #2 \
/home/pimcore-service/www/pimcore/lib/Zend/Db/Adapter/Abstract.php(479): \
Zend_Db_Adapter_Mysqli->prepare('SELECT * FROM -...')  #3 \
/home/pimcore-service/www/pimcore/lib/Zend/Db/Adapter/Abstract.php(737): \
Zend_Db_Adapter_Abstract->query('SELECT * FROM -...', Array)  #4 [internal function]: \
Zend_Db_Adapter_Abstract->fetchAll('SELECT * FROM -...')  #5 \
/home/pimcore-service/www/pimcore/lib/Pimcore/Resource/Wrapper.php(230): call in \
/home/pimcore-service/www/pimcore/lib/Zend/Db/Statement/Mysqli.php on line 77


Solution - Fix & Patch:
=======================
The vulnerability can be patched by implementation of two prepared statements in the section \
were the vulnerable name value is in usage. Encode and parse also the qrcode and mysql GET \
method request to prevent exploitation.

The fix for the backup routine is already in the main trunk and can be reviewed here: 
https://github.com/pimcore/pimcore/commit/93067d865affa5a0110ae7e9904cbc5ff5868376

Note: The patch will be part of the next version (RC 2) and the final 3.0 release. You can \
verify it also by downloading the lastest build from pimcore.org/download. 


Security Risk:
==============
The security risk of the sql injection web vulnerability in the pimcore content management \
system is estimated as high. (CVSS 6.4)


Credits & Authors:
==================
Vulnerability Laboratory [Research Team] - Benjamin Kunz Mejri (bkm@evolution-sec.com) \
[www.vulnerability-lab.com]


Disclaimer & Information:
=========================
The information provided in this advisory is provided as it is without any warranty. \
Vulnerability Lab disclaims all warranties, either expressed  or implied, including the \
warranties of merchantability and capability for a particular purpose. Vulnerability-Lab or its \
suppliers are not liable  in any case of damage, including direct, indirect, incidental, \
consequential loss of business profits or special damages, even if Vulnerability-Lab  or its \
suppliers have been advised of the possibility of such damages. Some states do not allow the \
exclusion or limitation of liability for  consequential or incidental damages so the foregoing \
limitation may not apply. We do not approve or encourage anybody to break any vendor licenses,  \
policies, deface websites, hack into databases or trade with fraud/stolen material.

Domains:    www.vulnerability-lab.com   	- www.vuln-lab.com			       		- www.evolution-sec.com
Contact:    admin@vulnerability-lab.com 	- research@vulnerability-lab.com 	       		- \
                admin@evolution-sec.com
Section:    magazine.vulnerability-db.com	- vulnerability-lab.com/contact.php		       	- \
                evolution-sec.com/contact
Social:	    twitter.com/#!/vuln_lab 		- facebook.com/VulnerabilityLab 	       		- \
                youtube.com/user/vulnerability0lab
Feeds:	    vulnerability-lab.com/rss/rss.php	- vulnerability-lab.com/rss/rss_upcoming.php   		- \
                vulnerability-lab.com/rss/rss_news.php
Programs:   vulnerability-lab.com/submit.php  	- \
vulnerability-lab.com/list-of-bug-bounty-programs.php	- vulnerability-lab.com/register/

Any modified copy or reproduction, including partially usages, of this file requires \
authorization from Vulnerability Laboratory. Permission to  electronically redistribute this \
alert in its unmodified form is granted. All other rights, including the use of other media, \
are reserved by  Vulnerability-Lab Research Team or its suppliers. All pictures, texts, \
advisories, source code, videos and other information on this website  is trademark of \
vulnerability-lab team & the specific authors or managers. To record, list (feed), modify, use \
or edit our material contact  (admin@vulnerability-lab.com or research@vulnerability-lab.com) \
to get a permission.

				Copyright  © 2014 | Vulnerability Laboratory - [Evolution Security GmbH]â„¢



-- 
VULNERABILITY LABORATORY - RESEARCH TEAM
SERVICE: www.vulnerability-lab.com
CONTACT: research@vulnerability-lab.com
PGP KEY: http://www.vulnerability-lab.com/keys/admin@vulnerability-lab.com%280x198E9928%29.txt



_______________________________________________
Sent through the Full Disclosure mailing list
http://nmap.org/mailman/listinfo/fulldisclosure
Web Archives & RSS: http://seclists.org/fulldisclosure/


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic