Категория > Новости > HTB Breadcrumbs. Атакуем Apache на Windows и эксплуатируем уязвимость JWT - «Новости»
HTB Breadcrumbs. Атакуем Apache на Windows и эксплуатируем уязвимость JWT - «Новости»23-07-2021, 00:01. Автор: Cramer |
Hack The Box. На ее примере мы проэксплуатируем LFI, чтобы прочесть исходники сайта, затем подберем JWT для авторизации в качестве админа. После проникновения на сервер пореверсим самописный менеджер паролей и проведем в нем SQL-инъекцию для получения рута. В общем, скучать не придется!warningПодключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками. Разведка. Сканирование портовМашина имеет IP-адрес 10.10.10.228, который я добавляю в
10.10.10.228 breadcrumbs.htb
Любая атака начинается со сканирования открытых на хосте портов. Делаем это при помощи скрипта, где через Nmap производится обычное быстрое сканирование портов, а затем из вывода берутся все порты и повторяется сканирование только обнаруженных портов со скриптами (опция -A). ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1 Результат работы скриптаКак это обычно бывает на машинах с Windows, по результатам сканирования имеем много открытых портов:
Остальное не представляет для нас интереса. На SSH нам сейчас ловить нечего, поскольку учеток у нас нет, да и SMB для анонима интереса не представляет. Раз есть веб‑сайт, начинать лучше всего с него. Сайт позволяет искать книги по библиотеке. Тестовый поиск ![]() Анализировать страницы лучше всего через Burp Suite, который сохранит и наглядно отобразит все запросы и ответы. Просматривая страницы, обратим внимание на способ запроса книги: название HTML-файла с книгой передается исполняемому файлу, который затем включит этот файл в ответ. Запрос книги, представленный Burp Точка входа. Эксплуатация LFIЭто потенциальная уязвимость LFI, которую стоит проверить. Есть хорошее средство для тестов LFI — LFI Suite. Но так как оно работает медленно, то возьмем из него только словарь и выполним тест с помощью Burp Intruder (в версии Pro ставим 120 потоков). ![]() ![]() ![]() ![]() Фильтруем по размеру ответа и видим, что удалось прочитать файл Ошибка чтения файла environ Давай взглянем, что интересного может дать код в файле
book=../includes/bookController.php&method=1
Часть исходного кода bookController.phpТак, в файле происходит включение файла Часть исходного кода db.php Так мы находим учетку от базы данных. Но что с ней теперь делать, если к доступным нам сервисам она не подходит? Поищем, нет ли еще чего‑нибудь на сайте. Для перебора путей с целью поиска скрытых страниц (тех, на которые снаружи нет ссылок) обычно используют программы вроде dirsearch, dirb или более быстрый gobuster. Но я последнее время использую встроенные средства Burp Suite. Перехватываем запрос в Burp Proxy и отправляем в Burp Intruder. Затем отмечаем позицию для перебора, выставляем словарь и количество потоков, после чего выполняем атаку. ![]() ![]() ![]() ![]() Так мы находим несколько директорий, часть из которых нам уже известна. Но мы еще не были в каталоге ![]() Удобно, что мы можем посмотреть исходник этого файла, сделав запрос ![]() В исходном коде видим подключение еще одного нового для нас файла — ![]() А вот уже здесь находим прямую ссылку на Список пользователей сайта В исходном коде находим уже больше интересной информации. Исходный код admins.php В коде мы видим использование JWT, секретный ключ и вызов функции Исходный код cookie.php Точка опорыJSON Web TokenJSON Web Token (JWT) состоит из трех частей: заголовка (header), полезной нагрузки (payload) и подписи. Заголовок и полезная нагрузка представляют собой объекты JSON, при этом нагрузка может быть любой — это именно те критические данные, которые передаются приложению. А вот заголовок содержит определенные поля: алгоритм и тип токена. Третий элемент вычисляется на основании первых и зависит от выбранного алгоритма. Токены могут быть перекодированы в компактное представление: к заголовку и полезной нагрузке применяется алгоритм кодирования Base64-URL, после чего добавляется подпись и все три элемента разделяются точками. Перейти обратно к новости |