Полный контроль над сервером за 68 минут
Портал не обновляли три года. Устаревшие части сложились в цепочку до самого сервера.
Заказчик: · NDA
- Доступиз интернета, без пароля
- Простой0 минут
- Итогплатформу пересобрали
О продукте
Рабочий портал управления M2M-SIM-картами на Laravel и PHP, с базой PostgreSQL. Приложение работало в контейнере Kubernetes. Аудит проходил во время обслуживания клиентов, с условием нулевого простоя.
Где была ошибка
Страница отладки раскрывала переменные окружения, включая ключ приложения. В Laravel 5.4 этот ключ открывал путь к опасной десериализации CSRF-токена. Известная уязвимость CVE-2018-15133 давала выполнение команд внутри контейнера без входа в аккаунт.
Контейнер не остановил дальнейшую атаку: старое ядро было уязвимо к CVE-2024-1086 в nf_tables. Настройки изоляции допускали выход на узел с правами root. Внешний сетевой фильтр также не закрывал доступ из подовой сети к SSH узла.
Чем это грозило
- Контроль над всеми контейнерами сервера
- Доступ к данным и трафику сервисов
- Путь дальше во внутреннюю сеть
Как доказали
Через 13 минут получили вывод команды id от пользователя nginx внутри контейнера. Через 68 минут подтвердили выполнение кода от root на узле. Для обоих этапов использовали уже известные уязвимости.
Демонстрацию ограничили подтверждением доступа. Портал обслуживал клиентов весь аудит; простоя и ущерба не было.
Как исправили
Возраст системы — это риск с датой. Пропущенное обновление рано или поздно встречает публичный эксплойт.
Исправлено