Tutorial Sql Injection

Aprende algunas nociones basicas de Sql Injection.

Video Tutoriales

Si eres de los que piensa que 1 imagen vale mas que 1000 palabras este es tu sitio .

domingo, 2 de diciembre de 2012

Video Tutorial de PhpBB3 (Montar y Configurar un Foro)


Aqui tenemos un nuevo VideoTutorial, esta vez tratando el tema de como crear y configurar de forma facil y sencilla nuestro propio Foro PhpBB3


 
Como Siempre, recomiendo que el video se vea en 720p, porque que si no, las letras y las ventanas pueden verse borrosas...

martes, 9 de octubre de 2012

Video Tutorial Sql Injection

Aqui os dejo un Video Tutorial de como hacer un Sql Injection:


Recomiendo que el video se vea en 720p, porque que si no, las letras y las ventanas pueden verse borrosas...





sábado, 6 de octubre de 2012

Tutorial Sql Injection mediante DWVA

Mediante este tutorial aprenderemos a realizar un ataque SQL Injection mediante una plataforma llamada DVWA.

DVWA (Damn Vulnerable Web App) es una plataforma donde podemos practicar mediante un entorno seguro nuestros conocimientos.


Bueno pasemos al ataque SQL injection, para ello dentro de la plataforma DVWA entramos en la pestaña SQL Injection y veremos una pantalla como la siguiente:




Normalmente para saber si una pagina es vulnerable a un ataque sql injection buscaremos la terminacion index.php?id=x (donde x es un numero cualquiera). Por ejemplo:

 
www.vulnerable.com/index.php?id=2
para comprobar si es vulnerable añadimos un apostrofe " ' " de la siguiente forma: 

www.vulnerable.com/index.php?id=2' 
y si nos da un error como el siguiente significa que la pagina es vulnerable...


Bueno ya hemos demostrado que la pagina es vulnerable, ahora pasaremos a sacar todos los datos posibles de la base de datos, nombres de usuarios,contraseñas....

Para conseguir esto inyectaremos algunas sentencias sql que nos devolveran los datos que queremos obtener. Asi que empecemos:

1º Vamos a empezar por investigar un poco, si ponemos un numero cualquiera en User ID observaremos lo siguente:

Nos acaba de mostrar 3 cosas:
    ID: 1
    First name: admin
    Surname: admin
Con esto podemos conseguir ver cuantos usuarios hay en la Base de Datos ya que llegara un momento en el que pondremos un numero y no exista un usuario que tenga dicho numero.
Siguiendo dicho razonamiento descubrimos que en esta base de datos hay exactamente 5 usuarios ya que al insertar del numero 6 en adelante nos encontramos con que la pagina no devuelve nada.

2º Ahora vamos a comprobar de cuantas columnas disponemos para obtener los resultados, para ello usamos la siguiente sentencia sql:
1'  and 1=0 order by X #
donde X es un numero desde el 1 hasta que nos muestre esto en pantalla: 

"Unknown column 'X' in 'order clause'"

Con esto descubrimos el numero de columnas que en el caso de nuestra practica es de 2 columnas ya que al colocar 1' and 1=0 order by 3 nos muestra  Unknown column '3' in 'order clause'.
Comprobemos que es verdad que podemos inyectar algo en esas 2 columnas mediante la siguiente sentencia:
1'  and 1=0 union select 1,2 #
Nos saldra algo como esto:


Incluso podriamos probar con una cadena de caracteres del siguiente modo.
1'  and 1=0 union select 'HOLA','ESTO ES UNA PRUEBA' #
Y nos saldria esto:


 3º Ahora que esta ya todo preparado, procederemos a sacar toda la informacion que queramos.

Primero obtendremos la version de la Base de Datos, para ello usaremos la sentencia

1'  and 1=0 union select null,Version() #
He modificado el 1 por null y que con una sola columna para mostrar los datos nos sobra. Bueno pues si usamos esa sentencia se nos mostrara esto:
Ya tenemos la version: 5.5.16
Ahora procederemos a sacar el nombre de la base de datos, para hacerlo usamos la sentencia
1'  and 1=0 union select null,database() #
Mostrara esto:

Ahora investigamos las tablas para ver si damos con algo que nos sea de utilidad, para ello usamos la sentencia
1'  and 1=0 union select null,table_name from information_schema.tables where table_schema!='msql' and table_schema!='information_schema'#

que lo hace es mostrarnos los nombre de las tablas que posee la base de datos. Al hacerlo nos damos cuenta de que existe una tabla users que sera donde estaran los datos importantes de los usuarios de la base de datos.


Ahora modificamos la anterior sentencia para obtener los nombres de las columnas de la tabla users para ver si encontramos algo aun mas interesante que poder conseguir. La sentencia quedaria asi:
1'  and 1=0 union select null,concat(table_name,0x0a,column_name) from information_schema.columns where table_name='users'#
Y nos mostraria algo como esto:


Como veis hemos obtenido varios nombres bastante interesantes pero hay dos que son los mas importantes, los nombres de usuarios y los passwords. Asi que  ahora procederemos a obtener los users y los  password de los usuarios de la base de datos.

Para ello utilizaremos la siguiente sentencia:
1'  and 1=0 union select null,concat(user,0x0a,password) from users # 
Y saldra una pantalla como esta:

Como podemos comprobar mediante inyeccion de sentencias sql en una pagina web podemos obtener (siempre y cuando la pagina sea vulnerable) los datos de toda la base de datos de la pagina en cuestion.

A modo de epilogo contar que esta practica de ataque sql injection ha sido realizado mediante una plataforma hecha para dicho proposito (DVWA) y que hacerlo en una pagina web en la que no se esté autorizado puede acarrear al atacante problemas legales...