Laravel · языковая школа · безопасность
Фрилансер ушёл.В проекте остались бэкдоры
Частная языковая школа заказала сайт у фрилансера: направления, расписание, запись на пробное занятие, админка. Согласованную работу он закрыл не до конца, спор перерос в конфликт, школа разорвала договор. После разрыва в проекте остались бэкдоры и вредоносный код: через них можно было заходить в файловую систему, менять файлы и запускать вирусы. Задача стояла выявить и устранить проблемы в проекте, вернуть ему безопасность и контроль.
бэкдоров и вредоносных вставок
после аудита и чистки
нагрузка на сервер
майнер удалён
заявок на пробное занятие
форма записи снова работает
Снаружи — обычный сайт языковой школы. Внутри после конфликта с фрилансером оказались бэкдоры, вредоносный код и недоделанные задачи.
Как дошло до этого
Конфликт с фрилансером закончился бэкдорами в проекте
Снаружи всё выглядело как обычный сайт школы. Внутри после разрыва с исполнителем остался код, которому нельзя было доверять: скрытые точки входа, вредоносные вставки и недоделанный функционал.
- 01
Сайт делал фрилансер
Частной языковой школе нужен был сайт на Laravel: направления, расписание, запись на пробное занятие и админка. Работу отдали на фриланс.
- 02
Фрилансер закрыл работу не до конца
Согласованную работу он закрыл не до конца. Из‑за этого начался конфликт, и языковая школа разорвала договор.
- 03
После конфликта — бэкдоры
Фрилансер оставил в проекте скрытые точки входа и вредоносный код. Через них можно было заходить в файловую систему, менять файлы и запускать вирусы — уже без ведома школы.
- 04
Сайт начал сбоить
Появились лишние файлы, ошибки, следы чужих правок в коде. Ранее сделанный функционал начал отваливаться.
Что нашли
Сайт был недоделан и опасен
Аудит показал две проблемы сразу. Первая — безопасность: бэкдоры, вредоносный код, скрытые точки входа. Вторая — продукт: школа ждала рабочие формы и запись на занятия, а получила недоделки поверх заражённого проекта.
Бэкдоры в PHP
В коде нашли скрытые вставки. Через них можно было обходить обычный вход в админку и сохранять доступ к файлам проекта даже после смены пароля.
Вредоносные скрипты
Часть файлов подменили, в проекте остались обращения к чужим доменам. Некоторые куски кода включались только при определённых условиях, поэтому их легко было не заметить.
Майнер в проекте
Проект уже пришёл с майнером: он крутился в фоне, нагружал сервер и жрал ресурсы, пока школа об этом не знала.
Недоделанный функционал
Поверх угроз безопасности висели продуктовые дыры: формы с кривой обработкой и неполными синхронизациями, вместо динамики — статика прямо в коде, без выноса в админку, сломанная запись на пробное занятие.
Как решали
Сначала безопасность, потом доработки
Сначала убрали бэкдоры. Любая новая функция поверх заражённого кода только усиливала риски. Поэтому шли по порядку: изоляция, аудит, чистка, закрытие лазеек — и только потом задачи, которые фрилансер не довёл до конца.
Изолировали проект
Сняли резервные копии, ограничили внешний доступ и зафиксировали состояние до правок. Нужно было понять, с чем работаем, прежде чем что‑то менять.
Провели аудит
Проверили файлы, базу, фоновые задачи и учётные записи. Отделили вредоносное — включая майнер — от недоделанного и от того, что ещё можно было оставить.
Вычистили код
Убрали бэкдоры, майнер и подозрительные вставки, вернули штатные файлы там, где их подменили, и отдельно проверили типичные места, куда прячут вредоносный код.
Убрали лазейки
Сменили пароли и ключи, убрали майнер и подозрительные вставки, проверили хостинг и процесс деплоя. У прежнего фрилансера не осталось способа вернуться в проект.
Доделали сайт
После чистки доделали оставшиеся задачи: формы, разделы направлений, запись на занятия. Настроили бэкапы и проверили, что ключевые сценарии работают.
Результат
Школа снова вела набор через сайт
Вывод
Если уход от подрядчика закончился конфликтом — стоит проверить уровень безопасности ресурса
Когда сотрудничество с исполнителем рвётся на эмоциях, в проекте нередко остаются бэкдоры и вредоносный код. Не стоит начинать с доработок: сначала аудит и чистка, и только потом можно спокойно дорабатывать сайт.
Очистим ваш проект от вирусов
Устраним уязвимости и бэкдоры, очистим вредоносный код — дадим понятный план дальнейших работ.