49
フリーでできる Web セキュリティ Burp Suite編(Not 初級者編)

フリーでできるWebセキュリティ(burp編)

Embed Size (px)

Citation preview

Page 1: フリーでできるWebセキュリティ(burp編)

フリーでできるWebセキュリティ

Burp Suite編(Not 初級者編)

Page 2: フリーでできるWebセキュリティ(burp編)

自己紹介

Twitter:abend

セキュリティエンジニア。アルコールがすきです。

Page 3: フリーでできるWebセキュリティ(burp編)

はじめに1

Burp Suiteはローカルで稼働するProxyソフトで、Webアプリケーションの診断などで使用されています。

■「Webアプリケーション診断」って?

診断員 攻撃パターン付加

入力(リクエスト)

出力(レスポンス)

1) リクエストに攻撃パターンを付加。

2) レスポンスの内容から脆弱性の有無を判定。

Proxy

プロトコル:HTTP、HTTPS

脆弱性の有無を判定

診断対象

ここで使われる。

Page 4: フリーでできるWebセキュリティ(burp編)

はじめに2

Proxyソフトは、ブラウザ(IEなど)では、ヘッダの改変や選択形式の入力項目に対する

改変などを容易に行うために用いられています。

都道府県:

性別: 男 女

東京都 (ブラウザ上で)入力形式が固定化されているものも

Proxyを用いて、入力値を変更する。

Page 5: フリーでできるWebセキュリティ(burp編)

はじめに3

そんなBurp Suiteを使用することで効率よくWebアプリケーションに対して診断

(テスト)を行えるようになります。この資料は、Burp Suiteで診断(テスト)する

ための機能の一部を紹介することを目的としています。

具体的にどういう値をセットすればいいかという点については、OWASP Testing

Guideなどを参考にしてください。

Page 6: フリーでできるWebセキュリティ(burp編)

セッション管理補助機能について

Webアプリケーションは一般的にセッション管理が行われており、Burpには、

セッション管理などを補助するための仕組みがいくつか用意されています。

・ Macro

・ Cookie jar

・ Session Handling Rules

Page 7: フリーでできるWebセキュリティ(burp編)

セッション管理補助機能について

「検索画面」に対して診断する場合に、それ以前の画面遷移やセッション管理を補助

してくれます。Burpでは、診断を目的とする画面(下記の場合、「検索画面」)を

Current Requestと表現しています。

ログイン処理ログイン画面 トップ画面 検索画面

Macroに登録Session Handling Rules

で実行タイミングなどを指定

ここに診断

Cookie jarはセッション管理を補助

Page 8: フリーでできるWebセキュリティ(burp編)

Macroって1

[Options]-[Session]-[Macro]でMacroの登録できる。Macroは複数のリクエストを

1つのセットとして登録して、ログインなどの処理を再現させることが可能となります。

Page 9: フリーでできるWebセキュリティ(burp編)

Macroって2

このような画面遷移するアプリケーションで「5.検索結果」に対して、診断しようとした

場合、「1.ログイン画面」から「4.検索画面」までアクセスしてやっと診断対象に辿り

つける。

2.ログイン処理1.ログイン画面 3.トップ画面

4.検索画面 5.検索結果

Macroでは「1.ログイン画面」から「4.検索画面」の遷移を登録することで

Burpが自動的に遷移してくれるので、効率的な診断が可能となる。

Page 10: フリーでできるWebセキュリティ(burp編)

Macroって3

[Options]-[Session]-[Macro]で[Add]を押下すると[Macro Recoder]が表示されます。

ここでMacroの登録対象となるリクエストを選択します。

ここに表示されるリクエストは

[Proxy]-[HTTP history]に表示

されているログのみとなります。

Page 11: フリーでできるWebセキュリティ(burp編)

Macroって4

[Options]-[Session]-[Macro]でMacroの登録できる。Macroは複数のリクエストを

1つのセットとして登録して、ログインなどの処理を再現させることが可能となります。

[Macro Editor]で選択した

リクエストの編集が可能。

Referrerを削除したり、

新たにパラメータを追加

したりすることが可能。

Page 12: フリーでできるWebセキュリティ(burp編)

Macroって5

