🦉

WEBセキュリティ初心者の「OSWA」合格体験 (2024年8月)

2024/08/15に公開

ここには書けないような○スみたいな理由でOSWA取得を目指し無事合格しました。

記事のサマリ

  • WEB-200を2カ月くらいで勉強しOSWAを取得しました
  • WEB-200の良い点は初心者向けなところ、微妙な点は出来立てのコースで発展途上なところ
  • 試験は終わってみれば簡単な脆弱性でしたが試験中はなかなか気が付かない...
  • WEBセキュリティ無知な自分にとって入門にはちょうど良いトレーニングでした
  • 良いトレーニングですがPortSwiggerと比べて値段が高すぎます

WEB-200開始前のスキル

  • 5カ月前にOSCP取得 (こちらの記事も良ければ覗いてください)
  • プログラミングはまあまあ得意でPHPは雰囲気で読める
  • WEBアプリ開発経験が皆無でJavascriptやWEBセキュリティの知識がほぼ無い
    • HTTPOnlyやCORSは単語さえ知りませんでした
    • ブラウザの開発者ツールは一応雰囲気で使ってました

勉強方法

1. WEB-200 PDFとラボ

6月からコースを始めました。途中プライベートや仕事が忙しくて3週間くらい休止していたので1.5カ月くらいでModuleとChallengeラボを完了しました。フォロワーさんにノー勉や2週間で試験に挑んでいる方もいたのでそれと比べるとぼくは...

良かった点

  • 無知な自分にとっては勉強になることが多かったです
    • XSSってしょぼく見られがちだけど管理者のcookie取ってログインしたりできるんだー
    • XXE(外部実体参照)っていまいちどんな攻撃かわからないまま生活してたけどこうやって攻撃するのかー
  • WEBセキュリティへの苦手意識を少し克服できた気がします

微妙な点

  • Moduleラボがぶっ壊れてできないやつがあります (ぼくが使い方わかってないだけかもだけど)
  • Challengeラボが8台しかなく少ないです
  • Challengeラボにたぶん実装ミスがあり、たぶん意図していなさそうな攻撃が通ってしまった
  • PEN-200ほどDiscordが盛り上がっておらず、わからないマシンの攻略方法を調べるのが大変です
    • 1週間くらいかけて自力で解くことができて結果的にスキルアップには繋がったかもです
  • 全体的に発展途上感がありました

2. 徳丸本

WEB-200購入前の資金調達をしているときに読もうと思いました。買ってみたら思ったより分厚くて途中までしか読めませんでした。多少ハンズオンもありますがWEB-200のラボの方が個人的には面白かったです。ひと段落したので再開します。

3. WEBアプリ作成と診断

全く経験がなかったので3個くらいアプリを作って公開していました。資格取得に直結はしていませんでしたが何も知らないよりはマシになったと思います。

4. PortSwigger Academy

このシリーズのラボです。

  • SQL injection
  • Cross-site scripting
  • CSRF
  • CORS
  • XXE
  • SSRF
  • OS command injection
  • Path traversal
  • File upload
    上記のAPPRENTICE(初級)といくつかのPRACTITIONER(中級)をやりました。OSWA取得だけを考えたらやらなくても良かったと思いますが普通に勉強になりました。

5. バグハント

WEB-200のテキスト読み終えた後に世の中のアプリの脆弱性を見つけようとしましたがまだ見つけられてないです...CVEほしい。
代わりに社内専用アプリの脆弱性を2個見つけてそれぞれ開発部門にフィードバックしました。社内の方が競争率低くて見つけやすいけどリターンがない。

試験

ルール

詳細はOffSec公式や他の方の記事をご参照ください!5個のマシンに対して、認証バイパスして管理者ページに行けたらlocal.txt(10ポイント)、OSコマンド打てるようになったらproof.txt(10ポイント)で、70/100ポイント取れたら合格です。OSCPと違いボーナスはないです。
最低でも4台は認証バイパスしないといけないので、全く分からないマシンが2台あったら詰みです。

OSCPではproof.txtをShell上でディレクトリ移動してtype, catで表示するルールですが、OSWAではlocal.txtもproof.txtもShellではなくブラウザ(+ Burpのレスポンス)で取得すればポイントになります。
割と時間かつかつな試験なので時短のためにブラウザから取得してしまうのがおすすめです。(公式のルール要確認です!)

