OctopusWAF WAF (Web Application Firewall) de Alto Rendimiento

OctopusWAF: WAF (Web Application Firewall) de Alto Rendimiento

Los principales web application firewalls (WAFs) pueden ser muy difíciles de entender, con miles de líneas de código y oscuros plugins. Esta complejidad hace que los desarrolladores tengan que modificar el código para bloquear anomalías específicas y asegurar sus aplicaciones. Pero OctopusWAF es diferente: el WAF de código abierto es personalizable, fácil de usar y está optimizado para un gran número de conexiones paralelas, lo que lo hace ideal para aplicaciones asíncronas de JavaScript y XML (AJAX) de alto rendimiento.

Interfaz de uso de OctopusWAF
Interfaz de uso de OctopusWAF

¿Qué es un WAF?

Un WAF es una pieza de software o hardware destinada a proteger una aplicación HTTP a nivel de la aplicación. Los WAFs aplican un conjunto de reglas, que están diseñadas para proteger contra ataques comunes como el Cross-site Scripting (XSS) y el SQL Injection, a las conversaciones HTTP. Mientras que los proxies suelen proteger a los clientes, los WAF protegen a los servidores y se despliegan para proteger una o varias aplicaciones web. Por ello, un WAF se considera un proxy inverso.

Los WAFs pueden ser personalizados para aplicaciones específicas; sin embargo, esta personalización a menudo requiere un esfuerzo significativo, y el mantenimiento debe realizarse a medida que se modifica la aplicación.

Hay dos tipos de WAFs. El primer tipo utiliza un plugin HTTPd para recoger datos de entrada o salida. Hay varias desventajas significativas asociadas con el despliegue de este tipo de WAF – no es totalmente portable, el desarrollador necesita crear varios plugins HTTPd, y el rendimiento es a menudo pobre, por nombrar algunos.

El segundo tipo, que es un servidor proxy inverso independiente, lleva todas las peticiones realizadas por el cliente al proxy. A continuación, el proxy analiza el contenido y envía toda la información que no está bloqueada al servidor externo.

Qué es OctopusWAF

El ingeniero de ciberseguridad y hacker ético Antonio Costa (conocido en la comunidad de hackers como “CoolerVoid“) ha creado OctopusWAF para maximizar el rendimiento y minimizar la complejidad asociada al despliegue de un WAF.

OctopusWAF es un firewall de aplicaciones web de código abierto creado completamente en lenguaje C que utiliza libevent para realizar múltiples conexiones. La arquitectura basada en eventos está optimizada para muchas conexiones paralelas (keep-alive), vital para las aplicaciones AJAX de alto rendimiento. Esta herramienta es muy ligera. Se puede desplegar en cualquier, por favor. Este recurso se vuelve perfecto para proteger puntos finales específicos que necesitan una protección personalizada.

Características de la herramienta

  • Función de proxy inverso.
  • Detecta anomalías mediante regex utilizando recursos de la lib PCRE.
  • Detectar anomalías de seguridad utilizando algoritmos de coincidencia de cadenas como DFA, horspool o karp-rabin.
  • Detectar anomalías de seguridad utilizando libinjection.
  • Opciones para guardar el registro.

Primeros Pasos

Instala libpcre o libpcre-dev con apt. Si usas una distro basada en RPM, busca el nombre del paquete pcre-devel, en sistemas BSD busca en ports o brew(MacOS)… Necesitas libevent-dev para correr; en distros RPM libevent-devel, necesitas instalar OpenSSL-dev y OpenSSL-devel.

Ejemplo basado en debian:

$ sudo apt install libssl-dev libevent-dev libpcre3-dev make gcc

Para compilar y ejecutar OctopusWAF, sigue estos comandos:

$ git clone https://github.com/CoolerVoid/OctopusWAF
$ cd OctopusWAF; make
# if you need to see options try the following
$ bin/OctopusWAF

The example tested on DVWA on a simple HTTP channel.

$ bin/OctopusWAF -h 127.0.0.1:7008 -r 127.0.0.1:80 --debug --libinjection-sqli --log results_log.txt

Note you can use pcre, horspool, and libinjection mode protections simultaneously.

Open your browser in http://127.0.0.1:7008, and you can test the block when you attack.

Notas: No ejecutar con “cd bin; ./OctopusWAF” usar la ruta completa “bin/OctopusWAF” porque el binario necesita cargar el contenido en el directorio de configuración. Utiliza HTTP sólo para el uso de WAF. Esta versión 0.1 ejecuta TLS pero no tiene un recurso para cargar cert y leer peticiones/respuestas TLS. Si utilizas TLS, el servicio puede perder la función de WAF y trabajar un proxy inverso.

Probado en Linux pero puede funcionar en FreeBSD.

Resumen del Código

-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C/C++ Header                    14            133            270           9977
C                               13            591            798           2625
make                             2             14              3             52
Markdown                         1             34              0             52
-------------------------------------------------------------------------------
SUM:                            30            772           1071          12706
-------------------------------------------------------------------------------

Nota

El propósito de esta herramienta es usarla en pentest, presta atención si tienes una autorización apropiada antes de usarla. No tengo responsabilidad por tus acciones. Puedes usar un martillo para construir una casa o destruirla, elige el camino de la ley.

Error: Repositorio no encontrado. Por favor, revisa tu URL.

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda