CEH, Certified Ethical Hacker (CEH), SQL-Injection

#23 Руководство по подготовке сертифицированного этичного хакера (CEH). SQL-инъекции.

Здравствуйте, дорогие друзья.

Язык структурированных запросов (SQL) — это язык, который позволяет взаимодействовать с сервером базы данных. Программисты используют команды SQL для выполнения операции с использованием баз данных. Внедрение SQL использует преимущества непроверенныех входных данных. Злоумышленники вводят SQL-команды через веб-приложение, которое выполняется в серверной базе данных. Любое веб-приложение, которое принимает пользовательский ввод, для выполнения действия или выполнения запроса может быть уязвимо для SQL-инъекций.

В этой главе, Вы узнаете о SQL-инъекциях, о том, как они работают, и что могут сделать администраторы, чтобы предотвратить их.

К концу этой главы Вы сможете

  1. Изучить атаки с внедрением SQL.
  2. Определить стратегии защиты от атак путем внедрения кода SQL.

Компоненты веб-приложений

Веб-сервер получает запрос и проверяет права доступа пользователя к сделанному запросу. Веб-сервер проверяет запрос, и запрашивает сервер базы данных для выполнения запроса. Сервер базы данных получает запрос и обрабатывает запрос. Веб-страница создается на основе запроса
ответа, и возвращается в браузер. См. Рисунок ниже.

Web application components

Классификация SQL-инъекций

Как только уязвимость SQL-инъекции обнаружена, единственное ограничение для атакующего — это его умение работать с SQL-запросами. Злоумышленники могут отправить один SQL оператор за другим, пока серверная часть не будет сопоставлена, изменена, просмотрена и контролируема. См. Рисунок ниже для классификации SQL-инъекций.

SQL injection classifications

Веб-интерфейс для SQL Server

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

A login page

После того, как веб-пользователь отправляет запрос, ввод помещается в SQL-заявку (рисунок ниже).

A web front end for a SQL Server

Манипуляции с полями ввода

Внедрение SQL работает путем манипулирования значениями, помещенными в поле ввода. Например, в этом случае, злоумышленник вставляет значение JESSE’ OR 1=1— для имени пользователя, показанного на рис. ниже.

Input field manipulation

Неудачная попытка SQL-инъекции

Поле пароля SQL не будет оцениваться, если поле имени пользователя заканчивается с двойным тире. Причина, по которой эта попытка SQL-инъекции была неудачной является то, что ввод был проверен JavaScript-кодом браузера. Рисунок ниже.

Failed SQL injection attempt

Использование проверки на стороне клиента

Веб-приложение может использовать JavaScript для проверки правильности ввода. Это форма проверки на стороне клиента. Вы можете отключить JavaScript в браузере. См. Рисунок ниже.

Client-side validation

Успешный вход в систему

Повторите попытку SQL-инъекции. Вероятная причина того, что имя aanderson отображается из-за того, что он является первым пользователем в столбце. Как только 1 = 1 становится истинным, вход в систему проходит успешно. См. Рисунок ниже.

Login successful

Использование хранимой процедуры

Чтобы просмотреть все имена и пароли в базе данных, просто используйте сохраненную процедуру. Хранимая процедура называется sp_makewebtask. Эта хранимая процедура, которая предоставляется только в Microsoft SQL Server, генерирует вывод HTML. Используйте код, указанный в качестве имени пользователя. Хотя получен ошибочный ответ на имя пользователя, это не означает, что SQL оператор не выполнился. См. Рисунок ниже.

Stored procedure

Результаты инъекции

Вся база данных, включающая все имена пользователей и паролей, показана на Рисунке ниже. Это могла быть кредитная карта или номер социального страхования.

Injection results

Внедрение имени пользователя

Введите имя пользователя и пароль в существующую базу данных. Это позволяет Вам получить доступ к ресурсам в базе данных. Или, в базе данных, Вы можете создать учетную запись, которая обеспечит физический или сетевой доступ. После того, как Вы вошли на сервер SQL, Вы можете убедиться, что Ваши учетные данные добавлены, как показано на рисунке ниже.

