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-80099 — Plugins Newfold (wp-module-data <= 2.9.7) non authentifié | Kitploit
Outils/GitHubGitHub/wayang1337/cve-2026-80099
Scanners de VulnérabilitésAttaques de Mots de PasseExploitationScripting et AutomatisationExploitation d'Applications WebCollecte d'InformationsPost-ExploitationSécurité WebTests d'IntrusionOutil d'Accès à Distance
GitHub
il y a 7h 14mPas encore vérifié
wayang1337/cve-2026-80099

CVE-2026-80099

Plugins Newfold (wp-module-data <= 2.9.7) non authentifié

Voir le dépôt

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-80099 PoC

Contournement d'authentification non authentifié et exploit RCE ciblant les plugins WordPress Newfold qui intègrent wp-module-data.

Aperçu

Cet outil exploite une faille de validation de jeton Bearer dans le module Newfold wp-module-data. Lorsqu'un site WordPress utilisant un plugin Newfold affecté n'est pas connecté à Hiive, HiiveConnection::get_auth_token() retourne false. Cette valeur est passée à travers strrev() puis hachée, ce qui réduit le sel secret à la constante publique :

root@kitploit:~
sha256("") = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Comme tous les autres composants de la charge utile hachée (méthode HTTP, URL de la requête, corps de la requête, horodatage) sont entièrement contrôlés par l'attaquant, un jeton Bearer valide peut être calculé hors ligne. Le filtre vulnérable s'exécute sur rest_authentication_errors, de sorte qu'un jeton forgé authentifie l'appelant en tant que pour l'ensemble de l'API REST WordPress, y compris les routes du cœur. Cet accès est ensuite exploité pour obtenir une exécution de code à distance complète.

premier administrateur

Logiciels affectés

Plugin / ModuleVersions affectéesCorrigé
wp-module-data<= 2.9.72.9.8
bluehost-wordpress-plugin<= 4.19.0n/a
hostgator<= 3.2.0n/a
web<= 2.3.5n/a
crazy-domains<= 2.5.2n/a

La détection couvre également les slugs de plugins WordPress.org wp-plugin-web et crazy_blog.

Cause racine

Dans vendor/newfold-labs/wp-module-data/includes/Data.php :

root@kitploit:~
public function authenticate( $errors ) {        // hooked on rest_authentication_errors
    ...
    $data = array(
        'method'    => $_SERVER['REQUEST_METHOD'],
        'url'       => Url::getCurrentUrl(),
        'body'      => file_get_contents( 'php://input' ),
        'timestamp' => dataGet( getallheaders(), 'X-Timestamp' ),
    );
    $hash     = hash( 'sha256', wp_json_encode( $data ) );
    $salt     = hash( 'sha256', strrev( HiiveConnection::get_auth_token() ) );
    $is_valid = hash( 'sha256', $hash . $salt ) === $token;

    if ( $is_valid ) {
        ... wp_set_current_user( <first administrator> ); return true;
    }
}

Sur un site non connecté, strrev(false) est converti en strrev('') ce qui donne '', et le sel devient le hachage bien connu de la chaîne vide. Toutes les autres entrées de la chaîne de hachage sont contrôlées par l'attaquant, de sorte que le jeton est entièrement prévisible.

Fonctionnalités

  • Détection des plugins Newfold affectés via l'empreinte des ressources statiques
  • Détection de la présence du module via la route REST newfold-data/v1/verify/<hex>
  • Forge hors ligne d'un jeton Bearer valide (aucun secret requis)
  • Vérification du contournement en appelant GET /wp/v2/users/me et en inspectant les rôles
  • Chaîne RCE complète avec plusieurs techniques de repli :
    1. Écriture via l'éditeur de thème dans 404.php / index.php
    2. Téléversement de plugin via ZIP
    3. Écriture via l'éditeur dans un plugin inactif, activation via REST, puis restauration
  • Gestionnaire de fichiers .fm.php persistant optionnel déposé dans la racine web
  • Mode d'analyse de masse avec workers threadés, support de reprise et progression limitée
  • Deux chemins d'authentification pour la post-exploitation : connexion par lien magique Newfold SSO (contourne les blocages ModSecurity sur wp-login.php) et connexion classique par formulaire wp-login.php

Prérequis

  • Python 3.7+
  • requests
  • urllib3 (optionnel, uniquement pour supprimer les avertissements TLS)

Installer les dépendances :

root@kitploit:~
pip install requests urllib3

Utilisation

Vérification d'une cible unique

Détection en lecture seule et vérification du contournement :

root@kitploit:~
python3 exploit.py -u https://target.example

RCE sur une cible unique

Chaîne complète vers un shell persistant :

root@kitploit:~
python3 exploit.py -u https://target.example --mode rce

Réinitialiser le mot de passe du premier administrateur au lieu d'en créer un nouveau :

root@kitploit:~
python3 exploit.py -u https://target.example --mode rce --takeover

Analyse de masse

Vérification seule sur une liste de cibles :

root@kitploit:~
python3 exploit.py --list targets.txt

Chaîne complète sur chaque hôte vulnérable (nécessite un opt-in explicite) :

