
Una aplicación Spring MVC o Spring WebFlux ejecutándose en JDK 9+ puede ser vulnerable a ejecución remota de código (RCE) mediante enlace de datos. El exploit específico requiere que la aplicación se ejecute en Tomcat como un despliegue WAR. Si la aplicación está desplegada como un jar ejecutable de Spring Boot, es decir, el valor predeterminado, no es vulnerable al exploit. Sin embargo, la naturaleza de la vulnerabilidad es más general, y puede haber otras formas de explotarla.
CVE-2022-22965 (Spring4Shell, SpringShell) es una vulnerabilidad en el framework Spring que utiliza la funcionalidad de enlace de datos para vincular los datos almacenados en una solicitud HTTP a ciertos objetos utilizados por una aplicación. El error existe en el método getCachedIntrospectionResults, que puede ser utilizado para obtener acceso no autorizado a dichos objetos pasando sus nombres de clase a través de una solicitud HTTP. Esto crea riesgos de fuga de datos y ejecución remota de código cuando se utilizan clases de objetos especiales. Esta vulnerabilidad es similar a la ya corregida CVE-2010-1622, donde se agregaron comprobaciones de nombres de clase como solución para que el nombre no coincidiera con classLoader o protectionDomain.
Según el sistema CVSSv3, se puntúa como gravedad CRÍTICA.
A continuación se presentan oportunidades de detección para CVE-2022-22965 que pueden utilizarse para identificar la vulnerabilidad.
Las condiciones actuales para la vulnerabilidad (según lo indicado en el anuncio de vulnerabilidad de Spring) se pueden resumir de la siguiente manera:
python3 exploit.py http://10.10.10.10/
Nota: ¡la barra diagonal al final es muy importante aquí!
Busque la "acción" del formulario de contacto (la única solicitud POST disponible para nosotros).
<form id="contactForm" action="/" method="post">
La acción es "/", lo que significa que nuestra URL objetivo será simplemente: http://10.10.10.10/