NFLabs. エンジニアブログ

セキュリティやソフトウェア開発に関する情報を発信する技術者向けのブログです。

Burp Suite Certified Practitioner(BSCP)合格体験記

はじめに

皆様お疲れ様です。教育ソリューション担当の上山です。
Burp Suite Certified Practitioner(BSCP)に合格できたので、この資格の説明や合格までの道のりについて紹介したいと思います。

Burp Suite Certified Practitioner (BSCP)とは

PortSwigger社はBurp Suiteを提供している会社で、本資格ではBurp Suiteを活用することを前提として幅広い脆弱性に取り組んでいくという点が特徴です。
https://portswigger.net/web-security/certification

試験内容

試験では脆弱性の発見だけでなく悪用まで行う必要があり、Webアプリ脆弱性診断というよりはWebペンテスト寄りなものとなっています。
ブラックボックス診断の形式でWebアプリ上の脆弱性を見つけ、それを下の順で悪用しながら目標を達成する必要があります。

  1. 任意のユーザーアカウントを奪取する
  2. 奪取したユーザーアカウントの権限を昇格するか、別の管理者アカウントを奪取し、管理者機能にアクセスする
  3. 指定されたファイルの内容を読み取り提出する

試験では2つのWebアプリが出題され、その両方を攻略できれば合格となります。

学習の道のり

きっかけ

私はNFLabs. には今年4月から所属しており、それまでは別の場所でWebアプリ脆弱性診断業務に携わってきました。
そして、何か面白そうな資格がないか探していました。
そこで見つけたのがBSCPでした。
Webセキュリティについて学べる資格は他にもあるのですが、Burp Suiteを強く活用していく点にこの資格ならではの面白さを感じ、取り組んでみることにしました。

学習開始時点でのスキルレベル

業務
  • 脆弱性診断 2年間
資格
  • 情報処理安全確保支援士(未登録)
  • GCIH

学習方法

PortSwigger社が無料で提供しているWeb Security Academyというコンテンツを学習しました。
試験はこの内容から出題されます。
学習時間としては200時間ほど費やしたかと思います。

簡単なアカウント登録を行うだけで学習を開始できます。
Webセキュリティに興味がある方に非常におすすめです。

Web Security Academy

30トピックの脆弱性を取り扱っており、ラボは250以上あります。
https://portswigger.net/web-security/all-labs
難易度は難しい方から順に Expert, Practitioner, Apprentice の3段階があり、試験範囲はPractitionerとApprenticeです。
私は受験するまでに計240ほど( Expert 一部 + Practitioner 全て + Apprentice 全て)のラボに取り組みました。
内容が非常に充実しており、楽しく学習できました。
脆弱性診断の経験がある方でも、PractitionerとApprenticeについては念の為全て取り組んでおいた方が良いと思います。
基本的に下の流れで学習を行いました。

  1. 脆弱性についての説明を読む
  2. ラボに取り組む
  3. わからなかったら答えを見ながら進める
Practice Exam

PortSwigger社は無料で受けられる模擬試験を2種類提供しています。
存在する脆弱性は2つとも同じなのですが、刺さるペイロードが異なります。
本番と同じ形式に慣れることができるので取り組むことをおすすめします。
また、無料で受験できるので腕試しに受けてみるのも面白いと思います。

インデックス、チートシート作成

勉強した内容についてはインデックスとチートシートを作成しました。
また、先人が作ってくださったチートシートがGitHub上にあったので、これも併せて活用しました。
出題される脆弱性の幅が広いので、これらのドキュメントは必須だと思います。

使用ツール

必須
  • Burp Suite Professional

Burp SuiteのProfessionalライセンスがないとBSCPを受けられません。
Web Security Academyを勉強するだけならProfessionalライセンスがなくても基本的に問題ないです。
ただし、その場合でもProfessionalライセンスは非常に便利なのでおすすめです。

必須ではないが便利

使ったツールは色々ありますが、特に便利だったものを列挙しました。

  • sqlmap

ペイロードを考える必要がないので楽でした。
ただし、sqlmapが刺さらない場合もあるので、自分でペイロードを考える能力は絶対に身につけておく必要があります。

  • SSTImap

