SQLMap Output Description

Al final de la sección anterior, la salida de SQLMap nos proporcionó mucha información durante su escaneo. Estos datos suelen ser cruciales para comprender el proceso de inyección SQL automatizada. Nos muestran con precisión qué tipo de vulnerabilidades está explotando SQLMap, lo que nos ayuda a determinar el tipo de inyección que presenta la aplicación web. Esto también puede resultar útil si quisiéramos explotar manualmente la aplicación web una vez que SQLMap determine el tipo de inyección y el parámetro vulnerable.

Descripción de los mensajes de registro

A continuación se presentan algunos de los mensajes más comunes que suelen encontrarse durante un escaneo de SQLMap, junto con un ejemplo de cada uno del ejercicio anterior y su descripción.

El contenido de la URL es estable.

Log Message:

  • "El contenido de la URL de destino es estable"

Esto significa que no hay cambios importantes entre las respuestas en caso de solicitudes idénticas continuas. Esto es importante desde el punto de vista de la automatización, ya que, con respuestas estables, es más fácil detectar las diferencias causadas por posibles intentos de inyección SQL. Si bien la estabilidad es importante, SQLMap cuenta con mecanismos avanzados para eliminar automáticamente el posible «ruido» que podría provenir de objetivos potencialmente inestables.

El parámetro parece ser dinámico.

Log Message:

  • "El parámetro 'id' de la solicitud GET parece ser dinámico"

Siempre es deseable que el parámetro evaluado sea dinámico, ya que esto indica que cualquier cambio en su valor afectará la respuesta; por lo tanto, el parámetro puede estar vinculado a una base de datos. Si la salida es estática y no cambia, podría indicar que el valor del parámetro evaluado no se procesa en el sistema de destino, al menos en el contexto actual.

El parámetro podría ser inyectable.

Log Message:"Las pruebas heurísticas (básicas) muestran que el parámetro GET 'id' podría ser inyectable (posible DBMS: 'MySQL')"

