Категория > Новости > 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 потоков). Burp Intruder, вкладка PositionBurp Intruder, вкладка PayloadBurp Intruder, вкладка OptionsРезультат атаки Фильтруем по размеру ответа и видим, что удалось прочитать файл Ошибка чтения файла environ Давай взглянем, что интересного может дать код в файле
book=../includes/bookController.php&method=1
Часть исходного кода bookController.phpТак, в файле происходит включение файла Часть исходного кода db.php Так мы находим учетку от базы данных. Но что с ней теперь делать, если к доступным нам сервисам она не подходит? Поищем, нет ли еще чего‑нибудь на сайте. Для перебора путей с целью поиска скрытых страниц (тех, на которые снаружи нет ссылок) обычно используют программы вроде dirsearch, dirb или более быстрый gobuster. Но я последнее время использую встроенные средства Burp Suite. Перехватываем запрос в Burp Proxy и отправляем в Burp Intruder. Затем отмечаем позицию для перебора, выставляем словарь и количество потоков, после чего выполняем атаку. Burp Intruder, вкладка PositionsBurp Intruder, вкладка PayloadsBurp Intruder, вкладка OptionsРезультат атаки Так мы находим несколько директорий, часть из которых нам уже известна. Но мы еще не были в каталоге Форма авторизации Удобно, что мы можем посмотреть исходник этого файла, сделав запрос Исходный код login.php В исходном коде видим подключение еще одного нового для нас файла — Исходный код authController.php А вот уже здесь находим прямую ссылку на Список пользователей сайта В исходном коде находим уже больше интересной информации. Исходный код admins.php В коде мы видим использование JWT, секретный ключ и вызов функции Исходный код cookie.php Точка опорыJSON Web TokenJSON Web Token (JWT) состоит из трех частей: заголовка (header), полезной нагрузки (payload) и подписи. Заголовок и полезная нагрузка представляют собой объекты JSON, при этом нагрузка может быть любой — это именно те критические данные, которые передаются приложению. А вот заголовок содержит определенные поля: алгоритм и тип токена. Третий элемент вычисляется на основании первых и зависит от выбранного алгоритма. Токены могут быть перекодированы в компактное представление: к заголовку и полезной нагрузке применяется алгоритм кодирования Base64-URL, после чего добавляется подпись и все три элемента разделяются точками. Перейти обратно к новости |