martes, 15 de octubre de 2013

BackBox 3 - Iniciación al Pentesting (Parte 10)



SQLmap: Prueba de concepto

Lo primero que intentaremos será ver que Bases de datos almacena el servidor. Para ello añadimos el parámetro –dbs. Esto debería mostrar todas las BBDD.

#sqlmap -u http://sitioweb.com/actualidad/evento.php?id=110 –dbs
 
Figura 1: Bases de datos del objetivo.
El resultado es precisamente el esperado, hemos conseguido obtener todas las bases de datos a través del fallo que encontramos. A partir de aquí será cuestión de ir viendo la ayuda de SQLmap para saber que podemos utilizar en nuestro beneficio. Lo más lógico sería, partiendo de la bases de datos a la que queremos atacar, hacer un volcado de la información de alguna de las tablas, columnas, o de la BBDD entera.

Todas las Bases de datos están compuestas de Tablas, Columnas y Registros.
Figura 2: Estructura de una BD
Esto hay que tenerlo en cuenta ya que a la hora de lanzar el ataque con SQLmap lo haremos paso a paso e intentando provocar las menos sospechas posibles.

Cuando hablamos de hacerlo paso a paso nos referimos a ir obteniendo información desde lo más básico hasta profundizar en cada una de las bases de datos. Es decir, primero veremos las bases de datos que almacena el servidor, después veremos las tablas de alguna base de datos, luego las columnas dentro de esa tabla, y así sucesivamente.

Obteniendo las tablas de la base de datos


Para obtener la información de las tablas que almacena la base de datos, hemos de indicar a SQLmap la URL y la base de datos de la que queremos la información.

Como el listado de las bases de datos ya lo hemos obtenido anteriormente será cuestión de ver si existe alguna BD que por su nombre parezca más relevante.

Con el siguiente comando enumeraremos, nos mostrará, las tablas de la base de datos db23616:

#sqlmap -u http://sitioweb.com/actualidad/evento.php?id=110 --level=5 --flush-session --tables -D bd23616

El resultado es una gran lista de tablas. Algunas de ellas, por su nombre, bastante significativas, como es el caso de los datos de Recursos Humanos.

Figura 3: Tablas de la BD que hemos obtenido con sqlmap

NOTA: Es muy importante saber que SQLmap en cada ataque que lanza guarda los resultados en una carpeta, que después utiliza para buscar en ella en caso de realizarse un nuevo ataque sobre la misma URL. Con esto sqlmap pretende ahorrar tiempo en nuestra buscada. Sin embargo en muchas ocasiones nos puede perjudicar ya que sqlmap trata esta información de la misma manera que lo hace un navegador web con los temporales. Es posible que en algunas ocasiones no se estén mostrando los resultados “reales” acorde con lo que lanzamos, el motivo es que sqlmap siempre que se haya realizado una consulta previamente sobre esa web, antes de volver a lanzar un nuevo ataque, mostrará los resultados ya obtenidos con anterioridad. Esto se soluciona añadiendo el parámetro –flush-session el cual nos permitirá saltarnos esta especie de caché.