Обнаружение атаки SQL Injection с помощью Snort IDS

Дата: 15.07.2020. Автор: Игорь Б. Категории: Главное по информационной безопасности, Статьи по информационной безопасности

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

Условия для выполнения обнаружения

IDS: Snort (Ubuntu)

Веб-приложение: Dhakkan

Идентификация атаки SQL Injection на основе ошибок

Как известно, в SQL-инъекциях (SQL Injection), берущих за основу ошибки, злоумышленник использует одинарные кавычки (‘) или двойные кавычки (“), чтобы сломать SQL-запрос для выявления его уязвимости. Поэтому стоит добавить правило в Snort, которое будет анализировать ошибки на основе SQL-инъекции на сервере, когда кто-то попытается выполнить SQL-запрос в чужой сети для получения непривилегированного доступа к базе данных.

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

sudo gedit /etc/snort/rules/local.rules

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

alert tcp any any -> any 80 (msg: "Error Based SQL Injection Detected"; content: "%27" ; sid:100000011; )
alert tcp any any -> any 80 (msg: "Error Based SQL Injection Detected"; content: "22" ; sid:100000012; )

Можно заметить, что был применен фильтр для контента “%27” и %22 – это формат URL-кода, используемый в браузере для одинарных кавычек (‘) и двойных кавычек (“) соответственно во время выполнения URL-адреса.

После этого нужно включить режим IDS Snort, выполнив приведенную ниже команду:

sudo snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

Теперь следует проверить свое правило, осуществив атаку SQL -инъекции на основе ошибок на веб-приложение “Dhakkan”. Для это пользователь открывает IP-адрес сервера в веб-браузере и использует одинарные кавычки (‘) для идентификации уязвимости SQL-инъекции, как показано ниже.

192.168.1.20/sqli/Less-1/?id=1'

Когда злоумышленник вводит вредоносные кавычки в браузере для тестирования Error Base SQL injection, идентификаторы сети должны захватить этот контент и вывести на экран предупреждение.

В соответствии с прогнозом на данном изображении пользователь сможет наблюдать, что Snort обнаружил проведение атаки на систему.

Таким образом, когда сетевой администратор получает предупреждение от IDS, он может предпринять действия против атакующего IP, как показано на картинке, – вредоносный трафик поступает из формы 192.168.1.21 на порт 80.

Тестирование инъекции двойных кавычек

Пользователь вновь открывает IP-адрес сервера в веб-браузере и использует двойные кавычки (“) для идентификации уязвимости SQL-инъекции, как показано ниже.

192.168.1.20/sqli/Less-4/?id=1"

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

На данном изображении человек может заметить, что Snort сгенерировал предупреждение об ошибке на основе SQL-инъекции при захвате вредоносных кавычек.

Таким образом, когда сетевой администратор получает предупреждение от IDS, он может предпринять действия против мошеннического IP-адреса – вредоносный трафик поступает с 192.168.1.21 на порт 80.

Boolean Based SQL Injection

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

Нужно добавить правило в Snort, которое будет анализировать булевую инъекцию SQL на сервере, когда кто-то попытается выполнить SQL-запрос в чужой сети для получения непривилегированного доступа к базе данных. Здесь был применен фильтр для контента «and» & «or», который может быть захвачен.

alert tcp any any -> any 80 (msg: "AND SQL Injection Detected"; content: "and" ; nocase; sid:100000060; )
alert tcp any any -> any 80 (msg: "OR SQL Injection Detected"; content: "or" ; nocase; sid:100000061; )

Следует включить режим IDS Snort, выполнив приведенную ниже команду в терминале:

sudo snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

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

192.168.1.20/sqli/Less-8/?id=1' AND 1=1 --+

Теперь, когда злоумышленник введет вредоносные кавычки в браузере для тестирования Boolean Base SQL injection, идентификаторы сети должны захватить этот контент и вывести на экран предупреждение.

Тестирование оператора OR

На данном изображении пользователь может увидеть, что Snort сгенерировал предупреждение для булевой SQL-инъекции при захвате контента OR.

Таким образом, когда сетевой администратор получает предупреждение от IDS, он может предпринять действия против атакующего IP-адреса – вредоносный трафик поступает из формы 192.168.1.21 на порт 80.

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

192.168.1.20/sqli/Less-8/?id=1' AND 1=1 --+

Теперь, когда злоумышленник введет вредоносные кавычки в браузере для тестирования Boolean Base SQL injection, идентификаторы сети также должны захватить этот контент и вывести на экран предупреждение.

На изображении видно, что Snort сгенерировал предупреждение для булевой SQL-инъекции при захвате контента OR.

Таким образом, когда сетевой администратор получает предупреждение от IDS, он может предпринять действия против IP-адреса злоумышленника – вредоносный трафик также поступает из формы 192.168.1.21 на порт 80.

Зашифрованные OR/AND

Аналогично был применен фильтр для контента «%26%26» и «%7c%7c» – это формат URL-кода, используемый в браузере для && и || соответственно во время выполнения URL-адреса.

alert tcp any any -> any 80 (msg: "AND SQL Injection Detected"; content: "and" ; nocase; sid:100000008; )
alert tcp any any -> any 80 (msg: "OR SQL Injection Detected"; content: "or" ; nocase; sid:100000009; )

Необходимо включить режим IDS Snort, выполнив приведенную ниже команду:

sudo snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

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

192.168.1.20/sqli/Less-25/?id=1’ %26%26 1==1 --+

Теперь, когда мошенник введет вредоносные кавычки в браузере для тестирования Boolean Base SQL injection, идентификаторы сети должны захватить этот контент и вывести на экран предупреждение.

