Уязвимости Битрикс и PHP: как найти и закрыть дыры
Квадратное сито с ровной сеткой ячеек, из него вынута одна секция, у проёма лежит зелёный шарик

Уязвимости Битрикс и PHP: как найти и закрыть дыры

Уязвимости «1С-Битрикс» чаще всего связаны с устаревшим ядром, сторонними модулями и небезопасными настройками PHP. Как проверить сайт и закрыть дыры.

Уязвимости Битрикс и PHP: откуда берутся дыры и как их закрыть

Сайт на «1С-Битрикс» взламывают не из-за «плохого PHP» как такового, а из-за сочетания причин: необновлённое ядро и модули, небезопасный самописный код, лишние права на файлы и слабые настройки сервера. Каждую из этих причин можно проверить и устранить.

Большинство взломов происходит не через неизвестные «нулевые» дыры, а через давно исправленные уязвимости на сайтах, которые вовремя не обновили.

«1С-Битрикс» написан на PHP, а значит, безопасность сайта зависит сразу от нескольких слоёв: самой платформы, подключённых модулей, вашего кода, версии и конфигурации PHP, веб-сервера и базы данных. В статье разберём, какие уязвимости встречаются чаще всего, как распознать взлом, какие встроенные инструменты защиты есть в Битрикс и какие настройки PHP стоит изменить в первую очередь.

Почему сайты на Битрикс оказываются в зоне риска

Битрикс — одна из самых популярных CMS в Рунете. Для злоумышленника это удобная мишень: структура каталогов известна (/bitrix/, /upload/, /local/), версия платформы нередко определяется по открытым признакам, а уязвимость, найденная в одном продукте, подходит сразу для тысяч сайтов. Поэтому атаки чаще всего автоматические: боты перебирают адреса и пробуют готовые эксплойты, не интересуясь, кому принадлежит сайт.

Вторая причина — «наследие» проекта. Интернет-магазин на Битрикс живёт годами, над ним работают разные подрядчики, в код добавляются самописные компоненты, подключаются сторонние решения из маркетплейса. Каждый такой элемент расширяет поверхность атаки. Если ядро не обновлялось, а на сервере работает версия PHP, снятая с поддержки, то известные дыры остаются открытыми, и автоматический сканер их находит быстро.

Третья причина — человеческий фактор: простые пароли администраторов, общий доступ по FTP, лишние учётные записи бывших сотрудников и подрядчиков, права 777 на каталоги «чтобы заработало».

цепочка типичной атаки

Как взлом сайта на Битрикс происходит на практике

01

Разведка

Бот сканирует адреса, проверяет типовые пути /bitrix/ и определяет версию платформы и модулей.

02

Проникновение

Используется известная дыра в старом модуле, самописном компоненте или подобранный пароль администратора.

03

Закрепление

В /upload/ или другой каталог кладётся веб-шелл, а в init.php добавляется скрытый код-бэкдор.

04

Монетизация

Спам-рассылки, скрытые ссылки, редиректы на чужие сайты, майнеры, кража заказов и данных клиентов.

Какие классы уязвимостей встречаются чаще всего

Уязвимости на сайтах с Битрикс условно делятся на три группы. Первая — дыры в самой платформе и штатных модулях. Разработчик исправляет их в обновлениях, а в разные годы в модулях находили проблемы разной степени критичности, вплоть до удалённого выполнения кода. Если обновления не устанавливаются, сайт остаётся уязвимым к уже опубликованным способам атаки.

Вторая группа — ошибки в самописном коде и сторонних решениях. Здесь встречаются почти все классические PHP-уязвимости: параметры запроса подставляются в SQL без экранирования, вывод пользовательских данных не фильтруется, загружаемые файлы не проверяются, а пути для подключения файлов собираются из входных данных.

Третья группа — окружение: версия PHP, настройки php.ini, права на файлы, конфигурация веб-сервера. Даже безупречный код становится уязвимым, если в каталоге загрузок разрешено выполнение PHP-скриптов.

