SQL-инъекция: руководство для пользователей WordPress
Опубликовано: 2021-05-26Если вы серьезно относитесь к безопасности своего веб-сайта, то пора узнать об опасностях SQL-инъекций и о том, как с ними бороться.
Термин SQL-инъекция (также называемый SQLi) относится к типу техники кибератак, которая является обычным способом для хакеров взломать веб-сайты всех типов, включая сайты, использующие WordPress в качестве своей системы управления контентом.
В этом руководстве мы подробно объясним, как выглядит атака с использованием SQL-инъекции, и точные шаги, которые необходимо предпринять, чтобы ее избежать. Давайте взглянем. Вы узнаете все о том, как работают эти атаки, почему от них так важно защищаться, и о реальных примерах этих уязвимостей. Давайте нырнем!
Введение: понимание SQL
S tructured Q uery L anguage, или «SQL» (произносится как слово «продолжение») является реляционной базой данных системы управления. Изобретенный в 1974 году, это был первый простой способ хранения и извлечения многих типов данных в компьютерных системах.
С тех пор популярность языка резко возросла, и он до сих пор используется во многих системах управления контентом (CMS), таких как WordPress. Вскоре после того, как язык стал популярным в научно-исследовательском сообществе, возникла проблема печально известной ныне SQL-инъекции.
В таких системах, как WordPress, многие операции используют SQL-запросы для извлечения и хранения данных. Эти SQL-запросы написаны разработчиками и не предназначены для гибкости.
К сожалению, с момента появления SQL атаки с использованием SQL-инъекций были постоянной проблемой для систем, использующих этот тип базы данных, таких как база данных WordPress. Использование качественного плагина безопасности WordPress, безусловно, может помочь снизить риск разрушительной атаки или взлома. Однако, как сказал бы Г.И. Джо, «знание - это половина дела», когда речь идет о любой форме кибератаки.
Что такое SQL-инъекция (SQLi)?
Вкратце, SQL-инъекция (SQLi) - это атака, которая позволяет хакеру воспользоваться уязвимым SQL-запросом для выполнения своего собственного запроса. SQL-инъекции происходят, когда злоумышленник может запустить свой собственный SQL на сервере.Вы заметите, что SQL-инъекции часто упоминаются в технических публикациях как «SQLI» или «SQLi». Помните, что эти атаки могут произойти в любой системе, которая использует SQL или производную от SQL для управления данными. В частности, внедрение SQL в WordPress так хорошо изучено и задокументировано из-за огромного количества сайтов, работающих на платформе WordPress.
Давайте посмотрим на более технические затраты на то, из чего состоят эти атаки.
Определение SQL-инъекции
По определению намерение SQL-инъекции всегда злонамеренно и обычно направлено на достижение одной или нескольких из этих трех целей:
- Несанкционированное извлечение данных - в SQL для захвата данных используется команда SELECT. Если злоумышленник сможет успешно манипулировать запросом на основе SELECT, он сможет «сбросить» содержимое базы данных. Вот почему так важно зашифровать все базы данных информацией, которая не должна быть обнародована.
- Модификация данных. В других случаях целью SQL-инъекции WordPress может быть изменение записей в базах данных. Обычно это делается для того, чтобы назначить конкретную учетную запись или набор разрешений для учетных записей, которых у них обычно не было бы.
- Отказ в обслуживании (DoS) - DoS-атака - это когда злоумышленник затрудняет доступ законных пользователей к вашему сайту или услугам. Обычная команда в SQL для удаления данных - это просто УДАЛИТЬ. Злоумышленники часто массово удаляют содержимое баз данных, чтобы сделать целевые сайты недоступными или непригодными для использования.
Совет: регулярно делайте резервные копии своего сайта!
Многие опытные разработчики хранят вне сервера копии всего кода SQL, который они написали для своих сайтов WordPress. В виде файлов .sql их можно использовать вместе с плагином резервного копирования WordPress, чтобы гарантировать, что даже если злоумышленник может помешать вашей безопасности, вы сможете восстановить данные за очень короткое время. Плагин резервного копирования WordPress, такой как BackupBuddy, выполняет резервное копирование всей базы данных WordPress и любых других файлов в вашей установке WordPress.

