Статья [8] Burp Suite: Примеры SQL Инъекций

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

29773


Что такое SQL-инъекция?

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

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

29774


Получение скрытых данных.

Рассмотрим приложение для покупок, которое отображает товары в разных категориях. Когда пользователь нажимает на категорию «Подарки», его браузер запрашивает URL:
Код:
https://insecure-website.com/products?category=Gifts
Это приводит к тому, что приложение выполняет запрос SQL для получения сведений о соответствующих продуктах из базы данных:
Код:
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
Этот SQL-запрос просит базу данных вернуть:
  • Все детали (*)
  • Из таблицы «Продукты»
  • В категории «Подарки»
  • Которые актуальны - released = 1
Ограничение released = 1 используется, чтобы скрыть продукты, которые не выпущены. Для невыпущенных продуктов, предположим, что используется – released = 0.

Приложение не обеспечивает никакой защиты от атак с использованием SQL-инъекций, поэтому злоумышленник может провести такую атаку:
Код:
https://insecure-website.com/products?category=Gifts'--
Это приводит к запросу SQL:
Код:
SELECT * FROM products WHERE category = 'Gifts'--' AND released = 1
Ключевым моментом здесь является то, что последовательность черточек -- - это индикатор комментариев в SQL, и это означает, что остальная часть запроса интерпретируется как комментарий. Это эффективно удаляет оставшуюся часть запроса, поэтому он больше не включает в себя AND release = 1.

Это означает, что отображаются все продукты, включая невыпущенные.

Далее, злоумышленник может заставить приложение отображать все продукты в любой категории, включая категории, которые ему неизвестны:
Код:
https://insecure-website.com/products?category=Gifts'+OR+1=1--
Это приводит к запросу SQL:
Код:
SELECT * FROM products WHERE category = 'Gifts' OR 1=1--' AND released = 1
Модифицированный запрос вернет все элементы, для которых либо категория «Подарки», либо 1 равно 1

Поскольку 1 = 1 всегда верно, запрос вернет все элементы.

Пример ниже содержит уязвимость внедрения SQL в фильтре категорий продуктов. Когда пользователь выбирает категорию, приложение выполняет запрос SQL, подобный следующему:
Код:
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
Чтобы показать это наглядно, выполняем атаку SQL-инъекцию, которая заставит приложение отобразить сведения обо всех продуктах в любой категории, как выпущенных, так и не выпущенных.

Переходим на уязвимый сайт:

29776


И с помощью Burp Suite перехватываем запрос при переходе в раздел Accessories:

29777


Изменяем параметр Accessories, внедряя в него SQL запрос:

29778


Отправляем запрос на сервер и получаем список товаров недоступный нам ранее:

29779


Подрыв логики приложения.

Рассмотрим приложение, которое позволяет пользователям входить в систему с именем пользователя и паролем. Если пользователь отправляет имя пользователя wiener и пароль bluecheese, приложение проверяет учетные данные, выполняя следующий запрос SQL:
Код:
SELECT * FROM users WHERE username = 'wiener' AND password = 'bluecheese'
Если запрос возвращает данные пользователя, то вход в систему успешен. В противном случае, мы получаем отказ.

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

Для проверки, отправим имя пользователя administrator-- - экранируя проверку пароля комментарием, чтобы осуществить вход с пустым паролем:
Код:
SELECT * FROM users WHERE username = 'administrator'-- AND password = ''
Этот запрос возвращает пользователя с именем administrator и позволяет войти злоумышленнику под этим аккаунтом.

Проверим это на практике:

29780


Перехватываем запрос логин и модифицируем параметр Username и Password:

29781


Отправляем запрос и получаем ожидаемый результат:

29782


Тема SQL инъекций прорабатываемых с помощью Burp Suite остаточно обширна, и в следующих статьях я подробно расскажу о каждой технике, её применении и что самое главное, как защитить свой ресурс от подобного вида атак.

Следите за обновлениями, спасибо за внимание.
 

moeimya

Green Team
02.04.2017
36
7
BIT
0
Поясни, что именно старье, Burp Suite?
извращение=))) sql inj использовать через бурб, дельней было бы написать пост об автоматизации поиска уязвимости которой почти не существует, а тут такое извращение отправлять запрос на sql-inj, сами себе трудности создаете-_-. да и вообще смысл писать писанину о том чего уже нет да еще и не первая тема об этом? считаю посты копирующие друг друга должны удаляться!
 

Vander

CodebyTeam
Gold Team
16.01.2016
1 420
4 353
BIT
2
извращение=))) sql inj использовать через бурб, дельней было бы написать пост об автоматизации поиска уязвимости которой почти не существует, а тут такое извращение отправлять запрос на sql-inj, сами себе трудности создаете-_-. да и вообще смысл писать писанину о том чего уже нет да еще и не первая тема об этом? считаю посты копирующие друг друга должны удаляться!
Это пост о функционале Burp, а не про то как сломать сайт. Цель - рассказать подробно о всех возможностях этого инструмента.
 

Iskus

Green Team
13.11.2017
287
468
BIT
0
Не все понимают, что "хакер" - это прежде всего высоко квалифицированный программист, знающий несколько языков программирования, свободно владеющий огромным количеством инструментов, написанных для разработки, тестирования, оптимизации, и т.д , разных приложений, понимающий на уровне Бог, процессы происходящие в приложениях и понятное дело способный без дополнительного софта проделать вручную абсолютно все операции, и самостоятельно написать себе софт повышающий его КПД. Вот это "хакер". А олень, скачавший крякнутый acunetix, с горем пополам запустив его на своей любимой windows 10, радостно кричащий увидев красную надпись со словом critical или чего-то похожего, что он крутой хакер, это олень, и к профессионалам в области кибербезопасности не имеет абсолютно никакого отношения...
 
Последнее редактирование модератором:

Dit81

One Level
21.07.2019
9
1
BIT
0
Для начинающих самое-то, особенно для общего понимания перехвата запросов с помощью Burp. Но сейчас актуальней искать слепые инъекции, они еще долго будут активны
 

Pozitiff2018

Member
13.07.2019
5
0
BIT
0
Для начинающих самое-то, особенно для общего понимания перехвата запросов с помощью Burp. Но сейчас актуальней искать слепые инъекции, они еще долго будут активны
Я как раз новичок и про слепые инъекции и не слышал. Спс
 

overfli

New member
30.06.2020
1
0
BIT
0
Прекрасная подборка статей, спасибо большое за работу!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!