バグハンターがCTFで学ぶWebセキュリティ入門(初心者が知るべき脆弱性と攻略テクニック)
CTFはセキュリティの最高の学習ゲームです。
失敗を恐れず、何度も何度もトライするが大切ですね。
失敗を恐れず、何度も何度もトライするが大切ですね。
WebセキュリティCTFとは
CTF(Capture The Flag)は、実際の脆弱性に近い問題を安全に学べるハッキングの演習です。
Webセキュリティ系のCTFでは、XSS、SQLインジェクション、LFI、CSRFなどがあり、実戦で役立つ知識です。
なぜバグハンターにCTFの知識が必要なのか
・脆弱性の本質を“体感”できる
CTFでは、実際に攻撃を成功させてフラグ(flag)を取ることが目的です。
つまり、座学だけでは得られない「どうすればシステムが壊れるのか」「どう突破するか」を実践的に学べます。
・実際のバグバウンティと同じような脆弱性が出題される
CTFでよく出る脆弱性(SQLi, XSS, CSRF, IDOR など)は、バグバウンティプログラムでも非常に多く報告されます。CTFでこれら攻撃方法と検出スキルを磨いておくことで、実際のアプリやサービスを調査する際にすばやく脆弱性を発見できるようになります。
・「手順を再現できる」ため、説得力のあるレポートが書ける
CTFでの練習により、脆弱性の検証 → フラグ獲得 → 記録という流れに慣れます。
この経験は、バグハンティングで運営側に提出するレポートの質を高めるのに役立ちます。
・安全な環境で確認できる
CTFは合法的かつ安全な環境で攻撃のテストができます。
バグハンターとして本番に挑む前に、CTFでミスや試行錯誤を重ねておくことで、本番の成功率が上がるのです。
練習におすすめのツール
私は、「hacker101」「DVWA」を利用しています。
hacker101は簡単にチャレンジできるのでお勧めです。
ツール名 | 特徴 |
---|---|
hacker101 | HackerOneが運営するハッカー向けの無料教育サイトです |
DVWA |
SQLiの基礎が練習できる
|
bWAPP | 多数のSQLiシナリオあり |
TryHackMe | SQLi専用ルームあり |
HackTheBox Academy | SQLiの入門〜応用まで学べる |
DVWAでSQLインジェクションを確認しましょう
DVWAでのSQLインジェクション初期画面です。
正しいUser IDを設定すると「First name」「Surname」が表示されます。
たとえば、UserIDに"1″を設定します。
「Submit」ボタンを押下すると
UserID"1″の情報が表示されました。
このSQLインジェクションに「脆弱性」が有るか否かを判断するには「シングルクォーテーション(’)」を1個入力すればわかります。
「Submit」ボタンを押下すると
「Fatal error」が表示されましたね。
脆弱性があることが分かりました。
脆弱性が対応されていれば、エラーは出ないです。
それでは、ハッキングをしてみましょう。
UserIDに「攻撃コード」を入力します。
「Submit」ボタンを押下すると
登録されている情報が全て表示されてしまいました。
ハッキング成功ですね。
よく出題されるWeb脆弱性と攻略テクニック
CTFのWeb系問題では、実際のWebサイトでも頻繁に見つかる脆弱性が題材として使われます。
ここでは、初心者でも理解しやすく、かつCTFで頻出する8種類の脆弱性と攻略のコツをご紹介します。
SQLインジェクション
入力値がSQL文にそのまま使われてしまい、不正なクエリを実行できる。
攻略の例
ログイン認証をバイパスしたり、データベース情報を抜き取ります。
クロスサイトスクリプティング(XSS)
HTMLやJavaScriptがそのまま表示・実行されることで、悪意あるスクリプトを注入できます。
攻略の例
Cookieの盗難やフィッシングなどに利用。
コマンドインジェクション
入力がOSコマンドに組み込まれて任意コマンドが実行されてしまう。
攻略の例
サーバー上のファイルを表示できれば成功。
ローカルファイルインクルージョン(LFI)
任意のファイルを読み込ませることができる。
攻略の例
サーバー上の重要ファイルを閲覧。
サーバーサイドリクエストフォージェリ(SSRF)
サーバーが内部ネットワークや外部に勝手にリクエストを送ってしまう。
攻略の例
内部のAPIやAWSメタデータを調査可能。
XXE(XML External Entity)
XMLで外部エンティティを読み込ませて、ファイル窃取やSSRFを行う。
攻略の例(XML)
オープンリダイレクト
正規のドメインから任意の外部サイトにリダイレクトできてしまう。
攻略の例
フィッシング攻撃の踏み台になる。
IDOR(Insecure Direct Object Reference)
認可チェックなしで他人の情報やファイルにアクセスできる。
攻略の例
自分以外のデータが見れれば成功。
バグハンターがCTFで学ぶWebセキュリティ入門(初心者が知るべき脆弱性と攻略テクニック)のまとめ
Webセキュリティを学びたいと思ったとき、
CTFほど「実践的」で「安全」で「楽しい」学習方法はないかもしれません。
特にWeb系のCTFでは、実際のバグバウンティで狙うべき脆弱性などが多く出題されます。
XSS、SQLインジェクション、CSRFなどを何度も解いてもらいたいですね。
CTFは最高の学習ゲームです。
失敗を恐れず、何度も何度もトライするが大切ですね。