Enumerar Tablas de una Base de Datos Específica con sqlmap

Kali LinuxBeginner
Practicar Ahora

Introducción

En el ámbito de la ciberseguridad, comprender las estructuras de las bases de datos es un paso crítico para evaluar la postura de seguridad de las aplicaciones web. Las vulnerabilidades de inyección SQL pueden exponer información sensible, y herramientas como sqlmap son indispensables para automatizar el descubrimiento y la explotación de dichas fallas.

Este laboratorio se centra en un aspecto específico, pero crucial, de las capacidades de sqlmap: la enumeración de tablas dentro de una base de datos. Después de identificar posibles puntos de inyección SQL y listar las bases de datos disponibles, el siguiente paso lógico es profundizar en una base de datos específica para comprender su estructura de tablas. Este conocimiento es vital para una mayor explotación, como la extracción de datos sensibles de tablas específicas.

Al final de este laboratorio, usted será competente en el uso de sqlmap para dirigirse a una base de datos en particular y listar todas sus tablas asociadas, una habilidad fundamental para cualquier probador de penetración o entusiasta de la seguridad.

Seleccionar una Base de Datos Objetivo de la Lista Enumerada

En este paso, simularemos haber enumerado bases de datos previamente y seleccionaremos una en la que enfocarnos. En un escenario del mundo real, ya habría ejecutado sqlmap con la bandera --dbs para listar todas las bases de datos disponibles. Para este laboratorio, asumiremos que ha identificado una base de datos llamada acuart como su objetivo.

Primero, asegurémonos de que sqlmap esté disponible. Si no está instalado, puede instalarlo usando sudo apt update && sudo apt install sqlmap -y.

Utilizaremos una URL vulnerable conocida como nuestro objetivo. Para fines de demostración, usaremos http://testphp.vulnweb.com/listproducts.php?cat=1.

Para comenzar, listemos las bases de datos disponibles en nuestro objetivo. Este comando tardará algún tiempo en ejecutarse, ya que sqlmap realiza sus comprobaciones.

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs

Verá una salida similar a esta, listando las bases de datos:

---
[INFO] fetching database names
[INFO] the back-end DBMS is MySQL
...
available databases [X]:
[*] acuart
[*] information_schema
[*] mysql
[*] performance_schema
...

De esta lista, elegiremos acuart para una mayor enumeración.

Usar la Bandera -D para Especificar la Base de Datos

En este paso, aprenderemos cómo indicarle a sqlmap con qué base de datos específica queremos interactuar. Esto se logra utilizando la bandera -D (o --db), seguida del nombre de la base de datos.

Continuando desde el paso anterior, donde identificamos acuart como nuestra base de datos objetivo, ahora instruiremos a sqlmap para que centre sus operaciones en esta base de datos en particular.

La sintaxis general para especificar una base de datos es:

sqlmap -u "URL_OBJETIVO" -D "NOMBRE_BASE_DE_DATOS" [OTRAS_BANDERA]

Para nuestro laboratorio, usaremos acuart como el nombre de la base de datos. Aún no estamos listando tablas, solo estableciendo el contexto para sqlmap.

Ejecute el siguiente comando en su terminal:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --current-db

Este comando le indicará a sqlmap que se dirija a la base de datos acuart y luego intente identificar la base de datos actual a la que está conectado, confirmando nuestra selección. La salida confirmará que acuart es la base de datos que se está atacando.

---
[INFO] fetching current database
...
current database: 'acuart'
...

Usar la Bandera --tables para Listar Tablas

Ahora que hemos especificado la base de datos objetivo usando la bandera -D, el siguiente paso lógico es listar las tablas dentro de esa base de datos. Aquí es donde entra en juego la bandera --tables.

La bandera --tables instruye a sqlmap a enumerar todas las tablas presentes en la base de datos actualmente seleccionada. Cuando se combina con la bandera -D, proporciona una forma potente de mapear la estructura de una base de datos específica.