sqlmap同様、ペイロードを考える必要がないので楽でした。
ただ、対応できないテンプレートエンジンもあるので、sqlmapと同様に自分でペイロードを考える能力は絶対に身につけておく必要があります。

試験本番

1度目

落ちました...。
1つ目のWebアプリは攻略できたのですが2つ目を攻略できませんでした。
反省点は下の2点です。

  • 緊張しすぎた
  • あるExtensionを使った時に環境が壊れた

ラボ環境だとこの事象は発生しませんでしたが、本番で突然発生しました。
ネタバレになってしまうので詳しくは書けないのですが、ある脆弱性について攻撃を刺すリクエストを連続で送ってくれるExtensionを使用した際にWebサイトの挙動がおかしくなりました。
この攻撃がWebサイトの動作に影響を与えるものであることは事前に把握しており、正常な動作に戻すための方法も理解していました。
ただ、この方法を試してもWebサイトの動作は戻らず、完全に想定外でした。
結局自力では直せず、この復旧に2時間以上かかりました。(2時間以上経ったあたりで勝手に直りました。)
試験時間は4時間なので、ここで大きな時間を失ってしまったのは非常に苦しかったです。
攻撃を実際に刺すようなExtensionはWebサイトの動作に意図しない影響を与える可能性があるため、攻撃やExtensionの性質を踏まえた上で正しく使っていくことが重要だと学びました。
Extensionを使わない方が良いということではなく、”正しく使っていく”ことが重要だとお伝えしたいです。

2度目

また落ちました......。
1度目と同様、1つ目のWebアプリは攻略できたのですが2つ目を攻略できませんでした。
反省点は下の2点です。

  • 先入観からチェックしてなかった箇所に脆弱性があった

気づくのが遅くなってしまい、勿体ない時間を使ってしまいました。

  • 知らないテクニックが出てきた

試験後にWeb Security Academyを読み返すと、端の方に書かれていました。
隅々まで読めていなかった自分の甘さを反省しました。

3度目

無事に2つのWebサイトを攻略できました。
2度目の失敗もあり、Web Security Academyにおいて、悪用方法やそれに関連する部分を改めて隅々まで読み返して臨みました。
3度目は時間的に余裕を持って攻略することができました。

合格のためのポイント

チートシートやインデックスは非常に重要ですが、当たり前の話なのであえてここでは言及しません。
下の1点が非常に重要だと感じました。
そして何より、普通にラボをこなしていくよりも圧倒的に楽しいはずです。

ラボのゴールを達成して終わりにしない

試験本番では応用力が非常に重要です。
私の場合、応用力不足によって試験本番でところどころ詰まってしまいました。
試験本番ではアカウントの奪取や権限昇格、任意コマンド実行によるファイルの読み取りが具体的な悪用方法となります。
ただ、ラボはあくまで脆弱性の学習が目的のものなので、上記のようなゴールが毎回定められている訳ではありません。
私がここでおすすめしたいのが、アカウント奪取、権限昇格、任意コマンド実行のどれか可能なものを自分独自のゴールとして定めて取り組む方法です。
これにより、様々な環境において脆弱性を実践的に悪用していく練習を沢山でき、応用力が身につきます。
例えば、XSSで alert(1) を発火させることがゴールのラボがあったとします。
これにおいて、被害者のCookieを自分に送信させるというゴールを自分で新たに設定して取り組む、といった具合です。

おわりに

学習も試験も非常に楽しかったです。
Webセキュリティの知見を深めることができました。
脆弱性を見つけて終わりではなく、それを悪用してアカウントを奪取したり、権限昇格したり、ファイルを読み取ったりするまでがゴールである点が普段の診断業務と違っていて新鮮かつ非常に楽しかったです。
試験はこれまでに勉強した内容を応用しながら悪用していく超実践編という感覚で非常に楽しかったのでまた受けたいくらいです。(笑)
また、Web Security Academyは非常に優れた学習コンテンツでした。
Practice Examも非常に面白かったです。
BSCPを受ける予定のない方々も上のコンテンツは無料で遊べるので是非取り組んでみてください。