На картинке видно, что Snort сгенерировал предупреждение для булевой SQL-инъекции при захваченном содержимом %26%26.

Таким образом, когда сетевой администратор получает предупреждение от IDS, он может предпринять действия против атакующего IP-адреса, как показано на изображении, – вредоносный трафик поступает из формы 192.168.1.21 на порт 80.

Тестирование зашифрованного оператора OR

Настала пора вновь открыть IP-адрес сервера в веб-браузере и использовать оператор || для идентификации уязвимости булевой SQL-инъекции.

192.168.1.20/sqli/Less-25/?id=1' %7C%7C 1==1 --+

Теперь, когда преступник введет вредоносные кавычки в браузере для тестирования Boolean Base SQL injection, идентификаторы сети должны захватить этот контент и вывести на экран предупреждение.

На картинке можно заметить, что Snort сгенерировал предупреждение для булевой SQL-инъекции при захвате содержимого %7C %7C.

Таким образом, когда сетевой администратор получает предупреждение от IDS, он может предпринять действия против IP-адреса мошенника – вредоносный трафик поступает из формы 192.168.1.21 на порт 80.

Идентификация Form Base SQL injection

SQL-инъекция на основе формы еще известна как «Post Error based SQL injection», поскольку злоумышленник вводит вредоносные кавычки внутри формы входа в систему веб-страницы, содержащей текстовое поле для имени пользователя и пароля для входа в систему внутри веб-сервера.

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

alert tcp any any -> any 80 (msg: "Form Based SQL Injection Detected"; content: "%27" ; sid:1000003; )

Можно заметить, что был применен фильтр для захвата контента «%27»; пользователю стоит включить режим IDS Snort, выполнив приведенную ниже команду в терминале:

sudo snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

Человек также использовал одинарные кавычки (‘), чтобы разбить запрос внутри текстового поля имени пользователя, а затем нажал кнопку «Отправить».

Имя пользователя:

На скриншоте видно, что пользователь получил сообщение об ошибке (синий цвет), которое означает, что база данных уязвима для SQL-инъекции.

Теперь, когда злоумышленник введет вредоносные кавычки в браузере для тестирования Form Base SQL injection, идентификаторы сети должны захватить этот контент и вывести на экран предупреждение.

На изображении четко видно, что Snort создал предупреждение и вывел его на экран.

Таким образом, когда сетевой администратор получает предупреждение от IDS, он может предпринять действия против мошеннического IP-адреса – вредоносный трафик поступает из формы 192.168.1.21 на порт 80.

Идентификация Order by SQL Injection

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

Теперь нужно добавить правило в Snort, которое будет анализировать Order by SQL Injection на сервере, когда кто-то попытается выполнить SQL-запрос в чужой сети для получения непривилегированного доступа к базе данных. Опять был применен фильтр для контента «ORDER», который будет захвачен.

alert tcp any any -> any 80 (msg: "Order by SQL Injection"; content: "order" ; sid:1000005; )

Надо включить режим IDS Snort, выполнив приведенную ниже команду в терминале:

sudo snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

Пользователь снова открывает IP-адрес сервера в веб-браузере и использует order by для идентификации столбца базы данных, как показано ниже.

192.168.1.20/sqli/Less-1/?id=1' order by 1,2,3 --+

Теперь, когда злоумышленник введет вредоносную строку в браузере для проверки Order by SQL Injection, идентификаторы сети должны захватить это содержимое и вывести на экран предупреждение.

На картинке видно, что Snort сгенерировал предупреждение для Order by SQL Injection при захвате вредоносной строки.

Таким образом, когда сетевой администратор получает предупреждение от IDS, он может предпринять действия против атакующего IP-адреса, как показано на данном изображении, – вредоносный трафик поступает из формы 192.168.1.21 на порт 80.

Идентификация Union Based SQL Injection

Как известно, что в Error base SQL injection злоумышленник может использовать оператор UNION для объединения результатов, полученных из двух или более операторов SELECT. Поэтому следует добавить правило в Snort, которое будет анализировать Union select SQL injection на сервере, когда кто-то попытается выполнить SQL-запрос в чужой сети для получения непривилегированного доступа к базе данных. Пользователь опять применил фильтр для захвата контента «UNION».

alert tcp any any -> any 80 (msg: "UNION SELECT SQL Injection"; content: "union" ; sid:1000006; )

Необходимо включить режим IDS Snort, выполнив приведенную ниже команду в терминале:

alert tcp any any -> any 80 (msg: "UNION SELECT SQL Injection"; content: "union" ; sid:1000006; )

Пользователь снова откроет IP-адрес сервера в веб-браузере и использует строку order by для идентификации столбца базы данных, как показано ниже.

192.168.1.20/sqli/Less-1/?id=-1' union select 1,2,3 --+

Теперь, когда злоумышленник введет вредоносную строку в браузере для тестирования Union select SQL injection, идентификаторы сети должны захватить это содержимое и вывести на экран предупреждение.

Можно заметить, что Snort сгенерировал предупреждение для union select sql injection при захвате вредоносной строки.

Таким образом, когда сетевой администратор получает предупреждение от IDS, он может предпринять действия против атакующего IP-адреса, как показано на данном изображении, – вредоносный трафик поступает из формы 192.168.1.21 на порт 80.

Автор переведенной статьи: Sayantan Bera.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Поделиться ссылкой

Игорь Б

Об авторе Игорь Б

Автор на портале cisoclub.ru. Добавляйте ваш материал на сайт в разделе "Разместить публикацию".
Читать все записи автора Игорь Б

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

5 × 1 =