[Macro Editor]でCookie jarの設定やパラメータの変更したいリクエストを選択して、

[Configure item]を押下すると[Configure Macro Item]で変更可能となる。

Page 13: フリーでできるWebセキュリティ(burp編)

Macroって6

[Cookie handling]で[Add cookies …]と[Use cookies …]を有効にするか選択できます。

[Add cookies …]

チェックされていると、レスポンスでSet-Cookieされた場合にCookie jarに反映する。

[Use cookies …]

チェックされていると、Cookie jarにあるCookieをリクエストに反映する。

Page 14: フリーでできるWebセキュリティ(burp編)

Macroって7

[Parameter handling]はリクエストに存在するパラメータが一覧表示されます。

[Use present value]は、固定値。[Drive from prior response]は、レスポンスから

値を取得する設定で、ワンタイムトークンなど値が可変であるパラメータに有効です。

Page 15: フリーでできるWebセキュリティ(burp編)

Macroって8

[Custom parameter locations in response]で追加したいパラメータの設定ができます。

ログイン処理 トップ画面 検索画面

[Custom parameter locations in response]

でパラメータを追加する。

このリクエストにパラメータを追加したい場合

Page 16: フリーでできるWebセキュリティ(burp編)

Macroって9

[Parameter name]に追加したいパラメータ名を設定します。

ログイン処理 トップ画面 検索画面

ここに追加したいパラメータ名と合わせる必要がある

Page 17: フリーでできるWebセキュリティ(burp編)

Macroって10

追加したいパラメータの値は、レスポンスで範囲選択するか、正規表現で指定する

ことが可能です。

Page 18: フリーでできるWebセキュリティ(burp編)

Macroって11

「検索画面」を選択し、パラメータを追加。[Re-analyze macro]を押下し、パラメータを

反映させます。

ログイン処理 トップ画面 検索画面

Page 19: フリーでできるWebセキュリティ(burp編)

Macroって12

「検索画面」を選択し、[Configure item]を押下すると、パラメータが追加されています。