Объяснение типов атак с использованием SQL-инъекций
Теперь, когда мы изучили некоторые из повреждений, которые могут нанести атаки на основе SQL, пришло время изучить более техническую сторону инъекций. Вам следует знать несколько важных подмножеств типов инъекций.
Классическое внедрение SQL (SQLi)
Самый распространенный тип инъекции, классический вариант - когда злоумышленник знает код SQL заранее. Это также тип внедрения, наиболее часто используемый в WordPress; поскольку WordPress является открытым исходным кодом, широкая публика имеет доступ ко всем его компонентам, включая запросы SQL.
Мы перейдем к реальным примерам чуть позже, но с этой формой внедрения злоумышленники часто манипулируют запросами, чтобы «отменить» первую часть одного из них. Затем они могут вставить собственный запрос, который сервер будет запускать, как если бы его написал исходный разработчик.
Слепое внедрение SQL (SQLi)
В отличие от классической версии, слепые SQL-инъекции происходят, когда злоумышленник не имеет доступа к SQL-коду и просто должен сделать обоснованное предположение. Кроме того, для этого типа требуется гораздо больше навыков, чем для традиционного SQLi, поскольку результаты успешной атаки не отображаются для злоумышленника.
При этом доступно множество программ, которые помогают злоумышленникам автоматически получать результаты побитно.
Составное внедрение SLQ (SQLi)
Эта форма атаки - это когда отдельная атака комбинируется с SQLi для получения желаемого результата. Самая изощренная из трех подгрупп, злоумышленник должен выполнить эксплойт, который позволяет ему выполнять SQLi, который не будет работать сам по себе. Эксплойты, которые чаще всего сопровождают SQLi в этом жанре атак, - это нарушения аутентификации, атаки распределенного отказа в обслуживании (DDoS), перехват DNS и атаки с использованием межсайтовых сценариев.
Почему веб-сайты WordPress уязвимы для SQL-инъекций?
WordPress уязвим для определенных SQL-инъекций, поскольку он так широко используется (сейчас используется 40% всех веб-сайтов!) И существует уже некоторое время (с 2003 года). WordPress основан на PHP, языке программирования на стороне сервера, который разработан для простой интеграции с MySQL.
WordPress использует базы данных SQL для хранения практически всего, от комментариев до сообщений, учетных записей и информации об электронной торговле. Подавляющее большинство попыток внедрения SQL в WordPress осуществляется с помощью форм, которые отправляют данные в сценарий PHP, содержащий SQL-запрос, который злоумышленник хочет использовать.
Это не недостаток дизайна, а скорее побочный эффект способа разработки WordPress. Помните, что практически все, что началось до и до «эры доткомов», не было разработано с учетом требований безопасности. Фактически, прекращенный в настоящее время веб-журнал Phrack был первым общедоступным источником, обсуждавшим SQLi в своем выпуске за декабрь 1998 года.
Хотя первоначальные эксплойты SQLi почти никогда не работают на современных CMS, таких как WordPress, с годами злоумышленники стали хитрее. Мы рассмотрим простой пример того, как SQLi может выглядеть на полностью незащищенном веб-сайте. Затем мы покажем вам, как посмотреть существующие эксплойты для различных версий WordPress.
Важные предупреждения относительно SQL-инъекций
Прежде чем мы продолжим, есть еще одно важное замечание, которое мы хотим прояснить, чтобы помочь вам не сбиться с пути в вашем совместном путешествии по WordPress и кибербезопасности!
Постоянное обновление вашей версии WordPress - одно из лучших средств защиты от эксплойтов SQLi. Даже если это означает временное нарушение работы нескольких плагинов, это того стоит для безопасности вашего сайта.Пример внедрения SQL
Теперь, когда мы избавились от этих заявлений об отказе от ответственности, давайте посмотрим на примеры SQLi. Чтобы понять это, вам нужно немного знать жаргон SQL. SQL использует такие команды, как SELECT для захвата данных, DROP TABLE для полного уничтожения таблицы в базе данных, DELETE для удаления строк из таблицы и т. Д. Кроме того, символ «*» в SQL означает «все».
Самый простой запрос в SQL: SELECT * FROM TABLE_NAME. Это говорит о необходимости распечатать все данные из таблицы с именем «TABLE_NAME». Когда вы отправляете данные в форму входа, она запускается через PHP-скрипт, который сопоставляет ваши учетные данные с таблицей пользователей. В нашем примере мы предположим, что мы очень плохо разбираемся в кибербезопасности и у нас есть полностью незашифрованная таблица с открытым текстом со столбцами с именами USER и PASS.
Подготовка запроса
В нашей очень плохо защищенной базе данных наша таблица с именами пользователей и паролями называется BADLY_DONE_TABLE. Запрос для аутентификации входа пользователя в систему прост: SELECT * FROM BADLY_DONE_TABLE WHERE USER = '[имя пользователя из формы]' AND PASS = '[пароль из формы]'.
Как видите, мы говорим получить «список» пользователей, который должен быть только одним, если имя пользователя и пароль, введенные в форму, совпадают. SQL также позволяет использовать ключевое слово OR в условных операторах, таких как AND, которое вы видите в нашем запросе.
Пришло время разработать эксплойт.
Использование нашего незащищенного SQL-запроса
Наш запрос настроен на возврат пользователя, если наши имя пользователя и пароль совпадают. Помня, что одинарная кавычка завершает строку, мы можем ввести «Blahblahblah» в качестве имени пользователя, а затем «OR» 1 »=« 1 ».
Мы пользуемся тем фактом, что наш запрос формируется динамически, и ввод не «дезинфицируется» перед выполнением. По сути, мы говорим, что если число «1» равно числу «1» (что удивительно, так оно и есть!), То выгрузите все из таблицы, независимо от того, верны ли введенные нами учетные данные.
В 1998 году это сработало бы. Теперь, как правило, для создания рабочих эксплойтов для WordPress требуется гораздо больше навыков как в SQL, так и в SQLi.
SQL-инъекции и веб-сайты WordPress
Наш предыдущий пример не будет работать на современных сайтах WordPress, если администратор сайта не отключит все меры безопасности. Однако, используя те же принципы, хакеры по-прежнему создают и продают эксплойты SQLi другим злоумышленникам.
Поскольку WordPress является открытым исходным кодом и за ним стоит большое сообщество разработчиков, многие исследователи безопасности часто находят эти эксплойты до того, как это сделает хакер. Затем они сообщают о них команде WordPress, и эксплойт исправляется. В некоторых неудачных случаях хакер сначала обнаруживает эксплойт, делая его «в дикой природе», вынуждая команду WordPress как можно скорее внести быстрое исправление и выпустить его как обновление.
Если вас интересуют текущие и предыдущие эксплойты внедрения для WordPress, вы можете проверить базу данных CVE. Он содержит указатель угроз безопасности с названием продукта, затронутыми версиями и общим описанием того, как работает эксплойт. Практически все эксплойты, которые вы найдете в подобных списках, уже исправлены, но их удобно использовать в качестве учебных материалов.
Предотвращение SQL-инъекций
Прочитав это, вы, вероятно, задаетесь вопросом, как гарантировать, что ваш сайт WordPress не станет следующей жертвой атаки SQLi. Хорошая новость заключается в том, что вам не нужно быть профессионалом в области безопасности, чтобы защитить себя от атак SQLi!
- Будьте очень осторожны с любыми PHP-файлами, которые вы пишете или получаете с других сайтов и устанавливаете (в частности, плагины WordPress). Все, что требуется, - это слабо сделанный PHP-скрипт, который не дезинфицирует вводимые пользователем данные, чтобы разрушить ваш сайт WordPress.
- Используйте хорошо известный плагин для мониторинга безопасности, такой как iThemes Security Pro, чтобы предупредить вас, если кто-то попытается совершить эту атаку против вашего сайта, чтобы вы могли заблокировать ее заранее.
- Самое главное, вы всегда должны обновлять свой сайт WordPress до последней версии. Многие владельцы сайтов по той или иной причине воздерживаются от обновления, и это является причиной подавляющего большинства утечек данных.
- Обновляйте свои плагины и темы WordPress. Мы не можем сказать этого достаточно. Уязвимые темы и плагины - это причина №1 взлома сайтов WordPress.
5 шагов по предотвращению SQL-инъекций в WordPress
1. Загрузите и установите подключаемый модуль iThemes Security Pro.
Чтобы приступить к обеспечению безопасности и защите вашего сайта, загрузите и установите плагин iThemes Security Pro.

