Bypass del WAF de Akamai a través de Spring Boot

Iniciado por AXCESS, Diciembre 19, 2022, 11:46:14 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Un investigador ha revelado la técnica de bypass que utilizó para evadir los WAF (Web Application Firewall) de Akamai que ejecutan Spring Boot y que podría conllevar RCE. Akamai ya ha resuelto este fallo de seguridad.

Estos investigadores, durante uno de sus trabajos de «Bug Bounty» encontraron este bypass durante un programa privado de la plataforma Bugcrowd.

SSTI (Server Side Template Injection) del lado del servidor

Durante su investigación de una SSTI dentro de la aplicación que auditaban, el WAF de Akamai bloqueaba sus intentos de inyectar este tipo de payloads, por lo que a través de unos errores que la aplicación mostraba, vieron que utilizaban SpEL (Spring Expression Language).

Posteriormente buscaron formas de utilizar SpEL para ejecutar comandos en el sistema operativo, probablemente a través de Java.

Error mostrado por el WAF
Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

pEL, el lenguaje de expresiones de Spring Framework es un lenguaje de expresión que admite consultas y manipulación de objetos en tiempo de ejecución (a grandes rasgos).

Por lo general, puede ejecutar métodos Java, construir objetos, etc. Si le interesa este «Framework» puede leer sobre SpEL en su documentación:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hay que tener en cuenta que hay varias formas de explotar este «Spring Boot» y que además, en principio, no se ha reportado ningún tipo de CVE para esta vulnerabilidad.

Según indican en su avance, la ruta más cómoda era encontrar un camino que les permitiese utilizar la clase java.lang.Runtime, pero el WAF de Akamai les bloqueaba.

Posteriormente consiguieron acceder a la clase Class.forName, creando una «string» con el valor java.lang.Runtime, accediendo al método java.lang.Runtime.getRuntime y creando otra cadena para acceder a java.lang les permitió obtener un payload de RCE viable.

El payload final era de menos de 3kb y el servidor lo aceptó mediante GET.

Payload final
Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Finalmente, desde Akamai indicaron que esta vulnerabilidad está resuelta actualmente y recomienda a todos sus clientes tener el WAF completamente al día en cuanto a actualizaciones, idealmente a través de actualizaciones automáticas.

Más información:
•   No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
•   No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Fuente:
Hacking Land
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta