03 Апр, 2023

Внедрение подстановочных знаков SQL

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

Внедрение подстановочных знаков SQL это тип атаки с использованием SQL-инъекций, при котором злоумышленник использует уязвимость в веб-приложении для введения подстановочных знаков, таких как % или _, в SQL-запрос, в результате чего запрос возвращает больше данных, чем предполагалось. Это может привести к раскрытию конфиденциальной информации или возможности выполнения несанкционированных команд в базе данных.

Использование подстановочных знаков в SQL-запросе позволяет злоумышленнику обойти проверки правильности ввода и внедрить вредоносный SQL-код, который может изменять, извлекать или удалять данные из базы данных. Инъекции подстановочных знаков могут использоваться в сочетании с другими методами SQL-инъекций, чтобы увеличить шансы на успешную атаку.

Пример уязвимого кода на разных языках программирования:


в php:

				
					$uname = $_GET['username'];
$sql = "SELECT * FROM users WHERE username LIKE '%" . $uname . "%'";
$result = mysqli_query($conn, $sql);

				
			

 

В этом примере пользовательский ввод параметра ‘username’ напрямую объединяется в SQL-запрос без надлежащей проверки ввода, что позволяет злоумышленнику вводить символы подстановки и потенциально выполнять атаку с использованием SQL-подстановочных знаков.

• в Java:

				
					String username = request.getParameter("username");
String query = "SELECT * FROM users WHERE username LIKE '%" + username + "%'";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);

				
			

 

Этот Java-код страдает от той же уязвимости, что и пример PHP. Входные данные, полученные от параметра ‘username’, напрямую объединяются в SQL-запрос, позволяя злоумышленнику вводить символы подстановки и выполнять атаку с использованием SQL-подстановочных знаков.

• в Python:

				
					username = request.args.get('username')
query = "SELECT * FROM users WHERE username LIKE '%" + username + "%'"
cursor.execute(query)
result = cursor.fetchall()

				
			

 

Аналогично, этот код Python объединяет пользовательский ввод для ‘username’ непосредственно в SQL-запрос без надлежащей проверки ввода, что делает его уязвимым для атак с использованием подстановочных знаков SQL.

Примеры использования SQL-подстановочных знаков

Допустим, у нас есть уязвимый SQL-запрос, который принимает входные данные от пользователя для поиска продукта в базе данных. SQL-запрос выглядит следующим образом:

				
					SELECT * FROM products WHERE name LIKE '%user_input%';

				
			

 

Пользовательский ввод напрямую объединяется в SQL-запрос, что делает его уязвимым для внедрения подстановочных знаков SQL. Злоумышленник может использовать эту уязвимость различными способами:

  • Извлечение данных: злоумышленник может использовать подстановочные знаки для извлечения данных из базы данных. Например, если злоумышленник введет ‘a%’; ВЫБЕРИТЕ пароль ОТ пользователей, ГДЕ username = ‘admin’, SQL-запрос станет:

				
					SELECT * FROM products WHERE name LIKE 'a%'; SELECT password FROM users WHERE username = 'admin%';

				
			

Вторая часть запроса будет выполнена как отдельный оператор и вернет пароль пользователя ‘admin’.

  • Обход аутентификации: злоумышленник может использовать подстановочные знаки для обхода проверок подлинности. Например, если приложение проверяет имя пользователя и пароль следующим образом:

				
					SELECT * FROM users WHERE username = 'user_input' AND password = 'user_input';

				
			


Злоумышленник может ввести подстановочный знак в качестве пароля, чтобы обойти проверку подлинности:

				
					SELECT * FROM users WHERE username = 'admin' AND password LIKE '%';

				
			

 

Этот запрос вернет всех пользователей, включая администратора, поле пароля которого содержит любое значение.

  • Удаление данных: злоумышленник может использовать подстановочные знаки для удаления данных из базы данных. Например, если приложение удаляет продукт на основе идентификатора продукта следующим образом:

				
					DELETE FROM products WHERE id = 'user_input';

				
			

 