Получите iThemes Security Pro сейчас
2. Активируйте управление версиями, чтобы обновлять ядро WordPress, плагины и темы.
Проще говоря: вы подвергаете себя риску атаки, если используете на своем веб-сайте устаревшие версии WordPress, плагинов и тем. Обновления версий часто включают исправления для проблем безопасности в коде, включая уязвимости SQL-инъекций и удаленного выполнения кода (RCE), поэтому важно всегда запускать последнюю версию всего программного обеспечения, установленного на вашем веб-сайте WordPress.
Обновления появятся на вашей панели управления WordPress, как только они станут доступны. Постарайтесь запускать резервную копию, а затем запускать все доступные обновления каждый раз, когда вы входите на свой сайт WordPress. Хотя задача запуска обновлений может показаться неудобной или утомительной, это важная передовая практика безопасности WordPress.

Трудно отслеживать каждую обнаруженную уязвимость WordPress - мы отслеживаем и публикуем их в наших обзорах уязвимостей WordPress - и сравниваем этот список с версиями плагинов и тем, которые вы установили на своем веб-сайте. Однако это не мешает хакерам WordPress использовать плагины и темы с известными уязвимостями. Установленное на вашем сайте программное обеспечение с известными уязвимостями дает хакерам необходимые им схемы, чтобы захватить ваш сайт.
Функция управления версиями в плагине iThemes Security Pro позволяет автоматически обновлять WordPress, плагины и темы. Помимо этого, в системе управления версиями также есть возможности для повышения безопасности вашего веб-сайта, когда вы используете устаревшее программное обеспечение и сканируете старые веб-сайты.
Чтобы начать использовать Управление версиями, включите модуль на главной странице настроек безопасности.

