В этом райтапе я покажу, как злоумышленник может использовать неверную настройку JSON Web Tokens при атаке на веб‑сервер. Также проэксплуатируем обход каталога в Nginx, получим доступ к Redis благодаря SSRF и поупражняемся в атаках, связанных с Docker.
Всё это — в рамках захвата тренировочной машины Cybermonday с площадки Hack The Box. Уровень ее — сложный.
Добавляем IP-адрес машины в /etc/hosts:
10.10.11.228 cybermonday.htb
И запускаем сканирование портов.
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bashports=$(nmap -p- —min-rate=500 $1 | grep ^[0-9] | cut -d ‘/‘ -f 1 | tr ‘n’ ‘,‘ | sed s/,$//)nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Nmap нашел всего два открытых порта: 22 — служба OpenSSH 8.4p1 и 80 — веб‑сервер Nginx 1.25.1.
Открываем сайт и пытаемся определить, какие используются технологии.
Главная страница сайта
На сайте есть возможность регистрации и авторизации — сразу же зарегистрируемся. Это откроет нам доступ к новым функциям и расширит область тестирования.
Главная страница авторизованного пользователя
На сайте ничего интересного найти не удалось, поэтому нужно провести сканирование в поисках скрытых возможностей и ресурсов.
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде dirsearch, DIRB или ffuf. Я предпочитаю feroxbuster.
При запуске указываем следующие параметры:
Задаем все параметры и запускаем сканирование:
feroxbuster -k -u
Нам доступно несколько интересных файлов. Увы, robots.txt оказался пустым, однако из .htaccess узнаём настройки доступа.
curl
При тестировании формы авторизации я обнаружил, что если попытаться зарегистрировать второго пользователя на тот же почтовый ящик, то появится страница с ошибкой. Из нее мы выяснили, что сайт сделан на фреймворке Laravel.
Ошибка регистрации пользователя
Также здесь из‑за неправильной настройки Nginx возможна уязвимость типа Nginx Alias Traversal. Подробно я ее разбирал в райтапе по машине Pikaboo. Попробуем подобрать имя файла, используя обход каталога /assets../.
feroxbuster -k -u
Находим много интересного, к примеру файл .env, содержащий настройки служб.
Содержимое файла .env
Также доступен каталог .git, что дает нам возможность получить исходные коды сайта с помощью git-dumper.
mkdir git git-dumper
Работать с git-репозиторием можно через VS Code.
История коммитов
Просматривая файлы сайта, узнаём о наличии роли isAdmin (строка 41).
Содержимое файла User.php
При этом в файле ProfileController.php при обновлении свойств профиля пользователя нет никакой проверки отправляемых параметров (строки 19–33).
Содержимое файла ProfileController.php
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
9990 рублей 4000 р.
[TD]
920 р.
[/TD]
Я уже участник «Xakep.ru»
Всё это — в рамках захвата тренировочной машины Cybermonday с площадки Hack The Box. Уровень ее — сложный.
Разведка
Добавляем IP-адрес машины в /etc/hosts:
10.10.11.228 cybermonday.htb
И запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
#!/bin/bashports=$(nmap -p- —min-rate=500 $1 | grep ^[0-9] | cut -d ‘/‘ -f 1 | tr ‘n’ ‘,‘ | sed s/,$//)nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Nmap нашел всего два открытых порта: 22 — служба OpenSSH 8.4p1 и 80 — веб‑сервер Nginx 1.25.1.
Открываем сайт и пытаемся определить, какие используются технологии.
Главная страница сайта
На сайте есть возможность регистрации и авторизации — сразу же зарегистрируемся. Это откроет нам доступ к новым функциям и расширит область тестирования.
Главная страница авторизованного пользователя
На сайте ничего интересного найти не удалось, поэтому нужно провести сканирование в поисках скрытых возможностей и ресурсов.
Справка: сканирование веба c feroxbuster
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде dirsearch, DIRB или ffuf. Я предпочитаю feroxbuster.
При запуске указываем следующие параметры:
- -u — URL;
- -k — игнорировать ошибки SSL;
- -w — словарь (я использую словари из набора SecLists);
- -t — количество потоков;
- -d — глубина сканирования.
Задаем все параметры и запускаем сканирование:
feroxbuster -k -u
You do not have permission to view link please Вход or Регистрация
-t 16 -d 1 -w files_interesting.txt Результат сканирования файлов с помощью feroxbusterНам доступно несколько интересных файлов. Увы, robots.txt оказался пустым, однако из .htaccess узнаём настройки доступа.
curl
You do not have permission to view link please Вход or Регистрация
Содержимое файла .htaccess Точка входа
При тестировании формы авторизации я обнаружил, что если попытаться зарегистрировать второго пользователя на тот же почтовый ящик, то появится страница с ошибкой. Из нее мы выяснили, что сайт сделан на фреймворке Laravel.
Ошибка регистрации пользователя
Также здесь из‑за неправильной настройки Nginx возможна уязвимость типа Nginx Alias Traversal. Подробно я ее разбирал в райтапе по машине Pikaboo. Попробуем подобрать имя файла, используя обход каталога /assets../.
feroxbuster -k -u
You do not have permission to view link please Вход or Регистрация
-t 8 -d 1 -w files_interesting.txt Результат сканирования файлов с помощью feroxbusterНаходим много интересного, к примеру файл .env, содержащий настройки служб.
Содержимое файла .env
Также доступен каталог .git, что дает нам возможность получить исходные коды сайта с помощью git-dumper.
mkdir git git-dumper
You do not have permission to view link please Вход or Регистрация
./gitРаботать с git-репозиторием можно через VS Code.
История коммитов
Просматривая файлы сайта, узнаём о наличии роли isAdmin (строка 41).
Содержимое файла User.php
При этом в файле ProfileController.php при обновлении свойств профиля пользователя нет никакой проверки отправляемых параметров (строки 19–33).
Содержимое файла ProfileController.php
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
-60% |
1 год
9990 рублей 4000 р.
[TD]
1 месяц
920 р.
[/TD]
Я уже участник «Xakep.ru»