---
# System prepended metadata

title: ⠀⠀⠀⠀⠀⠀Практическая работа №1
tags: [Web Basic]

---

⠀
⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀![](https://i.imgur.com/l6GHi51.png)
⠀
⠀
⠀
# ⠀⠀⠀⠀⠀⠀Практическая работа №1
⠀
:::info 
 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀:bulb:**Цель практической работы №1**
⠀
- Познакомиться с основами WEB технологий
- Иметь представления об основных WEB протоколах
- Научиться разворачивать  WEB-сервер с помщью docker
- Научиться создавать запросы к WEB приложению

:::
⠀

:::spoiler Часть 1. 
⠀
##### Установить и настроить Linux Ubuntu
![](https://i.imgur.com/wCHnDtF.png)
⠀
##### Установка пакетов для доступа к репозитериям по HTTPS
![](https://i.imgur.com/QT2VpZa.png)
⠀
##### Добавим в систему GPG-ключ для работы с официальным репозиторием Docker
![](https://i.imgur.com/tIfROqn.png)
⠀
##### Добавим репозиторий Docker в локальный список репозиториев
![](https://i.imgur.com/qTn4bYS.png)
⠀
##### Установка Docker-CE
![](https://i.imgur.com/xVb60c8.png)
⠀
##### Проверка работы службы
![](https://i.imgur.com/5uCsY76.png)
⠀
##### Добавим Docker в автозагрузку
![](https://i.imgur.com/RyE8bvo.png)
⠀
##### Установка веб-приложения Juice-Shop
> [color=#07b759] Команда *docker run* на скриншоте запускает установленное веб приложение

![](https://i.imgur.com/QTXfroE.png)
⠀
##### Переходим на страницу веб приложения
![](https://i.imgur.com/UsbVdNE.png)
⠀
![](https://i.imgur.com/FEJvLNF.png)
⠀
##### Изучим запросы браузера к приложению и форме регистрации пользователей с помощью Burp Suite.
> [color=#07b759] GET-запрос, возвращающий index.html

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

![](https://i.imgur.com/gd25wZe.png)
![](https://i.imgur.com/GjHhDMy.png)
⠀

> [color=#07b555] При попытке авторизации, клиент отправляет POST запрос (131), а после GET запрос (132)

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

![](https://i.imgur.com/tsnjmE3.png)
⠀
![](https://i.imgur.com/fnxqr8x.png)
⠀
> [color=#07b555] Код "HTTP 304 Not Modified" клиента указывает, что нет необходимости повторно передавать запрошенные ресурсы. Это неявное перенаправление на кешированный ресурс

![](https://i.imgur.com/bDLx7wW.png)
⠀
> [color=#07b555] Попробуем зарегистрироваться. Отправится 2 запроса - GET и кодом 304, и POST с 400-м ответом

![](https://i.imgur.com/FORMMW6.png)
⠀
![](https://i.imgur.com/Rot1rMn.png)
⠀
> [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 запрос

![](https://i.imgur.com/YmbicBo.png)
⠀
> [color=#07b555] Отправим POST запрос

![](https://i.imgur.com/WChkLqR.png)
 ⠀
##### Сформируем несколько запросов к приложению через powershell
> [color=#07b555] Установим Powershell

![](https://i.imgur.com/4ww2u46.png)
⠀
> [color=#07b555] Отправим простой GET запрос.
> По умолчанию Invoke-WebRequest выполняет HTTP-запрос с методом GET к ресурсу на веб‑сервере, адрес ресурса указывается в качестве значения параметра -Uri

![](https://i.imgur.com/QMdZIlp.png)
⠀
> [color=#07b555] Если отправить Invoke-WebRequest с аргументом -Method и значением POST, получим информацию об ответе сервера

![](https://i.imgur.com/L0sI8e2.png)
⠀
> [color=#07b555] Если отправим Invoke-RestMethod, увидим содержимое ответа от сервера

![](https://i.imgur.com/KtiPB8C.png)
⠀
##### Изучим ответ приложения и распарсим его с помощью утилит jq
> [color=#07b555] С помощью cURL отправляю гет запрос на сервер, и получаю "необработанный" JSON

![](https://i.imgur.com/r6iwPtV.png)
⠀
> [color=#07b555] Приведем наш вывод к удобочитаемому формату с помощью jq

![](https://i.imgur.com/BqnIFV3.png)
⠀
> [color=#07b555] Теперь выведу только содержимое *.config.server*

![](https://i.imgur.com/KNtZbfd.png)
:::
⠀

:::success
*Материалы лекции изучены!*

*Выполнил: Шурыгин Денис*
:::



⠀
⠀
###### tags: `Web Basic`
{%hackmd @themes/notion %}