root@kitploit:~
python3 exploit.py --list targets.txt --mode rce --apply-rce

Pré-filtrage à l'aide de sondes de ressources statiques avant de toucher à l'API REST :

root@kitploit:~
python3 exploit.py --list targets.txt --brand-filter

Arrêt après les N premiers hôtes vulnérables :

root@kitploit:~
python3 exploit.py --list targets.txt --stop-after 5

Reprendre une exécution précédente :

root@kitploit:~
python3 exploit.py --list targets.txt --resume

Options

OptionDescription
-u, --urlURL de base d'une cible unique
--listFichier contenant une URL de cible par ligne
--modecheck (détection seule) ou rce (chaîne complète) ; par défaut check
--takeoverRéinitialiser le mot de passe du premier admin au lieu de créer un nouvel admin
--outputChemin de sortie JSONL pour le mode masse ; par défaut cve_2026_80099_results.jsonl
--vuln-listListe d'URL brutes des hôtes vulnérables ; par défaut vuln.txt
--threadsNombre de workers pour le mode masse ; par défaut 20
--timeoutDélai d'expiration des requêtes en secondes ; par défaut 15
--fast-timeoutDélai d'expiration des sondes rapides en secondes ; par défaut 6
--retriesNombre de tentatives par requête ; par défaut 1
--proxyURL du proxy HTTP(S)
--all-outÉcrire toutes les lignes de masse, pas seulement les vulnérables
--apply-rceExécuter la chaîne RCE sur les hôtes vulnérables en mode masse
--brand-filterPré-filtrer à l'aide des ressources statiques des plugins Newfold
--stop-afterArrêter l'analyse de masse après N hôtes vulnérables ; 0 signifie tout exécuter
--quietDésactiver les lignes de progression par cible
--resumeAjouter à la sortie et ignorer les cibles déjà présentes

Détails de la chaîne RCE

Une fois un contexte administrateur confirmé, l'outil tente trois techniques dans l'ordre :

  1. Shell via l'éditeur de thème — écrit une petite charge utile PHP dans le 404.php ou index.php du thème actif. La charge utile est déclenchée en demandant une URL inexistante (pour 404.php) ou la racine du site (pour index.php).

  2. Shell via téléversement de plugin — construit un ZIP contenant un plugin minimal, le téléverse via wp-admin/update.php?action=upload-plugin, et accède directement au fichier PHP du plugin.

  3. Chaîne via l'éditeur de plugin inactif — liste les plugins via l'API REST, sélectionne un plugin inactif, écrit un cmd-shell dans son fichier principal via plugin-editor.php, l'active via PUT /wp/v2/plugins/<slug>, déclenche le shell sur n'importe quelle URL frontend, dépose .fm.php dans la racine web, puis désactive le plugin et restaure le fichier d'origine. Ce chemin est conçu pour survivre aux hôtes qui bloquent l'éditeur de thème, bloquent l'accès direct à wp-content, ou annulent les modifications via des contrôles de santé en boucle locale.

En cas de succès, un gestionnaire de fichiers .fm.php persistant est déposé dans la racine web. Il prend en charge :

  • ?cmd=<shell command>
  • ?cat=<path> pour lire un fichier
  • ?put=<path>&data=<base64> pour écrire un fichier
  • ?ls=<path> pour lister un répertoire

Fichiers de sortie

  • cve_2026_80099_results.jsonl — enregistrements JSONL pour chaque cible analysée. Les entrées vulnérables incluent vuln: true, admin, admin_id, et, lorsque la RCE réussit, shell (l'URL du gestionnaire de fichiers ou du shell déposé).
  • vuln.txt — une URL brute par ligne pour chaque cible vulnérable ou shellée.

Remarques

  • L'outil ignore les proxys système et d'environnement via trust_env = False afin d'éviter de divulguer les analyses de masse via des proxys locaux.
  • Le jeton Bearer est calculé par rapport à l'URL exacte que le serveur verra (schéma, hôte et URI de la requête), correspondant au comportement de Url::getCurrentUrl(). La requête est préparée en premier et le jeton est dérivé de l'URL préparée.
  • L'encodeur JSON compatible PHP reproduit le comportement par défaut de json_encode, y compris les barres obliques échappées, l'échappement non-ASCII \uXXXX, et les paires de substitution UTF-16 pour les caractères astraux, de sorte que la charge utile hachée corresponde octet par octet.
  • Une sonde échouée retournant 401 signifie généralement que la cible est corrigée (module >= 2.9.8), que le site est connecté à Hiive (jeton réel, sel inconnu), ou qu'un intermédiaire supprime l'en-tête Authorization. 403 indique généralement qu'un autre filtre rest_authentication_errors est intervenu.

Avertissement

Cet outil est fourni uniquement à des fins de tests de sécurité autorisés et de recherche. Utilisez-le exclusivement contre des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de test. L'accès non autorisé à des systèmes informatiques est illégal dans la plupart des juridictions et peut entraîner de lourdes sanctions civiles et pénales. L'auteur n'assume aucune responsabilité pour une mauvaise utilisation ou des dommages causés par ce logiciel.

Télécharger l’outil