Especificar Técnicas de Inyección en sqlmap

Kali LinuxBeginner
Practicar Ahora

Introducción

La inyección SQL es una vulnerabilidad de seguridad web que permite a un atacante interferir con las consultas que una aplicación realiza a su base de datos. Generalmente, permite a un atacante ver datos que normalmente no podría recuperar. Esto podría incluir datos pertenecientes a otros usuarios, o cualquier otro dato al que la propia aplicación pueda acceder. En muchos casos, un atacante puede modificar o eliminar estos datos, provocando cambios persistentes en el contenido o comportamiento de la aplicación.

sqlmap es una 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 y la toma de control de servidores de bases de datos. Viene con un potente motor de detección, muchas características específicas para el profesional de pruebas de penetración definitivo, y una amplia gama de opciones que van desde la huella digital de la base de datos hasta la obtención de datos de la base de datos, el acceso al sistema de archivos subyacente y la ejecución de comandos en el sistema operativo a través de conexiones fuera de banda.

En este laboratorio, aprenderá a especificar diferentes técnicas de inyección SQL en sqlmap utilizando la opción --technique. Esto le permite controlar qué métodos intenta utilizar sqlmap para la inyección, lo que puede ser útil para dirigirse a vulnerabilidades específicas u optimizar los tiempos de escaneo.

Comprender los Seis Códigos de Técnicas de SQLi (B, E, U, S, T, Q)

En este paso, aprenderá sobre los diferentes códigos de técnicas de inyección SQL que utiliza sqlmap. sqlmap soporta varias técnicas de inyección SQL, y puede especificar cuáles usar con la opción --technique. Cada técnica está representada por un solo carácter.

Los seis códigos principales de técnicas de inyección SQL son:

  • B: Inyección SQL ciega basada en booleanos (Boolean-based blind SQL injection). Esta técnica se basa en enviar consultas SQL que devuelven un resultado VERDADERO o FALSO, y luego observar la respuesta de la aplicación (por ejemplo, cambios en el contenido de la página) para inferir información.
  • E: Inyección SQL basada en errores (Error-based SQL injection). Esta técnica fuerza a la base de datos a generar un mensaje de error que contiene información sobre la estructura o los datos de la base de datos.
  • U: Inyección SQL basada en consultas UNION (UNION query-based SQL injection). Esta técnica utiliza el operador SQL UNION para combinar los resultados de dos o más sentencias SELECT en un único conjunto de resultados, lo que permite a un atacante recuperar datos de otras tablas.
  • S: Inyección SQL de consultas apiladas (Stacked queries SQL injection). Esta técnica permite a un atacante ejecutar múltiples sentencias SQL en una única consulta, a menudo utilizada para ejecutar comandos arbitrarios en el servidor de la base de datos.
  • T: Inyección SQL ciega basada en tiempo (Time-based blind SQL injection). Esta técnica se basa en hacer que la base de datos se detenga durante un período de tiempo especificado según una condición VERDADERA o FALSA, lo que permite a un atacante inferir información observando los tiempos de respuesta.
  • Q: Inyección SQL de consultas en línea (Inline queries SQL injection). Esta técnica implica inyectar subconsultas directamente en la consulta original.

Comprender estas técnicas es crucial para utilizar sqlmap de manera efectiva y para entender los principios subyacentes de la inyección SQL.

Forzar una Prueba Ciega Basada en Booleanos con --technique=B

En este paso, aprenderá cómo forzar a sqlmap a utilizar únicamente la técnica de inyección SQL ciega basada en booleanos. Esto puede ser útil cuando sospecha que un objetivo es vulnerable a este tipo específico de inyección, o cuando desea reducir el tiempo de escaneo centrándose en una sola técnica.

La opción --technique=B indica a sqlmap que utilice exclusivamente la inyección ciega basada en booleanos.

Vamos a simular la ejecución de sqlmap con esta opción. En un escenario real, reemplazaría http://testphp.vulnweb.com/artists.php?id=1 con la URL de su objetivo. Para este laboratorio, solo demostraremos el comando.

Abra su terminal y ejecute el siguiente comando:

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=B --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1": Especifica la URL del objetivo. Este es un sitio de prueba conocido por ser vulnerable.
  • --technique=B: Fuerza a sqlmap a utilizar solo la inyección ciega basada en booleanos.
  • --batch: Ejecuta sqlmap en modo no interactivo, aceptando las opciones predeterminadas.
  • --eta: Muestra el tiempo estimado de llegada para cada salida.
  • --skip-waf: Omite la detección de firewalls de aplicaciones web (WAF).

Observará la salida de sqlmap, que indicará que está probando principalmente vulnerabilidades ciegas basadas en booleanos. La salida mostrará a sqlmap intentando diferentes payloads y analizando las respuestas.

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Boolean-based blind - Parameter: id'
...

La salida confirma que sqlmap se está centrando en la técnica ciega basada en booleanos.

Forzar una Prueba Ciega Basada en Tiempo con --technique=T

