Атака на веб-приложения при помощи Burp Suite и SQL инъекции

Как вы думаете, что самое популярное в киберпространстве? Верно, это веб-приложения.

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


Атака на веб-приложения при помощи Burp Suite и SQL инъекции Web, Kali Linux, Уязвимость, Длиннопост

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


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

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


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

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

Подобный тип атаки позволяет получить конфиденциальную информацию, модифицировать существующие данные или даже полностью вывести из строя базу данных. Наиболее распространенный вектор – через входные данные (формы авторизации, текстовые поля, загрузку файлов и так далее).

Нашей целью будет Mutillidae, намеренно уязвимое веб-приложение, являющееся частью проекта Metasploitable 2 (уязвимая виртуальная линуксовая машина, используемая для тестирования и других практических целей). Мы будем подключаться к Metasploitable 2 из изолированной сети. В качестве рабочей системы будет использоваться Kali Linux.


Шаг 1. Установка виртуальной машины Metasploitable 2

Burp Suit – популярный инструмент, который можно использовать для автоматизации тестирования веб-приложений на предмет наличия разного рода уязвимостей. В Kali Linux присутствует по умолчанию. Но сначала нужно настроить целевую систему.

В качестве примера в этом руководстве будет использоваться виртуальная машина Metasploitable 2, которую можно скачать с сайта компании Rapid7. Также подойдет и любая другая уязвимая виртуальная машина. Установка ничем не отличается от установки обычных виртуальных машин в вашей системе.

При использовании уязвимых систем следует учитывать риски со стороны внешних сетей. Соответственно, если вы полностью не отключены от интернета, следует использовать трансляцию сетевых адресов (NAT) или режим host-only.

После того как всё настроено, авторизуйтесь в Metasploitable 2 (имя пользователя и пароль одинаковые msfadmin) и выясните IP адрес при помощи утилиты ifconfig (параметр inet addr у интерфейса eth0), который будет использоваться во время тестирования.


Шаг 2. Настройка приложения Mutillidae

После выяснения IP адреса виртуальной подключитесь к веб-серверу при помощи браузера. Я использую Firefox в Kali Linux.

Атака на веб-приложения при помощи Burp Suite и SQL инъекции Web, Kali Linux, Уязвимость, Длиннопост

Кликните на ссылку Mutillidae для входа в веб-приложение и зайдите в раздел OWASP Top 10. Выберите Injection (SQL), затем Extract Data, затем User Info. Появится форма авторизации.

Атака на веб-приложения при помощи Burp Suite и SQL инъекции Web, Kali Linux, Уязвимость, Длиннопост

Шаг 3: Настройка браузера для работы с Burp Suite

Теперь нужно настроить браузер для работы с Burp Suite, функционирующего в качестве прокси-сервера для перехвата и модификации запросов. Опять же я буду использовать Firefox, но для других браузеров весь процесс будет аналогичным.

В браузере зайдите в раздел Preferences, кликните на Advanced и зайдите во вкладку Network. Убедитесь, что в настройках соединения стоит «Manual proxy configuration» и введите адрес 127.0.0.1 в параметре HTTP Proxy и 8080 в параметре Port. Затем отметьте флажок Use this proxy server for all protocols и убедитесь, что ничего не указано в поле No Proxy for. Кликните на OK. Переходим к настройке Burp Suite.


Атака на веб-приложения при помощи Burp Suite и SQL инъекции Web, Kali Linux, Уязвимость, Длиннопост

Шаг 4. Перехват запросов при помощи Burp Suite

Откройте Burp Suite в Kali Linux, начните новый проект, а затем зайдите во вкладку Proxy и убедитесь, что нажата кнопка Intercept is on, чтобы мы могли изменять запросы, исходящие от веб-страницы и вставлять различные значения для тестирования SQL инъекции. На странице авторизации я ввел произвольное имя пользователя. Вы можете наблюдать чистый запрос, параметры, заголовки и даже информацию в шестнадцатеричной форме.

Атака на веб-приложения при помощи Burp Suite и SQL инъекции Web, Kali Linux, Уязвимость, Длиннопост

Нас интересует поле имени пользователя, которое мы будем изменять для тестирования SQL инъекции. Нажмите на кнопку Action, а затем на Send to Intruder. Альтернативный вариант: кликнуть правой кнопкой мыши в области запроса и выполнить те же самые операции.


Шаг 5. Настройка позиций и полезных нагрузок в Burp Suite

Далее зайдите во вкладку Intruder и кликните на Positions. Burp Suite автоматически конфигурирует позиции, куда вставляются полезные нагрузки во время отсылки запроса, однако поскольку нас интересует только поле username, нужно очистить все позиции, нажав кнопку Clear справа. Выделите значение, введенное в качестве имени пользователя, и нажмите на кнопку Add. Мы будем реализовывать атаку Sniper, когда в полезной нагрузке используется список значений (каждое – однократно).

Атака на веб-приложения при помощи Burp Suite и SQL инъекции Web, Kali Linux, Уязвимость, Длиннопост