Злоумышленник может ввести подстановочный знак в качестве идентификатора продукта, чтобы удалить все продукты из базы данных:

				
					DELETE FROM products WHERE id LIKE '%';

				
			

 

Этот запрос удалит все продукты из базы данных.

Методы повышения привилегий для внедрения подстановочных знаков SQL

Запрос объединения:

Злоумышленник может использовать запрос ОБЪЕДИНЕНИЯ для объединения результатов двух или более операторов SELECT. Этот метод может быть использован для извлечения данных из других таблиц базы данных или для повышения привилегий путем выдвижения себя за пользователя с более высокими привилегиями. Например, злоумышленник может использовать следующий запрос для извлечения хэшей паролей всех пользователей и повышения привилегий:

				
					SELECT username, password FROM users WHERE username = 'admin' UNION SELECT username, password FROM users WHERE username <> 'admin';

				
			

 

Этот запрос объединит результаты двух операторов SELECT и вернет хэши паролей всех пользователей, включая администратора.

Подзапрос:

Злоумышленник может использовать подзапрос для повышения привилегий, минуя проверки подлинности. Например, если приложение проверяет имя пользователя и пароль следующим образом:

				
					SELECT * FROM users WHERE username = 'user_input' AND password = 'user_input';

				
			

 

Злоумышленник может использовать подзапрос, чтобы обойти проверку подлинности и пройти аутентификацию как пользователь с более высокими привилегиями:

				
					SELECT * FROM users WHERE username = 'admin' AND password = (SELECT password FROM users WHERE username = 'admin');

				
			

 

Этот запрос вернет данные для пользователя ‘admin’, даже если злоумышленник не знает пароля для этого пользователя.

Атаки, основанные на времени:

Злоумышленник может использовать атаки, основанные на времени, для повышения привилегий путем задержки ответа на SQL-запрос. Например, злоумышленник может использовать следующий запрос, чтобы задержать ответ на 10 секунд:

				
					SELECT * FROM products WHERE name LIKE 'user_input%' AND sleep(10);

				
			

 

Этот запрос задержит ответ на 10 секунд, что может быть использовано для определения того, уязвим ли SQL-запрос к атакам, основанным на времени. Затем злоумышленник может использовать этот метод для повышения привилегий путем выполнения длительных запросов, которые потребляют много ресурсов сервера и нарушают нормальную работу приложения.

Общая методология и контрольный список для внедрения SQL-подстановочных знаков

Методология:

  1. Определите все пользовательские вводимые данные, которые используются в SQL-запросах, такие как поля поиска, формы входа и другие поля пользовательского ввода.

  2. Проверьте, не были ли пользовательские входные данные напрямую объединены в SQL-запрос без надлежащей проверки и очистки. Ищите подстановочные знаки, такие как % и _, которые можно использовать для внедрения подстановочных знаков SQL.

  3. Протестируйте каждое поле ввода с различными входными значениями, чтобы проверить, не возвращает ли SQL-запрос неожиданные результаты. Используйте подстановочные знаки, такие как % и _, для проверки внедрения подстановочных знаков SQL. Ищите ошибки, неожиданные результаты или медленное время отклика, которые могут указывать на уязвимость.

  4. Используйте автоматизированные инструменты, такие как SQLmap или другие сканеры уязвимостей, для проверки внедрения подстановочных знаков SQL. Эти инструменты могут автоматически обнаруживать и использовать уязвимости, экономя время и усилия.

  5. Просмотрите код приложения, чтобы определить уязвимые сегменты кода, которые могут быть подвержены внедрению подстановочных знаков SQL. Ищите конкатенацию пользовательского ввода с SQL-запросами, непроверенные входные данные и другие распространенные уязвимости.

  6. Проверяйте и очищайте пользовательские вводимые данные перед их использованием в SQL-запросах. Используйте параметризованные запросы или хранимые процедуры для предотвращения атак с использованием SQL-инъекций.

  7. Ограничьте привилегии пользователей базы данных до минимума, необходимого для предотвращения атак с повышением привилегий.

  8. Регулярно просматривайте и обновляйте средства контроля безопасности, чтобы предотвратить уязвимости и быть в курсе последних угроз и методов атак.

