Язык: SQL
Платформа: Любая (требует взаимодействия с базой данных SQL)
Атака SQL injection заключается во вставке или "инъекции" SQL-запроса через входные данные от клиента к приложению. Успешная атака SQL-инъекции может считывать конфиденциальные данные из базы данных, изменять данные базы данных (Insert/Update/Delete), выполнять операции администрирования базы данных (например, выключать СУБД), восстанавливать содержимое заданного файла, находящегося в файловой системе СУБД, и в некоторых случаях отдавать команды операционной системе. Инъекционные атаки SQL - это тип инъекционной атаки, при которой команды SQL внедряются во входные данные плоскости данных с целью повлиять на выполнение заранее определенных команд SQL.
- Атаки с использованием SQL-инъекций позволяют злоумышленникам подменять или подделывать существующие данные, вызывать проблемы обработкой транзакций, такие как аннулирование транзакций или изменение баланса, полностью раскрыть все данные в системе, уничтожить данные или сделать их недоступными, а также стать администраторами сервера базы данных.
- SQL Injection очень часто встречается в приложениях PHP и ASP из-за преобладания старых функциональных интерфейсов. Из-за характера доступных программных интерфейсов приложения J2EE и ASP.NET менее склонны к легко эксплуатируемым SQL-инъекциям.
- Серьезность атак SQL Injection ограничивается мастерством и воображением атакующего и, в меньшей степени, контрмерами защиты, такими как соединения с сервером базы данных с низкими привилегиями и т.д. В общем, считайте, что SQL Injection имеет высокую степень последствий.
Атака SQL-инъекции происходит, когда:
- Непреднамеренные данные попадают в программу из ненадежного источника.
- Эти данные используются для динамического построения SQL-запроса.
Основными последствиями являются:
- Конфиденциальность: Поскольку базы данных SQL обычно хранят конфиденциальные данные, потеря конфиденциальности является частой проблемой уязвимостей SQL Injection.
- Аутентификация: Если некачественные SQL-команды используются для проверки имен пользователей и паролей, то можно подключиться к системе как другой пользователь, не зная пароля.
- Авторизация: Если информация об авторизации хранится в базе данных SQL, может оказаться возможным изменить эту информацию путем успешной эксплуатации уязвимости SQL Injection.
- Целостность: Так же как можно прочитать конфиденциальную информацию, можно внести изменения или даже удалить эту информацию с помощью атаки SQL Injection.
SQL Injection стала распространенной проблемой для веб-сайтов, управляемых базами данных. Уязвимость легко обнаруживается и легко эксплуатируется, поэтому любой сайт или пакет программного обеспечения, имеющий даже минимальную пользовательскую базу, скорее всего, подвергнется попытке подобной атаки.
По сути, атака осуществляется путем размещения метасимвола в вводимых данных, чтобы затем поместить SQL-команды в плоскость управления, которых там раньше не было. Этот недостаток зависит от того, что SQL не делает реального различия между плоскостями управления и данных.