[Derive from prior response]を選択し、[Macro editor]の[#]で「トップ画面」を指す

「Resuponse3」を選択します。

ログイン処理 トップ画面 検索画面

Page 20: フリーでできるWebセキュリティ(burp編)

Macroって13

[Macro editor]で[Test macro]を押下すると、Macroのテストを実施してくれます。

パラメータの追加がうまくできている場合、[Derived parameters]に表示されます。

Page 21: フリーでできるWebセキュリティ(burp編)

Cookie jarって1

Cookie jarは、Burpにおけるセッション管理を補助するために存在しており、Burpが

アクセスしたサイトのCookieを共有する仕組みになっている。

1.保存されているCookieでドメインが一致する場合は送信する。

2.Set-CookieされたCookieが存在する場合、該当Cookieの値を更新する。

3.Set-CookieされたCookieが存在していない場合、そのCookieを登録する。

Page 22: フリーでできるWebセキュリティ(burp編)

Cookie jarって2

Cookie jarは追加、更新されたCookieを用いて、セッション維持を手助けしている。

ドメインC

Cookie:CC

ドメインC

存在しない場合は登録される

ドメインA

Cookie:AA

ドメインB

Cookie:BB

Burp

ドメインC

ドメインA ドメインB

ドメインB

Cookie:BBB

Set-Cookieされたら更新するドメインが一致している場合に

送信する。

Page 23: フリーでできるWebセキュリティ(burp編)

Cookie jarって3

Cookie jarの設定は、[Options]-[Sessions]で行います。デフォルトでは、[Proxy]と

[Spider]のみが有効になっており、この2つでCookieの追加および更新が行われた

場合にCookie jarへ反映されます。

Page 24: フリーでできるWebセキュリティ(burp編)

Cookie jarって4

[Open cookie jar]を押下すると、Cookie jarに登録されているCookieの一覧が

表示されます。[Edit cookie]で編集可能な項目は、[Domain]、[Name]、[Value]

です。

Page 25: フリーでできるWebセキュリティ(burp編)

Cookie jarって5

Cookie jarはMacroなどでセッション管理を行う際に非常に有意義な機能では

あるが、大きな欠陥が存在しています。Cookie jarのCookieを識別する項目は

ドメイン名とCookie名だけしかないため、パスが異なるCookieやHTTP or HTTPS

という判別ができません。

Page 26: フリーでできるWebセキュリティ(burp編)

Cookie jarって6

CookieをHTTP、HTTPSと/、/sampleでそれぞれ発行する下記プログラム(値および

パスを表中の値に変更)を配置し、Cookie jarでどのように識別されるか試した。

パス/プロトコル http https

/ http_root https_root

/sample http_sample https_sample

<?php

setcookie(“sample”,“値”,0,“パス","",0)

?>

Page 27: フリーでできるWebセキュリティ(burp編)

Cookie jarって7

①から④の順にアクセスしたが、Cookie jarは1つのCookieとしか認識していないため

①のCookieを更新するだけであった。

① プロトコル:httpパス:/

② プロトコル:httpsパス:/

③ プロトコル:httpsパス:/sample

④ プロトコル:httpパス:/sample

Page 28: フリーでできるWebセキュリティ(burp編)

Cookie jarって8

Cookie jarがドメイン名とCookie名のセットでしか評価していないことが原因であり、

この仕様により、同じドメインでパスが異なるCookieでセッション管理しているサイト

への診断がBurpのMacroを使用すると正常に行えない可能性があります。

例として、シングルサイオンしてパスごとで各サービスを提供しているようなサイトなど

です。各サービスで同じCookie名を発行している場合、Cookie jarは1つのCookie

としてしか認識しないため、誤動作する可能性があります。

Page 29: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて1

[Options]-[Session]-[Session Handling Rules]は、セッション管理方法や実行範囲

などを設定可能です。設定できるパターンは以下があります。

※本資料ではいくつか割愛します。

・Use cookies from the session handling cookie jar

・Set a specific cookie or parameter value

・Check session is valid

・Prompt for in-browser session recovery

・Run a macro

・Run a post-request macro

・Invoke a Burp extension

Page 30: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて2

[Rule Action]は、複数指定することができ、上から順番に評価されます。

Page 31: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて3

すべてのパターンで共通して、[Session handling rule editor]-[Scope]で実行範囲を

設定します。

以下の項目で実行範囲を指定

することができます。

・[Tools scope]

・[Url scope]

・[Parameter scope]

Page 32: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて4

[Run macro]は、設定した1つまたは複数のリクエストを送信することが可能です。

2.ログイン処理

1.ログイン 3.トップ画面 4.カート参照

「4.カート参照」を診断しようとした場合に、「1.ログイン」から「3.トップ画面」までの

遷移をMacroとして設定することで、Burpが自動的にリクエストを送信してくれる

ので、「4.カート参照」のみのリクエストを送信すればよくなります。

ログイン用Macro

Macroとして設定

Current Request

Page 33: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて5

ここで1から3までを「ログイン用Macro」として登録します。Macroの実施条件を設定

することで、[Repeater]や[Intruder]などでログイン用Macroは自動的にリクエストを

送信し、Current Requestに対する診断が実施できます。

ログイン用Macro

Start End

[Run macro]

4.カート参照

Current Request

Rule Actionsとして設定

Page 34: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて6

[Check session is valid]は、セッションの状況(有効なのか無効なのか)に応じて、

アクションの実施など設定することができます。

2.ログイン処理

1.ログイン 3.トップ画面 4.カート参照

6.カートへ追加

5.カートから削除

「5.カートからの削除」画面を診断しようとした場合に、カートにアイテムが入って

いないと正常に「5.カートからの削除」画面へ遷移できないため、カートに

アイテムを追加する必要が出てきます。

Current Request

Page 35: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて7

ここで1から4までを「セッション確認用Macro」、6を「セッション有効化Macro」

として登録します。

カートにアイテムが入っていない場合は、セッションが無効であるという設定をし、

その場合に「セッション有効化Macro」を実行するように指定します。

2.ログイン処理

1.ログイン 3.トップ画面 4.カート参照

6.カートへ追加

5.カートから削除

セッション有効化用Macro

セッション確認用Macro

Current RequestMacroとして設定

Page 36: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて8

カートにアイテムがない場合にのみカートへの追加を行うため、必要最低限の

リクエストのみで「5.カートからの削除」画面へ診断が容易にできるようになります。

5.カートからの削除

セッション確認用Macro

セッション有効化用Macro

セッションが有効な場合

セッションが無効な場合

[Check session is valid]

Current Request

Start End

Rule Actionsとして設定

Page 37: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて9

[Check session is valid]は、以下の3つのパートから構成されています。

・[Make request(s) to validate session]

・[Inspect response to determine session validity]

・[Define behaviour dependent on session validity]

Page 38: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて10

[Make request(s) to validate session]は、セッション状況の確認を行うための

リクエストをどのタイミングで生成するか指定します。

Page 39: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて11

[Issue current request]は、リクエストごとにセッションの状況を確認し、後続処理を

実施します。セッションが無効にならない限り、「5.カートからの削除」のみのリクエスト

しか発行しないため、必要最小限のリクエストで診断が可能です。

セッション有効化用Macro

セッションが無効な場合

[Check session is valid]

5.カートからの削除

5.カートからの削除

終了セッションが有効な場合

Current Request

Start End

Rule Actionsとして設定

Current Request

Page 40: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて12

[Run macro]で、セッション確認用MacroにあたるMacroを指定する必要があります。

[Validate session …]を有効にした場合、指定した回数のリクエストごとに、セッション

の有効性を確認するようになります。

特殊な仕様がない限りは、 [Validate session …]を有効にする必要性は低いと思い

ます。

Page 41: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて13

[Inspect response to determine session validity]は、セッションの有効性の確認

方法について設定します。どういう文字列が出力されていたら、セッションを有効

または無効とするのかを指定します。

Page 42: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて14

[Define behaviour dependent on session validity]は、セッション状況に応じて

実行する処理の内容を定義します。

Page 43: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて15

[If session valid,don’t process …]は、セッションが有効な場合に他の動作(Run

Macroなど)を行わない。[If session is invalid,perform the action below]は、

セッションが無効な場合に実行する処理を設定します。

Page 44: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて16

[If session valid,don’t process …]を有効にした場合、セッションが無効時に

[Check session is valid]以外の処理([Run macro]など)は実行されるが、

セッションが有効時は、後続処理は実行されない。

5.カートからの削除

セッション確認用Macro

セッション有効化用Macro

セッションが有効な場合

セッションが無効な場合

[Check session is valid] [Run macro]

なんらかの処理MacroStart End

Rule Actionsとして設定

Current Request

Page 45: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて17

[If session valid,don’t process …]を有効にした場合、後続処理が実行されなく

なります。セッションが有効時は、[Rule Actions]で、[Check session is valid]以降

に設定されているパターンは実行されません。

下記の場合、[run macro:picko_user1_add]はセッションが有効な場合は実行され

ません。

本来は上から実行される

Page 46: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて18

[If session is invalid,perform the action below]で[Prompt for in-browser session

recovery]を選択するとセッションが無効になった場合、ブラウザを用いて有効な

セッションの取得を促されます。

Page 47: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて19

[Update current request with parameters matched from final macro response]

は、Macroの最後のレスポンスからパラメータを引き継ぐかどうかを指定します。

この設定は、CSRFの対策としてワンタイムトークンが用いられている場合に自動的

に引き継ぐことで診断が容易に行えます。[Update current request with cookies

from session handling cookie jar]は、Cookie jarの更新を行うかどうかを指定します。

Page 48: フリーでできるWebセキュリティ(burp編)

Session Handling Rulesについて20

[After running the macro,invoke a Burp extension action handler]は、

[Extender]-[Extensions]で追加したextensionを指定することが可能です。

extensionで変更されたCurrent Requestの内容をリクエストします。

セッション確認用Macro

セッション有効化用Macro

有効な場合

無効な場合

[Check session is valid]

5.カートからの削除

extension

Start End

Current Request

Rule Actionsとして設定

Page 49: フリーでできるWebセキュリティ(burp編)

まとめ

Burp Suiteは、本資料に記載していないこともまだまだありますが、こういったツール

をうまく活用することで、診断(テスト)も効率よく行うことが可能です。

本資料に記載できなかったことは、今後、公開できたらいいなと思います。