【フェーズ1:Offensive Securityの基本】 今日はTryHackMeの「Offensive Security Intro」を進めた。最初に学んだのは、Offensive Security(攻撃側セキュリティ)の考え方。
- Offensive Security:攻撃者と同じ視点でシステムを調べ、本物の攻撃者より先に弱点を見つけること - Defensive Security:攻撃を防御・検知する側のセキュリティ
つまり、 - Offensive Security = 攻めて弱点を探す - Defensive Security = 守る
【フェーズ2:FakeBankの確認】 今回のRoomでは、安全で合法なTryHackMeの演習環境にある「FakeBank」という偽の銀行サイトを攻撃対象として使った。
最初に確認した情報: - 口座番号:8881 - 残高:-$1,232.32
この段階ではまだ攻撃はしておらず、まずターゲットとなるWebサイトの状態を確認した。
【フェーズ3:隠しページの探索】 次に、普通にサイトを見ているだけでは表示されない「隠しページ」を探した。ここで使ったのが `dirb`。
実行したコマンド:
`dirb http://fakebank.thm`
dirbは、Webサイトに対して多数のURL候補を自動で試し、存在しているページやディレクトリを探すツール。
今回のような調査は「Directory Enumeration(ディレクトリ列挙)」と呼ばれる。
見つかったURL: - `http://fakebank.thm/bank-transfer` - `http://fakebank.thm/images`
dirbの実行結果では、「+」から始まる行が見つかったURLを表していた。
【フェーズ4:HTTPステータスコードの確認】 探索結果ではHTTPステータスコードも確認した。
- `CODE:200`:ページが正常に存在している - `CODE:301`:別のURLへ転送される
今回、`/bank-transfer` は `CODE:200` だったため、実際に利用可能なページだと分かった。
【フェーズ5:管理者ページへのアクセス】 次に、
`http://fakebank.thm/bank-transfer`
へ直接アクセスした。
すると「Admin Portal」という職員・管理者向けのページが表示された。
画面には、 - Staff Account - Register cash deposits - Deposit to account - Amount to deposit in USD
などが表示され、一般ユーザーが使うべきではない入金機能が利用できる状態だった。
重要なのは、管理者ページが「見えない場所に隠されているだけ」で、実際にはアクセス制限されていなかったこと。URLを知るだけで管理者用ページを開けてしまった。
【フェーズ6:アクセス制御の弱点】 この状態は、「隠してあるから安全」という設計が安全ではないことを示している。
本来必要なのは、 - 管理者かどうかを確認する - 権限のないユーザーは拒否する - サーバー側でアクセスを制御する
という仕組み。
今回のように、本来アクセスできないユーザーが重要な機能へアクセスできてしまう問題は「Broken Access Control(壊れたアクセス制御)」の考え方に近い。
【フェーズ7:口座残高の変更】 Admin Portalでは、自分の口座「Acc 8881」を選択した。
その後、 - 入金額:2000ドル - 「Deposit Money」を実行
元の残高:
`-$1,232.32`
そこへ2000ドルを入金したため、
`-$1,232.32 + $2,000 = $767.68`
となり、残高をプラスにすることができた。
【今回の攻撃の流れ】 1. 通常のWebサイトを確認 2. `dirb` で隠しURLを探索 3. `/bank-transfer` を発見 4. 管理者用ページへ直接アクセス 5. アクセス制御の不備を確認 6. 自分の口座 `8881` を選択 7. 2000ドルを入金 8. 残高をプラスに変更
【今回覚えた重要用語】 - Offensive Security:攻撃者の視点で弱点を探すセキュリティ分野 - Defensive Security:攻撃を防御・検知する側のセキュリティ - dirb:Webサイトの隠しページやディレクトリを探索するツール - Directory Enumeration:Webサイト内に存在するページやディレクトリを列挙して探すこと - HTTP 200:アクセスしたページが正常に存在することを示す - HTTP 301:別のURLへのリダイレクトを示す - Broken Access Control:本来アクセスできないユーザーが、重要なページや機能へアクセスできてしまう問題
【今回の一番重要な学び】 「URLを隠すこと」と「アクセスを禁止すること」は全く別。
管理者ページへのリンクを画面から消していても、URLへ直接アクセスできるなら安全ではない。ペンテストでは、表から見える機能だけを見るのではなく、「裏に隠れているページや機能がないか」を探すことも重要。
【完了記録】 - Room:Offensive Security Intro - Completed tasks:4 - Points earned:32