はじめに
この実験 (lab) では、アプリケーションのセッショントークンのランダム性の品質を分析するための強力なツールである Burp Suite 内の Burp Sequencer の使用方法を学びます。予測可能なセッショントークンは、攻撃者によって推測または計算される可能性があり、セッションハイジャックの脆弱性につながります。
この実験 (lab) の終わりまでに、ログインリクエストをキャプチャし、それらを Burp Sequencer に送信し、特定のトークンを分析するようにツールを設定し、そのランダム性を評価するために結果を解釈できるようになります。これは、Web アプリケーションのセキュリティ評価における基本的なスキルです。
セッション Cookie を設定するログインリクエストを見つける
このステップでは、Burp Suite を起動し、組み込みブラウザを使用してテストアプリケーションにログインし、セッションを確立するリクエストを見つけます。
まず、Burp Suite を起動する必要があります。通常、アプリケーションメニューで見つけるか、ターミナルから起動できます。この実験 (lab) では、Burp Suite が起動できる状態にあると仮定します。
- デスクトップからターミナルを開きます。
- Burp Suite を起動します。正確なコマンドは異なる場合がありますが、多くの場合スクリプトです。この環境では、利用可能であると仮定します。
- Burp Suite が開いたら、
Proxyタブに移動し、次にInterceptサブタブに移動します。Intercept is onボタンをクリックして、現時点ではインターセプトがオフになっていることを確認します。 - 次に、
Proxy->HTTP historyタブに移動します。ここにすべてのトラフィックが記録されます。 Open Browserボタンをクリックします。これにより、Burp の事前設定された Chromium ブラウザが起動します。- ブラウザで、ログインページに移動します。この実験 (lab) では、架空のログインページを使用します。実際のテストでは、これはターゲットアプリケーションになります。
- 任意の認証情報(例:ユーザー名に
user、パスワードにpassword)を入力し、ログインボタンをクリックします。 - Burp Suite ウィンドウに戻り、
Proxy->HTTP historyタブを確認します。リクエストのリストが表示されているはずです。ログインエンドポイントへのPOSTリクエストを見つけます。それをクリックします。 - 下のリクエスト/レスポンスビューアで、
Responseタブをクリックします。Set-Cookieヘッダーを探します。以下のようなものになります。
HTTP/1.1 302 Found
...
Set-Cookie: sessionID=q8f...; path=/; HttpOnly
...
このsessionIDが、分析したいトークンです。これでターゲットリクエストを特定できました。
プロキシ履歴のリクエストを右クリックし、「Send to Sequencer」を選択する
このステップでは、特定したログインリクエストを分析のために Burp Sequencer ツールに送信します。
Proxy履歴でセッション Cookie を設定するPOSTリクエストを見つけたら、分析のためにそれを分離する必要があります。
Proxy->HTTP historyタブで、正しいPOSTリクエストが選択されていることを確認します。- 履歴テーブル内のリクエストのエントリのどこかを右クリックします。これにより、多くのオプションが表示されるコンテキストメニューが開きます。
- コンテキストメニューから、
Send to Sequencerに移動してクリックします。
このアクションにより、選択されたリクエストのコピーが Sequencer ツールに送信されます。これで、Sequencerタブヘッダーがオレンジ色に変わり、新しいアイテムを受信したことを示します。
Sequencerタブをクリックしてツールに切り替えます。「Live Capture Request」パネルに、送信したリクエストがロードされているのが表示されます。
Sequencer で Cookie を含むレスポンスを選択する
このステップでは、Burp Sequencer がリクエストを正しく発行し、セッショントークンを含むレスポンスを受信できることを確認します。
Sequencerタブ内で、Proxy から送信したリクエストが表示されます。トークンの場所を設定する前に、Sequencer が正常に応答を取得できることを確認する必要があります。
Sequencerタブの「Select Live Capture Request」パネルを確認します。リクエストはすでにロードされているはずです。- このパネルの上部にある
Start live captureボタンをクリックします。
Burp はリクエストを一度送信し、受信したレスポンスを表示します。これにより、リクエストが有効であり、サーバーが期待通りにセッショントークンで応答していることを確認できます。レスポンスは、リクエストの下のパネルに表示されます。
Proxy 履歴で見たときと同様に、レスポンスにSet-Cookieヘッダーが表示されるはずです。これにより、Sequencer が次の設定ステップの準備ができていることが確認できます。エラーが発生した場合は、Proxy に戻って別のリクエストを見つける必要があるかもしれません。
レスポンス内のトークンの場所を設定する
このステップでは、サーバーのレスポンス内のセッショントークンを正確に見つける場所を Burp Sequencer に指示します。これが最も重要な設定ステップです。
ライブキャプチャを開始し、有効なレスポンスを受信した後、分析したいトークンの場所を定義する必要があります。
- 「Token Location Within Response」セクションまでスクロールします。
- 主なオプションは
Custom locationとDefined in a cookieの 2 つです。トークンはSet-Cookieヘッダーに含まれているため、2 番目のオプションが最も簡単です。 Defined in a cookieの隣にあるラジオボタンをクリックします。- ドロップダウンメニューがアクティブになります。それをクリックし、以前特定したセッション Cookie の名前(例:
sessionID)を選択します。
Cookie を選択することで、Sequencer は受信したすべてのレスポンスからその特定の Cookie の値を自動的に抽出するように指示されます。この値がランダム性について分析されるものになります。
Cookie が選択されると、設定は完了です。Sequencer は、送信すべきリクエストとレスポンス内のトークンの場所を把握しました。
ライブキャプチャを開始し、ランダム性結果を分析する
このステップでは、大量のトークンサンプルを収集し、Sequencer の統計エンジンを使用してそれらのランダム性を分析します。
設定が完了したら、分析を開始する準備ができました。
- 再度
Start live captureボタンをクリックします。今回は、Burp は継続的にリクエストを送信し、各レスポンスからセッショントークンを収集します。 - 「Live Capture」結果パネルを監視します。
Request countとTokens collectedの数値が増加するのを確認できます。 - 少なくとも 2,000 個のトークンが収集されるまでキャプチャを実行します。徹底的な分析には 10,000 から 20,000 個のトークンが推奨されますが、この実験では 2,000 個で十分です。
- 十分なトークンが収集されたら、
Pauseボタンをクリックし、次にAnalyze nowボタンをクリックします。
Burp は収集されたトークンに対していくつかの統計テストを実行します。結果は複数のタブに表示されます。
Summaryタブに注目します。これはトークンの品質に関する全体的な評価を提供します。最も重要な指標はランダム性の全体的な品質であり、これは効果的なエントロピーのビット数で推定されます。
エントロピーが多い(例:128 ビット)ほど、非常に強力で予測不可能なトークンであることを示します。少ない(例:64 ビット未満)場合は、悪用される可能性のある脆弱性を示している可能性があります。サマリーには、「Excellent」、「Good」、「Poor」、「Insecure」といった明確な評価が表示されます。
Character-level analysisやBit-level analysisなどの他のタブを探索して、見つかった潜在的な脆弱性をさらに深く掘り下げることができます。
まとめ
この実験では、Burp Sequencer を使用してセッショントークンの統計分析を実行する方法を学びました。
以下のワークフロー全体を実践しました。
- Burp Proxy を使用して、Cookie を設定するログインリクエストをキャプチャする。
- そのリクエストを Sequencer ツールに送信する。
- サーバーのレスポンス内のセッショントークンを見つけるように Sequencer を設定する。
- ライブキャプチャを実行して、大量のトークンサンプルを収集する。
- 収集したデータを分析して、トークンのランダム性の効果的なエントロピーと全体的な品質を判断する。
このプロセスは、予測可能なセッション管理という、最も一般的で深刻な脆弱性の 1 つを特定するのに役立つため、あらゆる Web アプリケーションセキュリティテストの重要な部分です。