После настройки позиции переходим к конфигурированию полезной нагрузки. Для работы с базой данных в SQL запросах могут использоваться различные операторы. Например, оператор SELECT предназначен для извлечения информации, и наш запрос, отсылаемый во время авторизации, выглядел бы примерно так:

SELECT username, password FROM users WHERE username='myname' AND password='mypassword';

Рассмотрим классическую команду в SQL инъекции 1=1--. Ниже показан запрос, формируемый после заполнения поля login.

SELECT username, password FROM users WHERE username='' or 1=1-- AND password='';

Фактически одиночные кавычки превращают первую часть в пустую строку, а выражение 1=1 всегда равно истине. Таким образом, условие для имени пользователя должно быть «пустым» или «истинным». Двойной дефис комментирует остальную часть запроса, и поле password игнорируется. Поскольку выражение «пустота» или «истина» всегда равно истине, а поле password игнорируется, база данных вернет информацию об учетной записи.

Кликните на вкладку Payloads и зайдите в раздел Payload Options. Пока будем использовать стандартные настройки. Здесь мы можем указать полезные нагрузки в виде простого списка, добавляя по одной или загрузив уже существующий список. В Kali есть несколько словарей, включая специально для тестирования SQL инъекций. Нажмите на кнопку Load и загрузите файл /usr/share/wordlists/wfuzz/injection/SQL.txt. Теперь всё готово для реализации нашего сценария.

Атака на веб-приложения при помощи Burp Suite и SQL инъекции Web, Kali Linux, Уязвимость, Длиннопост

Реализация атаки при помощи Burp Suite

Кликните на кнопку Start attack, после чего появится новое окно с отображением всего процесса. Здесь вы можете видеть состояние запросов, полезные нагрузки и статус. Будьте терпеливы, поскольку на отработку большого списка может потребоваться много времени.

Атака на веб-приложения при помощи Burp Suite и SQL инъекции Web, Kali Linux, Уязвимость, Длиннопост

После того как intruder завершит работу, можно посмотреть более подробную информацию, кликнув на нужный запрос.

Атака на веб-приложения при помощи Burp Suite и SQL инъекции Web, Kali Linux, Уязвимость, Длиннопост

Шаг 7. Анализ результатов работы Burp Suite

Нас интересуют ответы, полученные на определенные запросы. Каждый сделанный запрос возвращает код статуса 200, но зачастую, когда полезная нагрузка сработала успешно, вы увидите другой код. Обычно у успешного запроса длина ответа очень отличается от других ответов. Я выбрал запрос, содержащий SQL с выражение ' or 1=1 or "=', поскольку ранее уже тестировал эту инъекцию в ручном режиме и знаю, что эта уязвимость сработает.


Burp Suite полезен в том числе и потому, что вы можете отобразить веб-страницу, возвращаемую ответом, если зайдете во вкладку Response и кликните на Render. На рисунке ниже видно, что наша SQL инъекция выполнилась успешно, и теперь у нас есть перечень имен пользователей и паролей. Если бы мы работали с административной панелью, то получили бы учетную запись администратора со всеми вытекающими последствиями.

Атака на веб-приложения при помощи Burp Suite и SQL инъекции Web, Kali Linux, Уязвимость, Длиннопост

SQL инъекция в дикой природе

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

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

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

securitylab

P.S. Данная статья не является прямым руководством к действиям носящим вредоносный характер, все материалы предоставлены исключительно в ознакомительных целях. Любой взлом не принадлежащего вам веб-приложения и без прямых договоренностей с владельцем веб-приложения, является преступлением и преследуется по закону.

Атака на веб-приложения при помощи Burp Suite и SQL инъекции Web, Kali Linux, Уязвимость, Длиннопост

Информационная безопасность IT

1.4K постов25.5K подписчиков

Добавить пост

Правила сообщества

Обязательно к прочтению для авторов:

1. Если вы добавляете пост, утверждающий об утечке данных или наличии дыр в системе, предоставьте ссылку на источники или технически подкованное расследование. Посты из разряда "Какой-то банк слил данные, потому что мне звонили мошенники" будут выноситься в общую ленту.
2. Все вопросы "Как обезопасить сервер\приложение\устройство" - в лигу "Компьютер это просто".

Обязательно к прочтению для всех:

Добавление ссылки разрешено если она не содержит описание коммерческих (платных) продуктов и/или идентификаторов для отслеживания перехода и для доступа не нужен пароль или оплата в т.ч. интернет-ресурсы, каналы (от 3-х тематических видео), блоги, группы, сообщества, СМИ и т.д.


Запрещены политические holy wars.

По решению модератора или администратора сообщества пользователь будет забанен за:

1. Флуд и оскорбление пользователя, в т.ч. провокация спора, флуда, холивара (высказывание без аргументации о конкретной применимости конкретного решения в конкретной ситуации), требование уже данного ответа, распространение сведений порочащих честь и репутацию, принижающих квалификацию оппонента, переходы на личности.

2. Публикацию поста/комментария не соответствующего тематике сообщества, в том числе обсуждение администраторов и модераторов сообщества, для этого есть специальное сообщество.

3. За обвинение в киберпреступной деятельности.

4. За нарушение прочих Правил Пикабу.