
Analyse WordPress Forminator à la recherche de la CVE-2026-15748, une RCE non authentifiée. Détecte les sites vulnérables, parcourt les formulaires, extrait les nonces, exécute des tests de téléversement sûrs.
Un scanner d'évaluation de vulnérabilités et de recherche en sécurité basé sur Python pour identifier les installations WordPress qui utilisent le plugin Forminator et évaluer l'exposition liée à la version.
À des fins éducatives et de tests autorisés uniquement
N'exécutez ce projet que contre des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation explicite d'évaluation.
CVE-2026-15748 est une vulnérabilité associée au plugin Forminator pour WordPress.
Ce projet fournit un scanner destiné à la recherche en sécurité et aux tests autorisés. Il effectue une séquence de vérifications passives et au niveau applicatif pour identifier WordPress, localiser Forminator, déterminer la version installée lorsque cela est possible, inspecter les pages et formulaires pertinents, et rapporter l'évaluation résultante.
Le scanner vise à aider les chercheurs en sécurité à comprendre l'exposition d'environnements WordPress autorisés, sans considérer le résultat d'un scanner comme une preuve absolue d'exploitabilité.
Le scanner suit le flux de travail général suivant :
Target
|
v
Normalize URL
|
v
Detect WordPress
|
+---- not detected ----> NOT WORDPRESS
|
v
Crawl relevant pages
|
v
Detect Forminator
|
v
Detect Forminator version
|
v
Compare version
|
v
Inspect forms
|
v
Generate result
| Fonctionnalité | Description |
|---|---|
| Détection de WordPress | Détecte si la cible semble utiliser WordPress. |
| Détection de Forminator | Recherche des indicateurs du plugin Forminator. |
| Détection de version | Tente d'identifier la version installée de Forminator à partir des sources disponibles. |
| Vérification de version | Compare la version détectée avec la valeur VULN_MAX configurée. |
| Exploration du site | Collecte les pages et liens internes pertinents pour une inspection plus approfondie. |
| Détection de sitemap | Vérifie les emplacements courants des sitemaps WordPress. |
| Détection de formulaires | Recherche les formulaires et éléments de formulaire Forminator pertinents. |
| Détection de nonce | Tente d'identifier un nonce Forminator dans les données de formulaire détectées. |
| Multi-threading | Prend en charge le traitement de plusieurs cibles simultanément. |
| Gestion des nouvelles tentatives | Réessaie les requêtes échouées selon la limite configurée. |
| Délai entre requêtes | Ajoute un délai aléatoire configurable entre les requêtes. |
| Résultats détaillés | Écrit les résultats d'évaluation collectés dans un fichier de résultats détaillé. |
requestspackagingurllib3Installez les paquets requis :
pip install requests packaging urllib3
Ou :
python -m pip install requests packaging urllib3
Clonez le dépôt :
git clone https://github.com/yora1928/cve-2026-15748.git
Entrez dans le répertoire du projet :
cd cve-2026-15748
Installez les dépendances :
pip install requests packaging urllib3
Vérifiez l'installation de Python :
python --version
La configuration du scanner est définie directement dans le code source :
TIMEOUT = 15
THREADS = 8
VULN_MAX = "1.56.1"
MAX_RETRIES = 3
DELAY_MIN = 1.0
DELAY_MAX = 2.5
CRAWL_DEPTH = 2
| Variable | Valeur par défaut | Description |
|---|---|---|
TIMEOUT | 15 | Délai d'expiration des requêtes HTTP. |
THREADS | 8 | Nombre de threads de travail utilisés pour l'analyse. |
VULN_MAX | 1.56.1 | Version maximale considérée comme affectée par l'évaluation de version du scanner. |
MAX_RETRIES | 3 | Nombre maximal de tentatives de nouvelle exécution pour les requêtes échouées. |
DELAY_MIN | 1.0 | Délai minimal entre les requêtes. |
DELAY_MAX | 2.5 | Délai maximal entre les requêtes. |
CRAWL_DEPTH | 2 | Profondeur maximale d'exploration. |
Les valeurs ci-dessus décrivent la configuration actuelle du code source du scanner.
Le scanner accepte soit une URL cible unique, soit un fichier texte contenant plusieurs URL cibles.
python cve-2026-15748.py -u https://target.com
-u et --url spécifient une seule URL cible.
Utilisez ce mode lors de la réalisation d'une évaluation contre un seul environnement autorisé.
Créez un fichier tel que targets.txt :
https://target1.example
https://target2.example
https://target3.example
Puis exécutez :
python cve-2026-15748.py -f targets.txt
-f et --file spécifient la liste des cibles.
Chaque ligne non vide est traitée comme une cible.
La configuration par défaut utilise 8 threads.
Par exemple :
python cve-2026-15748.py -f targets.txt -t 10
Ou :
python cve-2026-15748.py -f targets.txt -t 5
-t modifie le nombre de threads de travail utilisés par le scanner.
Le scanner fournit également un mode optionnel --upload :
python cve-2026-15748.py -u https://lab.example.com --upload
Pour plusieurs cibles autorisées :
python cve-2026-15748.py -f authorized-targets.txt -t 5 --upload
Ce mode peut effectuer une requête POST/upload contre un endpoint Forminator lorsque les conditions pertinentes sont remplies.
N'utilisez --upload que sur des systèmes où ce test est explicitement autorisé.
| Commande | Objectif |
|---|---|
-u, --url | Scanner une seule URL cible. |
-f, --file | Lire plusieurs cibles depuis un fichier. |
-t | Définir le nombre de threads de scan. |
--upload | Activer le mode de test d'upload pour une cible autorisée. |
Cible unique :
python cve-2026-15748.py -u https://target.com
Cibles multiples :
python cve-2026-15748.py -f targets.txt
Cibles multiples avec concurrence personnalisée :
python cve-2026-15748.py -f targets.txt -t 10
Téléversement de test en laboratoire autorisé :
python cve-2026-15748.py -u https://lab.example.com --upload
Le scanner effectue plusieurs étapes lors d'une évaluation.
L'URL cible est normalisée avant l'envoi des requêtes afin que les vérifications ultérieures utilisent un format d'URL cohérent.
Le scanner vérifie les indicateurs et points de terminaison WordPress courants, notamment :
/wp-login.php
/wp-json
/xmlrpc.php
/wp-content
Il recherche également dans les réponses des indicateurs tels que :
wp-content
wp-includes
Si WordPress ne peut pas être identifié, le scanner signale :
[NOT WORDPRESS]
Le scanner construit une liste de pages à partir des chemins courants, des emplacements de sitemap et des liens internes découverts sur la cible.
Voici des exemples de chemins vérifiés :
/contact
/kontak
/hubungi-kami
/form
/forms
/formulir
/upload
/unggah
/submit
/kirim
/gallery
/kontribusi
/daftar
/pendaftaran
/registration
/register
/file-upload
/submit-document
/unggah-berkas
/upload-file
Les emplacements courants de sitemap incluent :
/sitemap.xml
/sitemap_index.xml
/wp-sitemap.xml
Le crawler est limité par CRAWL_DEPTH.
Le scanner recherche des identifiants Forminator tels que :
forminator-form-<ID>
Pour les formulaires détectés, il vérifie la présence d'éléments pertinents tels que :
type="file"
et :
<select>
Il tente également d'obtenir :
form_id
nonce
du HTML du formulaire.