Проверьте выход с независимым браузером

КибербезопасностьBeginner
Практиковаться сейчас

Введение

Команда студии изменила обработку сеансов действием Sign out this browser. Завершение всех сеансов заставило бы старый cookie перестать работать, но также прервало бы работу другого браузера, которым участник всё ещё хочет пользоваться. Приёмка должна охватывать и результат безопасности, и обещанное обычное поведение.

Вы сохраните исходные запросы учётной записи и бронирования Browser A в Burp Repeater, установите отдельный сеанс Browser B для того же участника и проверите оба после выхода из A. Результат для передачи объединяет приватные HTTP-свидетельства и решение о приёмке без паролей. Среда независима: прежние файлы, сеансы и вкладки Burp не переносятся.

Сначала завершите Повторно отправьте запрос бронирования после выхода. Вы должны знать, как запустить временный проект Burp, оставить перехват выключенным, отправлять строки истории в Repeater, читать HTTP-статус и сохранять элемент XML. Эта лабораторная работа повторяет последовательность действий и добавляет сравнение независимых сеансов. Все учётные записи и бронирования синтетические. Заложите около 60 минут на чтение и обычные ошибки; это авторская оценка.

Проверьте обычное бронирование в Browser A

На этом шаге вы проверите обычный рабочий процесс в новом развёртывании. Откройте Auditor и прочитайте предоставленные учётные данные, адрес и разрешение:

cat scope.json

Используйте только http://members.test:8080/autumn, имя пользователя morgan и пароль PaperDay!47. Бронирование принадлежит Morgan Reed: Printmaking, место P12. Сохраните предоставленную область, конфигурацию, данные и процессы цели.

Если рабочее окно графического интерфейса показывает Disconnected, нажмите его кнопку Reconnect сверху. Это подключает существующее окно повторно и сохраняет cookie браузера, запросы Burp и прогресс работы с целью.

Откройте Burp. Оставьте выбранным Temporary project, нажмите Next, оставьте выбранным Use Burp defaults и нажмите Start Burp. Если появится Burp Suite is out of date, нажмите OK, чтобы продолжить с подготовленной учебной версией. В главном окне выберите Proxy → Intercept и убедитесь, что на кнопке написано Intercept is off. Если на ней Intercept is on, нажмите её один раз, чтобы обычные запросы не приостанавливались.

Переключитесь на Browser A. Нажмите адресную строку Chromium, введите этот URL и нажмите Enter:

http://members.test:8080/autumn/

Выберите View my booking, введите morgan в Username и PaperDay!47 в Password, затем нажмите Sign in. Выберите Never, если Chromium предложит сохранить пароль. Проверьте Morgan Reed, Printmaking и место P12 на Your next day of making, затем нажмите Download booking. Настоящий CSV содержит этого участника, мастер-класс и место.

Опечатка в учётных данных приводит к Sign-in unsuccessful; используйте try again и исправьте выданные значения. При неверном пути вернитесь к точному базовому URL. Ошибка соединения браузера не является HTTP-отказом: завершите мастер Burp, проверьте перехват и точный адрес, затем перейдите снова. Закрытие вкладки LabEx не сбрасывает сцену.

Сохраните успешные запросы Browser A

На этом шаге вы сохраните исходный сеанс Browser A перед подключением другого браузера. Переключитесь на Burp, затем Proxy → HTTP history. Найдите строку GET /autumn/account для members.test:8080, нажмите её правой кнопкой и выберите Send to Repeater. Повторите для GET /autumn/booking.csv. Если фильтр истории скрывает CSV, откройте панель фильтра и включите Show all.

Откройте главную вкладку Repeater. В первой вкладке запроса проверьте путь учётной записи и исходный заголовок Cookie: studio_session=..., затем нажмите Send. Прочитайте ответ в Raw: HTTP 200 с бронированием Morgan Reed. Выберите вторую вкладку запроса и нажмите Send. Она должна вернуть HTTP 200 с настоящей строкой бронирования CSV.

Два запроса используют один и тот же исходный сеансовый cookie Browser A. Сохраните их неизменными, включая узел, пути и cookie. Пронумерованные вкладки Repeater обозначают запросы, тогда как вкладки LabEx Browser A и Browser B обозначают независимые профили браузеров. Переключение вкладки LabEx не меняет выбранный запрос внутри Repeater.

Эти успешные ответы — исходный уровень для сравнения. Cookie, который никогда не работал, не позволяет установить, аннулировал ли выход настоящий сеанс впоследствии. Если вы выбрали неверную строку истории, отправьте правильный путь в Repeater и используйте эту вкладку запроса; определяйте её по пути, а не угадывайте номер вкладки.

Проверьте границу текущего сеанса

На этом шаге вы проверите, что выход из одного браузера завершает только его сеанс. Независимый профиль браузера имеет собственное хранилище cookie. Вторая вкладка внутри Browser A использовала бы общий cookie A и не обеспечила бы такого сравнения.

Переключитесь на вкладку LabEx Browser B. В адресной строке Chromium перейдите по адресу:

http://members.test:8080/autumn/login

Войдите как тот же участник, morgan, с PaperDay!47. Выберите Never, если будет предложено сохранить пароль. Проверьте бронирование и нажмите Download booking. Оставьте Browser B в сеансе. Его успешные запросы учётной записи и загрузки должны произойти до выхода из A.