難易度

チャレンジラボ、HackTheBoxのeasyと同じくらいの難易度でした。他の方のレビューにもあるようにそこまで難しくないはずですが、基礎がなかった自分にとって、また試験の限られた時間でプレッシャーもあるなか攻略するのはかなり大変でした。

タイムライン

JST イベント 備考 ポイント
13:00 試験開始 1分前には監視ツールや本人確認が完了 0
14:00 マシン1 local.txt 10
21:00 マシン5 local.txt proofも他マシンのlocalも分からなくて絶望 20
23:00 ベッドへ 若干心が折れて6時まで寝たり反省しました 20
08:30 マシン5 proof.txt 30
10:30 マシン1 proof.txt 40
11:45 マシン4 local.txt 50
12:10 マシン4 proof.txt 60
12:40 マシン3 local.txt 70
12:45 試験終了 70

日本時間13時に開始しました。OSCPの時より試験監督ツールや部屋確認がスムーズに進みました。また監督ツールが以前より体感軽くなっていたように感じました。

マシン1のlocalを取った後proofも取れないし他マシンのlocalも取れなくて苦しかったです。なんとかマシン5のlocal取った後もproofが全然わからず進捗がありませんでした。
脆弱性はわかるけどフラグ取得につながらないもの、ラビットホールにはまって進まないものがありました。(特にラビットホールは地味に進捗がでて正解の脆弱性に思えましたが、結果的に他の脆弱性がありそちらが正解でした)

一通り調査して20ポイントしか取れず、正直半分諦めムードになりベッドで自分の無力さを反省していましたが、寝て起きたら覚醒して一気に合格ラインまで行きました。
終わってみればなぜこんな簡単なことに気が付かないのか、変なパラメータスルーしたのか、と思うレベルでしたが緊張や焦りもあったので仕方ないと思いたい。

よく見るとWebサイトに所々ヒントらしきものがありエスパーしなくても攻略できるようにデザインされている感じがしました。

レポートをホストWindows上で書いているのですが、Defenderに3回くらいレポート消されたので要注意です。みなさんレポートもKali上で書いていますか?意外とこの辺の話聞かないからどうしてるのか知りたいです。

振返り

初心者向けの内容で、未経験で知識がない人にとっては基礎的な部分から学ぶことができて良かったです。トレーニング前より脆弱な部分を見抜く感性が少し向上しました。受けて良かったと思います。
一方、他の方の記事で試験はFuzzingゲーミングという記事がありましたが自分はそこまで使いこなせておらず、この辺りの成熟度はまだ低いのだろうなと思います。

最後まで読んでいただきありがとうございました。
何か質問などありましたらお気軽にDMください!!
一緒に頑張る友達も増やしたいです!

おまけ

使用したツール・チートシート

他の資格・トレーニングと比べて

PEN-200

  • PEN-200は世の中にあるPoCを使えば良いから脆弱性を理解していないくても良い
  • WEB-200はレベルは高くないけど自分で脆弱性を見つけて攻撃につなげるプロセスが必要で求められるスキルが少し違う
  • WEB-200はトレーニングで扱う攻撃手法が限られているため若干メタ読みができる
  • ラボマシンの数がWEB-200は少なすぎる
  • WEB-200は記事やチートシートが少ない
  • PEN-200をやっていればWEB-200のスタートラインとしては十分な気がします

PortSwigger

  • カバー範囲が違う
    • 脆弱性の種類・網羅性はPortSwiggerの方が良い
    • PortSwiggerラボはどの脆弱性使うのか記載されているがWEB-200チャレンジラボはどれ使うかわからないところからスタートしRCEまで求められる
  • WEB-200さすがに値段が高すぎる

その他

チートシートや試験のメモにNotionを使っているのですが、「AIに質問する」というアクションがあり、以前画面を見ずに検索機能を使ったら意図せずAIにチャットをしてしまいました。幸い試験中ではありませんでしたが、試験中にやると多分レギュレーション違反になるので要注意かもです。昨今検索したら勝手にCopilotにも質問する機能もありますし気を付けたほうが良さそうです。

Discussion