Контрольный список:

  1. Определите все поля ввода, которые принимают пользовательский ввод, такие как поля поиска, формы входа и другие поля ввода.

  2. Убедитесь, что для полей ввода выполняется проверка входных данных, например проверка ожидаемых типов данных, длины и формата.

  3. Проверьте, используются ли поля ввода непосредственно в SQL-запросах без надлежащей проверки и очистки. Ищите подстановочные знаки, такие как % и _, которые можно использовать для внедрения подстановочных знаков SQL.

  4. Протестируйте каждое поле ввода с различными входными значениями, чтобы проверить, не возвращает ли SQL-запрос неожиданные результаты. Используйте подстановочные знаки, такие как % и _, для проверки внедрения подстановочных знаков SQL. Ищите ошибки, неожиданные результаты или медленное время отклика, которые могут указывать на уязвимость.

  5. Проверьте поля поиска, введя в поле поиска подстановочный знак, такой как %, чтобы проверить, возвращает ли SQL-запрос все записи.

  6. Протестируйте формы входа, введя подстановочный знак, такой как %, в поля имя пользователя и пароль, чтобы проверить, возвращает ли SQL-запрос какие-либо записи.

  7. Используйте автоматизированные инструменты, такие как SQLmap или другие сканеры уязвимостей, для проверки внедрения подстановочных знаков SQL. Эти инструменты могут автоматически обнаруживать и использовать уязвимости, экономя время и усилия.

  8. Просмотрите код приложения, чтобы определить уязвимые сегменты кода, которые могут быть подвержены внедрению подстановочных знаков SQL. Ищите конкатенацию пользовательского ввода с SQL-запросами, непроверенные входные данные и другие распространенные уязвимости.

  9. Проверяйте и очищайте пользовательские вводимые данные перед их использованием в SQL-запросах. Используйте параметризованные запросы или хранимые процедуры для предотвращения атак с использованием SQL-инъекций.

  10. Ограничьте привилегии пользователей базы данных до минимума, необходимого для предотвращения атак с повышением привилегий.

  11. Регулярно просматривайте и обновляйте средства контроля безопасности, чтобы предотвратить уязвимости и быть в курсе последних угроз и методов атак.

Набор инструментов для эксплуатации Внедрение подстановочных знаков SQL

Ручные Инструменты:

  • SQLmap – Популярный инструмент с открытым исходным кодом для автоматизации обнаружения и использования SQL-инъекций. Он может обнаруживать широкий спектр методов внедрения, а также может выявлять уязвимости, такие как внедрение подстановочных знаков SQL.

  • Havij – Коммерческий инструмент для автоматизированного внедрения SQL и использования SQL-подстановочных знаков. Он может автоматически обнаруживать и использовать уязвимости SQL-инъекций, что делает его популярным среди тестировщиков на проникновение.

  • Sqlninja – Инструмент, предназначенный для использования уязвимостей SQL-инъекций в базах данных MySQL. Он может быть использован как для автоматического, так и для ручного тестирования уязвимостей SQL-инъекций.

  • SQLMate – Легкий инструмент для ручного обнаружения и эксплуатации уязвимостей SQL-инъекций. Он поддерживает различные методы, включая внедрение SQL-подстановочных знаков.

  • DotDotPwn – Инструмент для автоматического тестирования уязвимостей обхода каталогов и включения файлов, который может быть использован для обнаружения уязвимостей SQL-инъекции и SQL-подстановочных знаков.

  • Absinthe – Мощный инструмент для внедрения SQL-кода и SQL wildcard injection с широким набором функций, включая возможность автоматизировать обнаружение и эксплуатацию уязвимостей.

  • SQL Power Injector – Инструмент для ручного внедрения SQL и использования подстановочных знаков SQL с такими функциями, как многопоточность и возможность обхода брандмауэров веб-приложений.

  • SQLsus – Облегченный инструмент для внедрения SQL-инъекций и SQL wildcard injection, который можно использовать для ручного тестирования и анализа уязвимостей SQL-инъекций.

  • Blind SQL Injector – Инструмент для ручного тестирования и эксплуатации уязвимостей с использованием слепых SQL-инъекций, который может быть использован для обнаружения уязвимостей с использованием подстановочных знаков SQL.

  • Burp Suite – Популярный инструмент тестирования безопасности веб-приложений, который может использоваться для ручного обнаружения и эксплуатации уязвимостей SQL injection и SQL wildcard injection.

