バグバウンティの始め方
はじめに
バグバウンティを本格的に始めて約2ヶ月で獲得報奨金100万超えたよ!no1zyです。
獲得報奨金額100万円達成しました!去年は5000円だったので200倍稼げました!w https://t.co/7yrCj27ITL
— no1zy (@no1zy_sec) 2018年8月29日
この記事はバグバウンティを始めたいという人向けの入門記事です。私がどのように脆弱性を発見して報奨金を得たかについて紹介します。
私はwebサイトを中心にバグハントをしているため、Web中心の話になります。
筆者のスペック
まず、筆者がバグバウンティを始める前に持っていた、身分、スキル・経験を紹介しておきます。
- 9/6現在、情報系の専門学生。
- バグバウンティの運営サイドでアルバイトの経験(10ヶ月)がある。
- PHP, Javascriptは読める。
- Webセキュリティは基礎的な部分はわかる。
- CVEは2つ持っている。
あった方がいいスキル
- コーディングに精通している。
- 最新のWeb技術の知識がある。
- バックエンドでどのような処理が行われているか想像できる。
脆弱性の種類、報告方法を知る
これからバグハントを始めようと思っても 、"何が脆弱性なのか?" という疑問が出てくるかもしれません。その疑問を解消するためにhackeroneのレポートをひたすら読むことを強くお勧めします。これは報告書の書き方から脆弱性を発見するテクニック、どのような機能に脆弱性がありがちなのかを知ることができる素晴らしい教科書になります。
素晴らしいハンター達のSNSやblogを読むことも非常におすすめです。ここにいくつかの素晴らしいハンターのblogやSNSアカウント、リポジトリを紹介します。
EdOverflow
Frans Rosén
ak1t4
Masato Kinugawa
Yosuke HASEGAWA
Jun Kokatsu
プライベートプログラムに招待してもらう
人はお金が絡むと全力を出すため、公開されているプログラムの脆弱性を探すことは難しいかもしれません。まずは練習がてら、ポイントのみ貰える(報奨金が出ない)プログラムで脆弱性を探すことをお勧めします。ポイントのみのプログラムは報奨金が貰えるプログラムに比べて脆弱性が見つかりやすいはずです。
いくつかの脆弱性報告が認定されると、あなたはプライベートプログラムに招待されるでしょう。プライベートプログラムでは参加者が比較的少ないため、多くのチャンスがあります。
調査について
ツールの使用
脆弱性を発見するためには調査が不可欠です。
特に、膨大な情報に埋もれているドメインや機能などを発見することは宝箱を発見するのと同じです。わくわくしながら開きましょう。
以下におすすめの調査ツールをいくつか紹介します。
さらに詳しく知りたい人は以下のサイトから探したりすると良いでしょう。
Bug Bounty Forum - tools - Index
Google Dorks
*.example.com
などのサブドメイン全てがバグバウンティの対象スコープで、かつ広大な場合、Google Dorksがおすすめです。これは特定の脆弱性によくあるクエリパラメータ名や、それに含まれる値の一部をピンポイントで検索し脆弱性の発見を手助けしてくれます。
例えばオープンリダイレクトを探したい場合は以下のように検索します。
site:*.example.com inurl:url OR callback
運が良ければ、SSRFやXSSを見つけることもできるでしょう。
開発者ツールの活用
バグを探している間はブラウザの開発者ツールを常に立ち上げておくのがおすすめです。ネットワークを監視することで新たなリソースの発見に繋がるかもしれませんし、特定機能のフロー、DOMの構築方法の把握、Javascriptのデバッグなど、非常に役に立ちます。
発見した脆弱性の横展開
対象のプロダクトが複数ある場合、横展開のチャンスです。あなたが脆弱性を発見した機能に似たような機能が他の製品にも存在する時、同様の実装がされている可能性があります。これは追加の報奨金獲得チャンスです。一気に報奨金を増やしましょう!
おわりに
日本でもバグバウンティ流行らないかなー。バグハンターとたくさん交流して情報共有したいなー。という気持ちで本記事を書きました。 次回以降、私が発見した脆弱性について紹介していく予定です。具体的にはクロスプロトコルに対してのSSRF、URLのフィルターバイパスをしてSSRF等です。 是非、みなさんがバグバウンティを始めるきっかけになればと思います。