Jenkins Arbitrary File Read to RCE via "Remember Me"
Neste post do blog é possível encontrar uma ótima maneira de transformar uma vulnerabilidade de Inclusão de Arquivo Local no Jenkins em RCE: https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/
Este é um resumo criado por IA da parte do post onde o craft de um cookie arbitrário é abusado para obter RCE abusando de uma leitura de arquivo local até que eu tenha tempo para criar um resumo por conta própria:
Pré-requisitos do Ataque
Requisito de Funcionalidade: "Lembre-se de mim" deve estar habilitado (configuração padrão).
Níveis de Acesso: O atacante precisa de permissões Gerais/Leitura.
Acesso Secreto: Capacidade de ler tanto conteúdo binário quanto textual de arquivos-chave.
Processo Detalhado de Exploração
Passo 1: Coleta de Dados
Recuperação de Informações do Usuário
Acesse a configuração do usuário e segredos de
$JENKINS_HOME/users/*.xml
para cada usuário para coletar:Nome de usuário
Semente do usuário
Timestamp
Hash da senha
Extração da Chave Secreta
Extraia chaves criptográficas usadas para assinar o cookie:
Chave Secreta:
$JENKINS_HOME/secret.key
Chave Mestra:
$JENKINS_HOME/secrets/master.key
Arquivo da Chave MAC:
$JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac
Passo 2: Forjamento de Cookie
Preparação do Token
Calcular Tempo de Expiração do Token:
Concatenar Dados para o Token:
Descriptografia da Chave MAC
Descriptografar o Arquivo da Chave MAC:
Cálculo da Assinatura
Calcular HMAC SHA256:
Codificação do Cookie
Gerar Cookie Final:
Passo 3: Execução de Código
Autenticação de Sessão
Buscar Tokens CSRF e de Sessão:
Faça uma solicitação para
/crumbIssuer/api/json
para obterJenkins-Crumb
.Capture
JSESSIONID
da resposta, que será usado em conjunto com o cookie de lembrete.
Solicitação de Execução de Comando
Enviar uma Solicitação POST com Script Groovy:
O script Groovy pode ser usado para executar comandos em nível de sistema ou outras operações dentro do ambiente Jenkins.
O exemplo de comando curl fornecido demonstra como fazer uma solicitação ao Jenkins com os cabeçalhos e cookies necessários para executar código arbitrário de forma segura.
Last updated