Исследование демонстрационного приложения

Информация о приложении

Это руководство использует в качестве демонстрационного примера экземпляр приложения 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-инъекция через форму логина.

Форма логина приложения OWASP Juice Shop

Эксплуатация уязвимости

Эксплуатируемая уязвимость: 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.
        }
    }
    

Перехват ответа от API-сервера с помощью Wireshark

results matching ""

    No results matching ""