
Exploit PoC para CVE-2024-52302: carga de archivos sin restricciones en la aplicación Spring Boot common-user-management que conduce a la ejecución remota de código a través del endpoint /api/v1/customer/profile-picture.
Descubrí una vulnerabilidad de seguridad crítica en common-user-management, una robusta aplicación Spring Boot que ofrece servicios de gestión de usuarios diseñados para controlar el acceso de usuarios de forma dinámica. Esta vulnerabilidad afecta al endpoint /api/v1/customer/profile-picture, permitiendo a los atacantes cargar archivos sin una validación adecuada, lo que puede derivar en Ejecución Remota de Código (RCE).
Puedes explotar esta vulnerabilidad utilizando el siguiente script de Python:
python exploit.py -u "customer_user" -p "your_password" -f "malicious.jsp" -url "https://target.com"
-u: Nombre de usuario
-p: Contraseña
-f: Archivo malicioso a cargar
-url: URL del objetivo
Existe una vulnerabilidad de seguridad crítica en el endpoint /api/v1/customer/profile-picture. Este endpoint permite la carga de archivos sin una validación o restricciones adecuadas, lo que permite a los atacantes subir archivos maliciosos que pueden conducir a la Ejecución Remota de Código (RCE).
El problema se origina por la falta de validación de la extensión del archivo y del encabezado Content-Type. Como resultado, la aplicación permite la carga de archivos arbitrarios, incluyendo:
Estos archivos pueden ser ejecutados posteriormente por el servidor web, permitiendo a los atacantes ejecutar código arbitrario en el servidor, lo que podría comprometer todo el sistema.
Cargar un Archivo Malicioso:
Envía una solicitud PUT a /api/v1/customer/profile-picture utilizando un usuario con rol 26,17 añadido, con un payload de archivo malicioso (por ejemplo, .jsp, .php, .html).
Obtener la ubicación del archivo:
Envía una solicitud GET a /api/v1/customer/my-profile y captura la ubicación del archivo en la respuesta con el enlace del perfil.
Ejecutar el Archivo Cargado: Utilizando el nombre del archivo, accede directamente al archivo a través de la URL devuelta en la respuesta. Si el servidor es compatible con el tipo de archivo cargado, lo ejecutará, lo que conducirá a la Ejecución Remota de Código.