
Ce dépôt contient une boîte à outils pratique de recherche et de validation pour CVE-2025-4396, une injection SQL aveugle basée sur le temps, non authentifiée, affectant le plugin WordPress Relevanssi via le paramètre `cats`.
Ce dépôt contient un toolkit pratique de recherche et de validation pour CVE-2025-4396, une injection SQL aveugle basée sur le temps non authentifiée affectant le plugin WordPress Relevanssi via le paramètre cats.
Le projet a été conçu pour des engagements Purple Team autorisés afin de :
Le dépôt comprend :
Avertissement
Ce projet est fourni uniquement à des fins éducatives, de validation défensive et de tests de sécurité autorisés.
Ne l'utilisez pas contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite explicite d'évaluation.
CVE-2025-4396 est une vulnérabilité d'injection SQL affectant la fonctionnalité de recherche Relevanssi dans WordPress.
Dans le scénario testé, le problème est accessible via le flux de recherche et plus précisément via le paramètre cats. Le chemin de code vulnérable permet à une entrée contrôlée par l'attaquant d'influencer la requête SQL générée par le plugin.
Étant donné que le point d'accès vulnérable est accessible sans authentification préalable, la faille peut être exploitée par un attaquant distant pour réaliser une injection SQL non authentifiée.
L'impact pratique comprend :
La vulnérabilité existe parce que l'entrée contrôlée par l'utilisateur provenant d'un paramètre lié à la recherche n'est pas traitée de manière sécurisée avant d'être incorporée dans une requête SQL.
En pratique, cela signifie qu'un attaquant peut injecter des expressions SQL dans la logique de requête du backend et forcer la base de données à évaluer des conditions supplémentaires.
La vulnérabilité est exploitée en mode aveugle, ce qui signifie que l'application n'affiche pas directement les erreurs SQL ni les résultats bruts de la base de données.
Au lieu de lire la sortie de la requête sur la page, l'attaquant pose à la base de données une série de questions vrai/faux et observe un effet secondaire :
L'exploitation repose sur des fonctions SQL telles que SLEEP() pour créer une différence mesurable dans le temps de réponse du serveur.
Cela permet à un attaquant de déduire des données sans jamais les voir directement.
Par exemple, l'attaquant peut poser des questions telles que :
$ ? »En répétant ce processus, l'attaquant peut reconstruire un hash complet caractère par caractère.
L'approche standard parcourt un jeu de caractères connu et teste chaque candidat un par un.
Pour chaque position dans le hash cible :
Cette méthode est simple et fiable, mais relativement lente car elle peut nécessiter de nombreuses requêtes par caractère.
L'approche plus rapide utilise la recherche binaire sur la valeur ASCII de chaque caractère.
Au lieu de demander :
a ? »b ? »c ? »elle demande :
Cela divise l'espace de recherche par deux à chaque requête et réduit considérablement le nombre de requêtes HTTP.
L'attaque permet à l'opérateur d'extraire la valeur user_pass de wp_users, généralement pour un ID utilisateur WordPress choisi tel que :
1 pour l'administrateur par défaut,Dans les versions récentes de WordPress, cette valeur peut utiliser le nouveau pipeline de mots de passe WordPress 6.8+, qui combine :
CVE_2025_4396.pyIl s'agit du script d'extraction standard.
Il effectue une injection SQL aveugle basée sur le temps classique et extrait le hash cible caractère par caractère à l'aide d'une recherche linéaire sur un jeu de caractères fixe.
Pour chaque position de caractère :
python3requestsurllib3pip3 install requests urllib3
python3 CVE_2025_4396.py -t "https://target.local/?s=test&cats=" -u 1 -s 3 -v
Arguments :
-t, --target : vulnerable target URL including the injectable parameter
-u, --userid : WordPress user ID to target
-s, --sleep : sleep threshold in seconds
-v, --verbose : enable debug logging
CVE_2025_4396_Stealth.pyIl s'agit de l'édition à recherche binaire.
Il poursuit le même objectif d'extraction que le script standard, mais remplace la recherche linéaire caractère par caractère par une recherche binaire sur les valeurs ASCII.
Pour chaque position :
python3requestsurllib3pip3 install requests urllib3
python3 CVE_2025_4396_Stealth.py -t "https://target.local/?s=test&cats=" -u 1 -s 3 -v