Автоматизированные инструменты:

  • AppScan – Автоматизированный инструмент тестирования безопасности веб-приложений, который может обнаруживать уязвимости при внедрении SQL, включая внедрение подстановочных знаков SQL.

  • Acunetix – Инструмент тестирования безопасности веб-приложений, который может обнаруживать и использовать уязвимости SQL injection, включая SQL wildcard injection.

  • Netsparker – Автоматизированный инструмент тестирования безопасности веб-приложений, который может обнаруживать и использовать уязвимости SQL injection, включая SQL wildcard injection.

  • Vega – Инструмент тестирования безопасности веб-приложений с открытым исходным кодом, который может обнаруживать уязвимости при внедрении SQL, включая внедрение подстановочных знаков SQL.

  • Qualys – Облачный инструмент управления уязвимостями, который может обнаруживать и использовать уязвимости SQL injection, включая SQL wildcard injection.

  • WebInspect – Автоматизированный инструмент тестирования безопасности веб-приложений, который может обнаруживать и использовать уязвимости SQL injection, включая SQL wildcard injection.

  • Arachni – Сканер безопасности веб-приложений, который может обнаруживать различные уязвимости, включая SQL-инъекцию и SQL-подстановочный знак.

  • Nikto – Популярный сканер веб-сервера с открытым исходным кодом, который может обнаруживать уязвимости, такие как SQL-инъекция и SQL-подстановочный знак.

  • OWASP ZAP – Сканер безопасности веб-приложений с открытым исходным кодом, который может обнаруживать и использовать уязвимости, включая SQL-инъекцию и SQL-подстановочный знак.

  • W3af – Сканер безопасности веб-приложений с открытым исходным кодом, который может обнаруживать различные уязвимости, включая SQL-инъекцию и SQL-подстановочный знак.

Средний балл CVSS внедрение подстановочных знаков stack SQL

Общая система оценки уязвимостей (CVSS) - это стандартизированная система, используемая для оценки серьезности уязвимостей в системе безопасности. Оценка варьируется от 0 до 10, причем более высокий балл указывает на более серьезную уязвимость.

Оценка CVSS для уязвимостей с внедрением подстановочных знаков SQL может варьироваться в зависимости от конкретных обстоятельств уязвимости и влияния, которое она оказывает на систему. Однако, как правило, уязвимости, связанные с внедрением подстановочных знаков SQL, считаются уязвимостями высокой степени серьезности, которые могут оказать значительное влияние на безопасность системы.

Средний балл CVSS для уязвимостей, связанных с внедрением подстановочных знаков SQL, обычно составляет от 7 до 9, что указывает на уязвимость высокой степени серьезности. Однако этот показатель может варьироваться в зависимости от таких факторов, как сложность атаки, уровень доступа, полученный злоумышленником, и потенциальное воздействие на систему.

Общее перечисление слабых мест (CWE)

• CWE-89: Неправильная нейтрализация специальных элементов, используемых в команде SQL (‘SQL-инъекция’) – Это наиболее распространенный CWE, связанный с внедрением SQL, включая внедрение подстановочных знаков SQL.

• CWE-20: Неправильная проверка ввода – этот CWE связан с неправильной проверкой пользовательского ввода, что может привести к атакам с использованием SQL-инъекций.

• CWE-77: Неправильная нейтрализация специальных элементов, используемых в Команде (‘Командная инъекция’) – Этот CWE связан с атаками с использованием команд, которые могут использоваться для выполнения произвольных команд в системе.

• CWE-78: Неправильная нейтрализация специальных элементов, используемых в команде операционной системы (‘Внедрение команды операционной системы’) – Этот CWE похож на CWE-77, но конкретно относится к атакам на команды операционной системы.

