Eludir Filtros Básicos con Scripts de Manipulación en sqlmap

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, explorará cómo utilizar los potentes scripts de manipulación (tamper scripts) de sqlmap para eludir filtros comunes de aplicaciones web. Muchas aplicaciones web implementan validación y filtrado de entrada básicos para prevenir ataques de inyección SQL. Estos filtros pueden bloquear palabras clave SQL comunes, espacios u otros caracteres. Los scripts de manipulación de sqlmap pueden modificar automáticamente las cargas útiles de inyección SQL para evadir estos filtros, haciendo que sus ataques sean más efectivos. Aprenderá a identificar escenarios donde la evasión es necesaria, listar los scripts de manipulación disponibles, aplicar un script específico y observar su efecto en las cargas útiles generadas.

Identificar un Escenario que Requiere Evasión

En este paso, comprenderá por qué son necesarios los scripts de manipulación (tamper scripts). Las aplicaciones web a menudo emplean filtros básicos para prevenir patrones comunes de inyección SQL. Por ejemplo, un filtro podría bloquear espacios o reemplazarlos con otros caracteres, o podría bloquear palabras clave como UNION o SELECT. Cuando las cargas útiles predeterminadas de sqlmap son bloqueadas, necesita modificarlas para eludir estos filtros.

Considere un escenario hipotético donde una aplicación web filtra los espacios en la entrada del usuario. Si sqlmap intenta inyectar una carga útil como ' OR 1=1--, el filtro podría transformarla en 'OR1=1--, haciendo que la carga útil sea ineficaz. Los scripts de manipulación ayudan a sqlmap a generar cargas útiles alternativas que pueden eludir tales restricciones.

Para simular un escaneo básico de sqlmap sin ninguna técnica de evasión, utilizaremos una URL ficticia. Esto nos ayudará más tarde a comparar las cargas útiles generadas con y sin scripts de manipulación.

Ejecute el siguiente comando de sqlmap para iniciar un escaneo básico contra un objetivo ficticio. Tenga en cuenta que este objetivo no es realmente vulnerable, pero nos permite observar el comportamiento de sqlmap y las cargas útiles generadas.

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dump --batch --forms --level 1 --risk 1 --parse-errors --technique=U --eta --output-dir=/tmp/sqlmap_output_no_tamper

Este comando intentará realizar un escaneo básico de inyección SQL. La opción --dump se utiliza para volcar datos, --batch se ejecuta en modo no interactivo, --forms comprueba formularios, --level 1 --risk 1 establece el nivel de detección y el riesgo, --parse-errors analiza los mensajes de error, --technique=U especifica la inyección SQL de consulta UNION, --eta muestra la hora estimada de llegada y --output-dir especifica el directorio de salida.

Observe la salida. Si bien este comando específico podría no encontrar vulnerabilidades en la URL dada (ya que es un sitio de prueba general y no está configurado específicamente para el propósito de este laboratorio), el objetivo es ver el intento inicial de sqlmap y comprender que a veces, estos intentos pueden ser bloqueados por los filtros.

Listar Scripts de Manipulación Disponibles con --list-tampers

En este paso, aprenderá a listar todos los scripts de manipulación (tamper scripts) disponibles en sqlmap. sqlmap viene con una amplia variedad de scripts de manipulación, cada uno diseñado para eludir tipos específicos de filtros o WAFs (Web Application Firewalls). Saber qué scripts están disponibles es crucial para seleccionar el adecuado para sus necesidades de evasión.

Para listar todos los scripts de manipulación disponibles, utilice la opción --list-tampers con sqlmap.

sqlmap --list-tampers

Este comando generará una lista de todos los archivos .py ubicados en el directorio tamper de sqlmap. Cada archivo representa un script de manipulación diferente. Por ejemplo, podría ver scripts como space2comment.py, unionalltostring.py, apostrophemask.py, etc. Cada script tiene un propósito específico, como reemplazar espacios con comentarios, convertir UNION ALL a concatenación de cadenas o enmascarar apóstrofes.

Revise la lista e intente comprender el propósito de algunos scripts basándose en sus nombres. Por ejemplo, space2comment.py está diseñado para reemplazar espacios con comentarios SQL, lo que puede eludir filtros que bloquean los espacios.

Seleccionar y Aplicar un Script de Manipulación con --tamper=space2comment

En este paso, seleccionará y aplicará un script de manipulación específico a su escaneo de sqlmap. Para este laboratorio, utilizaremos el script de manipulación space2comment. Este script reemplaza los espacios en la carga útil de inyección SQL con secuencias /**/ (comentarios de varias líneas). Esta técnica es efectiva contra filtros que bloquean o eliminan espacios pero permiten comentarios SQL.

