BurpSuiteのExtension「JWT Editor」でJWTの中身を調査・改変する

JWT Editorの概要

JWT Editorとは、Json Web Token(JWT)を検証するためのBurpSuiteのExtenstionです。
JWTのPayload部(データ部)の内容を改変したり、新しい署名鍵を生成してJWTを署名し直したりすることができます。
Json Web Token(JWT)の概要についてはこちらの記事で解説しています。
 
公式の使い方説明やソースコードは、GitHubレポジトリで閲覧可能です。
 
インストールはBurpSuiteを起動し、「Extensions」タブの「BApp Store」からインストールできます。
 

JWT Editorの使い方

以降ではJWT Editorの使い方を検証ラボ「JWT authentication bypass via jwk header injection」を攻撃する例で説明します。

署名用の鍵を生成する

「JWT Editor Keys」タブを開きます。
RSA用の鍵を作るには「New RSA Key」をクリックします。
 
「Generate」をクリックすることで鍵が生成されます。
 
 

JWTの中身を編集する(生成した鍵で署名する)

攻撃対象のリクエストをRepeaterへ送信します。
今回はユーザ「wiener」でログインし、My Accoutページへアクセスした際の通信が攻撃対象です。
このリクエストに含まれるJWTを改変し、ユーザ「administrator」でアクセスできるかを確認していきます。
 
Extensionをインストール後にJWTを含むリクエストをRepeaterで開くと、「JSON Web Token」タブが現れます。
「JSON Web Token」タブで、「sub」クレームを「wiener」から「administrator」に改変し、「Attack」をクリックします。
前の手順で作成した署名鍵を利用するには「Embedded JWK」をクリックします。
 
「Embedded JWK」をクリック後はHeader部が変わり、「jwk」クレームに署名用鍵の情報が埋め込まれました。
リクエストを送信すると、改変したJWTが正常に使え、レスポンスにユーザ「administrator」のMy Accout画面が表示されました。
 

関連リンク