Kot_oo

One Level
03.04.2025
4
6
Добрый день коллеги продолжаем по традиции райты по таску писать. На этот раз ну "очень легкий таск", я так думал!!! Забегая на будущее обращаюсь к админам - сделайте таск проще!!! по крайней мере в получении секретки, не известно в каком списке угнанных паролей искать!!! Прошу написать в комменты, может я, что не так делаю.

Ну вообщем погнали разбирать таск

1.webp

Все традиционно, заходим по ссылке и видим

2.webp


Кто не разбирается как и я, мы тут нифига для себя не видим xD. Ну начнем искать хоть какую то информацию по jwt, спустя "n" количество часов, что то начинаем понимать.
Нам нужно сгенерировать токен "/gen-kwt/{name}", генерируется он с вашим именем + админка false + секретка (верификация) + алгоритм шифрования;
Далее смотрим "/check-jwt/{jwt_token}", тут проверяется наш сгенерированный токен и дальше видим, что при декодировании, смотрит токен + секретку + алгоритм;
Дальше проверка уже.

Предыстория: Я долго пытался понять, что тут надо. И пробовал куками подкинуть запрос как из уроков, и алгоритмы в "none" ставить. Ничего не помогали и ничего не мог понять. Как и говорил спустя "n" часов чет сдвинулось с мертвой точки.

Давайте сгенерируем токен (имя может быть любое)


3.webp


4.webp


Полученный токен записываем в блокнот.

{"jwt":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoibmFtZSIsImlzQWRtaW4iOmZhbHNlfQ.4V1Bp8mDNbYCNaLJiETmNZUSGEBtS0suGtPBR7w_FSk"}

Давайте проверим его через чек. Получаем вывод данных как из проверки


5.webp


Переходим в burp и проверяем, что он у нас насобирал. В последнее время стал пользоваться встроенным браузером

6.webp


Отправляем наш запрос в репитер

7.webp


Переходим во вкладку JSON WEB Token
Здесь нам нужно поменять будет поле isAdmin на true

8.webp


Отправляем запрос и получаем в ответ, что верификация провалена, нам нужна "Секретка"

9.webp


Копируем наш токен из burp или из блокнота куда мы сохраняли токен

10.webp


Переходим в hashcat. ставим параметры -a 0 ( мод атаки 0) -m 16500 (метод jwt из таблице по hashcat --help) далее вставляем свой токен и вставляем файл со слитыми паролями


Сразу скажу там нигде нету секретки
По рекомендации коллеги добавил в файл с паролями значение CODEBY , CODEBY{

11.webp


Получаем секретку в конце токена :CODEBY{

12.webp


Переходим в JSON Web Tokens и проверяем на достоверность
В первое поле вставляем свой токен, во второе вставляем секретку

Получаем зеленое поле сигнатура верифицирована

13.webp

Переходим в декодер и кодим в base64 нашу секретку и закидываем в блокнот

14.webp


Далее переходим и создаем ключ для подписания (верификации)

Сначала генерируем ключ, потом меняем поле "k" на нашу закодированную секретку из блокнота


15.webp


Далее меняем значение на true, кликаем sign, выбираем наш ключ и жмем ок

16.webp


Отправляем запрос и получаем флаг

17.webp


Спасибо коллеге за наводку с секреткой, сам бы не догадался, но по честному прошел весь этап! Думаю у вас тоже получится!

Критика принимается, и жду ответ от админов по поводу секретки :))))

и по традиции

«Не стыдно не знать, стыдно не учиться» — русская пословица.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!