Dirigir un Sistema de Gestión de Bases de Datos Específico con sqlmap

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a utilizar sqlmap, una potente herramienta de pruebas de penetración de código abierto que automatiza el proceso de detección y explotación de fallos de inyección SQL. Específicamente, se centrará en una técnica de optimización clave: la segmentación de un Sistema de Gestión de Bases de Datos (DBMS) backend específico.

Por defecto, sqlmap prueba una amplia variedad de sistemas de bases de datos, lo que puede consumir mucho tiempo. Al especificar el DBMS objetivo (como MySQL, PostgreSQL o MSSQL), puede acelerar significativamente el proceso de escaneo, reducir el número de solicitudes enviadas al servidor y hacer que sus pruebas sean más eficientes.

Hemos preconfigurado una aplicación web vulnerable para que practique. La URL objetivo para este laboratorio es: http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit#

¡Empecemos!

Identificar el DBMS Backend Probable (ej. MySQL, PostgreSQL)

En este paso, ejecutará un escaneo básico de sqlmap para que identifique automáticamente el sistema de base de datos backend. Este es un primer paso común en una prueba de penetración. La información recopilada aquí nos ayudará a optimizar nuestro ataque en los pasos subsiguientes.

Utilizaremos la bandera --batch para que sqlmap se ejecute con sus respuestas predeterminadas a todas las preguntas, haciendo que el escaneo sea no interactivo. También necesitamos proporcionar una cookie de sesión para acceder a la página vulnerable. Para este laboratorio, la cookie es security=low; PHPSESSID=labex.

Ejecute el siguiente comando en su terminal:

sqlmap -u "http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=labex" --batch

sqlmap iniciará su proceso de prueba. Preste mucha atención a la salida. Después de una serie de pruebas, sqlmap imprimirá información sobre el sistema operativo del servidor web, la tecnología del servidor web y, lo más importante, el DBMS backend.

Debería ver una salida similar a esta (algunos detalles pueden variar):

[INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu
web application technology: PHP 8.1.2, Apache 2.4.52
back-end DBMS: MySQL >= 5.0

Como puede ver, sqlmap ha identificado la base de datos backend como MySQL. Esta es la información crucial que utilizaremos a continuación.

Utilizar la Bandera --dbms para Especificar el Sistema Objetivo

En este paso, aprenderemos sobre la bandera --dbms, que es el núcleo de este laboratorio. Ahora que sabemos que el objetivo está ejecutando MySQL por el paso anterior, no hay necesidad de que sqlmap pierda tiempo ejecutando pruebas para otros sistemas de bases de datos como PostgreSQL, Oracle o Microsoft SQL Server.

La bandera --dbms le permite decirle a sqlmap exactamente para qué sistema de base de datos debe probar. Esto hace que la herramienta sea mucho más eficiente.

La sintaxis es sencilla:
--dbms=NOMBRE_DBMS

Reemplace NOMBRE_DBMS con el nombre de la base de datos objetivo. Aquí hay algunos valores comunes:

  • MySQL
  • PostgreSQL
  • MSSQL (Microsoft SQL Server)
  • Oracle
  • SQLite
  • Access

Al proporcionar esta información, está instruyendo a sqlmap para que solo utilice payloads y técnicas que sean específicas del DBMS especificado. Esta es una habilidad fundamental para usar sqlmap de manera efectiva en escenarios del mundo real. En el siguiente paso, aplicará esta bandera a un nuevo escaneo.

Ejecutar un Escaneo con --dbms=MySQL

En este paso, ejecutará el escaneo de sqlmap nuevamente, pero esta vez agregará la bandera --dbms=MySQL. Esto le indicará a sqlmap que concentre sus esfuerzos exclusivamente en pruebas específicas de MySQL, basándose en la inteligencia que recopilamos en el Paso 1.

Ejecute el siguiente comando en su terminal. Es el mismo comando que antes, con la nueva bandera añadida.

sqlmap -u "http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=labex" --dbms=MySQL --batch

El escaneo comenzará de inmediato. Notará que la salida inicial de sqlmap confirma que está forzando el DBMS backend a MySQL.

[INFO] forcing back-end DBMS to 'MySQL'

Deje que el escaneo se complete. En el siguiente paso, analizaremos los resultados y los compararemos con nuestro primer escaneo.

Observar la Reducción del Número de Payloads y una Identificación Más Rápida

En este paso, observará los beneficios directos de usar la bandera --dbms. Las principales ventajas son una reducción significativa en el número de pruebas realizadas y un tiempo de finalización mucho más rápido.

Si compara la salida del escaneo del Paso 3 con el primer escaneo del Paso 1, notará una diferencia clave. El primer escaneo dedicó tiempo a intentar identificar la base de datos, ejecutando pruebas genéricas y luego reduciéndolas. El segundo escaneo, sin embargo, se saltó todo eso.

La salida del escaneo dirigido mostrará que sqlmap solo está ejecutando pruebas relevantes para MySQL. No lo verá probando otros sistemas como PostgreSQL u Oracle.

Por ejemplo, un escaneo genérico podría probar cientos de payloads en diferentes tipos de inyección SQL para múltiples bases de datos. El escaneo dirigido, sin embargo, solo ejecutará los payloads conocidos por funcionar contra MySQL. Esto resulta en:

  • Menos Solicitudes HTTP: La herramienta envía significativamente menos solicitudes al servidor objetivo.
  • Ejecución Más Rápida: El tiempo total del escaneo se reduce drásticamente.

Esta eficiencia es fundamental en las pruebas de penetración, donde el tiempo suele ser una limitación y minimizar el tráfico de red puede ayudar a evitar la detección por firewalls o Sistemas de Detección de Intrusiones (IDS).

Comprender Cómo Esto Optimiza el Ataque al Reducir los Casos de Prueba

En este paso final, afiancemos nuestra comprensión de por qué apuntar al DBMS es una mejor práctica para la optimización.

sqlmap está diseñado para ser una herramienta completa. Sin ninguna indicación, su comportamiento predeterminado es asumir que no sabe nada sobre el objetivo. Por lo tanto, ejecuta una gran batería de pruebas para cubrir muchas posibilidades:

  1. Fingerprinting (Identificación): Primero intenta determinar el tipo de DBMS enviando varias consultas y analizando las respuestas. Cada base de datos tiene funciones, mensajes de error y comportamientos únicos que pueden revelar su identidad.
  2. Pruebas Amplias: Luego prueba diferentes técnicas de inyección SQL (basada en booleanos ciegas, basada en tiempo ciegas, basada en errores, consultas UNION, etc.).
  3. Payloads Específicos del DBMS: Para cada técnica, prueba payloads que funcionan en diferentes sistemas de bases de datos.

Este enfoque de "fuerza bruta" es exhaustivo pero ineficiente si ya conoce o puede adivinar rápidamente el backend.

Al usar --dbms=MySQL, le está diciendo a sqlmap que omita por completo el paso 1 y que solo utilice los payloads del paso 3 que sean relevantes para MySQL. Esto elimina una gran cantidad de casos de prueba de su flujo de trabajo.

Esta optimización proporciona tres ventajas clave:

  • Velocidad: El escaneo finaliza mucho más rápido porque no está ejecutando pruebas innecesarias.
  • Sigilo: Menos solicitudes significan menos "ruido" en los registros del servidor web, lo que hace que la actividad sea menos propensa a activar alertas.
  • Eficiencia: Enfoca el poder de la herramienta en los vectores de ataque más probables, aumentando las posibilidades de un descubrimiento exitoso y rápido.

Dominar banderas como --dbms transforma sqlmap de un simple escáner automatizado a una herramienta de prueba precisa y quirúrgica.

Resumen

En este laboratorio, aprendió una técnica crucial para optimizar los escaneos de sqlmap. Vio de primera mano cómo identificar el Sistema de Gestión de Bases de Datos (DBMS) backend y luego usar la bandera --dbms puede mejorar drásticamente la eficiencia de sus pruebas de inyección SQL.

Comenzó ejecutando un escaneo genérico para identificar el backend como MySQL. Luego, aprendió sobre la bandera --dbms y la usó para ejecutar un escaneo dirigido. Al comparar los dos enfoques, observó que el escaneo dirigido era significativamente más rápido porque eliminó una gran cantidad de casos de prueba irrelevantes.

Este principio de enfocar sus herramientas es un concepto fundamental en las pruebas de penetración efectivas. ¡Felicitaciones por completar este laboratorio y agregar una habilidad clave de sqlmap a su conjunto de herramientas!