Теперь нажмите кнопку « Настроить параметры» , чтобы поближе познакомиться с настройками, предназначенными для защиты вашего сайта.

- Обновления WordPress - автоматическая установка последней версии WordPress.
- Обновления плагинов - автоматическая установка последних обновлений плагинов. Включение этого параметра отключит функцию автоматического обновления плагинов WordPress для предотвращения конфликтов.
- Обновления тем - автоматическая установка последних обновлений тем. Включение этого параметра отключит функцию автоматического обновления темы WordPress для предотвращения конфликтов.
- Усиление сайта при использовании устаревшего программного обеспечения - автоматическое добавление дополнительных средств защиты для сайта, если доступное обновление не было установлено в течение месяца.
- Сканирование старых сайтов WordPress - запускайте ежедневное сканирование учетной записи хостинга на наличие старых сайтов WordPress, которые могут позволить злоумышленнику скомпрометировать сервер. Один устаревший сайт WordPress с уязвимостью может позволить злоумышленникам взломать все другие сайты в той же учетной записи хостинга.
- Автоматическое обновление, если устраняет уязвимость - этот параметр работает в тандеме со сканированием сайта iThemes Security Pro, чтобы проверить ваш сайт на наличие известных уязвимостей WordPress, плагинов и тем и применить исправление, если оно доступно.
3. Просканируйте свой сайт на наличие уязвимых плагинов и тем.
Сканер сайта iThemes Security Pro - еще один способ обезопасить и защитить ваш сайт WordPress от основной причины всех взломов программного обеспечения: устаревших плагинов и тем с известными уязвимостями. Сканер сайта проверяет ваш сайт на наличие известных уязвимостей и автоматически применяет исправление, если оно доступно.
3 типа проверенных уязвимостей WordPress
- Уязвимости WordPress
- Уязвимости плагина
- Уязвимости темы
Чтобы включить сканирование сайта при новых установках, перейдите к настройкам iThemes Security Pro и нажмите кнопку « Включить» в модуле настроек сканирования сайта .

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

Результаты сканирования сайта отобразятся в виджете.

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

На странице «Проверка уязвимостей» вы увидите, доступно ли исправление для этой уязвимости. Если доступно исправление, вы можете нажать кнопку « Обновить подключаемый модуль» , чтобы применить исправление на своем веб-сайте.
Может быть задержка между появлением исправления и обновлением базы данных уязвимостей безопасности iThemes, чтобы отразить исправление. В этом случае вы можете отключить уведомление, чтобы больше не получать оповещения, связанные с уязвимостью.
4. Активируйте обнаружение изменения файла.
Ключом к быстрому обнаружению нарушения безопасности является отслеживание изменений файлов на вашем веб-сайте. Функция обнаружения изменений файлов в iThemes Security Pro будет сканировать файлы вашего веб-сайта и предупреждать вас, когда на вашем веб-сайте происходят изменения.
Есть несколько законных причин, по которым вы можете увидеть новые действия по изменению файлов в своих журналах, но если внесенные изменения были неожиданными, вам следует уделить время, чтобы убедиться, что изменения не были вредоносными. Например, если вы видите изменение, внесенное в плагин в тот же день и в то же время, когда вы обновляли плагин, нет причин для расследования
Чтобы начать мониторинг изменений файлов, включите обнаружение изменений файлов на главной странице настроек безопасности.