Для прямого сравнения идентификаторов переключитесь на Burp → Proxy → HTTP history. Выберите последний запрос B к /autumn/account и изучите его запрос в Raw. Его значение studio_session отличается от значения, сохранённого в исходных вкладках Repeater A. Оба сеанса представляют Morgan Reed, но это разные состояния аутентификации. Не копируйте ни один cookie в отчёт и не заменяйте сохранённый cookie A значением B.

Переключитесь на Browser A и нажмите Sign out this browser. Появится страница входа. Затем переключитесь на Burp → Repeater и нажмите Send для исходного запроса учётной записи A. Ожидайте 401 Unauthorized и Sign in required. Отправьте также исходный запрос бронирования A: ожидайте HTTP 401 без CSV бронирования участника. Сохраните оба исходных cookie нетронутыми; запрос без cookie не проверял бы аннулирование старого сеанса A.

Сохранённый запрос бронирования A возвращает 401 с исходным cookie

Прочитайте неизменённый Cookie в левой панели и 401 Unauthorized с Sign in required в правой. Это отказ ранее работавшему сеансу A.

Теперь переключитесь на Browser B. Нажмите кнопку перезагрузки Chromium рядом с адресной строкой. Страница бронирования по-прежнему должна показывать бронирование Morgan Reed. Снова нажмите Download booking и подтвердите настоящую загрузку. Эти новые запросы устанавливают сохранение доступа; страница, оставленная на экране без обновления, могла бы быть устаревшей. Если B также потерял доступ, завершение всех сеансов нарушило бы явный контракт этого курса this browser, даже если старый cookie A отклонён. Другие продукты могут намеренно предлагать отдельное действие выхода везде; это другой контракт.

Наконец, переключитесь на Browser A, снова войдите с выданными учётными данными, просмотрите бронирование и нажмите Download booking. Новый сеанс по-прежнему работает. Вернитесь на Burp, не изменяя исходные запросы Repeater A. Их последние ответы остаются двумя HTTP 401, полученными после выхода.

Вы можете принять это ограниченное изменение: старый сеанс A не работает на обоих защищённых ресурсах, уже установленный независимый сеанс B по-прежнему работает и новый вход работает. Это не подтверждает все аспекты безопасности сеансов.

Если вы случайно вышли из B или заменили старый cookie A, установите два новых независимых сеанса и повторите полную последовательность: проверьте исходный доступ к обоим ресурсам в обоих браузерах, сохраните запросы A, выйдите из A, повторите запросы A, обновите страницу и скачайте файл в B, затем подтвердите новый вход в A. Одно лишь повторное открытие вкладки не создаёт замену сеансу.

Сохраните свидетельства принятой проверки

На этом шаге вы предоставите приватные свидетельства и обоснованное решение о приёмке. Переключитесь на Auditor, который открывается в /home/labex/project. Как вы уже изучили, umask 077 ограничивает доступ к новым файлам в этой оболочке, mkdir -p создаёт каталог свидетельств, а chmod 700 делает этот каталог приватным.

umask 077
mkdir -p evidence
chmod 700 evidence

Переключитесь на Burp → Repeater. Выберите исходный запрос учётной записи A и убедитесь, что его последний ответ — HTTP 401 после выхода. Нажмите правой кнопкой редактор Request, выберите Save item и введите это абсолютное значение File Name:

/home/labex/project/evidence/account-after.xml

Оставьте Base64-encode requests and responses включённым и нажмите Save. Закройте уведомление об успехе с OK, если оно появится. Повторите для исходного запроса бронирования A, последний ответ которого также должен быть HTTP 401:

/home/labex/project/evidence/booking-after.xml

Эти элементы XML содержат исходный cookie A. Base64 — кодирование, а не шифрование. Переключитесь на Auditor и ограничьте доступ к файлам их владельцем:

chmod 600 evidence/account-after.xml evidence/booking-after.xml
ls -l evidence

Ожидайте -rw------- у обоих файлов. Используйте тот же буквальный формат here-document, что и прежде, для отчёта без паролей. > заменяет assessment.json; завершающий JSON должен находиться на отдельной строке.

cat > assessment.json <<'JSON'
{
  "decision": "accept",
  "account_after_logout": 401,
  "booking_after_logout": 401,
  "independent_browser_preserved": true,
  "fresh_sign_in_works": true
}
JSON
cat assessment.json

Предоставьте исходные пары XML и этот отчёт, не включая в отчёт пароли, cookie и исходные запросы. Существующие факты сервера подтверждают независимый доступ B и новый вход; проверка не выполняет недостающие входы, выходы или повторные запросы. Её запрос общедоступной страницы для проверки сохранности может добавить запись доступа, а повторное оценивание сохраняет ваши файлы.

При неверном имени файла экспортируйте тот же реальный ответ по правильному пути и снова примените chmod 600. Если оболочка находится в другом каталоге, проверьте его командой pwd и вернитесь с cd /home/labex/project. Сохраните обычный общедоступный сайт и все ресурсы цели в неприкосновенности.

Резюме

Вы проверили исправленный выход из текущего браузера на странице учётной записи и при скачивании бронирования. Старый cookie был отклонён, отдельный ранее установленный сеанс браузера сохранил доступ, а новый вход по-прежнему работал. Приватные пары запросов и ответов Burp XML и оценка без паролей сохраняют обоснованное решение о приёмке.

В независимом задании меняются участник, адрес развёртывания и бронирование. Примените тот же полный контракт и примите решение на основе реальных ответов обоих ресурсов.