La sintaxis general para listar tablas en una base de datos específica es:

sqlmap -u "URL_OBJETIVO" -D "NOMBRE_BASE_DE_DATOS" --tables

Para nuestro laboratorio, combinaremos la URL objetivo, la base de datos acuart y la bandera --tables.

Ejecute el siguiente comando en su terminal:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables

Este comando iniciará el proceso de sqlmap para identificar y listar todas las tablas dentro de la base de datos acuart. Esta operación podría llevar algún tiempo dependiendo de la complejidad y el tamaño de la base de datos.

Ejecutar el Comando para Enumerar Tablas

En este paso, ejecutaremos el comando completo de sqlmap que combina todas las banderas que hemos aprendido hasta ahora para enumerar tablas de nuestra base de datos objetivo específica.

Usaremos la URL objetivo http://testphp.vulnweb.com/listproducts.php?cat=1, especificaremos la base de datos acuart usando -D acuart, e instruiremos a sqlmap para que liste sus tablas usando --tables.

Abre tu terminal y ejecuta el siguiente comando:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables

sqlmap ahora realizará sus comprobaciones e intentará recuperar los nombres de las tablas. Verás varios mensajes [INFO] a medida que sqlmap avanza en sus pruebas.

Después de un tiempo, sqlmap presentará una lista de las tablas encontradas dentro de la base de datos acuart. La salida se verá similar a esto:

---
[INFO] fetching tables for database 'acuart'
...
Database: acuart
[X] articles
[X] carts
[X] categories
[X] guestbook
[X] pictures
[X] products
[X] users
...

Esta salida confirma que sqlmap enumeró con éxito las tablas dentro de la base de datos acuart.

Analizar la Lista de Nombres de Tablas Devuelta

En este paso final, analizaremos la salida del comando sqlmap anterior. Comprender la lista de nombres de tablas devuelta es crucial para planificar los siguientes pasos de explotación.

Cuando sqlmap enumera tablas con éxito, las presenta en una lista clara y organizada. Para la base de datos acuart, deberías haber visto tablas como articles, carts, categories, guestbook, pictures, products y users.

Cada uno de estos nombres de tabla proporciona una pista sobre los datos almacenados en la base de datos. Por ejemplo:

  • users: Es muy probable que esta tabla contenga credenciales de usuario (nombres de usuario, contraseñas, correos electrónicos), que a menudo son un objetivo principal para los atacantes.
  • products: Esta tabla contendría información sobre los productos vendidos en el sitio web.
  • articles, guestbook, categories: Estas tablas probablemente almacenan datos relacionados con el contenido.

La presencia de una tabla users es particularmente significativa, ya que a menudo contiene información sensible. En una prueba de penetración real, tu siguiente paso sería enumerar las columnas dentro de la tabla users (usando --columns) y luego volcar los datos de esas columnas (usando --dump).

Este laboratorio te ha proporcionado la habilidad fundamental de enumerar tablas de una base de datos específica usando sqlmap, un paso crítico en cualquier evaluación de inyección SQL.

Resumen

En este laboratorio, has aprendido con éxito cómo enumerar tablas de una base de datos específica utilizando sqlmap. Comenzaste comprendiendo la importancia de seleccionar una base de datos objetivo, luego utilizaste la bandera -D para especificarla y finalmente empleaste la bandera --tables para listar todas las tablas asociadas.

Ejecutaste el comando completo de sqlmap para realizar la enumeración y analizaste la lista de nombres de tablas devuelta, comprendiendo su posible importancia en una evaluación de seguridad. Esta habilidad es un elemento fundamental en el proceso de identificación y explotación de vulnerabilidades de inyección SQL, permitiéndote mapear las estructuras de la base de datos y planificar la extracción de datos adicional.

Al dominar esta técnica, ahora estás mejor equipado para navegar y comprender las estructuras de datos subyacentes de las aplicaciones web, un paso crucial en cualquier compromiso de pruebas de penetración.