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.