SQL-инъекция — это не просто уязвимость. Это настоящая «классика жанра» в веб-безопасности, которая уже много лет входит в топ OWASP.
Она позволяет злоумышленнику вмешаться в работу базы данных, изменить её логику и получить доступ к данным, которые должны быть скрыты.
Чтобы грамотно использовать этот вектор атаки — или эффективно защищаться от него, — нужно понимать, как работают базы данных и язык SQL.
Как устроены базы данных и SQL
SQL (Structured Query Language) — язык, с помощью которого приложения общаются с базой данных.
Через SQL можно:
-
Выбирать данные (
SELECT
). -
Фильтровать результаты (
WHERE
,AND
,OR
). -
Объединять запросы (
UNION
). -
Изменять или удалять записи.
Для пентестера понимание синтаксиса SQL — это ключ к пониманию того, как и где запросы могут быть уязвимы.
Суть SQL-инъекции
SQL-инъекция возникает, когда пользовательский ввод напрямую подставляется в запрос без фильтрации.
В результате атакующий может:
-
Изменить логику авторизации.
-
Получить доступ к данным из других таблиц.
-
Читать конфигурационные файлы на сервере.
-
Даже записывать файлы на диск (например, загружая веб-шелл).
Примеры атак
-
Обход авторизации
Подстановка' OR '1'='1
в поле пароля может дать доступ в систему без учётных данных. -
Инъекция с комментарием
Использование--
или#
обрезает часть запроса, которую написал разработчик. -
UNION-инъекция
Объединение с другим запросом, чтобы получить дополнительные данные. -
Чтение файлов
Через функции вродеLOAD_FILE()
можно прочитать, например,config.php
с паролями. -
Запись на диск
ИспользованиеSELECT ... INTO OUTFILE
для создания своего скрипта на сервере.
Как находят SQL-инъекции
-
Ручное тестирование — пробные запросы с символами
'
,"
,--
,;
. -
Инструменты — sqlmap, Burp Suite, Havij.
-
Анализ ошибок — сообщения базы (например,
You have an error in your SQL syntax
) выдают уязвимость.
Как защититься от SQL-инъекций
-
Использовать подготовленные запросы (prepared statements) вместо конкатенации строк.
-
Фильтровать ввод — удалять или экранировать опасные символы.
-
Ограничивать права пользователей базы (минимально необходимые).
-
Скрывать ошибки SQL от пользователей.
Почему SQL-инъекции до сих пор в топе OWASP
-
Многие приложения до сих пор используют небезопасные конструкции.
-
Разработчики недооценивают сложность защиты.
-
Даже в крупных проектах встречаются «забытые» уязвимые страницы.
Хотите научиться находить и использовать SQL-инъекции на практике, а потом грамотно закрывать их?
В модуле «SQL-инъекции: основы» вы сначала разберётесь, как работают базы и запросы, а затем отработаете 12 реальных сценариев атак: от обхода логина до записи файлов на сервер. Завершите обучение практикой по защите — от фильтрации до подготовленных запросов.
📘 Понравилась статья?
Больше практики и реальных заданий — в Kraken Academy.
А чтобы точно ничего не пропустить — подпишись на наш Telegram-канал.