Тестирование безопасности или SQL-инъекции

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

Одна из самых широко используемых лазеек — это обращение к базам данных сервера через адресную строку браузера, а также через любое input поле на веб-странице посредством SQL запросов, встроенных в штатную ссылку, этот способ именуется SQL-инъекцией. Что такое SQL и с чем его едят тестировщики, можно узнать на курсе ПОИНТ от Лаборатории Качества в исполнении уважаемого тренера Романа Буданова.

А сегодня мы кратко упомянем об основных возможностях, которые предоставляет этот способ.

На данный момент существует несколько основных видов систем управления базами данных, это Oracle, MS SQL Server, MySQL, PostgreSQL  и другие, но все их объединяет язык обращения к базам данных за небольшими различиями синтаксиса запросов и частных нюансов. Вот здесь и содержится потенциальная уязвимость —  если разработчик не смог правильно и безопасно обработать запрос с внешней стороны, то злоумышленник может воспользоваться этим и применить некоторые тактики для получения доступа к базе данных сайта и далее к управлению всем сайтом.

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

В ходе  атаки после перехода на изучаемый ресурс модифицируется ввод в адресной строке браузера и анализируется ответ сервера. Например, мы можем получить ошибку SQL и по ней определить дальнейшие свои действия. По сути,  конструируется SQL-выражение из пользовательского ввода путем простой конкатенации, то есть сборки запроса из подбираемых значений, например,
$query=»SELECT * FROM users WHERE id=».$_REQUEST[«id»]
Если путь намечен верно, то отправляемый SQL-запрос можно начинать подгонять под свои потребности. В основном, осуществляется  прощупывание базы данных сайта, ее типа и особенностей настройки, а также выполняется поиск названий таблиц, содержащих важную информацию, это может быть  таблица [Users], к примеру. После этого, в зависимости от привилегий, которые удалось получить любопытствующему товарищу, можно попытаться обратиться к файлам на стороне бэкенда, прочитать их или выполнить нужные (или ненужные 🙂 ) команды на сервере.

Конечно, часто все выполняется вручную, но во всемирной паутине можно поискать и даже найти некоторые готовые автоматизированные инструменты для определения наличия уязвимостей на интернет-ресурсе. Для заинтересовавшихся предлагаю загуглить слово sqlmap, это один из самых лучших инструментов для поиска и, что важно, эксплуатации найденных уязвимостей, к тому же он распространяется бесплатно. Он написан на Python, поэтому может выполняться из-под любой операционной системы при наличии установленного интерпретатора Python.

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

Метки
#Тестирование ПО (3)Android (1)Cache (1)Cookie (1)courses (1)HR (1)iOS (2)istqb (1)ISTQB FL (1)IT (2)java (1)Jedi Point (11)JSON (1)kaizen (2)pairwise (1)QA (18)QualityLab (1)REST API (1)selenium (1)SOAP UI (1)SOAPUI (1)softskills (1)softwaretesting (1)SQA Days-25 (1)sql (5)TestSuites (1)usability (2)web (1)XML (1)Анна Палей (1)БАГИ (1)Исследовательское тестирование (2)Истории поинт (10)История успеха (1)Команда разработки (1)Курс тестирования для начинающих (1)Кэш (1)Лаборатория Качества (1)Мнемоники (1)Мнемоники в тестировании (1)Наталья Руколь (1)Нина Агеева (4)ПОИНТ (43)ПРомо-вебинар (1)Подготовка к istqb (1)Роман Буданов (3)Скриншот (3)Таблица решений (1)Тестирование (20)Тестирование ПО (3)Тест менеджмент (1)Тренер (12)Туры (1)автоматизация (2)алгоритмы (1)баг (1)безопасность (1)бесплатный вебинар (1)введение в тестирование (1)граничные значения (1)декомпозиция (1)домашки (1)займемсяпоинтом (1)игры (1)идеальный мир (1)интернет (1)истории выпускников (10)как надо тестировать (2)комбинаторика (1)конференция (2)котик (1)курс для начинающих тестировщиков онлайн (1)лайфхак (1)минутка юмора (1)мобилки (3)мобильное тестирование (4)настройка мозгов (1)начать карьеру (1)начать карьеру в IT (1)начинающий тестировщик (8)негативное тестирование (2)обучение (1)обучение тестированию (11)ограничения (1)организация тестирования (1)персонажи (1)планирование (1)постановка мозгов (2)работа над ошибками (1)рабочий процесс (1)радиоСаня (1)режим разработчика (3)резюме (1)сертификация ISTQB FL (1)скринкаст (1)смена работы (1)сопроводительное письмо (1)стать тестировщиком (1)с чего начать (1)тайм-менеджмент (1)тест дизайн (2)тестировани (1)тестирование usability (2)тестирование безопасности (1)тестирование веб (2)тестирование игр (3)тестирование мобильных приложений (1)тестировщик (5)тесткейс (1)удаленная работа (1)улучшайзинг (1)ученик (2)фреймворки (1)чеклист (4)чит-листы (1)чит лист (2)что должен делать тестировщик (1)ятренерпоинт (1)
С 20.04 по 22.06, ОНЛАЙН Зарегистрироваться