Your SlideShare is downloading. ×
フリーでできるWebセキュリティ(burp編)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

92
views

Published on

Burp Suite

Burp Suite

Published in: Engineering

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
92
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. フリーでできるWebセキュリティ Burp Suite編(Not 初級者編)
  • 2. 自己紹介 Twitter:abend セキュリティエンジニア。 アルコールがすきです。
  • 3. はじめに1 Burp Suiteはローカルで稼働するProxyソフトで、Webアプリケーションの診断などで使用さ れています。 ■ 「Webアプリケーション診断」って? 診断員 攻撃パターン付加 入力(リクエスト) 出力(レスポンス) 1) リクエストに攻撃パターンを付加。 2) レスポンスの内容から脆弱性の有無を判定。 Proxy プロトコル:HTTP、HTTPS 脆弱性の有無を判定 診断対象 ここで使われる。
  • 4. はじめに2 Proxyソフトは、ブラウザ(IEなど)では、ヘッダの改変や選択形式の入力項目に対する 改変などを容易に行うために用いられています。 都道府県: 性別: 男 女 東京都 (ブラウザ上で)入力形式が固定化されているものも Proxyを用いて、入力値を変更する。
  • 5. はじめに3 そんなBurp Suiteを使用することで効率よくWebアプリケーションに対して診断 (テスト)を行えるようになります。この資料は、Burp Suiteで診断(テスト)する ための機能の一部を紹介することを目的としています。 具体的にどういう値をセットすればいいかという点については、OWASP Testing Guideなどを参考にしてください。
  • 6. セッション管理補助機能について Webアプリケーションは一般的にセッション管理が行われており、Burpには、 セッション管理などを補助するための仕組みがいくつか用意されています。 ・ Macro ・ Cookie jar ・ Session Handling Rules
  • 7. セッション管理補助機能について 「検索画面」に対して診断する場合に、それ以前の画面遷移やセッション管理を補助 してくれます。Burpでは、診断を目的とする画面(下記の場合、「検索画面」)を Current Requestと表現しています。 ログイン処理ログイン画面 トップ画面 検索画面 Macroに登録 Session Handling Rules で実行タイミングなどを指定 ここに診断 Cookie jarはセッション管理を補助
  • 8. Macroって1 [Options]-[Session]-[Macro]でMacroの登録できる。Macroは複数のリクエストを 1つのセットとして登録して、ログインなどの処理を再現させることが可能となります。
  • 9. Macroって2 このような画面遷移するアプリケーションで「5.検索結果」に対して、診断しようとした 場合、「1.ログイン画面」から「4.検索画面」までアクセスしてやっと診断対象に辿り つける。 2.ログイン処理1.ログイン画面 3.トップ画面 4.検索画面 5.検索結果 Macroでは「1.ログイン画面」から「4.検索画面」の遷移を登録することで Burpが自動的に遷移してくれるので、効率的な診断が可能となる。
  • 10. Macroって3 [Options]-[Session]-[Macro]で[Add]を押下すると[Macro Recoder]が表示されます。 ここでMacroの登録対象となるリクエストを選択します。 ここに表示されるリクエストは [Proxy]-[HTTP history]に表示 されているログのみとなります。
  • 11. Macroって4 [Options]-[Session]-[Macro]でMacroの登録できる。Macroは複数のリクエストを 1つのセットとして登録して、ログインなどの処理を再現させることが可能となります。 [Macro Editor]で選択した リクエストの編集が可能。 Referrerを削除したり、 新たにパラメータを追加 したりすることが可能。
  • 12. Macroって5 [Macro Editor]でCookie jarの設定やパラメータの変更したいリクエストを選択して、 [Configure item]を押下すると[Configure Macro Item]で変更可能となる。
  • 13. Macroって6 [Cookie handling]で[Add cookies …]と[Use cookies …]を有効にするか選択できます。 [Add cookies …] チェックされていると、レスポンスでSet-Cookieされた場合にCookie jarに反映する。 [Use cookies …] チェックされていると、Cookie jarにあるCookieをリクエストに反映する。
  • 14. Macroって7 [Parameter handling]はリクエストに存在するパラメータが一覧表示されます。 [Use present value]は、固定値。[Drive from prior response]は、レスポンスから 値を取得する設定で、ワンタイムトークンなど値が可変であるパラメータに有効です。
  • 15. Macroって8 [Custom parameter locations in response]で追加したいパラメータの設定ができます。 ログイン処理 トップ画面 検索画面 [Custom parameter locations in response] でパラメータを追加する。 このリクエストにパラメータ を追加したい場合
  • 16. Macroって9 [Parameter name]に追加したいパラメータ名を設定します。 ログイン処理 トップ画面 検索画面 ここに追加したいパラメータ 名と合わせる必要がある
  • 17. Macroって10 追加したいパラメータの値は、レスポンスで範囲選択するか、正規表現で指定する ことが可能です。
  • 18. Macroって11 「検索画面」を選択し、パラメータを追加。[Re-analyze macro]を押下し、パラメータを 反映させます。 ログイン処理 トップ画面 検索画面
  • 19. Macroって12 「検索画面」を選択し、[Configure item]を押下すると、パラメータが追加されています。 [Derive from prior response]を選択し、[Macro editor]の[#]で「トップ画面」を指す 「Resuponse3」を選択します。 ログイン処理 トップ画面 検索画面
  • 20. Macroって13 [Macro editor]で[Test macro]を押下すると、Macroのテストを実施してくれます。 パラメータの追加がうまくできている場合、[Derived parameters]に表示されます。
  • 21. Cookie jarって1 Cookie jarは、Burpにおけるセッション管理を補助するために存在しており、Burpが アクセスしたサイトのCookieを共有する仕組みになっている。 1.保存されているCookieでドメインが一致する場合は送信する。 2.Set-CookieされたCookieが存在する場合、該当Cookieの値を更新する。 3.Set-CookieされたCookieが存在していない場合、そのCookieを登録する。
  • 22. 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されたら更新する ドメインが一致している場合に 送信する。
  • 23. Cookie jarって3 Cookie jarの設定は、[Options]-[Sessions]で行います。デフォルトでは、[Proxy]と [Spider]のみが有効になっており、この2つでCookieの追加および更新が行われた 場合にCookie jarへ反映されます。
  • 24. Cookie jarって4 [Open cookie jar]を押下すると、Cookie jarに登録されているCookieの一覧が 表示されます。[Edit cookie]で編集可能な項目は、[Domain]、[Name]、[Value] です。
  • 25. Cookie jarって5 Cookie jarはMacroなどでセッション管理を行う際に非常に有意義な機能では あるが、大きな欠陥が存在しています。Cookie jarのCookieを識別する項目は ドメイン名とCookie名だけしかないため、パスが異なるCookieやHTTP or HTTPS という判別ができません。
  • 26. 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) ?>
  • 27. Cookie jarって7 ①から④の順にアクセスしたが、Cookie jarは1つのCookieとしか認識していないため ①のCookieを更新するだけであった。 ① プロトコル:http パス:/ ② プロトコル:https パス:/ ③ プロトコル:https パス:/sample ④ プロトコル:http パス:/sample
  • 28. Cookie jarって8 Cookie jarがドメイン名とCookie名のセットでしか評価していないことが原因であり、 この仕様により、同じドメインでパスが異なるCookieでセッション管理しているサイト への診断がBurpのMacroを使用すると正常に行えない可能性があります。 例として、シングルサイオンしてパスごとで各サービスを提供しているようなサイトなど です。各サービスで同じCookie名を発行している場合、Cookie jarは1つのCookie としてしか認識しないため、誤動作する可能性があります。
  • 29. 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
  • 30. Session Handling Rulesについて2 [Rule Action]は、複数指定することができ、上から順番に評価されます。
  • 31. Session Handling Rulesについて3 すべてのパターンで共通して、[Session handling rule editor]-[Scope]で実行範囲を 設定します。 以下の項目で実行範囲を指定 することができます。 ・[Tools scope] ・[Url scope] ・[Parameter scope]
  • 32. Session Handling Rulesについて4 [Run macro]は、設定した1つまたは複数のリクエストを送信することが可能です。 2.ログイン 処理 1.ログイン 3.トップ画面 4.カート参照 「4.カート参照」を診断しようとした場合に、「1.ログイン」から「3.トップ画面」までの 遷移をMacroとして設定することで、Burpが自動的にリクエストを送信してくれる ので、「4.カート参照」のみのリクエストを送信すればよくなります。 ログイン用Macro Macroとして設定 Current Request
  • 33. Session Handling Rulesについて5 ここで1から3までを「ログイン用Macro」として登録します。Macroの実施条件を設定 することで、[Repeater]や[Intruder]などでログイン用Macroは自動的にリクエストを 送信し、Current Requestに対する診断が実施できます。 ログイン用 Macro Start End [Run macro] 4.カート参照 Current Request Rule Actionsとして設定
  • 34. Session Handling Rulesについて6 [Check session is valid]は、セッションの状況(有効なのか無効なのか)に応じて、 アクションの実施など設定することができます。 2.ログイン 処理 1.ログイン 3.トップ画面 4.カート参照 6.カートへ 追加 5.カートから 削除 「5.カートからの削除」画面を診断しようとした場合に、カートにアイテムが入って いないと正常に「5.カートからの削除」画面へ遷移できないため、カートに アイテムを追加する必要が出てきます。 Current Request
  • 35. Session Handling Rulesについて7 ここで1から4までを「セッション確認用Macro」、6を「セッション有効化Macro」 として登録します。 カートにアイテムが入っていない場合は、セッションが無効であるという設定をし、 その場合に「セッション有効化Macro」を実行するように指定します。 2.ログイン 処理 1.ログイン 3.トップ画面 4.カート参照 6.カートへ 追加 5.カートから 削除 セッション有効化用Macro セッション確認用Macro Current RequestMacroとして設定
  • 36. Session Handling Rulesについて8 カートにアイテムがない場合にのみカートへの追加を行うため、必要最低限の リクエストのみで「5.カートからの削除」画面へ診断が容易にできるようになります。 5.カートからの 削除 セッション確認用 Macro セッション有効化 用Macro セッションが有効な場合 セッションが無効な場合 [Check session is valid] Current Request Start End Rule Actionsとして設定
  • 37. 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]
  • 38. Session Handling Rulesについて10 [Make request(s) to validate session]は、セッション状況の確認を行うための リクエストをどのタイミングで生成するか指定します。
  • 39. Session Handling Rulesについて11 [Issue current request]は、リクエストごとにセッションの状況を確認し、後続処理を 実施します。セッションが無効にならない限り、「5.カートからの削除」のみのリクエスト しか発行しないため、必要最小限のリクエストで診断が可能です。 セッション有効化 用Macro セッションが無効な場合 [Check session is valid] 5.カートからの 削除 5.カートからの 削除 終了 セッションが有効な場合 Current Request Start End Rule Actionsとして設定 Current Request
  • 40. Session Handling Rulesについて12 [Run macro]で、セッション確認用MacroにあたるMacroを指定する必要があります。 [Validate session …]を有効にした場合、指定した回数のリクエストごとに、セッション の有効性を確認するようになります。 特殊な仕様がない限りは、 [Validate session …]を有効にする必要性は低いと思い ます。
  • 41. Session Handling Rulesについて13 [Inspect response to determine session validity]は、セッションの有効性の確認 方法について設定します。どういう文字列が出力されていたら、セッションを有効 または無効とするのかを指定します。
  • 42. Session Handling Rulesについて14 [Define behaviour dependent on session validity]は、セッション状況に応じて 実行する処理の内容を定義します。
  • 43. Session Handling Rulesについて15 [If session valid,don’t process …]は、セッションが有効な場合に他の動作(Run Macroなど)を行わない。[If session is invalid,perform the action below]は、 セッションが無効な場合に実行する処理を設定します。
  • 44. 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
  • 45. Session Handling Rulesについて17 [If session valid,don’t process …]を有効にした場合、後続処理が実行されなく なります。セッションが有効時は、[Rule Actions]で、[Check session is valid]以降 に設定されているパターンは実行されません。 下記の場合、[run macro:picko_user1_add]はセッションが有効な場合は実行され ません。 本来は上から実行される
  • 46. Session Handling Rulesについて18 [If session is invalid,perform the action below]で[Prompt for in-browser session recovery]を選択するとセッションが無効になった場合、ブラウザを用いて有効な セッションの取得を促されます。
  • 47. 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の更新を行うかどうかを指定します。
  • 48. 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として設定
  • 49. まとめ Burp Suiteは、本資料に記載していないこともまだまだありますが、こういったツール をうまく活用することで、診断(テスト)も効率よく行うことが可能です。 本資料に記載できなかったことは、今後、公開できたらいいなと思います。