• CWE-601: Перенаправление URL на ненадежный сайт (‘Open Redirect’) – Этот CWE связан с атаками перенаправления URL-адресов, которые могут использоваться для перенаправления пользователей на вредоносный веб-сайт, который может выполнять атаки с использованием SQL-инъекций.

• CWE-918: Подделка запроса на стороне сервера (SSRF) – Этот CWE связан с атаками SSRF, которые могут использоваться для обхода контроля доступа и выполнения атак с использованием SQL-инъекций.

• CWE-943: Неправильная нейтрализация специальных элементов в логике запроса данных – этот CWE связан с атаками с использованием SQL-инъекций, которые конкретно связаны с логикой запроса данных.

• CWE-1145: SQL-инъекция: гибернация – этот CWE связан с атаками SQL-инъекций, нацеленными на Hibernate, популярную платформу ORM на основе Java.

• CWE-1157: SQL-инъекция: Node.js – Этот CWE связан с атаками SQL-инъекций, которые нацелены Node.js , популярная среда выполнения JavaScript.

• CWE-1254: Неправильная нейтрализация специальных элементов, используемых в запросе LDAP (‘Внедрение LDAP’) – Этот CWE связан с атаками с использованием LDAP-инъекций, которые могут использоваться для выполнения произвольных запросов LDAP и потенциально для выполнения атак с использованием SQL-инъекций.

CVE, связанные с внедрением подстановочных знаков SQL

• CVE-2020-13921 – ** Решено ** Только при использовании H2 / MySQL / TiDB в качестве хранилища Apache SkyWalking существует уязвимость SQL-инъекции в случаях запроса с подстановочными знаками.

Внедрение подстановочных знаков SQL подвиги

  • Извлечение всех данных из таблицы: Злоумышленник может ввести подстановочный знак (*) в SQL-запрос, чтобы извлечь все данные из таблицы, даже если приложение было разработано только для извлечения подмножества данных. Например, если исходным запросом было “ВЫБРАТЬ имя ИЗ пользователей, возраст которых > 18”, злоумышленник мог ввести подстановочный знак, чтобы выполнить запрос “ВЫБРАТЬ * ИЗ пользователей, возраст которых > 18”, который извлек бы все данные из таблицы “пользователи”.

  • Изменение данных в таблице: Злоумышленник может ввести подстановочный знак в инструкцию UPDATE, чтобы изменить несколько строк данных в таблице, даже если приложение было разработано только для изменения одной строки за раз. Например, если исходный запрос был “ОБНОВИТЬ статус набора пользователей = ‘неактивный’, ГДЕ user_id = 123”, злоумышленник мог ввести подстановочный знак, чтобы выполнить запрос “ОБНОВИТЬ статус НАБОРА пользователей = ‘неактивный’, ГДЕ user_id КАК ‘1%'”, что изменило бы статус всех пользователей, чей user_id начинается с цифры 1.

  • Извлечение данных из нескольких таблиц: Злоумышленник может ввести подстановочный знак в инструкцию JOIN для извлечения данных из нескольких таблиц, даже если приложение было разработано только для извлечения данных из одной таблицы. Например, если исходный запрос был “ВЫБЕРИТЕ имя, адрес ИЗ списка пользователей, ПРИСОЕДИНЯЮЩИХСЯ К адресам В users.user_id = addresses.user_id ГДЕ users.age > 18”, злоумышленник мог ввести подстановочный знак, чтобы выполнить запрос “ВЫБЕРИТЕ * ИЗ списка пользователей, присоединяющихся К адресам В users.user_id = addresses.user_id ГДЕ users.age > 18”, который извлек бы все данные из таблиц “пользователи” и “адреса”.

  • Выход из механизма фильтрации приложения: Злоумышленник может ввести подстановочный знак, чтобы избежать механизма фильтрации приложения и извлечь данные, которые не должны были быть доступными. Например, если приложение отфильтровывает символ “a” из пользовательского ввода, чтобы предотвратить атаки с использованием SQL-инъекций, злоумышленник может ввести подстановочный знак, чтобы обойти фильтр и получить данные, содержащие символ “a”.

