Evadiendo Web Application Firewalls con SQLMap

Evadiendo Web Application Firewalls con SQLMap

Publicado en August 29, 2011 por Roberto Salgado

Los WAFs o Web Application Firewalls se han convertido en la solución de seguridad elegida de varias empresas hoy en día. Algunas empresas incluso, ignoran la verdadera vulnerabilidad y dependen únicamente del firewall para protección. Desaforturnadamente, la mayoría de los firewalls pueden ser evadidos. En este post explico como utilizar las nuevas funciones de SQLMap para evadir WAFs y IDSs.

Recientemente tuve el placer de trabajar en unos tamper scripts para SQLMap que pueden encontrar en la última versión de desarrollo que esta en el repositorio de subversion:

svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev

El propósito de los tamper scripts es modificar la petición de tal forma que evada la detección de las reglas del WAF. En algunos casos es necesario combinar algunos scripts para poder engañar al WAF. Para una lista de los tamper scripts puedes visitar https://svn.sqlmap.org/sqlmap/trunk/sqlmap/tamper/ https://svn.sqlmap.org/sqlmap/trunk/sqlmap/tamper/

Los primeros scripts que mostraré son space2hash.py y space2morehash.py que sirven para MySQL (aún no he terminado el de MSSQL). Estos scripts convierten todos los espacios a comentarios con texto aleatorio. La versión extendida del script (space2morehash.py) agrega adicionalmente comentarios en los nombres de funciones y el paréntesis.

Para utilizar los tamper scripts tienes que usar la opción --tamper seguida por el nombre del script.

./sqlmap.py -u http://192.168.0.107/test.php?id=1 -v 3 --dbms "MySQL" --technique U -p id --batch --tamper "space2morehash.py"

Imagen 1: tamper script space2morehash.py


La imagen 1 muestra como el tamper script remplaza los espacios en la petición por %23randomText%0A, y después es cifrado con URL encoded. Las funciones CHAR(), USER(), CONCAT() cambian a FUNCTION%23randomText%0A() ya que la configuración de IGNORE_SPACE_AFFECTED_KEYWORDS lo permite. Esto es por la forma en la que MySQL realiza Function Name Parsing and Resolution y por como trata las llamadas a funciones e identificadores.

Otros dos scripts que transforman los espacios son space2mssqlblank.py y space2mysqlblank.py. MySQL permite que los caracteres 09, 0A-0D, A0 se usen como espacios, mientras que MSSQL permite un rango mucho mayor, de 01-1F.

Imagen 2: space2mssqlblank.py usando diferentes caracteres como espacios.


Ahora tenemos unos scripts que juegan con el cifrado: charencode.py y chardoubleencode.py. Son útiles para evadir filtros por palabras clave, por ejemplo, cuando se bloquea la palabra "table_name".

Imagen 3: charencode.py puede ser útil para evadir deteccion por palabras.


Si la aplicación realiza URL decode por alguna razón (algunas lo hacen), el script chardoubleencode.py puede resultar de utilidad.

Imagen 4: chardoubleencode.py se utiliza cuando la aplicación realiza URL decode


Adicionalmente, si la aplicación esta programada en ASP/ASP.NET, los scripts charunicodeencode.py y percentage.py pueden ser utilizados para esconder el verdadero payload.

Imagen 5: charunicodeencode.py ofuscando la inyección con cifrado unicode


Una característica interesante de ASP es que puede tomar como válido sentencias que tengan muchos simbolos de porcentaje entre los caracteres. Por ejemplo: AND 1=%%%%%%%%1 es completamente válido!

Imagen 6: Simbolos de porcentaje validos en ASP


Para concluir, he mostrado algunos de muchos tamper scripts de SQLMap. Recomiendo que los prueben ya que cada uno puede ser utilizado en situaciones diferentes. Estaré desarrollando algunos nuevos este mes así que estén pendientes.

Referencias:
SQLMap
SQL Injection Pocket Reference

tags:


Últimas entradas en nuestro blog

Evadiendo Web Application Firewalls con SQLMap
Evadiendo web application firewalls y detectores de intrusos con los tamper scripts de SQLMap
Publicado en

Método para extraer datos de Blind SQLi
Técnica optimizada que permite extraer información de una base de datos MySQL utilizando las posiciones de un arreglo en binario. Este método supera los métodos conocidos como Bit Shifting y Bifurcación ya que requiere de menor cantidad de peticiones
Publicado en MySQL Base de Datos Blind Injection SQL Injection

mac2wepkey - Huawei generador de WEP default
Es posible generar la WEP/WPA default de los módems Huawei modelos HG520. El propósito de este post es explicar la forma en la que desarrollamos un generador para estos dispositivos.
Publicado en mac2wepkey huawei hg520 hg520b

Últimas noticias

May 16, 2012
Videos de GuadalajaraCON 2012
Videos de las conferencias del primer día del evento de seguridad informática organizado por Websec en Guadalajara, Jalisco, México.

Apr 27, 2012
GuadalajaraCON 2012 por Websec
El pasado 20 de abril se llevo a cabo el GuadalajaraCON 2012. Un evento de seguridad informática organizado por Websec en Guadalajara, Jalisco, México. El evento se caracterizó por su contenido técnico y una notable calidad de sus ponentes.