Как провести тестирование безопасности для API
У меня есть API вроде
"/getXXXX?ABC=X7TRYUV&Ab_DEF=true&Ab_XYZ=true&Ab_ExZ=ZXTY"
Как проверить уязвимость параметров запроса?
Какие типы строк я могу передать?
Я запустил API в Wapiti и инструменте SQLMAP, но не обнаружил никаких проблем. я тестировал его вручную, изменяя "Ab_ExZ=ZXTY" на 'CHR(91%2d1)'XTY
и он отфильтровывает результат как правильный параметр там, где он не должен отфильтровываться.
Спасибо, Бибек
1 ответ
К сожалению, ответ на ваш вопрос зависит от обстоятельств. OWASP предоставляет много полезной информации об атаках в стиле инъекций. Точные строки, которые вы должны использовать, зависят от технологии, лежащей в основе вашего решения, и символов, например завершающих символов, которые важны на каждом этапе обработки данных.
Отправной точкой для тестирования инъекции является попытка завершить выполнение оператора / команды. Например, в Oracle PL/SQL символы';
будет работать, если кавычка закрывает строку, а точку с запятой завершает команду. Если запрос подвержен атакам с использованием инъекций, это, скорее всего, приведет к ошибке в базе данных для искаженного запроса.
Очевидно, что другие базы данных будут иметь немного другой синтаксис. Также стоит задуматься о базовой ОС. Если ввод в API в конечном итоге выполняется в командной строке, на базе Windows или Linux? Это изменит синтаксис, который вы хотите попробовать.
Наконец, если данные хранятся, где они затем отображаются? Если он отображается в веб-интерфейсе, вы можете попробовать ввести<b>
очевидно, если ваш API позволяет сохранить это и затем отображать пользователю без экранирования, вы увидите текст, выделенный жирным шрифтом. Это указывало бы на атаку инъекцией второго порядка. (Фактический риск возникает, когда данные извлекаются, а не отправляются).
Я настоятельно рекомендую взглянуть на информацию об инъекциях, доступную на сайте OWASP. Включая примеры WebGoat, в которых вы можете попробовать провести тестирование в стиле инъекции на намеренно уязвимом веб-сайте. Принципы хорошо подходят для тестирования API.