OWASP Top 10: A1 SQL Injection

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, если это условие проходит через базу данных, тогда логин изменится, вместо того, чтобы извлекать один идентификатор, он будет извлекать всю базу данных.

ОБЩИЕ СРЕДСТВА ЗАЩИТЫ:

  1. Белый список ненадежных данных
  • Для чего нам нужно доверие?
  • Соответствует ли он ожидаемым шаблонам?

2. Параметризация инструкций SQL

  • Отделите запрос от входных данных.
  • Введите приведение каждого оператора.

3. Точная настройка разрешений БД

  • Сегментируйте учетные записи администратора и общественности.
  • Применяйте “принцип наименьших привилегий”.


Report Page