Para aplicar un script de manipulación, utiliza la opción --tamper seguida del nombre del script (sin la extensión .py).

Ejecute el siguiente comando de sqlmap, esta vez incluyendo el script de manipulación space2comment:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dump --batch --forms --level 1 --risk 1 --parse-errors --technique=U --eta --tamper=space2comment --output-dir=/tmp/sqlmap_output_with_tamper

Observe la adición de --tamper=space2comment. Esto le indica a sqlmap que procese todas las cargas útiles generadas a través de este script de manipulación específico antes de enviarlas al objetivo.

Si bien la salida puede parecer similar al paso anterior, internamente, sqlmap ahora está modificando sus cargas útiles. En el siguiente paso, examinaremos la diferencia en las cargas útiles generadas.

Ejecutar un Escaneo con el Script de Manipulación Seleccionado

En este paso, ya ha ejecutado el comando sqlmap con el script de manipulación space2comment en el paso anterior. El propósito de este paso es reforzar la ejecución y prepararse para la comparación de cargas útiles (payloads).

El comando que ejecutó fue:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dump --batch --forms --level 1 --risk 1 --parse-errors --technique=U --eta --tamper=space2comment --output-dir=/tmp/sqlmap_output_with_tamper

Este comando instruye a sqlmap a realizar un escaneo, pero esta vez, modificará sus cargas útiles utilizando el script de manipulación space2comment. Por ejemplo, una carga útil como UNION SELECT podría transformarse en UNION/**/SELECT. Este cambio sutil a menudo puede eludir mecanismos simples de filtrado de espacios.

La opción --output-dir=/tmp/sqlmap_output_with_tamper asegura que la salida de sqlmap, incluidas las cargas útiles o los registros generados, se almacene en un directorio separado. Esto será útil para comparar las cargas útiles en el siguiente paso.

Permita que el escaneo de sqlmap se complete. Incluso si no encuentra una vulnerabilidad en el objetivo de prueba, lo importante es que sqlmap ha intentado utilizar cargas útiles manipuladas.

Comparar Cargas Útiles con y sin el Script de Manipulación

En este paso final, comparará las cargas útiles generadas por sqlmap con y sin el script de manipulación space2comment. Esta comparación demostrará visualmente cómo los scripts de manipulación modifican las cargas útiles de inyección para evadir filtros.

sqlmap registra sus actividades, incluidas las cargas útiles que envía, en el directorio de salida. Especificamos directorios de salida diferentes para los escaneos en el Paso 1 y el Paso 3.

Primero, intentemos encontrar algunos archivos de registro que puedan contener las cargas útiles. sqlmap típicamente almacena las solicitudes HTTP en archivos dentro de su directorio de salida.

Navegue a los directorios de salida y busque los registros de solicitudes. Los nombres exactos de los archivos pueden variar, pero generalmente se encuentran en log/ o directamente en el directorio del objetivo.

Intentemos encontrar un archivo de registro común que contenga las solicitudes. sqlmap a menudo crea un archivo session.log o similar.

Utilice grep para buscar palabras clave SQL comunes en los archivos de registro de ambas ejecuciones.

Compare las cargas útiles buscando diferencias en cómo se manejan los espacios.

echo "--- Payloads without tamper script ---"
grep -r "UNION" /tmp/sqlmap_output_no_tamper/ | head -n 5

echo ""
echo "--- Payloads with tamper script ---"
grep -r "UNION" /tmp/sqlmap_output_with_tamper/ | head -n 5

Debería observar que en la salida "Payloads with tamper script", los espacios dentro de las palabras clave SQL (como UNION SELECT) se reemplazan con comentarios /**/, mientras que en la salida "Payloads without tamper script", se utilizan espacios normales. Esto ilustra claramente el efecto del script de manipulación space2comment.

Esta comparación resalta la efectividad de los scripts de manipulación para modificar cargas útiles y eludir mecanismos básicos de filtrado, lo que convierte a sqlmap en una herramienta más versátil para las pruebas de penetración.

Resumen

En este laboratorio, aprendió con éxito a utilizar los scripts de manipulación de sqlmap para eludir filtros básicos de aplicaciones web. Comenzó comprendiendo la necesidad de técnicas de evasión al enfrentarse a filtros de entrada. Luego exploró cómo listar los scripts de manipulación disponibles usando --list-tampers y seleccionó el script space2comment para una demostración práctica. Finalmente, ejecutó sqlmap con y sin el script de manipulación y comparó las cargas útiles generadas, observando claramente cómo el script space2comment modificó los espacios en comentarios /**/. Esta experiencia práctica lo ha equipado con una habilidad fundamental para mejorar sus capacidades de prueba de inyección SQL al eludir mecanismos de filtrado comunes.