10 уязвимостей WordPress, о которых стоит знать. Защита сайта на WordPress
WordPress – самая популярная CMS в мире. Несмотря на это, большинство взломов и уязвимостей также приходятся на WordPress-сайты. Это не значит, что у WordPress настолько ужасная система безопасности – нарушения чаще всего случаются из-за недостаточной осведомленности разработчиков и администраторов сайта. Поэтому лучше применять меры предосторожности еще до того, как ваш сайт станет мишенью для хакеров.
Проинформирован, значит вооружен – сегодня поговорим о самых распространенных уязвимостях WP и посоветуем, как защитить свой сайт. Не будем акцентировать внимание на репутации взломанного сайта перед посетителями и поисковыми системами. Перейдем сразу к конкретике.
Проблема 1. Уязвимости соседних сайтов на сервере
На виртуальном хостинге все сайты на сервере используют один IP-адрес. И никто, к сожалению, не застрахован от того, что сайт-сосед может быть с серой/черной тематикой, содержать вредоносное ПО или фишинговые ссылки. По этой причине даже вполне законные сайты могут попасть под санкции поисковиков.
А если с одного и того же IP раз за разом кто-то будет рассылать спам-письма, можно ни за что нарваться еще и на фильтры почтовых служб.
Как решить проблемы с общим IP-адресом?
Воспользуйтесь услугой выделенного IP-адреса. На всех тарифах VPS выделенный IP обычно включен в тариф. А вот если вы пользуетесь услугой виртуального Хостинга, покупать dedicated IP придется дополнительно при заказе Хостинга или же в Личном кабинете. На момент публикации статьи стоимость выделенного IPv4-адреса в HostPro – $3.00.
Проблема 2. Устаревшее ПО
WordPress кайфовый тем, что его разработчики примерно каждые три месяца выпускают обновления, которые улучшают функциональность и исправляют критические уязвимости безопасности.
Но при этом слухов о возможности «легко» взломать WordPress меньше не становится. Вся комичность ситуации в том, что злоумышленникам даже не нужно искать уязвимости безопасности, они и так известны за счет исправления их в следующей версии. К примеру, в версии WordPress 5.8.1 исправили уязвимость межсайтового скриптинга (XSS) в редакторе блоков Gutenberg. Соответственно сайты с более старыми версиями WP уже оказались под угрозой.
По статистике Sucuri, 50.3% взломанных WP сайтов были устаревшими. Процент кажется не таким пугающим, как например, 99% устаревших сайтов на Drupal, но стоит и учесть то, что численно 50% сайтов на WP – это гораздо больше, чем 99% сайтов на любой другой CMS.
Мало кто любит обновлять WordPress, потому что это, мягко говоря, дело не 5 минут. К тому же, если сайт написан не по документации или это кастомная разработка, где-то процентов 90%, что после обновления посыпятся ошибки, которые приведут к неработоспособности сайта. В таких случаях автоматические обновления, как правило, отключают.
Как предотвратить проблемы с обновлением WP?
Только обновлением WP. Делать это можно автоматически или вручную. Если вы на 100% уверены в том, что сайт не сляжет после обновления, можно смело включать автообновления в админке, перейдя по ссылке «Enable automatic updates for all new versions of WordPress» в разделе «Updates».
Если у вас свой софт, то лучше подключить через файл wp-config.php автообновление для минорных версий, а мажорные обновления выполнять вручную:
define('WP_AUTO_UPDATE_CORE', 'minor' );
/* That's all, stop editing! Happy publishing. */
Проблема 3. Устаревшие темы и плагины
Как и устаревшее основное ПО может подвергать ваш сайт опасности, так и устаревшие темы и плагины могут прекрасно с этим справиться.
Согласно данным WPScan, около 97% уязвимостей в их базе данных сосредоточены именно в темах и плагинах.
Что делать с устаревшими темами и плагинами?
Автоматическое обновление плагинов WP стоит использовать только при условии создания регулярных резервных копий. А также, если установленные дополнения редко конфликтуют после выхода обновлений или же выпускаются после предыдущих бета-тестов.
Ручному обновлению плагинов лучше отдавать предпочтение тогда, когда новые их версии часто приводят к возникновению багов на сайте. Тогда просто вопрос неработоспособности ресурса перевешивает вопрос безопасности. В таком случае подождите отзывов о новых версиях модулей на форумах WP, и уже тогда спокойно их обновляйте.
Можно также руководствоваться правилом: ставить автоматическое обновление на все плагины, кроме тех, которые отвечают за структуру, дизайн и защиту сайта. Потому что, например, дополнения для Elementor очень любят вести себя непредсказуемо.
Проблема 4. DoS и DDoS-атаки
Цель атаки типа DoS, Denial of Service («Отказ в обслуживании») – заблокировать администраторам сайта и посетителям доступ к нему. Это реализуется путем отправки такого количества трафика на целевой сервер, что он выходит из строя.
Есть еще DDoS-атаки – это по-сути та же DoS, но реализованная с нескольких машин (образуя ботнет) на один целевой хост. Это позволяет скрыть исходный источник трафика и увеличивает количество спама.
Как предотвратить DoS и DDoS-атаки на WordPress?
Главная цель DDoS – хостинг-сервер, а вот недоступность вашего WordPress сайта – уже следствие его неработоспособности. Именно поэтому так важно выбрать безопасный Хостинг под WordPress, который предоставит вам киберзащиту корпоративного уровня или хотя бы минимизирует даунтаймы, которые обычно возникают в таких случаях.
Поддержка Hostpro предоставляет защиту от DDoS в каждом из тарифов виртуального Хостинга или VPS. Мы мониторим все серверы, на которых размещены ваши сайты. И когда админы замечают атаку, сразу ставят IP на фильтр, все происходит через самостоятельно разработанные скрипты и фильтры. За 20+ лет на рынке кейсов успешной борьбы с DDoS более чем достаточно.
Впрочем, важно понимать, что полной защиты от DDoS на практике достичь практически невозможно. Они бывают разной сложности и ежедневно модифицируются. Можно, конечно, поставить со своей стороны дополнительные фильтры, но они, как правило, так сильно перегружают страницы, что пользователям приходится ждать по 20 сек.
Вот что можно сделать со своей, клиентской стороны:
- подключить Cloudflare [для защиты от DDoS достаточно будет и бесплатной версии];
- подключить капчу и cookie – они будут служить барьерами от ботов.
Проблема 5. Брутфорс-атаки
Brute-force, или так называемые «атаки грубой силы» – вид взлома, при котором хакер или тестировщик методом перебора пытается угадать данные для входа в систему. Классический пример – когда пытаются подобрать правильное имя пользователя или пароль путем перебора сотен комбинаций.
Дело в том, что WordPress не блокирует пользователя после нескольких неудачных попыток входа, что позволяет ботам или злоумышленникам подбирать тысячи комбинаций в секунду.
Как предотвратить bruteforce-атаки?
Во-первых, создайте длинный надежный пароль, включая цифры, буквы в нижнем и верхнем регистрах и специальные символы – обязательно уникальный для каждой из учетных записей. И советуем перестать хранить пароли в Google Таблицах или Google Документах (они в любой момент могут попасть в открытый доступ).
Во-вторых, подключите двухфакторную аутентификацию. Так вы сможете дважды подтверждать пользователей, которые входят в админку вашего сайта. Сделать это можно через плагин WP 2FA. Вы будете дополнительно получать уникальный код на телефон или email при каждом входе в админ-панель WP.
Проблема 6. SQL-инъекции
Старый как мир метод, который заключается во вторжении в запросы к базе данных MySQL. Так хакеры также могут получить доступ к вашей админке WordPress, конфиденциальным данным, в частности паролям, личной информации и данным банковских карточек пользователей, изменять эти данные, удалять их, и тем самым вызвать изменения в поведении и логике программы.
Если атака SQL-инъекции зайдет слишком далеко, то злоумышленник сможет даже скомпрометировать базовый сервер или другую внутреннюю инфраструктуру. Иногда онлайн-мошенники могут незаметно оставаться в таком «черном входе» в систему слишком долго, что в результате приводит к долгосрочным рискам утечки информации, штрафам и ухудшению репутации.
Как предотвратить SQL-инъекции на WP-сайте?
- Использовать динамические запросы только при необходимости. К примеру, в PHP вместо динамического SQL можно юзать PDO со строгой типизацией параметризованных запросов.
- Добавить на сайт captcha и ограничить ввод специальных символов в полях и формах для посетителей. Поскольку злоумышленники часто используют для SQL-инъекций контактные формы и поля платежной информации, это может послужить дополнительной мерой безопасности.
- В конфигурационном файле .htaccess добавить код:
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC, OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0 — 9A-Z]{0, 2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0 — 9A-Z] {0,2})
RewriteRule ^(.*)$ index.php [F.L]
Чтобы проверить, не стал ли ваш сайт жертвой SQL-инъекции, воспользуйтесь сервисами WPScan или Sucuri SiteCheck.
Проблема 7. Атаки CSRF
Подделку межсайтовых запросов (CSRF) злоумышленники используют для отправки запросов от аутентифицированного пользователя к веб-приложению. Жертва не видит ответа на поддельные запросы, метод работает как бы «за кулисами». CSRF-атаки могут привести к потере конфиденциальных данных, а также повлиять на качество обслуживания клиентов и нанести ущерб репутации.
Например, Коля авторизован на сайте банка, у него есть сессия в куках. На почте он находит письмо со ссылкой, которая на самом деле является фишинговой. Так он попадает на страницу JavaScript, где вызывается form.submit и отправляется форма на сайт, например, mail.com. Этот сайт проверяет куки, видит, что пользователь залогинен и обрабатывает форму.
Поскольку куки проверяют только пользователя, а не данные, которые он отправляет, так Коля случайно отправляет сообщение от своего имени, но с содержимым, сформированным хакером.
Как защититься от CSRF-атак (Cross-Site Request Forgery)?
В большинстве случаев для предупреждения CSRF для каждого пользователя формируется свой секретный ключ – специальное значение, которое знает только сервер. Оно рандомно генерируется при авторизации и сохраняется в сессии пользователя. Затем на основе такого ключа формируется токен, который будет добавляться как скрытое поле к каждой форме, сгенерированной на сервере.
При отправке формы сервер проверит поле csrf, достоверность токена и только после этого отправит сообщение.
Проблема 8. Межсайтовый скриптинг (XSS атаки)
Совсем недавно, 6 мая, The Hacker News писали о плагине для создания кастомных полей на страницах WordPress, который содержал уязвимости к XSS.
Межсайтовый скриптинг (XSS, Cross-Site Scripting) заключается в добавлении вредоносного скрипта в код страницы сайта. С помощью этого кода осуществляется кража пользовательских cookies с последующим использованием их для атак. В браузере пользователей такой JavaScript код отображается как часть общего кода сайта. При этом сам сайт становится соучастником XSS.
Атака не затрагивает серверную часть, но напрямую влияет на сторону клиента. Получив доступ к коду, хакеры могут попытаться добавить на фронтенд поддельную контактную форму для похищения информации пользователя.
Как бороться с межсайтовым скриптингом (XSS)?
Если на сайте предусмотрен ввод данных посетителями, то обязательно должна быть валидация и безопасная обработка данных не только со стороны вебсервера, но и со стороны клиента.
В основном последние версии движка, а также плагины WP уже защищены от XSS, однако плагины не из официального перечня, написанные сторонними разработчиками, могут иметь такую уязвимость. Поэтому старайтесь обновлять систему управления контентом WP, темы и плагины, а также загружать последние только из проверенных источников, в частности каталога WordPress.org.
Другим полезным инструментом для предотвращения XSS является фаервол веб-приложений (WAF), который проверяет трафик и предотвращает несанкционированный вход в вашу систему из внешних сетей. Если кто-то совершит на ваш WordPres-сайт XSS-атаку, фаервол обозначит такой запрос как подозрительный и заблокирует хакеров еще до того, как они получат доступ к конфиденциальным данным. Как вариант, можете рассмотреть общий плагин безопасности, который просто будет включать в себя фаервол или же подключить услугу CloudFlare.
Проблема 9. Скимминг кредитных карт
Хакеры внедряют вредоносный JavaScript-код на сайт, чтобы похитить конфиденциальную информацию кредитных карт: номера, сроки действия и CVV-коды. Это и называется онлайн-скимингом кредитных карт.
Сайты на WordPress особенно уязвимы к этому виду атаки, поскольку это платформа с открытым исходным кодом, и хакерам нужно не так много времени и усилий для создания и интеграции эксплойта.
Как защитить данные карт от скимминга?
- Установите любой инструмент мониторинга для проверки вашего сайта на наличие вредоносного кода.
- Обновляйте сайт самыми новыми патчами безопасности.
- Используйте инструменты безопасности, в частности фаервол (или CloudFlare) и обязательно SSL-сертификат для дополнительной защиты сайтов и конфиденциальной информации. Как подключить к сайту SSL-сертификат, читайте в нашей статье.
Проблема 10. LFI, RFI, RCE-атаки
LFI (Local File Inclusion) – атака, при которой хакер влияет на обработку данных таким образом, что сервер воспринимает их как путь к локальным файлам и включает его в исходный ответ.
RFI (Remote File Inclusion) – атака, при которой через внешний файл злоумышленник может выполнить код или получить доступ к конфиденциальным данным на сервере.
RCE (Remote Code Execution) – атака, при которой хакер может запускать удаленные программы или выполнять команды ОС на скомпрометированном сервере.
Как защитить сайт на WP от LFI/RFI/RCE-атак?
- Выполняйте проверку и фильтрацию входных данных. Чтобы очистить входные данные, советуем использовать функции filter_input() или sanitize_text_field().
- Для обработки прикрепленных файлов лучше использовать специальный сервер или службу.
- Ограничьте права доступа к файлам и папкам. Можно разрешить права на чтение/запись, и запретить на редактирование. Подробнее о самых популярных правах доступа к папкам и файлам и как их изменить, читайте здесь.
- Не забывайте о специальных фильтрах для входных данных в формах и полях комментариев.
- Обратите особое внимание на защиту API.
- Пользуйтесь общими правилами безопасности, о которых мы говорили ранее: вовремя обновляйте ядро WP, плагины и темы, используйте двухфакторную аутентификацию, фаерволы, системы мониторинга вторжений и отсеивания вредоносных запросов.
Кто несет ответственность за безопасность сайта на WP?
Безопасность любого WordPress сайта лежит на трех китах: владельце/разработчике сайта, WP комьюнити и хостинг-провайдере.
Зона ответственности владельца/разработчика сайта:
- своевременное обновление версии WordPress;
- обновление тем и плагинов;
- обновление версий PHP;
- подключение CloudFlare или других плагинов безопасности;
- генерация надежных паролей и настройка двухфакторной аутентификации;
- выбор безопасного хостинга;
- регулярное сканирование сайта на уязвимости безопасности.
Зона ответственности сообщества WordPress:
- выпуск обновлений и патчей для устранения уязвимостей в старых версиях WP, темах и плагинах;
- поддержка тем и плагинов WordPress в актуальном состоянии;
- обеспечение бета-тестирования новых плагинов и тем;
- исследования для улучшения безопасности ядра WordPress.
Зона ответственности провайдера WordPress Хостинга
Веб-хостинг должен соответствовать отраслевым стандартам безопасности, а также иметь команду техподдержки, которая прикроет, если что-то пойдет не по плану.
С каждым тарифом виртуального Хостинга в HostPro вы получаете:
- защиту от DDoS;
- круглосуточный мониторинг серверов;
- техническую поддержку 24/7;
- антивирус ImunifyAV+;
- ежедневные бэкапы;
- возможность приобрести дополнительный IPv4 и бесплатно подключить защитную услугу CloudFlare.
В завершение
Как видим, в случае с безопасностью WordPress лучше пере-, чем недо-. Вот несколько финальных общих советов для защиты WP-сайтов:
- Следите за обновлением ядра WordPress, плагинов и тем, поскольку это основные источники уязвимостей.
- Устанавливайте темы и плагины только из официальных источников, в частности каталога WordPress.org – так будет больше гарантий, что, во-первых, их лучше тестировали перед выпуском, во-вторых, за их обновлением и исправлением критических уязвимостей будут следить, и в-третьих, что среди WP-комьюнити можно будет подсмотреть решение своей проблемы. Отдавайте предпочтение плагинам именитых разработчиков с наиболее актуальными обновлениями (например, если плагин обновлялся еще 6 месяцев назад, то вероятно, он уже не совсем «живой»). Желательно, чтобы он тестировался с актуальной версией WP. И, конечно, чем больше установок, тем лучше.
- Используйте надежные пароли и прекратите хранить их в Google доках или таблицах.
- Подключите двухфакторную аутентификацию.
- Используйте плагины безопасности или сервисы, содержащие WAF (фаервол) и сканирующие сайт на уязвимости. Хорошим решением будет подключить хотя бы бесплатный CloudFlare.
- Хоститесь у надежного провайдера WordPress Хостинга, который предлагает защиту от DDoS, круглосуточный мониторинг серверов и поддержку 24/7.
- Ограничьте права доступа к файлам и папкам. В классическом варианте на все папки устанавливают 755, на файлы – 644. Иногда на папку wp-content ставят права 777, но лучше 755.
- Делайте резервные копии хотя бы раз в сутки или выберите хостера, который будет делать это за вас и хранить их в архиве.
Желаем вам безопасного удивительного путешествия в мире WordPress. Возникли вопросы или нужна дополнительная консультация? С радостью и бесплатно поможем 24/7, просто напишите запрос в нашу техподдержку или позвоните.
Возможно, вас заинтересует
В этом гайде вы узнаете, как установить Google Analytics на WordPress сайт за несколько...
Клиенты HostPro имеют возможность управлять всеми инсталляциями WordPress прямо из личного кабинета. В этой...
Природа дала нам сердце, чтобы любить Украину, а HostPro – чтобы помочь вам сделать...
Наш телеграм
с важными анонсами, розыгрышами и мемами
Присоединиться