
Уязвимости Битрикс и PHP: как найти и закрыть дыры
Уязвимости «1С-Битрикс» чаще всего связаны с устаревшим ядром, сторонними модулями и небезопасными настройками PHP. Как проверить сайт и закрыть дыры.
Уязвимости Битрикс и PHP: откуда берутся дыры и как их закрыть
Сайт на «1С-Битрикс» взламывают не из-за «плохого PHP» как такового, а из-за сочетания причин: необновлённое ядро и модули, небезопасный самописный код, лишние права на файлы и слабые настройки сервера. Каждую из этих причин можно проверить и устранить.
«1С-Битрикс» написан на PHP, а значит, безопасность сайта зависит сразу от нескольких слоёв: самой платформы, подключённых модулей, вашего кода, версии и конфигурации PHP, веб-сервера и базы данных. В статье разберём, какие уязвимости встречаются чаще всего, как распознать взлом, какие встроенные инструменты защиты есть в Битрикс и какие настройки PHP стоит изменить в первую очередь.
Почему сайты на Битрикс оказываются в зоне риска
Битрикс — одна из самых популярных CMS в Рунете. Для злоумышленника это удобная мишень: структура каталогов известна (/bitrix/, /upload/, /local/), версия платформы нередко определяется по открытым признакам, а уязвимость, найденная в одном продукте, подходит сразу для тысяч сайтов. Поэтому атаки чаще всего автоматические: боты перебирают адреса и пробуют готовые эксплойты, не интересуясь, кому принадлежит сайт.
Вторая причина — «наследие» проекта. Интернет-магазин на Битрикс живёт годами, над ним работают разные подрядчики, в код добавляются самописные компоненты, подключаются сторонние решения из маркетплейса. Каждый такой элемент расширяет поверхность атаки. Если ядро не обновлялось, а на сервере работает версия PHP, снятая с поддержки, то известные дыры остаются открытыми, и автоматический сканер их находит быстро.
Третья причина — человеческий фактор: простые пароли администраторов, общий доступ по FTP, лишние учётные записи бывших сотрудников и подрядчиков, права 777 на каталоги «чтобы заработало».
Как взлом сайта на Битрикс происходит на практике
Разведка
Бот сканирует адреса, проверяет типовые пути /bitrix/ и определяет версию платформы и модулей.
Проникновение
Используется известная дыра в старом модуле, самописном компоненте или подобранный пароль администратора.
Закрепление
В /upload/ или другой каталог кладётся веб-шелл, а в init.php добавляется скрытый код-бэкдор.
Монетизация
Спам-рассылки, скрытые ссылки, редиректы на чужие сайты, майнеры, кража заказов и данных клиентов.
Какие классы уязвимостей встречаются чаще всего
Уязвимости на сайтах с Битрикс условно делятся на три группы. Первая — дыры в самой платформе и штатных модулях. Разработчик исправляет их в обновлениях, а в разные годы в модулях находили проблемы разной степени критичности, вплоть до удалённого выполнения кода. Если обновления не устанавливаются, сайт остаётся уязвимым к уже опубликованным способам атаки.
Вторая группа — ошибки в самописном коде и сторонних решениях. Здесь встречаются почти все классические PHP-уязвимости: параметры запроса подставляются в SQL без экранирования, вывод пользовательских данных не фильтруется, загружаемые файлы не проверяются, а пути для подключения файлов собираются из входных данных.
Третья группа — окружение: версия PHP, настройки php.ini, права на файлы, конфигурация веб-сервера. Даже безупречный код становится уязвимым, если в каталоге загрузок разрешено выполнение PHP-скриптов.
| Тип уязвимости | Как проявляется | Что делать |
|---|---|---|
| SQL-инъекция | Злоумышленник читает или меняет данные в базе, получает учётные записи | Использовать API ядра D7 и подготовленные запросы, не склеивать SQL из параметров |
| XSS (внедрение скриптов) | В страницы встраивается чужой JavaScript, крадутся сессии и данные форм | Экранировать вывод, включить проактивный фильтр, проверять шаблоны |
| Загрузка и выполнение PHP-файла | На сервере появляется веб-шелл, сайтом можно управлять удалённо | Проверять тип и расширение файлов, запретить выполнение PHP в /upload/ |
| Небезопасное подключение файлов и десериализация | Выполняется произвольный код или читаются закрытые файлы сервера | Не передавать пользовательские данные в include и unserialize, обновить модули |
| Слабая авторизация и перебор паролей | Подбор пароля администратора и вход в панель управления | Включить двухэтапную авторизацию, ограничить попытки входа, сменить пароли |
Как распознать, что сайт уже взломан
Взлом не всегда заметен сразу. Злоумышленники часто стараются, чтобы владелец ничего не заметил: сайт выглядит как обычно, но для поисковых роботов и посетителей из поиска показывает другое содержимое. Поэтому важно знать косвенные признаки и регулярно проверять сайт не только глазами.
Первый тревожный сигнал — предупреждения в инструментах для вебмастеров. Яндекс Вебмастер показывает найденные угрозы в разделе о безопасности, а Google Search Console сообщает о проблемах безопасности и взломанном контенте. Поисковики могут пометить сайт предупреждением в выдаче и понизить его позиции, поэтому последствия взлома быстро отражаются на трафике.
Признаки заражения сайта на Битрикс
- 01
В каталогах /upload/, /bitrix/tmp/ или /bitrix/ появились незнакомые PHP-файлы с непонятными именами
- 02
В файле /bitrix/php_interface/init.php или в шаблоне появился чужой код, особенно с base64_decode и eval
- 03
Сайт перенаправляет посетителей из поиска или с мобильных устройств на посторонние страницы
- 04
В исходном коде страниц появились скрытые ссылки на сторонние сайты
- 05
Резко выросла нагрузка на процессор или исходящий трафик сервера
- 06
Хостинг прислал уведомление о рассылке спама или подозрительной активности
- 07
В Яндекс Вебмастере или Google Search Console появились предупреждения о безопасности
- 08
В журнале вторжений Битрикс множество блокировок и необычных запросов
С чего начинать защиту
Хорошая новость: большинство мер не требует переписывания сайта. Основа защиты — порядок: актуальные версии, минимальные права, закрытые лишние входы и регулярные проверки. Битрикс уже содержит набор инструментов в модуле проактивной защиты, и многие владельцы сайтов используют его лишь частично.
Ниже — последовательность действий, которую удобно пройти за один рабочий день, а затем повторять по расписанию. Перед любыми изменениями сделайте резервную копию файлов и базы данных и по возможности проверяйте обновления на тестовой копии сайта.
Пошаговый план защиты сайта на Битрикс
- 01
Сделайте полную резервную копию файлов и базы данных и проверьте, что её можно развернуть.
- 02
Обновите платформу и все установленные модули через раздел обновлений в административной панели, начиная с обновлений безопасности.
- 03
Переведите сервер на поддерживаемую версию PHP, совместимую с вашей редакцией Битрикс, и проверьте работу сайта на тестовой копии.
- 04
Запустите штатный сканер безопасности в разделе проактивной защиты и исправьте найденные замечания по приоритету.
- 05
Включите проактивный фильтр (WAF), защиту сессий и журнал вторжений, настройте реакцию на подозрительные запросы.
- 06
Включите двухэтапную авторизацию для администраторов, смените пароли, удалите неиспользуемые учётные записи и лишние права.
- 07
Проверьте права на каталоги и запретите выполнение PHP в каталоге загрузок на уровне веб-сервера.
- 08
Настройте регулярные резервные копии и мониторинг: проверку целостности файлов и уведомления в Яндекс Вебмастере и Google Search Console.
Что проверить в настройках PHP и веб-сервера
- display_errors = Off
Ошибки не должны выводиться посетителям: они раскрывают пути к файлам и структуру кода. Пишите их в журнал.
- expose_php = Off
Скрывает версию PHP в заголовках ответа и усложняет автоматический подбор эксплойтов.
- Запрет выполнения PHP в /upload/
Через настройки Apache или nginx: даже если файл загрузят, он не запустится как скрипт.
- disable_functions и open_basedir
Ограничьте опасные функции запуска команд и каталоги, доступные PHP. Предварительно проверьте совместимость с вашим сайтом.
- Права на файлы без 777
Обычно достаточно 644 для файлов и 755 для каталогов, владелец — пользователь сайта, а не веб-сервера.
- Защита входа в /bitrix/admin/
Ограничение по IP, двухэтапная авторизация и лимит попыток входа снижают риск подбора пароля.
Роль версии PHP в безопасности Битрикс
Версия PHP напрямую влияет на защищённость сайта. Ветки PHP, снятые с поддержки, больше не получают исправлений безопасности: найденные в них уязвимости остаются открытыми навсегда. Кроме того, старый PHP часто становится причиной того, что нельзя установить свежие обновления Битрикс, и сайт «застревает» на старой версии платформы.
При этом переход на новую версию PHP нельзя делать вслепую. Старые самописные компоненты и сторонние модули могут использовать устаревшие функции, которые в новых версиях удалены или изменили поведение. Оптимальный сценарий: развернуть тестовую копию сайта, переключить её на актуальную версию PHP, проверить журналы ошибок, исправить несовместимый код и только затем переключать рабочий сайт.
Сама по себе новая версия PHP не делает сайт неуязвимым. Она закрывает уязвимости интерпретатора, но дыры в ядре, модулях и вашем коде остаются. Поэтому обновление PHP — это обязательная, но лишь одна из мер защиты.
Типичные ошибки в защите сайта на Битрикс
Как делать не стоит
- Годами не обновлять ядро и модули из-за страха «сломать» сайт
- Оставлять права 777 на каталоги и разрешать выполнение PHP в /upload/
- Использовать общий логин администратора и простой пароль для всех подрядчиков
- Устанавливать сторонние модули и «взломанные» дистрибутивы из непроверенных источников
- Выводить ошибки PHP на экран и не вести журналы
- Считать, что раз сайт работает, то он не заражён
Как правильно
- 01
Обновлять платформу по графику, предварительно проверяя обновления на тестовой копии
- 02
Выдавать минимальные права, закрывать выполнение скриптов в каталогах загрузок
- 03
Создавать отдельные учётные записи с двухэтапной авторизацией и отключать неиспользуемые
- 04
Использовать только лицензионную платформу и проверенные решения, читать отзывы и код
- 05
Логировать ошибки в файл и регулярно просматривать журналы
- 06
Раз в месяц запускать сканер безопасности и проверять уведомления в Яндекс Вебмастере и Google Search Console
Что делать, если взлом уже произошёл
Главное правило — не паниковать и не удалять всё подряд. Сначала сохраните копию заражённого сайта и журналы сервера: по ним можно понять, как проникли злоумышленники. Если этого не выяснить, вредоносный код вернётся уже через несколько дней.
Дальше работа идёт в таком порядке: закрыть доступ (сменить пароли панели, FTP/SSH и базы данных, перевыпустить ключи), найти и удалить веб-шеллы и изменённые файлы, сравнив их с чистым дистрибутивом платформы, проверить базу данных на внедрённые скрипты и устранить причину — обновить платформу, PHP и уязвимый компонент. После этого отправьте сайт на перепроверку в Яндекс Вебмастере и Google Search Console, чтобы предупреждения в поиске были сняты.
Как меняется сайт после наведения порядка
- Ядро и модули не обновлялись годами
- PHP снят с поддержки
- Права 777 и выполнение PHP в /upload/
- Один общий пароль администратора
- Ошибки PHP видны посетителям
- Проверок и резервных копий по графику нет
- Обновления ставятся по графику после проверки на копии
- Актуальная поддерживаемая версия PHP
- Минимальные права, скрипты в /upload/ не запускаются
- Отдельные учётки и двухэтапная авторизация
- Ошибки пишутся только в журнал
- Ежемесячный скан и ежедневные бэкапы
Итоги: как снизить риск взлома сайта на Битрикс
- 01
Регулярно обновляйте платформу, модули и версию PHP, предварительно проверяя изменения на тестовой копии
- 02
Запустите сканер безопасности, включите проактивный фильтр, защиту сессий и журнал вторжений
- 03
Запретите выполнение PHP в каталоге загрузок и уберите лишние права на файлы
- 04
Включите двухэтапную авторизацию и удалите неиспользуемые учётные записи
- 05
Следите за уведомлениями в Яндекс Вебмастере и Google Search Console и делайте резервные копии
Если вы не уверены в безопасности своего проекта, начните с аудита: он покажет, на какой версии работает ядро, какие модули устарели, как настроены PHP и сервер и нет ли на сайте следов взлома. Это быстрее и дешевле, чем восстанавливать сайт и позиции в поиске после заражения.
Часто задаваемые вопросы
Чаще всего это устаревшее ядро и модули без обновлений, SQL-инъекции и XSS в самописных компонентах, возможность загрузить и выполнить PHP-файл, слабые пароли администраторов и небезопасные настройки сервера и PHP.
Типичные признаки: появились незнакомые PHP-файлы в /upload/ и /bitrix/, изменён файл init.php, на сайте всплывают редиректы и скрытые ссылки, растёт нагрузка на сервер, а в Яндекс Вебмастере или Google Search Console появились предупреждения о безопасности.
Нет. Актуальная версия PHP закрывает уязвимости самого интерпретатора, но не исправляет дыры в ядре Битрикс, сторонних модулях и вашем коде. Нужно одновременно обновлять платформу, модули и PHP, а также настроить права и фильтрацию запросов.
Штатный сканер безопасности стоит запускать после каждого крупного обновления или доработки, а в остальное время минимум раз в месяц. Обновления платформы лучше устанавливать сразу после выхода, предварительно проверив их на тестовой копии.
Сначала сделайте копию сайта и базы для анализа, затем закройте доступ злоумышленнику: смените все пароли и ключи, найдите и удалите вредоносные файлы, обновите платформу и PHP, устраните причину взлома. После этого запросите перепроверку в Яндекс Вебмастере и Google Search Console.
Проверим ваш сайт на Битрикс на уязвимости до взлома
Найдём дыры в ядре, модулях и настройках PHP и дадим план исправления
Спасибо за заявку!
Мы свяжемся с вами в ближайшее время.
Проверяем сайты на 1С-Битрикс и PHP
