SQLMap

SQLMap
Daniel Tapia

Los pentester y hackers utilizan hoy en día distintos programas que los ayudan a llevar acabo sus objetivos, en este acaso imaginemos que lo que queremos hacer es acceder a una base de datos de una empresa a través de su página web, ¿esto se puede hacer?; por supuesto que sí, si quieres saber más sobre ello quédate hasta el final del artículo.

¿Para qué sirve y por qué se utiliza?

Este programa sirve para detectar vulnerabilidades en los distintos motores de bases de datos como pueden ser MYSQL, Oracle o PostgreSQL entre otros, y es utilizado para poner a prueba la seguridad de una página web, esto se hace siempre con fines morales puesto que el uso malicioso de este programa es ilegal.
SQLmap está desarrollada en Python y lo podemos utilizar en cualquier distribución de Linux y también en Windows puesto que este soporta Python.
Viene preinstalado en algunas distribuciones Linux, pero suele disponerse en casi todos los repositorios Linux, pero si no es tu caso te dejo un enlace donde te explica cómo hacerlo: http://sqlmap.org/
Explicado esto vamos a proceder a ver cómo utilizamos SQLMAP y vemos algunos ejemplos gráficos y reales.

¿Cómo se utiliza?

Este programa es muy sencillo de utilizar, una vez lo tengamos instalado lo que debemos de hacer es llamarlo en una terminal poniendo: sqlmap –u “dirección a testear” –dbs
Esto lo primero que va a hacer es intentar averiguar el gestor de base de datos que la página web utiliza.
Pero como conseguimos la url que queremos testear, bien esas urls tienen el siguiente formato al final de la dirección y es lo que tenemos que buscar: “product.php?id=”, donde podremos alterar los valores, en este caso contenido en el campo ID por otro valor diferente.
Para encontrarlas podemos hacerlo de la siguiente manera, en el buscador google ponemos:

Una vez encontrada la url, cómo podemos intentar saber si puede ser o no inyectable, esto lo hacemos añadiendo al final de la url una ‘ o un %27 si nos da error quiere decir que puede ser inyectable, pero no es la única forma de ver que la URL es inyectable.

Explicado todo esto vamos a realizar una prueba real.

Demostración gráfica

En este caso vamos a ver dos ejemplos distintos, vamos con el primero:
EJEMPLO 1

1. El primer paso es intentar averiguar el tipo de base de datos:

Como observamos detecta que el tipo de base de datos es MYSql

2. Lo segundo que vamos a hacer es intentar ver el nombre de las bases.
Para ello se utiliza el siguiente comando:
Sqlmap –u “url” –dbs

Bien vemos que ya tenemos el nombre de la base de datos, está cortado por privacidad.

3. Lo siguiente es ver las tablas que hay dentro de la base de datos
Pondremos lo siguiente: sqlmap –u “url” -D nombre de la base –tables

4. Para ver las columnas de las tablas ponemos lo siguiente
Sqlmap –u “url” –D nombre de la base –T nombre de la tabla –columns

5. Por último, para ver que hay dentro de las columnas es decir los datos ponemos:
Sqlmap –u “url” –D nombre de la base –T nombre de la tabla –C nombre de la columna –dump

Como veis en cinco sencillos pasos hemos podido extraer toda la información de la base de datos de una página web, veamos otro ejemplo.

EJEMPLO 2

Primero introducimos el comando similar al anterior y observamos los resultados.

A continuación vemos que la base de datos es “MySQL

En el siguiente paso mostramos los nombres de las bases de datos

Ahora procedemos a extraer las tablas de la base de datos

Como en el ejemplo anterior, extraemos también las columnas y después elegimos una categoría y extraemos su interior.

 

Vistos estos dos ejemplos nos podremos preguntar lo que sencillo es esto, podemos acceder a cualquier página, pero no es así de fácil. Las empresas pueden evitar este tipo de fallos de seguridad mediante una programación correcta en sus webs al realizar llamadas a la base de datos, o utilizando los waf, veamos lo que es.

¿Qué es un WAF?

Un Web Application Firewall (WAF) protege de múltiples ataques al servidor de aplicaciones web en el backend. La función del WAF es garantizar la seguridad del servidor web mediante el análisis de paquetes de petición HTTP / HTTPS y modelos de tráfico.
El WAF examina cada petición enviada al servidor, antes de que llegue a la aplicación, para asegurarse de que cumple con las reglas del firewall. Las características WAF pueden ser implementadas:

  • En el software: instalando una aplicación en el sistema operativo
  • En el hardware: integrando las funcionalidades en una solución de appliance

¿Se puede bypassear un waf?

Efectivamente esto se puede hacer mediante el uso de los tamper.
Un Tamper es un aplicativo open source creado en Python compatible con sqlmap, para las funciones de insertar payloads camuflados, mediante envíos de peticiones de sintaxis a la base de datos burlando algunas aplicaciones de protección web, como los conocidos “WAF”.
Es decir lo que intenta hacer un tamper es engañar al WAF para que nos dé acceso a su base de datos mediante diferentes ofuscaciones para saltarnos sus filtros de seguridad.

Ejemplos de tamper
Para cada tipo de motor de base de datos hay distintos tamper, aunque algunos nos pueden servir para varias como puede ser “space2comment”.

  • Space2comment lo que hace es sustituir un carácter de espacio por un código de espacio que el navegador interpreta como espacio: /**/
  • charencode.py se basa en codificar todos los caracteres por códigos numéricos de caracteres: 44%20%54%20%

Pero los tamper no siempre pueden evadir los waf, hay que tenerlo en cuenta ya que dependerá de la fortaleza en la configuración que haya desarrollado cada administrador.

Conclusión

Con esta aplicación podemos poner a prueba nuestra propia página web o la de un amigo, el objetivo de este artículo es que nos concienciemos de la poca seguridad que tienen muchas páginas web y demostrar que con 5 sencillos pasos podemos extirpar toda la información de una empresa.

 

Mouad Tenbihi-