OWASP Top 10: A1 SQL Injection
Этичный Хакер
Уязвимость A1 Injection в настоящее время занимает 1-е место в рейтинге OWASP Top 10, что означает, что она ответственна за значительную долю публичных раскрытий и нарушений безопасности.
Итак, что такое уязвимость при внедрении? Ну, на самом деле существует несколько типов. Некоторые из наиболее распространенных типов включают SQL Injection, внедрение кода и внедрение LDAP. При использовании различных типов инъекций атакующий будет строить свою атаку по-другому.
SQL - это язык структурированных запросов, который позволяет взаимодействовать с серверами баз данных. Команды SQL, такие как INSERT, RETRIEVE, UPDATE и DELETE, используются для выполнения операций с базой данных.
SQL-инъекция - это метод, при котором злоумышленник использует не проверенные входные уязвимости и внедряет SQL-команды через webapplication, которые выполняются в серверной базе данных.

Внедрение SQL:
Обход аутентификации:
Здесь злоумышленник может войти в сеть без предоставления какой-либо аутентификации и получить наивысшие привилегии.
Раскрытие информации:
После того, как злоумышленник войдет в сеть, он получит доступ к конфиденциальной дате, хранящейся в сети.
Нарушена целостность данных:
Злоумышленник изменяет содержимое веб-сайта, вводя вредоносное содержимое.
Скомпрометированная доступность данных:
Используя этот метод, злоумышленник удалит конфиденциальную и важную информацию из базы данных.
Удаленное выполнение кода:
Злоумышленник может изменять, удалять или создавать данные или даже создавать новые учетные записи с полными правами пользователя на серверах, которые совместно используют файлы и папки. Это позволяет злоумышленнику скомпрометировать операционную систему хоста.
Значительные риски
Уязвимости, связанные с внедрением A1, также представляют некоторые из наиболее значительных рисков при эффективном использовании. Некоторые из этих рисков включают:
- Потеря или повреждение данных
- Кража данных.
- Несанкционированный доступ.
- Отказ в обслуживании.
- Полный захват хост-системы.
SQL-ЗАПРОС уязвим для атаки:
select count (*) FROM Users WHERE UserName=’ ” + txtUser.Text + ” ‘ AND passwords=’ ” + txtpassword.Text + ””’;
Аналогично, слепой текст в framework делает фреймворк уязвимым.
Query HQLQuery = session.createQuery(“FROM accounts WHERE custID=’“ + request.getParameter(“id”) + “‘”);
Понимание SQL-инъекций:
http://mydomain.com/test?Id=1 ↓ SELECT * FROM test WHERE ID = 1
При нормальных обстоятельствах это, вероятно, будет переведено на SELECT * FROM test , ГДЕ ID = 1 , может быть таблица с именем test, и в ней просто указано выбрать идентификатор № 1 из таблицы. Нам нужно посмотреть здесь информацию другого класса.
Trusted data http://mydomain.com/test?Id Untrusted data 1
Первая часть, которую мы должны увидеть здесь, - это то, что такое доверенные данные (http://mydomain.com/test ?Идентификатор) и недоверенный (1), не проверенный - это тот, который уязвим для атаки.
Теперь, что произойдет, если злоумышленник добавит условие http://mydomain.com/test?Id=1 или 1 = 1, если это условие проходит через базу данных, тогда логин изменится, вместо того, чтобы извлекать один идентификатор, он будет извлекать всю базу данных.
ОБЩИЕ СРЕДСТВА ЗАЩИТЫ:
- Белый список ненадежных данных
- Для чего нам нужно доверие?
- Соответствует ли он ожидаемым шаблонам?
2. Параметризация инструкций SQL
- Отделите запрос от входных данных.
- Введите приведение каждого оператора.
3. Точная настройка разрешений БД
- Сегментируйте учетные записи администратора и общественности.
- Применяйте “принцип наименьших привилегий”.