TGViewer
Monkey Hacker Monkey Hacker @monkey_hacker · 785 subscribers
Post #59 1.19K
JWT header parameter injections

Согласно спецификации JWS, обязательным является только параметр alg. Однако на практике заголовки JWT часто содержат несколько других параметров. Следующие из них представляют особый интерес для нас.

jwk (JSON Web Key) - Предоставляет встроенный объект JSON, представляющий ключ.

jku (JSON Web Key Set URL) - Предоставляет URL, по которому серверы могут получить набор ключей, содержащих правильный ключ.

kid (Key ID) - предоставляет идентификатор, который серверы могут использовать для определения правильного ключа в случаях, когда есть несколько ключей на выбор. В зависимости от формата ключа, он может иметь соответствующий параметр kid.

Как вы видите, эти контролируемые пользователем параметры указывают серверу-получателю, какой ключ использовать при проверке подписи.

Спецификация JSON Web Signature (JWS) описывает дополнительный параметр заголовка jwk, который серверы могут использовать для встраивания своего открытого ключа непосредственно в сам токен в формате JWK.

{
{
"kid": "ed2Nf8sb-sD6ng0-scs5390g-fFD8sfxG",
"typ": "JWT",
"alg": "RS256",
"jwk": {
"kty": "RSA",
"e": "AQAB",
"kid": "ed2Nf8sb-sD6ng0-scs5390g-fFD8sfxG",
"n": "yy1wpYmffgXBxhAUJzHHocCuJolwDqql75ZWuCQ_cb33K2vh9m"
}
}


В идеале серверы должны использовать только ограниченный белый список открытых ключей для проверки подписей JWT. Однако неправильно настроенные серверы иногда используют любой ключ, встроенный в параметр jwk.

Вы можете использовать это поведение, подписав модифицированный JWT с помощью собственного закрытого ключа RSA, а затем вставив соответствующий открытый ключ в заголовок jwk.
Хотя вы можете вручную добавить или изменить параметр jwk в Burp, расширение JWT Editor предоставляет полезную функцию, которая поможет вам проверить эту уязвимость:

Сгенерируйте новый ключ RSA.

Отправьте запрос, содержащий JWT, в Burp Repeater.

Измените пэйлоад токена по своему усмотрению.

Выберите Embedded JWK. Когда появится запрос, выберите только что сгенерированный RSA-ключ.

Отправьте запрос, чтобы проверить, как ответит сервер.

Вы также можете выполнить эту атаку вручную, добавив заголовок jwk самостоятельно. Однако вам также может понадобиться обновить параметр kid заголовка JWT, чтобы он соответствовал kid встроенного ключа. Встроенная атака расширения сделает этот шаг за вас.
GitHub GitHub - blackberry/jwt-editor: A Burp Suite extension and standalone application for creating and editing JSON Web Tokens. This… A Burp Suite extension and standalone application for creating and editing JSON Web Tokens. This tool supports signing and verification of JWS, encryption and decryption of JWE and automation of se...
  • ❤ 4
More from @monkey_hacker
  1. Aug 28, 2024First hop, second hop Как-то увидел понятие Double Hop в Kerberos. Думал, что ничего в нем…
  2. Apr 10, 2024Вопрос собесов - один из самых популярных. Что надо знать, как собесят и как собесить - по…
  3. Apr 10, 2024У меня тут есть знакомый, который решил рассказывать про ИБ с перспективы менеджера, поэто…
  4. Apr 8, 2024Kubectl apply Йо, сегодня я принес несколько ссылочек, где можно почитать про работу разли…
  5. Jan 16, 2024Oh yes, ping pong Под конец прошлого года, прошла шумиха с Apache Ofbiz, который позволял…
  6. Dec 31, 2023Пора и мне сказать что-то ✨ В этом году я очень старался повысить свои навыки, а вы могли…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →