CSRF PoC生成
指定したリクエストに対するクロスサイトリクエストフォージェリ(CSRF)攻撃の概念実証(PoC)を生成します。
この機能にアクセスするには、Burp内の任意の場所でURLまたはHTTPリクエストを選択し、コンテキストメニューの関連ツールのCSRF PoC生成を選択します。
この機能を実行すると、選択した完全なリクエストを上部パネルに、生成されたCSRF HTMLを下部パネルに表示します。ブラウザに必要なリクエストを生成させるため、HTMLはフォームやJavaScriptを使用します。
リクエストを手動で編集し再生成ボタンをクリックすると、更新されたリクエストを元にCSRF HTMLを生成します。
ブラウザでテストボタンを使用すると、生成されたPoCの有効性をBurpブラウザでテストできます。このオプションを選択すると、ブラウザにペーストできる一意なURLが生成されます。ブラウザがリクエストするとBurpは現在のHTMLを表示するので、行われたリクエストの結果をProxy経由で監視すればPoCが有効かどうかを判断できます。
CSRF手法に関していくつか注意すべき点があります。
-
クロスドメインXmlHttpRequest (XHR)手法は、クロスオリジンリソース共有(CORS)をサポートする最新のHTML5対応ブラウザでのみ動作します。この手法は、Firefox、Chromeの現在のバージョンでテストされています。ブラウザでJavaScriptを有効にする必要があります。この手法では、ブラウザは通常の方法でアプリケーションのレスポンスを処理しないため、反射型クロスサイトスクリプティング(XSS)を実現するクロスドメインのリクエストを生成するには適していません。クロスドメインXHRにはさまざまな制限があり、一部のリクエスト機能では動作しない可能性があります。動作しなさそうな場合には、CSRF PoCジェネレータ内に警告が表示されます。
-
一部のリクエストには、フォーム以外の方法で生成されるプレーンテキストエンコーディングのボディ(たとえばXMLやJSON)や、クロスドメインのXHRがあります。前者の場合、リクエストには"Content-Type: text/plain"ヘッダが含まれます。後者の場合、リクエストには任意のContent-Typeヘッダを指定できますが、通常のHTMLフォームに指定できる標準的なContent-Typeが指定されている場合のみ、"単純な"クロスドメインリクエスト(つまり攻撃対策のプリフライトリクエストが必要ない)として許可されます。場合によって、メッセージボディ本文が攻撃リクエストと完全に一致していても、予期しないContent-Typeヘッダの場合、アプリケーションはリクエストを拒否する場合があります。そのようなCSRFっぽいだけの状態だと、実際に悪用できないかもしれません。動作しなさそうな場合には、CSRF PoCジェネレータ内に警告が表示されます。
-
手動で選択したCSRF手法を使用して必要なリクエストを生成できない場合、Burpは最良の生成をし、警告を表示します。
-
CSRF PoCジェネレータがプレーンテキストエンコーディングを使用している場合、期待するボディになるHTMLをBurpが生成するには、リクエストボディに必ず=記号が含まれていなければなりません。元のリクエストが=記号を含まない場合、サーバの処理に影響を与えないように、リクエスト内の適切な位置に=記号を記述してください。
CSRF PoCオプション
次のオプションがあります:
-
CSRFテクニック - CSRFリクエストを生成するHTMLで使用するCSRF手法を指定できます。通常は自動オプションでよく、必要なリクエストを生成できる最も適切な手法をBurpが選択します。
-
自動サブミットスクリプトを含める - このオプションを使用すると、ページが読み込まれた際に、JavaScriptが有効なブラウザでCSRFリクエストが自動的に発行されるよう、HTMLにスクリプトを含めます。