Практикуясь в тестировании на Внедрение подстановочных знаков SQL

Настройка тестовой среды: создайте тестовую среду, которая имитирует производственную среду, но отделена от нее. Это может включать в себя настройку сервера базы данных и веб-сервера на отдельном компьютере или виртуальной машине.

Определите точки инъекции: определите поля ввода в приложении, которые могут быть использованы для внедрения SQL, такие как поля поиска, формы входа и регистрационные формы.

Полезная нагрузка для впрыска в ремесло: создавайте полезные нагрузки для внедрения, которые включают подстановочные знаки, такие как % и _. Эти полезные нагрузки могут быть использованы для извлечения всех данных из таблицы, изменения данных в таблице или выполнения других атак с использованием SQL-инъекций.

Протестируйте приложение: используйте полезные нагрузки для внедрения, чтобы протестировать приложение и посмотреть, как оно реагирует. Ищите сообщения об ошибках, изменения в поведении приложения и неожиданные результаты.

Проанализируйте результаты: из тестов внедрения, чтобы определить, уязвимо ли приложение для внедрения подстановочных знаков SQL. Ищите случаи, когда приложение возвращает больше данных, чем ожидалось, изменяет данные непреднамеренными способами или выдает ошибки.

Исправлять уязвимости: если обнаружатся уязвимости, поработайте с командой разработчиков, чтобы исправить их. Это может включать реализацию проверки входных данных и очистки, использование параметризованных запросов и ограничение доступа пользователей к базе данных.

Повторное тестирование приложения: как только уязвимости будут устранены, повторно протестируйте приложение, чтобы убедиться, что атаки с использованием подстановочных знаков SQL больше невозможны.

Для изучения внедрение SQL-подстановочных знаков

На веб-сайте OWASP (Open Web Application Security Project) есть подробное руководство по внедрению SQL, включая информацию о внедрении подстановочных знаков SQL и о том, как его протестировать.

Шпаргалка по внедрению SQL на веб-сайте PentestMonkey содержит информацию о внедрении подстановочных знаков SQL, а также о других методах внедрения.

Пошаговое руководство по атаке с использованием SQL-инъекций на веб-сайте PortSwigger включает пошаговое руководство по тестированию на внедрение SQL, включая внедрение подстановочных знаков SQL.

Академия веб-безопасности на веб-сайте PortSwigger включает интерактивные лабораторные работы и упражнения, которые помогут вам попрактиковаться в тестировании на внедрение SQL, включая внедрение подстановочных знаков SQL.

Доступно несколько книг по SQL-инъекциям, таких как “Атаки и защита с использованием SQL-инъекций” Джастина Кларка и “SQL-инъекция: атаки и защита” Сумита Сиддхарта. Эти книги содержат подробную информацию о внедрении SQL, включая внедрение подстановочных знаков SQL.

Онлайн-курсы, такие как предлагаемые Udemy, Coursera и Pluralsight, могут предоставить структурированные возможности обучения для изучения SQL-инъекций и SQL-подстановочных знаков.

Книги с обзором внедрения подстановочных знаков SQL

Атаки с использованием SQL-инъекций и защита автор: Джастин Кларк: Эта книга представляет собой исчерпывающее руководство по атакам с использованием SQL-инъекций и средствам защиты, включая информацию о внедрении подстановочных знаков SQL.

SQL-инъекция: атаки и защита автор Сумит Сиддхартх: В этой книге подробно рассматриваются атаки с использованием SQL-инъекций, включая внедрение подстановочных знаков SQL и способы защиты от них.

Взлом открытых веб-приложений: Секреты и решения безопасности веб-приложений Джоэл Скамбрей, Винсент Лью и Калеб Сима: Эта книга содержит информацию о внедрении SQL, включая внедрение подстановочных знаков SQL и другие методы внедрения.

Руководство хакера веб-приложений: поиск и использование недостатков безопасности автор: Дафидд Штуттард и Маркус Пинто: Эта книга охватывает широкий спектр вопросов безопасности веб-приложений, включая внедрение SQL, включая внедрение подстановочных знаков SQL.

