
CVE-2026-41452 — Krayin CRM bypass del instalador sin autenticación (X-Requested-With) → toma de control del administrador. Verificado: sobrescritura + inicio de sesión en 2.2.4, bloqueado en 2.2.5
CVSS 9.8 (Crítico) · CWE-287 / CWE-306 · Informe de Jiva · Aviso de VulnCheck
El instalador de Krayin CRM expone POST /install/api/admin-config-setup (además de run-migration,
run-seeder) sin protección CSRF (grupo withoutMiddleware('web')). El CanInstall
middleware global solo bloquea la ruta para peticiones no AJAX:
// app/Http/Middleware/CanInstall.php
if ($this->isAlreadyInstalled() && ! $request->ajax()) {
return redirect()->route('admin.dashboard');
}
El envío de X-Requested-With: XMLHttpRequest omite la comprobación por completo. El controlador entonces
ejecuta updateOrInsert sobre el administrador primario hardcodeado (user id=1) con
nombre/correo/contraseña proporcionados por el atacante (role_id=1, status=1) → toma de control total del administrador sin autenticación en una
instancia ya instalada.
Afectadas: ≤ 2.2.0 y 2.2.4 (regresión). Corregida: 2.2.1 (e4eb96f5), regresión en 2.2.4
(6a7bc4cc), re-corregida en 2.2.5 (ea4919a8). master seguía siendo vulnerable en el momento de la investigación.
python3 poc_cve-2026-41452.py http://TARGET newadmin [email protected] 'NewPass@123'
Cadena:
X-Requested-With: XMLHttpRequest → HTTP 200 1 → administrador (id=1) sobrescrito/admin/login con las nuevas credenciales → redirección a /admin/dashboard[0] NON-AJAX POST -> HTTP 302 (blocked by CanInstall) [OK control]
[1] AJAX POST /install/api/admin-config-setup -> HTTP 200 '1' [OK overwrite]
[2] login [email protected] -> HTTP 302 /admin/dashboard [OK]
[3] GET /admin/dashboard -> HTTP 200 (full dashboard) [OK]
=== VERDICT: CVE-2026-41452 EXPLOITABLE ===
Comparación con la versión corregida: con los archivos de v2.2.5, el mismo POST AJAX → HTTP 403 (bloqueado).
Cualquier instalación de Krayin CRM accesible públicamente (v2.2.4 o ≤2.2.0) puede ser completamente comprometida por un atacante no autenticado con una sola petición. No se requiere CSRF, ni credenciales, ni interacción.
ea4919a8 (v2.2.5) · Regresión: 6a7bc4cc (v2.2.4) · Primera corrección: e4eb96f5 (v2.2.1)