Jenkins Arbitrary File Read to RCE via "Remember Me"
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
En esta publicación del blog es posible encontrar una gran manera de transformar una vulnerabilidad de Inclusión de Archivos Local 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 local hasta que tenga tiempo para crear un resumen por mi cuenta:
Requisito de Funcionalidad: "Recordarme" 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.
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
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:
Autenticación de Sesión
Obtener Tokens CSRF y de Sesión:
Hacer una solicitud a /crumbIssuer/api/json
para obtener Jenkins-Crumb
.
Capturar JSESSIONID
de la respuesta, que se utilizará junto con la cookie de recordarme.
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.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)