Comments 8
Я что-то не понял, JWT токен имеет подпись, если в нем подменить значение поля - подпись станет недействительной
Это история про то что кто-то использовал JWT без проверки подписи?
Насколько я понимаю каждый раз JWT подписывался корректно, просто значение realm бралось любое, которое передано в POST запросе и можно было его менять.
Автор делал запрос, в котором мог менять параметр, а сервер уже генерил токен и отдавал валидный JWT с этим параметром.
Я больше не понял как убирание bearer позволило принять токен за админский -_-
Скорее всего где-то косят в парсинге/регулярный выражениях был и без bearer сравнение успешно проходило. Например так: что-то где-то при разборе возвращало "bearer" и токен. И если вместо "bearer" получался какой-нибудь null и дальше было кривое сравнение на JS/TS (какое-нибудь сравнение с отрицанием), то результат вполне могу получаться "true".
А может быть где-то внутри исключение выбрасывалось и тихо перехватывалось (отлаживали и забыли убрать). Но это жёсткий прохлоп.
Очень интересно, спасибо за статью!
Очень очень приятный пост. Пиши ещё)
Автору спасибо, за перевод! Читается будто книга в стиле киберпанк детектива. Но я не могу найти, где автор нашел список realm'ов. В исходниках?
23 000 $ за обход аутентификации, загрузку файлов и произвольную перезапись файлов