Jenkins Arbitrary File Read to RCE via "Remember Me"
En esta publicación del blog es posible encontrar una gran manera de transformar una vulnerabilidad de Inclusión de Archivos Locales en Jenkins en RCE: https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/
Este es un resumen creado por IA de la parte de la publicación donde se abusa de la creación de una cookie arbitraria para obtener RCE abusando de una lectura de archivos locales hasta que tenga tiempo para crear un resumen por mi cuenta:
Requisitos Previos del Ataque
Requisito de Funcionalidad: "Recuerdame" debe estar habilitado (configuración predeterminada).
Niveles de Acceso: El atacante necesita permisos de Lectura/General.
Acceso Secreto: Capacidad para leer tanto contenido binario como textual de archivos clave.
Proceso de Explotación Detallado
Paso 1: Recolección de Datos
Recuperación de Información del Usuario
Acceder a la configuración del usuario y secretos desde
$JENKINS_HOME/users/*.xml
para cada usuario para recopilar:Nombre de usuario
Semilla del usuario
Marca de tiempo
Hash de contraseña
Extracción de Claves Secretas
Extraer claves criptográficas utilizadas para firmar la cookie:
Clave Secreta:
$JENKINS_HOME/secret.key
Clave Maestra:
$JENKINS_HOME/secrets/master.key
Archivo de Clave MAC:
$JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac
Paso 2: Falsificación de Cookies
Preparación del Token
Calcular Tiempo de Expiración del Token:
Concatenar Datos para el Token:
Desencriptación de la Clave MAC
Desencriptar Archivo de Clave MAC:
Cálculo de la Firma
Calcular HMAC SHA256:
Codificación de la Cookie
Generar Cookie Final:
Paso 3: Ejecución de Código
Autenticación de Sesión
Obtener Tokens CSRF y de Sesión:
Hacer una solicitud a
/crumbIssuer/api/json
para obtenerJenkins-Crumb
.Capturar
JSESSIONID
de la respuesta, que se utilizará junto con la cookie de "recuerdame".
Solicitud de Ejecución de Comando
Enviar una Solicitud POST con Script Groovy:
El script Groovy se puede utilizar para ejecutar comandos a nivel de sistema u otras operaciones dentro del entorno de Jenkins.
El comando curl de ejemplo proporcionado demuestra cómo hacer una solicitud a Jenkins con los encabezados y cookies necesarios para ejecutar código arbitrario de manera segura.
Last updated