Содержание статьи
Наша конечная цель — получить права суперпользователя на машине 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.

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