バグのバウンティしてみたい

ペンテストとテンペストを言い間違える

今の努力が将来に繋がることを願う。悪用厳禁。

Burp Suite無料版の基本機能

Owasp ZAP派だったが周りはBurp Suite勧める人ばかり。
v2021.2.1はBurp Suiteが青くなったよう。

Burp Suite無料版の基本機能

メイン画面から選択できるように、大きく分けて8つ。

  1. Target - 検証対象の指定、サイトマップの作成
  2. Proxy - トラフィックの解析
  3. Intruder - ブルートフォース、辞書攻撃、色々ファジング
  4. Repeater - リクエストのリピート
  5. Sequencer - セッションCookie等の値のランダム性判定
  6. Decoder - 値のデコード/エンコード
  7. Comparer - リクエスト、サイトマップ、プロキシ履歴の各々を比較(diffする)
  8. Extender - 拡張機能の管理

1. Target

f:id:Zarat:20210318173445p:plain
target - main
アクセスするほど、サイトマップが出来上がっていく。サイトを選んで右クリックして[Add to Scope]すると、目的のサーバに対してのみInterceptしたりするようになる。
f:id:Zarat:20210318174940p:plain
target - add to scope
f:id:Zarat:20210318173827p:plain
target - scope

Burp Target tool - PortSwigger

2. Proxy

f:id:Zarat:20210318174026p:plain
proxy - http_history
プロキシしたリクエスト、レスポンスの確認ができる。[Actions]を押すと、リクエスト・レスポンスを他の機能の場所に送ることができる。
f:id:Zarat:20210318174650p:plain
proxy - http_history actions
Interceptは[Intercept is on]と光っているときに利用できる。Interceptしたものは書き換えて、[Forward]で送信する。[Action]は他の機能に送るボタンである。 [Open Browser]で、自前のブラウザに設定しなくてもすでにプロキシ設定がされたchromeを起動できる。chromeなので[Open Browser]はroot権限下では実行できない。
f:id:Zarat:20210318175246p:plain
proxy - Intercept
.jsファイルやその他のデフォルトでは無視されているファイルをInterceptしたい場合は、[Options] -> [Intercept Client Request]にて[File extension]のルールをEditで編集する必要がある。下のような例では、.jsを消すことで.jsをInterceptしてくれるようになる。
f:id:Zarat:20210318180215p:plain
proxy - config file extension in intercept
他にも [Intercept Client Request]では、様々なInterceptの条件設定ができる。

Burp Proxy - PortSwigger

3. Intruder

f:id:Zarat:20210318182425p:plain
Intruder
ブルートフォース、辞書攻撃、色々ファジングができる。上のloginフォームに対して、このリストを利用することでSQLiが可能かを検証する場合。
まず、右のボタンで認識された変数みたいなものを[Clean]する。辞書ファイルを回したい部分だけハイライトして、[Add]でPayload Positionに追加する。ここでは、emailのみに対して検証する。一応Attack typeは4種類あるが違いがよく分かっていないし、Sniperが最も使われるのでSniperでやる。(この部分は誰かご教授願います。)
f:id:Zarat:20210318183040p:plain
intruder - payload positon
次に、[Payloads]のタブに移り[Payloads Options Simple list]にpayloadを読み込む。コピペしてもいいし、[Load]でファイルから読み込んでも良い。
f:id:Zarat:20210318183738p:plain
intruder - payload options load
今回のようにpayloadに記号等が混じる場合には[Payloads]のタブの下の方にある[Payload Encoding]も気にする必要がある。
f:id:Zarat:20210318183623p:plain
intruder - payload encoding
設定が完了したら右に見えてる[Start Attack]で始まる。出てくる注意は、「無料版だから遅いけど、気になるなら有料版にしてね。」といったような表示である。
とりあえずザラーと結果が流れてくる。
f:id:Zarat:20210318184339p:plain
intruder - attack
[Filter Showing all items]というところを押すとfilterの設定ができる。
f:id:Zarat:20210318184513p:plain
intruder - attack_result_filter
f:id:Zarat:20210318190319p:plain
intruder - attack_success-reslut

Burp Intruder - PortSwigger

4. Repeater

f:id:Zarat:20210318181310p:plain
repeater - login
InterceptしたものやHTTP historyから持ってきたものを個別に送信できる。好きなように編集して[Send]するだけ。
f:id:Zarat:20210318181546p:plain
repeater - send

Burp Repeater - PortSwigger

5. Sequencer

f:id:Zarat:20210318190620p:plain
sequencer - main
セッションCookie等の値のランダム性判定に利用したりする。例えば、上のようなレスポンスにあったcookieのランダム性はどんなもんか[Start Live Capture]で開始する。リクエストが100貯まると[Analyze now]が有効になる。
f:id:Zarat:20210318193928p:plain
sequencer -result

Burp Sequencer - PortSwigger

6. Decoder

値のデコード/エンコードを行う。

f:id:Zarat:20210318194119p:plain
decoder
リクエストやレスポンスとをそのまま持ってこれるのは良いかもしれないが、これをデコードやエンコードに利用するかと言われるとどうだろう。
Burp decoder - PortSwigger

7. Comparer

f:id:Zarat:20210318194508p:plain
comparer -main
似たようなリクエスト、レスポンスの差分を文字やバイトで探す。
f:id:Zarat:20210318194619p:plain
comparer - words
f:id:Zarat:20210318194653p:plain
comparer - bytes

Burp Comparer - PortSwigger

8. Extender

f:id:Zarat:20210318194922p:plain
extender -main
java,python,ruby拡張機能を追加したりする。表示されているのは以前に利用したhakoniwa badstore。
f:id:Zarat:20210318195821p:plain
extender - BApp Store
pythonベースの拡張機能を入れる場合はJython standaloneが必要らしい。
Downloads | Jython
f:id:Zarat:20210318195724p:plain
extender - options_set-jython_standalone

Burp Extender - PortSwigger

終わり

Pro版が欲しい気持ちはある。