Muchas violaciones de seguridad cibernética no comienzan con malware sofisticado o exploits avanzados. A menudo, comienzan con simples configuraciones incorrectas y malas prácticas de gestión de contraseñas. Cuando estas debilidades se combinan, los atacantes pueden pasar rápidamente de la reconstrucción a un completo compromiso de datos.
Este estudio de caso detalla un incidente que involucró:
- Un endpoint Spring Boot Actuator expuesto
- Contraseñas en texto claro almacenadas en una hoja de cálculo
- Un método de autenticación riesgoso (ROPC)
Estas vulnerabilidades finalmente permitieron a los atacantes comprometer una cuenta de servicio SharePoint del objetivo y exfiltrar datos desde SharePoint Online.
**Fase 1: Endpoint Spring Boot Actuator Expuesto**
Spring Boot es un marco de Java diseñado para hacer que la construcción de aplicaciones web y microservicios de producción sea rápida y sencilla. Por otro lado, Spring Boot Actuator es un módulo incorporado que proporciona información operacional sobre una aplicación Spring Boot en ejecución. En este incidente, los endpoints Spring Boot Actuator estaban expuestos sin autenticación. Las solicitudes devolvían un código de estado HTTP 200 y revelaban información sensible.
Figura 1: Registros del Spring Boot Actuator Aunque no se revelaron contraseñas en texto claro, el endpoint /configprops expuso información valiosa, incluyendo un bloque de configuración relacionado con la integración de SharePoint.
La configuración expuesta reveló:
- El nombre de usuario de la cuenta de servicio SharePoint
- La URL del anfitrión de SharePoint
- Nombre del sitio: Dynamic365
- Fuente de configuración: application.yml
- Campo de contraseña: oculto (******)
Aunque la contraseña estaba oculta, el actor amenazante aprendió que existía una cuenta válida y que las contraseñas se almacenaban en application.yml. Esta información sirvió como valiosa información de reconocimiento que redujo su superficie de ataque.
**Fase 2: Contraseñas en texto claro en una hoja de cálculo**
Durante nuestra investigación, los analistas descubrieron que las contraseñas sensibles para una aplicación interna estaban almacenadas en texto claro dentro de una hoja de cálculo. La hoja de cálculo contenía credenciales relacionadas con la aplicación de Azure AD interna, que nos referiremos como [REDACTED]-2024 en este artículo, específicamente los siguientes valores:
- client-id
- client-secret
- secret-id
Estos valores correspondían a las credenciales de autenticación utilizadas por [REDACTED]-2024 para solicitar tokens desde Azure AD. Las contraseñas de aplicaciones funcionan similarmente a las contraseñas: cualquier persona que posea el client ID y el client secret de una aplicación puede intentar autenticarse como esa aplicación y solicitar tokens desde Azure AD.
Porque estas contraseñas estaban almacenadas en una hoja de cálculo:
- Podrían ser fácilmente copiadas o filtradas
- Pudo superar cualquier control centralizado de gestión de secretos
- Cualquier persona con acceso al archivo podría representarse a la aplicación
Este es un problema común de seguridad operativa cuando las credenciales de desarrollo u pruebas se documentan informalmente para la conveniencia.
**Fase 3: Abuso de autenticación – inicio de sesión ROPC**
ROPC permite que una aplicación inicie sesión al usuario directamente manejando su contraseña. En lugar de redirigir al usuario a una página de inicio de sesión, la aplicación recopila las credenciales y las envía al proveedor de identidad.
Flujo típico ROPC
1. Una aplicación envía una solicitud conteniendo los:
- client-id
- client-secret
- nombre de usuario
- contraseña
dirección del proveedor de identidad (Azure AD/Entra ID).
2. El proveedor de identidad valída las credenciales.
3. Si son válidas, devuelve un token de acceso.
4. La aplicación utiliza el token para acceder a APIs como Microsoft Graph, SharePoint Online o OneDrive.
El primer intento de autenticación del actor amenazante resultó en errores debido a la falta de client_assertion u ocurrencia de secret. El primer intento fue a través de Finance and Operations Dynamics 365.