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
CVE-2023-45878 — Automatisierter Python-Exploit für CVE-2023-45878, eine nicht authentifizierte Datei-Upload-Schwachstelle in Gibbon CMS, die Remote-Code-Ausführung über PHP-Webshell-Bereitstellung mit interaktiver Shell und Dateiübertragungsfunktionen ermöglicht. | Kitploit
Tools/GitHubGitHub/can0i0ever0enter/cve-2023-45878
Payload-GenerierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsRemote-Access-Tool
GitHubcan0i0ever0enter/cve-2023-45878

CVE-2023-45878

Automatisierter Python-Exploit für CVE-2023-45878, eine nicht authentifizierte Datei-Upload-Schwachstelle in Gibbon CMS, die Remote-Code-Ausführung über PHP-Webshell-Bereitstellung mit interaktiver Shell und Dateiübertragungsfunktionen ermöglicht.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
3vor 1 JahrNoch nicht geprüft

Gibbon CMS (CVE-2023-45878) Exploit

Dieses Python-Skript nutzt CVE-2023-45878 aus, eine nicht authentifizierte Schwachstelle für beliebige Dateiuploads in Gibbon CMS Version 25.0.1 und früher, die zu Remote Code Execution (RCE) führt.

Schwachstellenbeschreibung

CVE-2023-45878 existiert im Endpunkt rubrics_visualise_saveAjax.php von Gibbon CMS. Dieser Endpunkt ist anfällig, da er keine Authentifizierung erfordert und das Schreiben beliebiger Dateien erlaubt.

Die Schwachstelle ergibt sich aus Folgendem:

  • Nicht authentifizierter Zugriff: Der Endpunkt modules/Rubrics/rubrics_visualise_saveAjax.php ist ohne jegliche Authentifizierung erreichbar.
  • Beliebiges Dateischreiben: Der Endpunkt akzeptiert die POST-Parameter img, path und gibbonPersonID.
    • Der Parameter img soll speziell formatierte Daten enthalten, wobei der Teil nach einem Komma ein base64-codierter String ist.
    • Der Parameter path, falls angegeben, wird als Ziel-Dateiname für die hochgeladene Datei verwendet, relativ zum Gibbon-Installationsverzeichnis.
    • Das Skript dekodiert den base64-codierten Inhalt aus dem Parameter img und schreibt ihn in eine durch den Parameter path angegebene Datei.
  • Remote Code Execution: Durch Erstellen eines bösartigen Parameters img, der base64-codierten PHP-Code enthält (z.B. <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>) und Angabe eines path, der zu einer über den Webserver zugänglichen .php-Datei führt, kann ein Angreifer eine PHP-Webshell hochladen und Remote Code Execution auf dem anfälligen Server erreichen.

Skriptfunktionalität

Dieses Python-Skript automatisiert die Ausnutzung von CVE-2023-45878. Es führt die folgenden Aktionen aus:

  1. PHP-Webshell-Upload: Es erstellt eine bösartige POST-Anfrage an modules/Rubrics/rubrics_visualise_saveAjax.php, um eine PHP-Webshell hochzuladen. Die Webshell-Payload lautet <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>, wobei {VERIFY_TAG} ein anpassbarer Tag ist. Die Payload wird base64-codiert und innerhalb des Parameters img gesendet.
  2. Shell-Überprüfung: Es kann überprüfen, ob die hochgeladene Shell zugänglich und funktionsfähig ist, indem eine GET-Anfrage mit einem einfachen Befehl (z.B. cmd=echo) gesendet und die Antwort auf den VERIFY_TAG überprüft wird. Es führt auch eine Vorprüfung auf eine vorhandene Shell durch, wenn Optionen wie --verify oder --interactive verwendet werden.
  3. Interaktiver Shell-Modus: Wenn die Shell hochgeladen und verifiziert wurde (oder bei einer Vorprüfung gefunden wurde), kann das Skript in einen interaktiven Modus wechseln. Dieser Modus bietet:
    • Erkennung des entfernten Betriebssystems (Windows/Linux), um Befehle anzupassen.
    • Eine dynamische Eingabeaufforderung, die den aktuellen Benutzer, Hostnamen und das entfernte Arbeitsverzeichnis anzeigt (z.B. user@host:cwd$).

Verwendung

root@kitploit:~
python3 exploit.py <target_url> [options]

Argumente:

  • target_url: Die Basis-URL der Ziel-Gibbon-CMS-Instanz. Das Skript wird http:// voranstellen, wenn kein Schema angegeben ist, und einen abschließenden Schrägstrich sicherstellen (z.B. http://example.com/gibbon oder example.com/gibbon).

