⠀
⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀
⠀
⠀
# ⠀⠀⠀⠀⠀⠀Практическая работа №1
⠀
:::info
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀:bulb:**Цель практической работы №1**
⠀
- Познакомиться с основами WEB технологий
- Иметь представления об основных WEB протоколах
- Научиться разворачивать WEB-сервер с помщью docker
- Научиться создавать запросы к WEB приложению
:::
⠀
:::spoiler Часть 1.
⠀
##### Установить и настроить Linux Ubuntu

⠀
##### Установка пакетов для доступа к репозитериям по HTTPS

⠀
##### Добавим в систему GPG-ключ для работы с официальным репозиторием Docker

⠀
##### Добавим репозиторий Docker в локальный список репозиториев

⠀
##### Установка Docker-CE

⠀
##### Проверка работы службы

⠀
##### Добавим Docker в автозагрузку

⠀
##### Установка веб-приложения Juice-Shop
> [color=#07b759] Команда *docker run* на скриншоте запускает установленное веб приложение

⠀
##### Переходим на страницу веб приложения

⠀

⠀
##### Изучим запросы браузера к приложению и форме регистрации пользователей с помощью Burp Suite.
> [color=#07b759] GET-запрос, возвращающий index.html

⠀

⠀
> [color=#07b759] Воспользуюсь встроенным браузером Chromium в Burp, для удобного мониторинга всех HTTP запросов между нами и сервером.
> При нажатии на кнопку Login - отправляется GET запрос *GET /rest/admin/application-configuration HTTP/1.1*


⠀
> [color=#07b555] При попытке авторизации, клиент отправляет POST запрос (131), а после GET запрос (132)
> [color=#07b555] Код ответа на статус ошибки HTTP 401 Unauthorized клиента указывает, что запрос не был применён, поскольку ему не хватает действительных учётных данных для целевого ресурса

⠀

⠀
> [color=#07b555] Код "HTTP 304 Not Modified" клиента указывает, что нет необходимости повторно передавать запрошенные ресурсы. Это неявное перенаправление на кешированный ресурс

⠀
> [color=#07b555] Попробуем зарегистрироваться. Отправится 2 запроса - GET и кодом 304, и POST с 400-м ответом

⠀

⠀
> [color=#07b555] На скриншотах видно, что POST запрос адресован на другой айпи, и Host - passwordsleakcheck-pa.googleapis.com. Предположу, что это сервис от Chrome https://security.googleblog.com/2020/10/new-password-protections-and-more-in.html
⠀
##### Сформируем несколько запросов к приложению через cURL
> [color=#07b555] Обычный GET запрос

⠀
> [color=#07b555] Отправим POST запрос

⠀
##### Сформируем несколько запросов к приложению через powershell
> [color=#07b555] Установим Powershell

⠀
> [color=#07b555] Отправим простой GET запрос.
> По умолчанию Invoke-WebRequest выполняет HTTP-запрос с методом GET к ресурсу на веб‑сервере, адрес ресурса указывается в качестве значения параметра -Uri

⠀
> [color=#07b555] Если отправить Invoke-WebRequest с аргументом -Method и значением POST, получим информацию об ответе сервера

⠀
> [color=#07b555] Если отправим Invoke-RestMethod, увидим содержимое ответа от сервера

⠀
##### Изучим ответ приложения и распарсим его с помощью утилит jq
> [color=#07b555] С помощью cURL отправляю гет запрос на сервер, и получаю "необработанный" JSON

⠀
> [color=#07b555] Приведем наш вывод к удобочитаемому формату с помощью jq

⠀
> [color=#07b555] Теперь выведу только содержимое *.config.server*

:::
⠀
:::success
*Материалы лекции изучены!*
*Выполнил: Шурыгин Денис*
:::
⠀
⠀
###### tags: `Web Basic`
{%hackmd @themes/notion %}