バグハンティングコンテスト参加者のためのtips

russianblue25.hatenablog.com 2年前に書いた記事はこちら。

さて、今年もセキュリティバグハンティングコンテストが終わりました。

第5回とは時が経つのも早いですね。

回を重ねるにつれてリピーターさんが増えてきて嬉しい反面、初参加者がどうしていいのかわからないのではないかとちょっと心配になったりします。

セキュリティ バグハンティングコンテスト2019

約半年前に上記の記事を書いたわけですが、最近見直してみるとあまりにも適当すぎて全く参考にできないと思ったので改めて色々書きたいと思います。*1

参考になる本

この2冊のうちどちらかを読んでおけばいいと思います。

www.amazon.co.jp

徳丸本と呼ばれる有名なWebセキュリティの技術書です。

www.amazon.co.jp

診断用のチートシートと作業用ワークシート(Excel)がついてきます。個人的にはツールの使い方が丁寧に説明してあるのと、ページ数が徳丸本より少なくて読みやすいので初めての方にはこちらをオススメします。

基本的にはこのどちらかの本を読んでおけば、必要な知識は身につくと思っています。

使用するツール

まずは調査に必要なツールをインストールしてみましょう。

いろいろなツールがありますが、個人的にはZAPとBurp Suiteをお勧めしています。

https://portswigger.net/burp

Burp Suiteのコミュニティバージョン(無料版)

https://www.zaproxy.org/

OWASP ZAP

Burpはプロキシ(リクエストやレスポンスを中継する)としてとても優秀です。パラメータを改竄したりするのに使えます。有償版だと自動診断も可能ですが、ちょっとお高いです。コンテストには有償版はいらないかなと思います。

ZAPは自動診断が可能な無料のツールです。こっちで自動診断をするのをお勧めします。

ツールの使い方などはネットに色々情報が転がっているので調べてみてください。

進め方

まずは手動でリクエスト一覧を作成してみましょう。 googleスプレッドシートなどにリクエスト一覧を作成して管理するのが楽かなと思います。

ちなみに上で紹介した上野宣さんの本だと、excelの診断用シートが付いてきたりします。

それができたら、burpを使って講習会で学んだようにパラメータの値をいい感じに変えてみたりしてみましょう。 手動でやりつつ自動診断もかけてみるのがいいと思います。*2

せっかくなので受賞したい

この章は、やるからには受賞したいという人たち向けの記事になります。

いろいろありますが、受賞に必要なものはただ一つです。

レポートを出しましょう。

公式サイトを見ればわかりますが、レポート提出までできたチームはさほど多くありません。

レポートを出してしまえばそれだけで受賞に近づきます。

ただし出せばいいというものではなく、レポートとして質の良いものを出しましょう。

重大な脆弱性を発見するのも評価の対象ではありますが、時間と根気と運も必要になってくるので、質の良いレポートを作成するのが一番近道なのではと思います。*3

質のいいレポートを書く方法

先に書けるところを書いておく

診断対象のサイト名や診断に用いたブラウザの情報などは先に書いておくと楽になります。 また、クロスサイトスクリプティングSQLインジェクションなどの説明も最初に書いておくと全てのサイトのレポートに使いまわせます。 テンプレ化してじゃんじゃん使いまわしましょう。

読み手が再現可能なように手順をしっかり書く

レポートを読む側がレポートの内容だけで再現できるかどうかが大事です。 どうやってリクエストを改竄するのか、どうなったから脆弱性と言えるのかなどをきちんと書いておきましょう。

根拠を明確にする
  • なぜこの脆弱性が危険なのか
  • なぜこの脆弱性を優先的に修正する必要があるのか

など、なぜそう思ったかをしっかり書いておくと説得力が増します。

誤字脱字に注意

当たり前ですが、細かいところまで気を配りましょう。

この辺りを守っていればいいレポートになるのではないかなと思います。

おまけ:脆弱性の傾向

クロスサイトスクリプティングSQLインジェクションといった派手な脆弱性に目がいきがちですが、意外と多いのは

  • 値を変えると不正なリクエストが通ってしまう
  • 権限外の動作が可能

このあたりです。これらはツールを使った自動診断では出てこないので、地道に手動で調べる必要があります。

まとめ

とにかくレポートを書きましょう。

*1:昨年から運営側にいたりするのですが、この文章はあくまで過去の一参加者の書いたものです。運営を代表したりするものではないのでご承知おきください。

*2:ちなみに実際の業務では検証環境にやることが多いと思うので、本番環境に対して診断できる機会はかなりレアです

*3:毎年重大な脆弱性がバンバン見つかってたらそれはそれで...