Тестирование безопасности или 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-уязвимостей всего лишь малая часть процесса. Их эксплуатация — вопрос во много раз сложнее. Но, как мы знаем, дорогу осилит идущий.

Комментарии

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Метки
css (1)html (1)ISTQB FL (9)IT (2)Java для тестировщиков (1)Jedi Point (32)JSON (1)kaizen (2)Pairwise Testing (1)QA (25)REST API (1)selenium (1)SOAP UI (1)softskills тестировщика (9)SQA Days-25 (1)SQL в тестировании (7)TestSuites (1)XML (1)xpath (1)Анна Палей (1)Исследовательское тестирование (4)История успеха (21)Курс тестирования для начинающих (44)Мнемоники в тестировании (1)Наталья Руколь (3)Нина Агеева (6)Обучение тестированию (24)ПОИНТ (78)Роман Буданов (5)Сессионное тестирование (1)ТЗ (1)Таблица решений (1)Тест-анализ (5)Тест-дизайн (8)Тест-кейс (2)Тест-стратегия (1)Тест-туры (1)Тестирование usability (7)Тестирование ПО (41)Тестирование игр (5)Тестирование мобильных приложений (17)Тест менеджмент (5)Чек-лист в тестировании по (5)Чит-лист в тестировании (2)автоматизация тестирования (3)автотесты (1)английский для тестировщиков (12)аудит проекта (12)баг (3)багнапродакшене (1)введение в тестирование (2)виды тестирования (4)войти в айти (15)выгорание (2)граничные значения (1)гуманитарии в тестировании (1)декомпозиция (1)инструменты тестирования по (6)интервью с выпускником (24)как надо тестировать (3)как стать тестировщиком (5)клиент-серверная архитектура (1)комбинаторика в тестировании (1)мануальное тестирование (1)метрики тестирования (4)начать карьеру в IT (25)начинающий тестировщик (37)негативное тестирование (2)ограничения (1)оптимизация QA-процессов (3)организация тестирования (1)персонажи (1)планирование тестирования (1)профессия тестировщик (9)работа в QA (2)расписание (6)резюме (1)релокация (3)ручное тестирование (1)сертификация ISTQB FL (7)скринкаст (1)смена работы (26)создание и управление командой тестирования (3)сопроводительное письмо (1)тайм-менеджмент (1)тест-кейс (1)тест-менеджмент (10)тестирование безопасности (1)тестирование без требований (4)тестирование веб (21)тестовая стратегия (1)удаленная работа (5)управление требованиями (6)фреймворк тестирования (1)школа тест-аналитика (2)школа тест-менеджера (9)юзабилити (2)
С 19.07 по 5.10, ОНЛАЙН Зарегистрироваться