Тестирование безопасности - внедрение
Техника внедрения состоит из введения SQL-запроса или команды с использованием полей ввода приложения.
Веб-приложение - Внедрение
Успешная SQL-инъекция может читать, изменять конфиденциальные данные из базы данных, а также может удалять данные из базы данных. Это также позволяет хакеру выполнять административные операции с базой данных, такие как выключение СУБД / удаление баз данных.
Давайте разберемся с агентами угроз, векторами атак, слабостями безопасности, техническим воздействием и последствиями для бизнеса этой уязвимости с помощью простой диаграммы.
Примеры
Приложение использует ненадежные данные при построении следующего уязвимого вызова SQL:
String query = "SELECT * FROM EMP WHERE EMPID = '" + request.getParameter("id") + "'";
Руки вверх
Step 1 - Перейдите в область приложения SQL Injection, как показано ниже.
Step 2- Как указано в упражнении, мы используем String SQL Injection для обхода аутентификации. Используйте SQL-инъекцию, чтобы войти в систему как босс («Невилл») без использования правильного пароля. Убедитесь, что профиль Невилла доступен для просмотра и доступны все функции (включая поиск, создание и удаление).
Step 3 - Мы внедрим SQL, чтобы мы могли обойти пароль, отправив параметр как 'a' = 'a' или 1 = 1
Step 4 - После эксплуатации мы можем войти в систему как Невилл, который является администратором, как показано ниже.
Предотвращение внедрения SQL
Есть много способов предотвратить SQL-инъекцию. Когда разработчики пишут код, они должны убедиться, что обрабатывают специальные символы соответствующим образом. OWASP предлагает чит-листы / методы предотвращения, которые определенно являются руководством для разработчиков.
- Использование параметризованных запросов
- Экранирование всех вводимых пользователем данных
- Включить минимальные привилегии для базы данных для конечных пользователей