Relato de una intrusión - Un miserable LFI

Iniciado por cibergolen, 2 Diciembre 2011, 19:37 PM

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

cibergolen

No se si llegué a publicar esto, de ser así, que algún moderador elimine este tema

--

15/08/2011

--

CitarHace unos dias, mientras navegaba aburrido por la Web, encontre una pagina con una vulnerabilidad LFI.

El sitio, por privacidad, lo llamaremos www.site.com.

Observe que la dirección del archivo a incluir lo pasaba mediante GET por la variable "site.com/index.php?Page=", a la cual se agregaba la extensión ".PHP" por seguridad...

Estuve un rato pensando como evadirlo, y llegue a una conclusión: Tratar con el Null Byte.

Básicamente, para explotarlo, o que hice fue utilizar un archivo inexistente, observar la ruta donde estaba el directorio htdocs, (/var/www/htdocs), para después buscar algún fichero que vulnerar.

En un primer intento, trate de enviarle la ruta: ../../../etc/passwd%00, el cual funciono exitosamente, y buscando, concluí que existía el fichero /proc/self/environ, el cual mostraba mi User-Agent. Cabe aclarar que este permitia la inclusión de PHP modificando via Live HTTP Headers.

Con todo esto, conseguí crear una webshell en el servidor, lo que me facilito los datos de la base de datos, y una copia de la web.

Se trataba de un kernel 2.6.30, así que decidí dejar mi netcat escuchando en modo recursivo, y cree la conexión con el Host.

Posteriormente, vía wget descargue un Root Exploit que encontré por la red, lo cual me permitió permisos de Root en dicho servidor.

Resulta que, en dicho servidor, habían mas de 50 usuarios, con varios dominios cada uno...
Lejos de hacer un deface masivo, lo cual nunca fue, ni sera, mi objetivo, decidí limpiar mis huellas y salir de ahí, con una clara conclusión:

Un solo fallo, lo pueden pagar muchos.

Mi único trofeo fue la copia de la Web, y de la base de datos.

Un saludo!

ruben_linux

TEngo una duda. he probado algunas veces LFI, y en las ocasiones en que la web añade la extensión ".php" a los archivos que trato de abrir, sea inexistente o no, nunca llego a conseguir mi objetivo.

Me explico, si la web añade ".php" , nunca se podrá realizar LFI, a no ser que tengamos una manera de puentear estea seguridad, y en estos casos el byte null no sirve, porque da como resultado

www.xxxxxx.com/index.php?page=webshell.txt.php

Citara la cual se agregaba la extensión ".PHP" por seguridad...

cibergolen

#2
Cita de: ruben_linux en 11 Diciembre 2011, 13:23 PM
TEngo una duda. he probado algunas veces LFI, y en las ocasiones en que la web añade la extensión ".php" a los archivos que trato de abrir, sea inexistente o no, nunca llego a conseguir mi objetivo.

Me explico, si la web añade ".php" , nunca se podrá realizar LFI, a no ser que tengamos una manera de puentear estea seguridad, y en estos casos el byte null no sirve, porque da como resultado

www.xxxxxx.com/index.php?page=webshell.txt.php


CitarEn un primer intento, trate de enviarle la ruta: ../../../etc/passwd%00, el cual funciono exitosamente

Null Byte, my friend...

Saludos


cibergolen

Cita de: ruben_linux en 11 Diciembre 2011, 19:44 PM
  :-[
pido disculpas, leer dos veces antes de contestar.

;)

Me van a patear las bo.. cuentas, pero adelantado siento desviar el tema

Cuando tienes algún problema con la extensión, símplemente córtala usando el null byte, tanto en LFI como otros. Te toparás que a veces sale con un:
file=../../../../.../../../etc/passwd/0.php, en ese caso sigue intentando por otro medio.

Saludos.

ruben_linux

Citaren ese caso sigue intentando por otro medio.

no sse cuales son los otros medios, puedes ayudarme, dame una explicacion o una direccion para poder aprender esas tecnicas.

gracias

WHK

bypasea esto:

Código (php) [Seleccionar]
<?php include('./paginas/'.$_GET['page'].'.php'); ?>

Siempre he dicho que para aprender a vulnerar un sitio web es necesario aprender su lenguaje primero.

Puedes usar null byte de muchas formas:
%0 %00 %000 \0 \00

También puedes probar si el sistema urlencodea dos veces las variables o las filtra:
%2500 %255c0 %255c00

PanConMantequilla

#7
Cita de: WHK en 21 Diciembre 2011, 02:54 AM
bypasea esto:

Código (php) [Seleccionar]
<?php include('./paginas/'.$_GET['page'].'.php'); ?>

Siempre he dicho que para aprender a vulnerar un sitio web es necesario aprender su lenguaje primero.

Puedes usar null byte de muchas formas:
%0 %00 %000 \0 \00

También puedes probar si el sistema urlencodea dos veces las variables o las filtra:
%2500 %255c0 %255c00

Aunque no abrí el tema, que bueno que hayan respondido  ;D

Bueno, hasta el momento nunca he podido bypasear con null byte, tengo en localhost un include similar que nunca me funcionó, ahora copio y pego tu código de ejemplo (que es casi el mismo):

Código (php) [Seleccionar]
<?php include('./paginas/'.$_GET['page'].'.php'); ?>

Creo una carpeta paginas como tu ejemplo y dentro agrego 2 archivos:

inclusion.php
claves.txt (intentaré ver su contenido)

Ahora mi problema de toda la vida, abro:

http://localhost/index.php?page=inclusion

Y se incluye sin problemas el contenido de inclusion.php
Ahora quiero bypasear intentando ver el contenido de claves.txt que se encuentra en la misma carpeta

http://localhost/index.php?page=claves.txt%0   = Warning: include..........
http://localhost/index.php?page=claves.txt%00   = Warning: include..........
http://localhost/index.php?page=claves.txt%000   = Warning: include..........
http://localhost/index.php?page=claves.txt\0   = Warning: include..........
http://localhost/index.php?page=claves.txt\00   = Warning: include..........

El error de toda mi vida, siempre me quedo aqui, que es lo que estoy haciendo mal?

Saludos








cibergolen

Puede que tengas algún tipo de protección, debería saltar al fichero "claves.txt%00".

Saludos.

PanConMantequilla

Cita de: cibergolen en 21 Diciembre 2011, 19:03 PM
Puede que tengas algún tipo de protección, debería saltar al fichero "claves.txt%00".

Saludos.


Uso wamp, y el codigo tambien lo probe en debian y me bota el mismo warning error, no solo eso, cada vez que encuentro un LFI siempre me arroja ese error.
Siento que esa vulnerabilidad solo existiera para el resto  :-\