21 дек. 2022
Атака начинающего хакера в картинках — внедрение SQL-инъекции

Абсолютно типичная история для начинающего хакера (пентестера) это атака через внедрение зловредного кода с использованием промежуточного прокси-сервера.

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

Если представить атаку схематически, то выглядит это примерно так:

Посредник прокси-сервер

Здесь в качестве атакующего (attacker) выступает прокси-сервер, в нашем случае это специализированный инструмент пентестера — Burp Suite. Проблем с установкой этой системы обычно не возникает. Приложение написано на языке Java, поэтому для установки необходимо предварительно скачать и установить к себе на машину JDK и JRE.

Скачивание файла

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

Тестовый сайт

Для перехвата трафика удобно установить программу SwichyOmega для установки прокси-сервера, настроенного на BURPSUITE под профилем BURP.

Прокси BURP

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

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

Ручное тестирование

Проверяем, что наш прокси работает и перехватывает все запросы. В браузере обращаемся к сайту Google. И видим, что возвращается ошибка 404, а все потому, что мы осуществили подмену этого запроса и пропустили его через наш прокси, который работает в пассивном режиме.

Перехват запросов нашим прокси сервером

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

перехват трафика прокси

Внедрение в код SQL-инъекции вызывает изменение в логике выполнения SQL-запроса, изначально он выглядел так:

первоначальный запрос

Но если через наш прокси передать в качестве параметра customerName строку c условием OR 1=1, то выполнится запрос и выведутся балансы всех пользователей в базе, поскольку выражение 1=1 всегда истинно, и вычисления происходят по кратчайшему пути. Метод инъекции кода SQL основан на:

  • Смешение недоверенных пользовательских данных и кода/конструкций языка
  • Возможные контексты — SQL, HTML, XML/XSLT, OS, LDAP, HTTP

внедрение части SQL-конструкции из входных данных в легитимный запрос к СУБД внедрение части SQL-конструкции из входных данных в легитимный запрос к СУБД

АтакаАтака

Итоговый SQL-запросИтоговый SQL-запрос

Здесь была рассмотрена SQL-инъекция с внедрением в строковый параметр. Чаще всего используются следующие конструкции для внедрения в строковый параметр:

Конструкции для SQL инъекций

Но существует еще несколько конструкций SQL, позволяющих внедрять свой код для поиска уязвимостей сайтов. Это использование оператора UNION, позволяющего объединять результаты нескольких запросов, UNION + group concat() – эта конструкция позволяет объединять несколько конструкций в одну, расщепление SQL-запроса и экранирование хвоста запроса.

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

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

Ваш комментарий появится на сайте после проверки модератором
При отправке комментария произошла ошибка