После включения обнаружения изменения файлов iThemes Security Pro начнет сканирование всех файлов вашего веб-сайта по частям . Сканирование файлов по частям поможет сократить ресурсы, необходимые для отслеживания изменений файлов.
Первоначальное сканирование изменений файлов создаст индекс файлов вашего веб-сайта и их хэшей. Хеш файла - это сокращенная, нечитаемая человеком версия содержимого файла.
После завершения первоначального сканирования iThemes Security Pro продолжит сканирование вашего файла по частям. Если хеш файла изменяется при одном из последующих сканирований, это означает, что содержимое файла изменилось.
Вы также можете запустить изменение файла вручную, нажав кнопку Сканировать файлы сейчас в настройках обнаружения изменения файлов.

Изменения в файлах происходят постоянно, и получение уведомлений по электронной почте о каждом изменении быстро станет ошеломляющим. И прежде чем вы это узнаете, он становится мальчиком, который кричал о ситуации волка, и вы начинаете полностью игнорировать предупреждения об изменении файла.
Хорошей новостью является то, что iThemes Security Pro интеллектуально определяет допустимые изменения, чтобы уменьшить количество уведомлений, и как вы можете отключить уведомления для файлов, которые, как ожидается, будут часто обновляться. Вы можете управлять всеми уведомлениями iThemes Security из Центра уведомлений в подключаемом модуле iThemes Security. На панели управления администратора WordPress перейдите в раздел « Безопасность»> «Настройки» и найдите модуль « Центр уведомлений ».
5. Включите двухфакторную аутентификацию для пользователей, которые вносят изменения на веб-сайт.
Двухфакторная аутентификация - это процесс проверки личности человека, требующий двух отдельных методов проверки. Google поделился в своем блоге, что использование двухфакторной аутентификации может остановить 100% автоматических атак ботов. Неплохие шансы!
Плагин iThemes Security позволяет активировать двухфакторную аутентификацию для вашего сайта WordPress, поэтому пользователи должны вводить дополнительный код для входа в систему.
Три метода двухфакторной аутентификации, предоставляемые iThemes Security Pro, включают:
- Мобильное приложение. Метод мобильного приложения - самый безопасный метод двухфакторной аутентификации, предоставляемый iThemes Security Pro. Этот метод требует, чтобы вы использовали бесплатное двухфакторное мобильное приложение, такое как Authy или Google Authenticator.
- Электронная почта - двухфакторный метод электронной почты отправляет чувствительные ко времени коды на адрес электронной почты вашего пользователя.
- Резервные коды - набор одноразовых кодов, которые можно использовать для входа в систему в случае утери основного двухфакторного метода.
Чтобы начать использовать двухфакторную аутентификацию на своем веб-сайте, включите эту функцию на главной странице настроек iThemes Security Pro.

Следуйте инструкциям здесь, чтобы продолжить настройку двухфакторной аутентификации для вашего сайта WordPress. Если вы следовали нашим рекомендациям и включили принудительные требования для привилегированных пользователей, следующее, что вы увидите, - это место для ввода двухфакторного токена.

Заключение: вместе к более безопасной сети
Не волнуйтесь, если вы чувствуете себя немного ошеломленным, когда обнаружите все потенциальные угрозы безопасности, которые ищут ваш сайт WordPress. На самом деле угроз много, но решения могут быть простыми.
Мы надеемся, что это руководство помогло вам понять риск атак с использованием SQL-инъекций на ваш сайт WordPress. Внедрив несколько лучших практик безопасности WordPress, а также 5 шагов, описанных выше, вы получите лучшую линию защиты.
Кристен пишет учебные пособия, чтобы помочь пользователям WordPress с 2011 года. Обычно вы можете увидеть, что она работает над новыми статьями для блога iThemes или разрабатывает ресурсы для #WPprosper. Вне работы Кристен любит вести дневник (она написала две книги!), Ходить в походы и кемпинги, готовить и ежедневные приключения с семьей, надеясь жить более настоящей жизнью.
