#интересное
Легкий пятничный пост. Предвкушаем завершение рабочей недели
SQL-инъекции — это классический метод атаки на базу данных сайтов или приложений. В мире инфобеза затертый просто до дыр пойнт. И даже, несмотря на это, я нашел новость о крупной утечке данных, датированную 2023 годом. Хотя точные детали не раскрываются, эксперты предполагают, что одним из возможных векторов атаки могли быть SQL-инъекции. Про количество успешных атак в чуть более далеком прошлом можно даже не упоминать. Притом что сам механизм SQL-инъекции был описан аж в конце 1998.
SQL-инъекции позволяют злоумышленнику манипулировать запросами к базе данных через поля ввода или другие точки взаимодействия с пользователем. Если приложение не проверяет вводимые данные, это дает хакеру возможность прочитать, изменить или удалить данные.
Что надо такое вставить в поле для ввода? Вот пример:
hi'); DROP DATABASE customers; --
hi'); Закрывает открытую ранее кавычку и скобку в исходном SQL-запросе. Это позволяет выйти из контекста ожидаемого строкового значения и создать новый запрос
DROP DATABASE customers; Это команда, которая при выполнении удалит базу данных customers. В идеале знать наименование bd, да и тип db тоже имеет значения.
-- Обозначает начало комментария в SQL. Все, что следует после этого, игнорируется СУБД. Это предотвращает возможные ошибки синтаксиса из-за оставшихся частей исходного запроса.
Если приложение не проверяет введенные данные или не обрабатывает их должным образом, взломщик может получить полный доступ к базе данных.
Застраховаться от такой атаки можно, используя параметризированные запросы (автоматическое экранирование вводимых данных), ограничение привилегий, валидацию и очистку вводимых данных, ну и просто вовремя обновляя свою СУБД.
Хотите разобраться в этой теме глубже, без вреда для себя и окружающих? У меня есть решение. Готовя этот пост, я создал небольшое тестовое приложение для демонстрации SQL-инъекций. Поля для ввода данных, вы можете увидеть на картинке в шапке поста, они за токсичной белкой. В сборку входит: Dockerfile, docker-compose, код приложения на python + конфигурация nginx. Сделка проста, тридцать 👍 и я приступлю к созданию репозитория с подобными интересностями, одним из первых выложу это тестовое web - приложение для SQL-инъекций. Прикручу подробную инструкцию и сборку одной-двумя командами. Ну и вообще, репозиторий канала, вещь, как мне кажется, просто необходимая. Не в постах же код публиковать.
Всем доброй пятницы, друзья, и приятных выходных.
