| Категория >  Новости > HTB Unicode. Подделываем токен JWT и захватываем сервер через curl - «Новости» HTB Unicode. Подделываем токен JWT и захватываем сервер через curl - «Новости»9-05-2022, 00:01. Автор: Борис | 
| Hack The Box. warningПодключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками. РазведкаСканирование портов Добавляем IP-адрес машины в  10.10.11.126   unicode.htbИ запускаем сканирование портов. Справка: сканирование портовСканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа. Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта. ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция   Мы нашли два открытых порта: 
 Начнем с исследования сайта. Главная страница сайта На первой же странице видим открытый редирект. Это стоит отметить, так как редиректы можно использовать для обхода ряда фильтров и проверок. Также на сайте есть возможность зарегистрироваться и авторизоваться. Сделаем и то и другое. Работу желательно вести в Burp Proxy, чтобы у нас оставались все записи. Burp Proxy После логина видим редирект с присвоенным идентификатором сессии  Главная страница сайта после авторизации Удалось найти форму загрузки файлов, но ее тестирование ни к чему не привело. Вернемся к идентификатору сессии — это JWT. JSON Web Token состоит из трех частей: заголовка (header), полезной нагрузки (payload) и подписи. Заголовок и полезная нагрузка представляют собой объекты JSON, при этом нагрузка может быть любой, это именно те критически важные данные, которые передаются приложению. Заголовок содержит определенные поля: 
 Третий элемент вычисляется на основании первых и зависит от выбранного алгоритма. Токены могут быть перекодированы в компактное представление: к заголовку и полезной нагрузке применяется алгоритм Base64-URL, после чего добавляется подпись и все три элемента разделяются точками. К примеру, можно с помощью Burp Inspector декодировать заголовок. Декодированный заголовок Попробуем разобрать эти данные. Для этого нам понадобится либо приложение jwt_tool, либо онлайновый ресурс jwt.io. Я буду использовать второй вариант. В заголовке у нас присутствует параметр  Декодирование JWT Вернемся к параметру  10.10.11.126   hackmedia.htb unicode.htbJSON Web Key Set (JWKS) — это набор открытых ключей, которые используются для проверки веб‑токена, выпущенного сервером авторизации и подписанного с использованием алгоритма подписи RS256. RS256 генерирует асимметричную подпись. Чтобы подписать JWT, должен использоваться закрытый ключ, а для проверки подписи нужен другой открытый ключ. Просмотреть структуру JWKS мы можем, обратившись к URL, указанному в jku, —  Используемый JWKS Дальнейший вектор очевиден: необходимо изменить имя пользователя на  Точка входаТеперь разберемся с подписью. В заголовке указан адрес JWKS, что дает нам следующую идею: сгенерировать свою пару ключей для подписи токена и соответствующий им JWKS. Мы поместим JWKS на своем веб‑сервере и затем в заголовке пропишем адрес, указывающий на этот сервер. Для генерирования ключей воспользуемся сайтом mkjwk.org. Выставим используемые параметры и получим ключи. Генерирование ключей Теперь вернемся к токену на jwt.io. Изменим имя пользователя на  Создание JWT-токена Вставляем данный токен в Burp и после запроса получаем ответ об ошибке проверки   При этом на наш веб‑сервер запрос не пришел. Значит, есть проверка того, какой сервер указан в  http://hackmedia.htb/static/../redirect/?url=10.10.14.73/jwks.json При использовании нового JWT видим, что на наш сервер пришел запрос.  Но доступ мы не получаем. Скорее всего, это связано с данными в файле JWKS. Просмотрим тогда файл с сервера и изменим в нем только параметр  Панель администратора В итоге получаем административную панель. Точка опорыИзучая сайт, сразу натыкаемся на страницу, которая передает контент в параметре.  Попробуем указать там какой‑нибудь файл, например   Тогда я применил словарь, в котором содержатся разные способы обхода фильтров для LFI, и получил отличную от остальных реакцию сервера.  Перейти обратно к новости |