Optionen:

  • -s <shell_path>, --shell-path <shell_path>: Geben Sie den gewünschten Pfad und Dateinamen für die hochgeladene Shell an (z.B. shell.php, uploads/shell.php). Wenn nicht angegeben, wird ein zufälliger 8-stelliger Dateiname mit der Erweiterung .php im Gibbon-Basisverzeichnis generiert. Warnung: Stellen Sie sicher, dass der angegebene Pfad vom Webserver beschreibbar und über das Web erreichbar ist.
  • -v, --verify: Überprüfen Sie nach dem Versuch, die Shell hochzuladen, ob sie funktioniert. Diese Option löst auch eine Vorprüfung aus, ob eine Shell mit dem angegebenen Namen und Tag bereits existiert; falls ja, wird der Upload übersprungen.
  • -i, --interactive: Wechseln Sie in den interaktiven Shell-Modus. Wenn die Shell noch nicht vorhanden ist (durch eine Vorprüfung bestätigt), wird sie zuerst hochgeladen und verifiziert.
  • -t <tag>, --tag <tag>: Geben Sie einen benutzerdefinierten statischen Tag an, der in der Webshell-Payload zur Verifizierung verwendet wird. (Standard: ).

Beispiele:

  • Einfacher Exploit mit zufälligem Shell-Namen im Hauptverzeichnis von Gibbon und Standard-Tag:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/
    
  • Exploit, Shell-Dateiname my_shell.php im Hauptverzeichnis von Gibbon und Standard-Tag angeben:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s my_shell.php
    
  • Exploit, Shell-Dateiname backdoor.php in uploads/ hochladen, verifizieren und benutzerdefinierten Tag verwenden:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s uploads/backdoor.php -v -t MySecretTag123
    
  • Exploit, Shell hochladen und in den interaktiven Modus wechseln mit Standard-Tag und 30-Sekunden-Timeout:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s shell.php -i --timeout 30
    
  • In den interaktiven Modus mit einer vorhandenen Shell wechseln (das Skript führt eine Vorprüfung auf deren Existenz durch):

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s shell.php -t ExploitGibbon -i
    
  • Nur überprüfen, ob eine Shell namens mit dem Standard-Tag aktiv ist (versucht hochzuladen, wenn nicht gefunden):

Anforderungen

  • Python 3.7+ (aufgrund von f-Strings, Typhinweisen, Verwendung von dataclasses, pathlib)
  • Bibliothek requests: Installation mit pip install requests
  • Bibliothek rich: Installation mit pip install rich
  • Bibliothek prompt_toolkit (optional, für verbesserten interaktiven Modus): Installation mit pip install prompt_toolkit

Haftungsausschluss

Dieses Skript wird ausschließlich zu Bildungs- und Sicherheitstestzwecken bereitgestellt. Verwenden Sie es auf eigenes Risiko und nur gegen Systeme, für die Sie ausdrücklich eine Testgenehmigung haben. Der Autor übernimmt keine Verantwortung für Missbrauch oder Schäden, die durch dieses Skript verursacht werden. Das Ausnutzen von Schwachstellen ohne Autorisierung ist illegal und unethisch.

Referenzen

  • CVE-2023-45878 bei NVD
  • Herolab Sicherheitshinweis USD-2023-0025
  • GibbonEdu Core-Quelle (rubrics_visualise_saveAjax.php betroffene Version v25.0.01)
Tool herunterladen
  • Eingebaute Verarbeitung des Befehls cd, um das entfernte Arbeitsverzeichnis zu wechseln.
  • Spezielle clientseitige Befehle:
    • !help: Zeigt Hilfe für interaktive Befehle an.
    • !upload <local_path> [remote_path]: Lädt eine lokale Datei über die Webshell auf den Zielserver hoch.
    • !download <remote_path> [local_path]: Lädt eine Datei vom Zielserver herunter.
    • !lcd <path>: Ändert das lokale aktuelle Arbeitsverzeichnis.
    • !ldir [path]: Listet Dateien und Verzeichnisse im lokalen aktuellen Arbeitsverzeichnis oder im angegebenen Pfad auf.
  • Verwendet die Bibliothek prompt_toolkit, falls verfügbar, für eine verbesserte Befehlszeilenerfahrung (Verlauf, bessere Bearbeitung), andernfalls wird auf Pythons eingebaute input() zurückgegriffen.
  • Dateioperationen: Der interaktive Befehl !upload verwendet den anfälligen Endpunkt erneut, um beliebige Dateien zu schreiben, während !download Systembefehle verwendet, die über die Webshell ausgeführt werden (wie base64 oder PowerShells [Convert]::ToBase64String), um Dateiinhalte abzurufen.
  • ExploitGibbon
  • --timeout <timeout>: Setzen Sie das HTTP-Anforderungs-Timeout in Sekunden. (Standard: 20).
  • existing_shell.php
    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s existing_shell.php -v