Вспоминаем, что у нас есть JWT: это токен, который состоит из трёх "блоков" - заголовок (тут передаём алгоритм шифрования), "полезная нагрузка" (могут передаваться данные о пользователе, информация о токене и его параметры, и прочее) и подпись.
1) Итак, первое с чего начинаем - шифрование. Если для подписи использованы слабые секретные ключи, то перехватив такой токен, можно запустить по нему brute-force офлайн режиме.
2) Расшифровав токен, можно его изменить - например, из заголовка убрать алгоритм (alg: none), поколдовать с флагами во второй части и выкинуть подпись. И если сервер некорректно настроен, то он может принять такой токен. А ещё, если используется асимметричное шифрование, можно заменить алгоритм на симметричный, подписать публичным ключом, и сервер примет этот токен уже по симметрии - ключ-то сошёлся.
3) Шифрование пошифровали, подпись подписали, а поля проверить забыли - логические ошибки валидации и утечки. Если не настроена проверка полезной нагрузки, в например, поля время истечения, то страый или украденный токен будет работать вечно.
4) Бонус - путаем кодирование и шифрование. Токен передаётся в закодированным виде в Base64Url, кодировку легко вернуть в исходный вид, и если предварительно данные не зашифрованы, то токен передаётся по сути "в голом виде".
#ПолеСобесов
🧠 Кибер ПТУ | 👨🏫 Менторство ИБ
📂 Другие каналы
1) Итак, первое с чего начинаем - шифрование. Если для подписи использованы слабые секретные ключи, то перехватив такой токен, можно запустить по нему brute-force офлайн режиме.
2) Расшифровав токен, можно его изменить - например, из заголовка убрать алгоритм (alg: none), поколдовать с флагами во второй части и выкинуть подпись. И если сервер некорректно настроен, то он может принять такой токен. А ещё, если используется асимметричное шифрование, можно заменить алгоритм на симметричный, подписать публичным ключом, и сервер примет этот токен уже по симметрии - ключ-то сошёлся.
3) Шифрование пошифровали, подпись подписали, а поля проверить забыли - логические ошибки валидации и утечки. Если не настроена проверка полезной нагрузки, в например, поля время истечения, то страый или украденный токен будет работать вечно.
4) Бонус - путаем кодирование и шифрование. Токен передаётся в закодированным виде в Base64Url, кодировку легко вернуть в исходный вид, и если предварительно данные не зашифрованы, то токен передаётся по сути "в голом виде".
#ПолеСобесов
🧠 Кибер ПТУ | 👨🏫 Менторство ИБ
📂 Другие каналы