Injecting a username

Контрмеры

Регулярные выражения играют важную роль в преодолении SQL-инъекций. Последние четыре меры противодействия, относятся именно к слепому внедрению SQL.

Это происходит, когда приложение принимает данные от клиента и выполняет SQL-запросы без предварительной проверки ввода. Чтобы этого избежать, выполните

следующие шаги:

1. Введите проверку для каждого пользовательского ввода.

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

3. Проверьте наличие специфичных для SQL метасимволов, таких как одинарная кавычка (‘) или двойное тире (—).

4. Данные, предоставленные клиентом, никогда не должны изменять синтаксис операторов SQL.

5. Изолируйте веб-приложение от SQL.

6. Все операторы SQL, требуемые приложением, должны храниться в процедурах на сервере базы данных.

7. Приложение должно выполнять хранимые процедуры, используя безопасный интерфейс.

Предотвращение атак SQL-инъекций

Следуя нескольким рекомендациям, можно предотвратить атаки путем внедрения SQL-кода. Предотвращение является обязанностью как разработчиков, так и администраторов баз данных.

  • Преобразуйте все одинарные кавычки в двойные, используя простую замену функций.
  • Минимизируйте привилегии.
  • Внедрите согласованные стандарты кодирования.
  • Брандмауэр SQL-сервера.
  • Никогда не доверяйте вводу пользователей.
  • Никогда не используйте динамический SQL.
  • Исключения должны предоставлять только минимальную информацию.

Резюме

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

На этом все. Всем хорошего дня!

#1 Руководство по подготовке сертифицированного этичного хакера (CEH). Введение в этический взлом.

#2 Руководство по подготовке сертифицированного этичного хакера (CEH). Фазы атаки.

#3 Руководство по подготовке сертифицированного этичного хакера (CEH). Этичные хакеры.

#4 Руководство по подготовке сертифицированного этичного хакера (CEH). Футпринтинг и Разведка/сканирование сетей.

#5 Руководство по подготовке сертифицированного этичного хакера (CEH). Определение сетевого диапазона.

#6 Руководство по подготовке сертифицированного этичного хакера (CEH). Трехстороннее рукопожатие. Флаги TCP. Nmap. Zenmap.

#7 Руководство по подготовке сертифицированного этичного хакера (CEH). Перечисление (enumeration).

#8 Руководство по подготовке сертифицированного этичного хакера (CEH). Инструменты командной строки. SNMP-перечисление.

#9 Руководство по подготовке сертифицированного этичного хакера (CEH). Взлом системы.

#10 Руководство по подготовке сертифицированного этичного хакера (CEH). Операции Kerberos.

#11 Руководство по подготовке сертифицированного этичного хакера (CEH). Взлом пароля. Кейлоггеры. Руткиты. Стеганография.

#12 Руководство по подготовке сертифицированного этичного хакера (CEH). Трояны, бэкдоры, вирусы и черви.

#13 Руководство по подготовке сертифицированного этичного хакера (CEH). ICMP-туннелирование. Инструменты для создания троянов.

#14 Руководство по подготовке сертифицированного этичного хакера (CEH). Вирусы и черви.

#15 Руководство по подготовке сертифицированного этичного хакера (CEH). Какие вирусы атакуют? Как вирусы заражают?

#16 Руководство по подготовке сертифицированного этичного хакера (CEH). Снифферы.

#17 Руководство по подготовке сертифицированного этичного хакера (CEH). Социальная инженерия.

#18 Руководство по подготовке сертифицированного этичного хакера (CEH). Компьютерная социальная инженерия.

#19 Руководство по подготовке сертифицированного этичного хакера (CEH). Отказ в обслуживании (DoS).

#20 Руководство по подготовке сертифицированного этичного хакера (CEH). Перехват сеанса (Session Hijacking).

#21 Руководство по подготовке сертифицированного этичного хакера (CEH). Взлом веб-серверов.

#22 Руководство по подготовке сертифицированного этичного хакера (CEH). Взлом веб-приложений.