Исследование демонстрационного приложения
Информация о приложении
Это руководство использует в качестве демонстрационного примера экземпляр приложения OWASP Juice Shop, расположенный на домене ojs.example.local
.
Если развернутое вами приложение (инструкция по установке) доступно по другому доменному имени, замените вхождения ojs.example.local
на соответствующее имя.
Для успешного конструирования расширений FAST необходимо понимать механизм работы веб-приложения или API, которые предполагается тестировать на наличие уязвимостей (внутренняя архитектура приложения или API, формат запросов и ответов, логика обработки различных исключительных ситуаций и т.д.).
Проведем небольшое исследование приложения OWASP Juice Shop с целью обнаружения потенциальных точек эксплуатации уязвимостей.
Для этого в браузере перейдите на страницу логина (http://ojs.example.local/#/login
), введите в поле «Email» символ апострофа '
, пароль 12345
в поле «Password» и нажмите на кнопку «Log in». С помощью инструментов разработчика в браузере или перехвата трафика к OWASP Juice Shop с помощью Wireshark становится понятно, что использование апострофа в поле Email
провоцирует внутреннюю ошибку сервера.
Проанализировав информацию из запроса к серверу, можно сделать следующие выводы:
- При попытке логина вызывается метод REST API
POST /rest/user/login
. Данные для логина передаются этому методу API в формате JSON следующим образом:
{ "email": "'", "password": "12345" }
Проанализировав информацию из ответа сервера, можно сделать вывод, что значения email
и password
используются в следующем SQL-запросе:
SELECT * FROM Users WHERE email = ''' AND password = '827ccb0eea8a706c4c34a16891f84e7b'
Таким образом, можно предположить, что в приложении OWASP Juice Shop возможна эксплуатация атаки типа SQL-инъекция через форму логина.
Эксплуатация уязвимости
Эксплуатируемая уязвимость: SQLi.
Официальная документация предполагает эксплуацию SQL-уязвимости при помощи передачи в форму логина email 'or 1=1 --
и любого пароля.
Такая атака приведет к тому, что вы сможете войти под учетной записью администратора.
В качестве альтернативы можно использовать в качестве значения email полезную нагрузку, включающую в себя заранее известный адрес электронной почты администратора веб-приложения (значение пароля может быть любым):
{
"email": "admin@juice-sh.op'--",
"password": "12345"
}
Для того, чтобы понять, как отследить факт успешной эксплуатации уязвимости, войдите на сайт под учетной записью администратора, использовав приведенные выше значения e-mail и пароля. Перехватите ответ от API-сервера с помощью Wireshark:
- HTTP-статус ответа:
200 OK
(при ошибке логина сервер вернет статус401 Unauthorized
); Ответ сервера об успешной аутентификации в формате JSON:
{ "authentication": { "token": "some long token", # значение токена не важно "bid": 1, # идентификатор продуктовой корзины пользователя "umail": "admin@juice-sh.op" # почтовый адрес пользователя в параметре umail. } }
results matching ""
No results matching ""
results matching ""
No results matching ""