Los nuevos ataques de inyección SQL basados ​​en JSON permiten eludir WAF de Palo Alto, f5, AWS, Cloudflare e Imperva

Los cortafuegos de aplicaciones web también conocidos como WAF están destinados a proteger las aplicaciones basadas en la web y las interfaces de programación de aplicaciones (API) del tráfico HTTPS malicioso que proviene del exterior en particular los ataques de secuencias de comandos entre sitios y de inyección SQL que nunca parecen desaparecer de los radares de seguridad

La inyección de SQL en particular es una constante entre los resultados de los escaneos de código automatizados y un elemento frecuente en las listas de la industria de las principales vulnerabilidades incluido el OWASP Top 10 a pesar de que se reconoce y es relativamente fácil de resolver.

Si un atacante puede atravesar las capacidades de los firewalls de aplicaciones web (WAF) para monitorear y bloquear el tráfico con frecuencia tiene una ruta directa a información importante sobre la empresa y sus clientes. Afortunadamente tales desvíos han sido raros y a menudo han tomado la forma de incidentes aislados dirigidos a la implementación de un determinado proveedor.

Hoy Team82 reveló un nuevo enfoque de ataque que funciona como el primer bypass general de numerosos firewalls de aplicaciones web que comercializan los fabricantes líderes en el mercado. Su omisión es efectiva con los WAF proporcionados por Palo Alto, F5, Amazon Web Services, Cloudflare e Imperva las cinco empresas más destacadas en este espacio. Cada uno de los proveedores afectados aceptó la divulgación de Team82 y emitió soluciones que incluyen soporte para la sintaxis JSON en los procedimientos de inspección SQL de sus respectivos productos.

Si un atacante puede atravesar las capacidades de los firewalls de aplicaciones web (WAF) para monitorear y bloquear el tráfico con frecuencia tiene una ruta directa a información importante sobre la empresa y sus clientes. Afortunadamente tales desvíos han sido raros y a menudo han tomado la forma de incidentes aislados dirigidos a la implementación de un determinado proveedor.

Hoy Team82 reveló un nuevo enfoque de ataque que funciona como el primer bypass general de numerosos firewalls de aplicaciones web que comercializan los fabricantes líderes en el mercado. Su omisión es efectiva con los WAF proporcionados por Palo Alto, F5, Amazon Web Services, Cloudflare e Imperva, las cinco empresas más destacadas en este espacio. Cada uno de los proveedores afectados aceptó la divulgación de Team82 y emitió soluciones que incluyen soporte para la sintaxis JSON en los procedimientos de inspección SQL de sus respectivos productos.

Según los resultados de nuestras pruebas llegaron a la conclusión de que en general los WAF utilizan uno de dos métodos para determinar si una solicitud es maliciosa o no:

Busque términos que hayan sido incluidos en la lista negra El WAF puede buscar palabras que identifica como sintaxis SQL y si hay un número excesivo de coincidencias en una solicitud marcará la solicitud como un intento de SQLi malicioso.

El WAF puede intentar analizar la sintaxis SQL correcta mediante el uso de varios componentes de la solicitud para realizar esta tarea. Si WAF puede identificar correctamente la sintaxis SQL en la solicitud marcará la solicitud como un intento potencialmente dañino de ejecutar SQLi.

A pesar del hecho de que la mayoría de los WAF utilizarán una combinación de las dos técnicas además de cualquier otra cosa que sea exclusiva del WAF los dos enfoques tienen un único defecto: ambos necesitan que el WAF esté familiarizado con la sintaxis SQL.

Este simple operador JSON, en este caso @>, que verifica si el JSON correcto está incluido en el incorrecto hizo que WAF entrara en un bucle infinito lo que a su vez nos permitió enviar cargas SQLi maliciosas y superar las protecciones de WAF. Pudieron filtrar información confidencial utilizando vulnerabilidad SQLi simplemente agregando una sintaxis básica de JSON al comienzo de la solicitud. Esto permitió que cualquiera pudiera acceder a datos confidenciales almacenados en la nube.

Es factible crear nuevas cargas útiles de SQLi haciendo uso de la sintaxis de JSON. Debido a que estas cargas útiles no se comprenden bien es posible que se utilicen para evadir la detección y eludir una variedad de medidas de seguridad. Pudieron construir una lista de declaraciones verdaderas en SQL utilizando la sintaxis de una variedad de motores de bases de datos, y la lista es la siguiente:

PostgreSQL: '{"b":2}'::jsonb <@ '{"a":1, "b":2}'::jsonb Is the left JSON contained in the right one? True.
 
SQLite: '{"a":2,"c":[4,5,{"f":7}]}' -> '$.c[2].f' = 7 Does the extracted value of this JSON equals 7? True. 
 
MySQL: JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name') = 'Aztalan' Does the extracted value of this JSON equals to ‘Aztalan’? True.

Poner el proceso a través de la automatización

Tomaron la decisión de agregar soporte para métodos de evasión de sintaxis JSON a SQLMap que es la herramienta de explotación de código abierto más popular. Esto se hizo para que pudieran demostrar cuán importante es esta omisión de WAF.

Simplemente clone la versión más reciente de SQLMap de Github para utilizar este script para probar el bypass. Si desea utilizar este script.