Black Hat Python: Программирование на Python для хакеров и пентестеров автор: Джастин Зейтц: Эта книга содержит информацию о том, как использовать Python для тестирования SQL-инъекции, включая SQL-инъекцию подстановочных знаков.

Освоение Metasploit: Создание и тестирование расширенных эксплойтов автор: Нипун Джасвал: В этой книге рассказывается о платформе Metasploit, в том числе о том, как использовать ее для тестирования SQL-инъекций и других уязвимостей.

Продвинутый взлом постоянных угроз: Искусство и наука взлома любой организации автор Тайлер Райтсон: В этой книге рассматриваются передовые методы взлома, включая внедрение SQL, включая внедрение подстановочных знаков SQL.

Основы взлома и тестирования на проникновение: этичный взлом и тестирование на проникновение стали проще Патрик Энгебретсон: Эта книга представляет собой введение в этический взлом и тестирование на проникновение, включая информацию о внедрении SQL, включая внедрение подстановочных знаков SQL.

Metasploit: Руководство по тестированию на проникновение Дэвид Кеннеди, Джим О'Горман, Девон Кернс и Мати Ахарони: В этой книге рассказывается о платформе Metasploit, в том числе о том, как использовать ее для тестирования на внедрение SQL и другие уязвимости.

Взлом серой шляпы: руководство этичного хакера Даниэль Регаладо, Шон Харрис, Аллен Харпер, Крис Игл и Джонатан Несс: Эта книга охватывает широкий спектр этических тем взлома, включая внедрение SQL, включая внедрение подстановочных знаков SQL.

Список полезных нагрузок Внедрение SQL-подстановочных знаков

  • %’ или 1=1 —
  • %' или '1'='1' —
  • %’ или 1=1#
  • %’ или ‘1’=’1’#
  • %’ или 1=1/*
  • %’ или ‘1’=’1’/*
  • %’ или 1=1;
  • %' или '1'='1';
  • %’ или 1=1;;#
  • %' или '1'='1';;#

Как быть защищенным от внедрения SQL-подстановочных знаков

  1. Параметризованные запросы являются эффективным способом предотвращения атак с использованием подстановочных знаков SQL. Вместо объединения пользовательского ввода в SQL-запрос используйте заполнители в запросе и привяжите пользовательский ввод к этим заполнителям.

  2. Проверьте весь пользовательский ввод на стороне сервера, чтобы убедиться, что он соответствует ожидаемым шаблонам и не содержит никаких неожиданных символов.

  3. Брандмауэр веб-приложений может помочь защитить от атак с использованием подстановочных знаков SQL, отслеживая входящие запросы и блокируя любые, которые кажутся вредоносными.

  4. Ограничьте привилегии учетной записи пользователя, используемой приложением для доступа к базе данных. Это ограничит ущерб, который может нанести злоумышленник, если ему удастся выполнить атаку с использованием SQL-подстановочных знаков.

  5. Обновляйте программное обеспечение вашего веб-приложения и систему управления базами данных с помощью последних исправлений и обновлений безопасности, чтобы гарантировать устранение любых известных уязвимостей.

  6. Регулярные оценки уязвимостей могут помочь выявить любые слабые места в системе безопасности вашего веб-приложения и дать рекомендации по их устранению.

Заключение

Внедрение подстановочных знаков SQL это тип атаки с использованием SQL-инъекций, которая возникает, когда пользовательское значение, содержащее один или несколько символов подстановки, вставляется в SQL-запрос без надлежащей очистки или проверки. Это может позволить злоумышленникам манипулировать запросом для извлечения конфиденциальной информации, изменения или удаления данных или даже получения контроля над базовым сервером базы данных.

Чтобы предотвратить атаки с использованием подстановочных знаков SQL, разработчики веб-приложений должны использовать параметризованные запросы или хранимые процедуры, проверять вводимые пользователем данные, ограничивать права пользователя, использовать брандмауэр веб-приложений и обновлять программное обеспечение с помощью последних исправлений и обновлений безопасности.

Другие Услуги

Готовы к безопасности?

Связаться с нами