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.

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

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: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

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:

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

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: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

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:
•   You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
•   You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Fuente:
Hacking Land
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login