En este paso, aprenderá cómo forzar a sqlmap a utilizar únicamente la técnica de inyección SQL ciega basada en tiempo. Esta técnica se utiliza a menudo cuando otros métodos, como los basados en errores o booleanos, no arrojan resultados, especialmente en escenarios donde la respuesta de la aplicación es consistente independientemente de la inyección.

La opción --technique=T indica a sqlmap que utilice exclusivamente la inyección ciega basada en tiempo.

Abra su terminal y ejecute el siguiente comando:

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=T --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1": Especifica la URL del objetivo.
  • --technique=T: Fuerza a sqlmap a utilizar solo la inyección ciega basada en tiempo.
  • --batch: Ejecuta sqlmap en modo no interactivo.
  • --eta: Muestra el tiempo estimado de llegada.
  • --skip-waf: Omite la detección de WAF.

Observará la salida de sqlmap, que mostrará la inyección de payloads que causan retrasos en la respuesta del servidor. Este método puede ser más lento que otros debido a la necesidad de esperar los retrasos de tiempo.

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Time-based blind - Parameter: id'
...

La salida confirma que sqlmap se está centrando ahora en la técnica ciega basada en tiempo.

Forzar una Prueba Basada en Consultas UNION con --technique=U

En este paso, aprenderá cómo forzar a sqlmap a utilizar únicamente la técnica de inyección SQL basada en consultas UNION. Esta técnica es muy eficaz cuando la aplicación muestra los resultados de la consulta SQL directamente en la página, ya que permite a un atacante recuperar datos de otras tablas de la base de datos.

La opción --technique=U indica a sqlmap que utilice exclusivamente la inyección basada en consultas UNION.

Abra su terminal y ejecute el siguiente comando:

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=U --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1": Especifica la URL del objetivo.
  • --technique=U: Fuerza a sqlmap a utilizar solo la inyección basada en consultas UNION.
  • --batch: Ejecuta sqlmap en modo no interactivo.
  • --eta: Muestra el tiempo estimado de llegada.
  • --skip-waf: Omite la detección de WAF.

Observará la salida de sqlmap, que mostrará sus intentos de inyectar sentencias UNION SELECT. Si tiene éxito, esta técnica puede revelar rápidamente la estructura y los datos de la base de datos.

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'UNION query - Parameter: id'
...

La salida confirma que sqlmap se está centrando ahora en la técnica basada en consultas UNION.

Ejecutar un Escaneo con Múltiples Técnicas usando --technique=BEUST

En este paso, aprenderá cómo combinar múltiples técnicas de inyección SQL en un solo escaneo de sqlmap. Este es a menudo el enfoque más práctico, ya que permite a sqlmap probar varios métodos para encontrar vulnerabilidades, aumentando las posibilidades de éxito.

Puede especificar múltiples técnicas concatenando sus respectivos códigos después de --technique=. Por ejemplo, --technique=BEUST indicará a sqlmap que intente inyecciones basadas en booleanos, basadas en errores, basadas en consultas UNION, consultas apiladas y ciegas basadas en tiempo.

Abra su terminal y ejecute el siguiente comando:

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=BEUST --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1": Especifica la URL del objetivo.
  • --technique=BEUST: Fuerza a sqlmap a utilizar inyecciones basadas en booleanos, basadas en errores, basadas en consultas UNION, consultas apiladas y ciegas basadas en tiempo.
  • --batch: Ejecuta sqlmap en modo no interactivo.
  • --eta: Muestra el tiempo estimado de llegada.
  • --skip-waf: Omite la detección de WAF.

Observará la salida de sqlmap, que mostrará que está probando sistemáticamente cada una de las técnicas especificadas. Este enfoque integral generalmente se recomienda para escaneos iniciales.

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Boolean-based blind - Parameter: id'
[12:00:02] [INFO] testing 'Error-based - Parameter: id'
[12:00:03] [INFO] testing 'UNION query - Parameter: id'
[12:00:04] [INFO] testing 'Stacked queries - Parameter: id'
[12:00:05] [INFO] testing 'Time-based blind - Parameter: id'
...

La salida confirma que sqlmap está probando múltiples técnicas según lo especificado.

Resumen

En este laboratorio, ha aprendido con éxito cómo especificar y controlar las técnicas de inyección SQL utilizadas por sqlmap. Exploró los códigos de técnicas individuales (B, E, U, S, T, Q) y practicó forzando a sqlmap a utilizar métodos específicos como inyecciones ciegas basadas en booleanos, ciegas basadas en tiempo y basadas en consultas UNION. Finalmente, aprendió a combinar múltiples técnicas para un escaneo más completo.

Comprender y utilizar la opción --technique en sqlmap le permite ajustar sus evaluaciones de vulnerabilidad, optimizar los tiempos de escaneo y dirigirse a tipos específicos de vulnerabilidades de inyección SQL de manera más efectiva. Esta habilidad es crucial para pruebas de penetración eficientes y precisas.