Тип уязвимостиКак проявляетсяЧто делать
SQL-инъекцияЗлоумышленник читает или меняет данные в базе, получает учётные записиИспользовать API ядра D7 и подготовленные запросы, не склеивать SQL из параметров
XSS (внедрение скриптов)В страницы встраивается чужой JavaScript, крадутся сессии и данные формЭкранировать вывод, включить проактивный фильтр, проверять шаблоны
Загрузка и выполнение PHP-файлаНа сервере появляется веб-шелл, сайтом можно управлять удалённоПроверять тип и расширение файлов, запретить выполнение PHP в /upload/
Небезопасное подключение файлов и десериализацияВыполняется произвольный код или читаются закрытые файлы сервераНе передавать пользовательские данные в include и unserialize, обновить модули
Слабая авторизация и перебор паролейПодбор пароля администратора и вход в панель управленияВключить двухэтапную авторизацию, ограничить попытки входа, сменить пароли

Как распознать, что сайт уже взломан

Взлом не всегда заметен сразу. Злоумышленники часто стараются, чтобы владелец ничего не заметил: сайт выглядит как обычно, но для поисковых роботов и посетителей из поиска показывает другое содержимое. Поэтому важно знать косвенные признаки и регулярно проверять сайт не только глазами.

Первый тревожный сигнал — предупреждения в инструментах для вебмастеров. Яндекс Вебмастер показывает найденные угрозы в разделе о безопасности, а Google Search Console сообщает о проблемах безопасности и взломанном контенте. Поисковики могут пометить сайт предупреждением в выдаче и понизить его позиции, поэтому последствия взлома быстро отражаются на трафике.

Признаки заражения сайта на Битрикс

  1. 01

    В каталогах /upload/, /bitrix/tmp/ или /bitrix/ появились незнакомые PHP-файлы с непонятными именами

  2. 02

    В файле /bitrix/php_interface/init.php или в шаблоне появился чужой код, особенно с base64_decode и eval

  3. 03

    Сайт перенаправляет посетителей из поиска или с мобильных устройств на посторонние страницы

  4. 04

    В исходном коде страниц появились скрытые ссылки на сторонние сайты

  5. 05

    Резко выросла нагрузка на процессор или исходящий трафик сервера

  6. 06

    Хостинг прислал уведомление о рассылке спама или подозрительной активности

  7. 07

    В Яндекс Вебмастере или Google Search Console появились предупреждения о безопасности

  8. 08

    В журнале вторжений Битрикс множество блокировок и необычных запросов

С чего начинать защиту

Хорошая новость: большинство мер не требует переписывания сайта. Основа защиты — порядок: актуальные версии, минимальные права, закрытые лишние входы и регулярные проверки. Битрикс уже содержит набор инструментов в модуле проактивной защиты, и многие владельцы сайтов используют его лишь частично.

Ниже — последовательность действий, которую удобно пройти за один рабочий день, а затем повторять по расписанию. Перед любыми изменениями сделайте резервную копию файлов и базы данных и по возможности проверяйте обновления на тестовой копии сайта.

Пошаговый план защиты сайта на Битрикс

  1. 01

    Сделайте полную резервную копию файлов и базы данных и проверьте, что её можно развернуть.

  2. 02

    Обновите платформу и все установленные модули через раздел обновлений в административной панели, начиная с обновлений безопасности.

  3. 03

    Переведите сервер на поддерживаемую версию PHP, совместимую с вашей редакцией Битрикс, и проверьте работу сайта на тестовой копии.

  4. 04

    Запустите штатный сканер безопасности в разделе проактивной защиты и исправьте найденные замечания по приоритету.

  5. 05

    Включите проактивный фильтр (WAF), защиту сессий и журнал вторжений, настройте реакцию на подозрительные запросы.

  6. 06

    Включите двухэтапную авторизацию для администраторов, смените пароли, удалите неиспользуемые учётные записи и лишние права.

  7. 07

    Проверьте права на каталоги и запретите выполнение PHP в каталоге загрузок на уровне веб-сервера.

  8. 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 на экран и не вести журналы
  • Считать, что раз сайт работает, то он не заражён

Как правильно

  1. 01

    Обновлять платформу по графику, предварительно проверяя обновления на тестовой копии

  2. 02

    Выдавать минимальные права, закрывать выполнение скриптов в каталогах загрузок

  3. 03

    Создавать отдельные учётные записи с двухэтапной авторизацией и отключать неиспользуемые

  4. 04

    Использовать только лицензионную платформу и проверенные решения, читать отзывы и код

  5. 05

    Логировать ошибки в файл и регулярно просматривать журналы

  6. 06

    Раз в месяц запускать сканер безопасности и проверять уведомления в Яндекс Вебмастере и Google Search Console

