
Signing HTTP Messages draft-ietf-httpbis-message-signatures-01 ドラフトを実装する Burp Suite 拡張機能。
HTTPSignatures Burp Suite 拡張機能HTTPSignatures は、Signing HTTP Messages draft-ietf-httpbis-message-signatures-01 仕様草案を実装した Burp Suite 拡張機能です。
これにより、Burp Suite ユーザーは HTTP Signatures を必要とするアプリケーションをシームレスにテストできます。
rsa-sha256 アルゴリズム(RSASSA-PKCS1-v1_5 [RFC8017] を SHA-256 [RFC6234] で使用)、およびダイジェストヘッダー用の SHA-256 をサポートします。最新の JAR リリース ファイルをダウンロードし、Burp Suite の Extender タブ / Extensions / Add から追加します。
Header Name、keyId、Private key file name and path の設定が必要です。詳細は以下を参照してください。Header Name を含む各リクエストに対して新しい署名を生成します。HTTPSignatures が正しく設定されると、Burp Suite 拡張機能は、Burp Proxy、Repeater、Intruder、Scanner を介して送信されるすべての HTTP リクエストについて、Header Name 設定で構成された HTTP ヘッダー値(例: Signature)を新しい署名に置き換えます。

Burp Suite 拡張機能は、使用する前に設定する必要があります。
HTTPSignatures 設定は、読み込み後に Burp メニューに表示されます(通常は Help メニューの右側)。
Header Name、keyId、Private key file name and path を正しく設定する必要があります。
残りの設定はオプションで調整できます。
ヘッダー名:(サンプル値: Authorization、Signature): 署名を含む HTTP リクエストヘッダーの名前。
IETF ドラフトは Signature ヘッダー名を使用しています。Oracle Cloud (OCI) は Authorization ヘッダー名を使用しています。
keyId: keyId パラメータは、検証者が署名の検証キーを識別および/または取得するために使用する US-ASCII 文字列です。
サンプル値は、https://mastodon.example.com/users/myUser(ActivityPub 用)や、OCI の場合は ocid1.tenancy.oc1.../ocid1.user.oc1.../{fingerprint} のようになります。
秘密鍵のファイル名とパス: 秘密鍵を含む完全なパスとファイル名(例: /home/${USER}/private_key.pem)。
ダイジェストヘッダー名: ダイジェストを含むヘッダーの名前。これは、OCI の場合は x-content-sha256、その他のほとんどの実装では digest のいずれかです。
署名対象ヘッダー名: GET: GET リクエストに含めるヘッダー名(例: date (request-target) host)。
の値は、リクエストメソッドとリクエスト URI のパスおよびクエリから構成される特別な識別子です(例: )。
HTTPSignatures 設定では、タブで複数のプロファイルを構成できます。
... タブをクリックして新しいタブを作成します。
タブをダブルクリックすると、タブに名前を付けることができます。
タブを保存するには、「Save」ボタンをクリックします。
タブをアクティブなプロファイルとしてマークするには、「Use this profile」ボタンをクリックします。
アクティブなタブ(プロファイル)は、赤いフォントと枠線でマークされます。
グローバル設定セクションには、すべてのプロファイルに適用される設定が含まれます。
以下の Burp Suite ツールに対して拡張機能を有効にする: 拡張機能は、以下の Burp Suite ツールに対して有効または無効にできます:
Proxy はデフォルトで無効です。他のツールはデフォルトで有効です。Proxy ツールは通常、インターセプト機能を使用する場合にのみ有効にしてください。拡張機能は、無効になっている間は署名を更新しません。
デバッグログを有効にする: このチェックボックスを有効にすると、デバッグログが標準出力に出力されます。 出力は、Burp Suite の Extender -> Extensions で Signing HTTP Messages 拡張機能を選択して設定できます。 Output タブでは、標準出力を表示する場所を選択できます。 デフォルトは Shown in UI で、出力は Burp Suite 内に表示されます。
ActivityPub は、サーバー間の認証と認可 に HTTP Signatures を使用します。
Signaturehttps://mastodon.online/users/viktor。
curl を使用してキーを取得できます: curl https://mastodon.online/users/viktor -H 'Accept: application/activity+json'|jq/home/user/private_key.pemdigestdate (request-target) hostdate (request-target) hostdate (request-target) hostdate (request-target) host content-length content-type digestdate (request-target) host content-length content-type digestすべての Oracle Cloud Infrastructure (OCI) API リクエストは HTTP Signatures を必要とします。 この実装は、いくつかの変更を加えたドラフト仕様に基づいています。
Authorization<TENANCY OCID>/<USER OCID>/<KEY FINGERPRINT>(例: ocid1.tenancy.oc1..<unique_ID>/ocid1.user.oc1..<unique_ID>/<key_fingerprint>)/home/user/private_key.pemx-content-sha256date (request-target) hostdate (request-target) hostdate (request-target) hostdate (request-target) host content-length content-type x-content-sha256date (request-target) host content-length content-type x-content-sha256trueHTTPSignatures フォルダを Open or Import します。out/artifacts/HTTPSignatures_jar/HTTPSignatures.jar に作成されます。mvn package assembly:single でプロジェクトをコンパイルし、JAR ファイルを作成します。target/HTTPSignatures-1.0-SNAPSHOT-jar-with-dependencies.jar に作成されます。Java プロジェクトのビルドには 3 つの依存関係が必要です:
(request-target)get /foo?param=value署名対象ヘッダー名: HEAD: HEAD リクエストに含めるヘッダー名(例: date (request-target) host)。
署名対象ヘッダー名: DELETE: DELETE リクエストに含めるヘッダー名(例: date (request-target) host)。
署名対象ヘッダー名: PUT: PUT リクエストに含めるヘッダー名(例: date (request-target) host content-length content-type digest)。
署名対象ヘッダー名: POST: POST リクエストに含めるヘッダー名(例: date (request-target) host content-length content-type digest)。
署名にクエリパラメータを含める: クエリパラメータ(例: ?param=value)を署名に含めるかどうかを指定するブール値です。
ドラフト標準ではクエリパラメータは (request-target) 識別子の一部であると規定されていますが、すべての実装がクエリパラメータを含めるわけではありません。
デフォルト値は true です。
署名にポートを含める: 一部の実装では、host ヘッダーにポートを含めません(例: localhost:8080)。
この設定を false にすると、host ヘッダー値からポートを削除できます。
デフォルト値は true です。
truetruetrue