Como se mencionó anteriormente, los errores del SGBD son un buen indicador de una posible inyección SQL. En este caso, se produjo un error de MySQL cuando SQLMap envió un valor intencionalmente inválido (por ejemplo, ?id=1",)..).))'), lo que indica que el parámetro probado podría ser vulnerable a inyección SQL y que el objetivo podría ser MySQL. Cabe destacar que esto no constituye una prueba de inyección SQL, sino simplemente un indicio de que el mecanismo de detección debe probarse en una ejecución posterior.

El parámetro podría ser vulnerable a ataques XSS.

Log Message:

  • "Las pruebas heurísticas (XSS) muestran que el parámetro GET 'id' podría ser vulnerable a ataques de secuencias de comandos entre sitios (XSS)".

Si bien no es su función principal, SQLMap también realiza una prueba heurística rápida para detectar la presencia de una vulnerabilidad XSS. En pruebas a gran escala, donde se evalúan numerosos parámetros con SQLMap, resulta útil contar con este tipo de comprobaciones heurísticas rápidas, sobre todo si no se encuentran vulnerabilidades de inyección SQL.

El sistema de gestión de bases de datos (DBMS) de back-end es '...'

Log Message:

  • "Parece que el sistema de gestión de bases de datos (DBMS) de backend es 'MySQL'. ¿Desea omitir las cargas útiles de prueba específicas para otros DBMS? [S/n]"

En una ejecución normal, SQLMap realiza pruebas en todos los sistemas de gestión de bases de datos (DBMS) compatibles. Si hay indicios claros de que el objetivo utiliza un DBMS específico, podemos limitar las cargas útiles a ese DBMS en concreto.

Valores de nivel/riesgo

Log Message:

  • "Para las pruebas restantes, ¿desea incluir todas las pruebas para 'MySQL' que amplíen los valores de nivel (1) y riesgo (1) proporcionados? [S/n]"

Si existen indicios claros de que el objetivo utiliza un SGBD específico, también es posible ampliar las pruebas para ese mismo SGBD más allá de las pruebas habituales. Esto implica ejecutar todas las cargas útiles de inyección SQL para ese SGBD específico, mientras que, si no se detecta ningún SGBD, solo se probarán las cargas útiles más comunes.

Valores reflexivos encontrados

Log Message:

  • "Valores reflectivos encontrados y filtrando"

Solo una advertencia: se han encontrado partes de las cargas útiles utilizadas en la respuesta. Este comportamiento podría causar problemas a las herramientas de automatización, ya que representa datos basura. Sin embargo, SQLMap cuenta con mecanismos de filtrado para eliminar dichos datos basura antes de comparar el contenido original de la página.

El parámetro parece ser inyectable.

Log Message:

  • "El parámetro 'id' de la obtención del objeto GET parece ser inyectable mediante una cláusula ciega 'AND booleana - WHERE o HAVING' (con --string="luther")"

Este mensaje indica que el parámetro parece ser inyectable, aunque aún existe la posibilidad de que se trate de un falso positivo. En el caso de SQLi ciega basada en booleanos y otros tipos similares (p. ej., ciega basada en tiempo), donde existe una alta probabilidad de falsos positivos, al finalizar la ejecución, SQLMap realiza pruebas exhaustivas que consisten en comprobaciones lógicas simples para eliminar los falsos positivos.

Además, with --string="luther"indica que SQLMap reconoció y utilizó la presencia de un valor de cadena constante lutheren la respuesta para distinguirla TRUEde FALSEotras respuestas. Este es un hallazgo importante, ya que en tales casos no es necesario recurrir a mecanismos internos avanzados, como la eliminación de dinamicidad/reflexión o la comparación aproximada de respuestas, que no pueden considerarse falsos positivos.

modelo estadístico de comparación basado en el tiempo

Log Message:

  • "La comparación basada en el tiempo requiere un modelo estadístico más amplio, por favor espere........... (listo)"

SQLMap utiliza un modelo estadístico para reconocer las respuestas regulares y las retrasadas (deliberadamente). Para que este modelo funcione, es necesario recopilar un número suficiente de tiempos de respuesta regulares. De esta forma, SQLMap puede distinguir estadísticamente entre el retraso deliberado e incluso en entornos de red con alta latencia.

Ampliación de las pruebas de la técnica de inyección de consultas UNION

Log Message:

  • "Ampliando automáticamente los rangos para las pruebas de la técnica de inyección de consultas UNION, ya que se ha encontrado al menos otra técnica (potencial)".

Las comprobaciones de inyección SQL mediante consultas UNION requieren muchas más solicitudes para el reconocimiento exitoso de una carga útil utilizable que otros tipos de SQLi. Para reducir el tiempo de prueba por parámetro, especialmente si el objetivo no parece ser vulnerable a inyección, el número de solicitudes se limita a un valor constante (es decir, 10) para este tipo de comprobación. Sin embargo, si existe una alta probabilidad de que el objetivo sea vulnerable, sobre todo si se encuentra otra técnica de inyección SQL (potencial), SQLMap aumenta el número predeterminado de solicitudes para la inyección SQL mediante consultas UNION, debido a una mayor probabilidad de éxito.

La técnica parece ser utilizable.

Log Message:

  • La técnica "ORDER BY" parece ser útil. Esto debería reducir el tiempo necesario para encontrar el número correcto de columnas de consulta. Ampliación automática del rango para la prueba actual de la técnica de inyección de consultas UNION.

Como comprobación heurística para el tipo de consulta SQLi UNION, antes de UNIONenviar las cargas útiles, ORDER BYse verifica la usabilidad de una técnica conocida como [nombre de la técnica faltante]. Si resulta usable, SQLMap puede identificar rápidamente el número correcto de UNIONcolumnas necesarias mediante una búsqueda binaria.

El parámetro es vulnerable

Log Message:

  • "El parámetro 'id' de la solicitud GET es vulnerable. ¿Desea seguir probando los demás (si los hay)? [s/N]"

Este es uno de los mensajes más importantes de SQLMap, ya que indica que se ha detectado que el parámetro es vulnerable a inyecciones SQL. Normalmente, el usuario solo querrá encontrar al menos un punto de inyección (es decir, un parámetro) que pueda utilizarse contra el objetivo. Sin embargo, si estuviéramos realizando una prueba exhaustiva en la aplicación web y quisiéramos informar de todas las posibles vulnerabilidades, podríamos continuar buscando todos los parámetros vulnerables.

Puntos de inyección identificados por Sqlmap

Log Message:

  • "sqlmap identificó los siguientes puntos de inyección con un total de 46 solicitudes HTTP:"

A continuación se presenta una lista de todos los puntos de inyección con su tipo, título y carga útil, lo que constituye la prueba definitiva de la detección y explotación exitosa de las vulnerabilidades SQLi encontradas. Cabe destacar que SQLMap solo incluye aquellos hallazgos que son demostrablemente explotables (es decir, utilizables).

Datos registrados en archivos de texto

Log Message:

  • "Los datos recuperados se han guardado en archivos de texto en '/home/user/.sqlmap/output/www.example.com'"

Esto indica la ubicación del sistema de archivos local donde se almacenan todos los registros, sesiones y datos de salida para un objetivo específico; en este caso, www.example.com. Tras una ejecución inicial en la que se detecta correctamente el punto de inyección, todos los detalles para las ejecuciones posteriores se almacenan en los archivos de sesión del mismo directorio. Esto significa que SQLMap intenta reducir al máximo las solicitudes al objetivo, en función de los datos de los archivos de sesión.

Last updated