Что делать, если взлом уже произошёл

Главное правило — не паниковать и не удалять всё подряд. Сначала сохраните копию заражённого сайта и журналы сервера: по ним можно понять, как проникли злоумышленники. Если этого не выяснить, вредоносный код вернётся уже через несколько дней.

Дальше работа идёт в таком порядке: закрыть доступ (сменить пароли панели, FTP/SSH и базы данных, перевыпустить ключи), найти и удалить веб-шеллы и изменённые файлы, сравнив их с чистым дистрибутивом платформы, проверить базу данных на внедрённые скрипты и устранить причину — обновить платформу, PHP и уязвимый компонент. После этого отправьте сайт на перепроверку в Яндекс Вебмастере и Google Search Console, чтобы предупреждения в поиске были сняты.

было / стало

Как меняется сайт после наведения порядка

было
  • Ядро и модули не обновлялись годами
  • PHP снят с поддержки
  • Права 777 и выполнение PHP в /upload/
  • Один общий пароль администратора
  • Ошибки PHP видны посетителям
  • Проверок и резервных копий по графику нет
стало
  • Обновления ставятся по графику после проверки на копии
  • Актуальная поддерживаемая версия PHP
  • Минимальные права, скрипты в /upload/ не запускаются
  • Отдельные учётки и двухэтапная авторизация
  • Ошибки пишутся только в журнал
  • Ежемесячный скан и ежедневные бэкапы
Безопасность — это не разовая настройка, а регулярный процесс. Закрепите в графике работ с сайтом три действия: ежемесячный запуск сканера безопасности, установку обновлений после проверки на тестовой копии и проверку уведомлений в Яндекс Вебмастере и Google Search Console.

Итоги: как снизить риск взлома сайта на Битрикс

Большинство уязвимостей Битрикс и PHP закрывается обновлениями, правильными правами и встроенными инструментами защиты — без переписывания сайта.
  1. 01

    Регулярно обновляйте платформу, модули и версию PHP, предварительно проверяя изменения на тестовой копии

  2. 02

    Запустите сканер безопасности, включите проактивный фильтр, защиту сессий и журнал вторжений

  3. 03

    Запретите выполнение PHP в каталоге загрузок и уберите лишние права на файлы

  4. 04

    Включите двухэтапную авторизацию и удалите неиспользуемые учётные записи

  5. 05

    Следите за уведомлениями в Яндекс Вебмастере и Google Search Console и делайте резервные копии

Если вы не уверены в безопасности своего проекта, начните с аудита: он покажет, на какой версии работает ядро, какие модули устарели, как настроены PHP и сервер и нет ли на сайте следов взлома. Это быстрее и дешевле, чем восстанавливать сайт и позиции в поиске после заражения.

Часто задаваемые вопросы

Проверим ваш сайт на Битрикс на уязвимости до взлома

Найдём дыры в ядре, модулях и настройках PHP и дадим план исправления

Бесплатная первичная проверкаОтчёт с приоритетамиБез остановки сайта

Проверяем сайты на 1С-Битрикс и PHP

Политика конфиденциальности

При оставлении заявки на ресурсе «https://gurucontext.ru» пользователи предоставляют следующие сведения:

  • Имя
  • Контактный телефон или Telegram
  • Адрес сайта пользователя (не обязательно)

Также администрация сайта получает данные об IP-адресе посетителей, типе браузера, времени нахождения на сайте и прочие подобные сведения через сервисы статистики.

Использование информации

Вся полученная информация используется администрацией «https://gurucontext.ru» исключительно в целях связи с клиентом.

Защита персональных данных

Компания «https://gurucontext.ru» обязуется не разглашать сведения, полученные от пользователей, и хранит их в защищённом виде.

Предоставление данных третьим лицам

Полученные сведения не передаются третьим лицам, за исключением случаев исполнения обязательств перед клиентом (с его разрешения) и обоснованных требований закона.

Контакты

Телефон: +7 (499) 955-47-00.
E-mail: info@gurucontext.ru.