0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【76個目】【JWT】JWT authentication bypass via weak signing key

Posted at

JWT authentication bypass via weak signing key

概要

解読容易な署名キーを特定する

調査

  • adminのように管理者が利用すると思われる画面は存在するか
  • JWTで認証されているか

攻撃手順

  • hashcatを使用してJWTを検証する秘密鍵を特定する
  • ペイロードのnameをadministratorに変更し、特定した秘密鍵で署名し直す
  • 変更したJWTを使用して管理者画面にアクセスする

対策

  • 多いバイト数の文字列のように強力な秘密鍵に設定する

クリアするまでにかかった時間

  • 50m

所感

リスト次第でさらに脅威な攻撃になり得ると思った。今回はデフォルトキーを狙ったものだったので、開発者は必ずデフォルトから変更することが重要だと感じた。

メモ

  • hashcatはJWTとsecret listを使って何をしているのか

    • hashcat -a 0 -m 16500 <YOUR-JWT> /path/to/jwt.secrets.listの意味
      • -a 0: ストレートアタックモードを指定。これは、パスワードリストから直接パスワードを試す方法です。
      • -m 16500: JWTのハッシュタイプを指定。16500はJWTのHMAC SHA-256署名に対応しています。
      • <YOUR-JWT>: 攻撃対象のJWTトークンを指定します。
      • /path/to/jwt.secrets.list: 署名キーの候補が含まれるパスワードリストのパスを指定します。
        • このリストには秘密鍵の候補が羅列させれている。hashcatは指定されているJWTのヘッダーとペイロードをリストで署名した結果とJWTの3つ目のカンマの後の値が同一かで特定する。
      • これにより、hashcatは指定されたJWTトークンの署名を検証するために、リスト内の各キーを試し、正しい署名キーを見つけ出します。
  • burpでselcret1をbase64エンコード

    • burpかエンコードされた値を要求するため
  • jwtのペイロードのnameをadministratorに変更

    • このペイロードを署名した値がサーバで検証されて管理者として扱われるため
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?