Содержание статьи
Наша конечная цель — получить права суперпользователя на машине Sorcery с учебной площадки Hack The Box. Уровень сложности — «безумный».
warning
Подключаться к машинам HTB лучше через средства анонимизации и виртуализации. Не делай этого с компьютеров, где хранятся важные для тебя данные: ты окажешься в общей сети с другими участниками.
Разведка
Сканирование портов
Добавляем IP-адрес машины в /:
10.10.11.73 sorcery.htb
Запускаем сканирование портов.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи такого скрипта:
#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '' ',' | sed s/,$//)nmap -p$ports -A $1Он действует в два этапа. На первом выполняется обычное быстрое сканирование, на втором — более тщательное, с использованием встроенных скриптов (опция -A).
Подробнее про работу с Nmap читай в статье «Nmap с самого начала. Осваиваем разведку и сканирование сети».

Сканер нашел два открытых порта:
- 22 — OpenSSH 9.6p1;
- 443 — веб‑сервер Nginx 1.27.1.
Поле commonName в SSL-сертификате содержит доменное имя сайта. Оно уже записано у нас в /.

Точка входа
На странице можно зарегистрироваться и войти по учетным данным или с помощью токена Passkey. После регистрации получаем список постов.

В настройках профиля можно записать Passkey на токен.

Раз мы знаем реальный домен сайта, попробуем методом перебора найти и другие — это расширит область тестирования. Для сканирования поддоменов можно использовать ffuf.
Справка: сканирование веба c ffuf
Одно из первых действий при тестировании безопасности веб‑приложения — это сканирование методом перебора каталогов, чтобы найти скрытую информацию и недоступные обычным посетителям функции. Для этого можно использовать программы вроде dirsearch и DIRB.
Я предпочитаю легкий и очень быстрый ffuf. При запуске указываем следующие параметры:
-
-u— URL; -
-w— словарь (я использую словари из набора SecLists); -
-t— количество потоков; -
-r— выполнять редиректы; -
-fs— фильтровать страницы по размеру; -
-fc— исключить из результата ответы с кодом 403.
Место перебора помечается словом FUZZ.
Запускаем сканер, перечислив все параметры:
ffuf -u "https://sorcery.htb/" -H 'Host: FUZZ.sorcery.htb' -w subdomains-bitquark-top100000.txt -t 128

В вывод утилиты попали все варианты из списка, поэтому лучше использовать фильтры, например по размеру ответа (параметр -fs).
ffuf -u "https://sorcery.htb/" -H 'Host: FUZZ.sorcery.htb' -w subdomains-bitquark-top100000.txt -t 128 -fs 169

Находим новый ресурс и обновляем запись в файле /.
10.10.11.73 sorcery.htb git.sorcery.htb

В списке публичных проектов есть доступный без авторизации infrastructure.


У репозитория есть одна активная задача, где речь идет об инъекции SQL-запроса в базу данных.

Точка опоры
Cypher Injection
Скачиваем исходный код из репозитория и находим все обработчики запросов. Один из GET-обработчиков принимает id и по нему возвращает нужный объект Product.

Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
