MBSD Cybersecurity Challenges 2022 参加記
優勝
最優秀賞でした。
IPFactoryとしては、2017、2018に続く最優秀賞です。世代交代しても勝てたという事実が嬉しいですね。
今後の後輩達にも期待しています。
概要
さて、全体の取り組み方としては、診断含むほぼ全ての作業を任せきっていたy0d3nのブログに書いてあります。
参加記すらも任せている。無責任と捉えるか、信頼と捉えるかは怪しい所ですね。
このブログでは、自分が裏で何をしていたのか、(ほぼ)初めての脆弱性診断にどう取り組んだのかみたいなお気持ちをメインに書こうと思います。
参加登録
入学時からこのコンテスト自体は気になっていたんですが、サークルの名前で出るなら優勝しか無いという点と、コンテストの内容が専門外であるという点から参加を渋っていました。
今年は最後なのと、診断経験が豊富なメンバーが揃っていたので満を持しての参加です。
参加登録で一番時間がかかったのはアピール文の項目で、Discordでは大喜利大会が始まりました。オタクは入力欄を全て大喜利かCTFだと勘違いしている。
大喜利大会も落ち着いてきたところで、「IPFactoryの名に恥じない結果を残します。」を提案、無事採用されました。これが今回の俺の一番大きな成果です。
課題配布開始直前までCTF4bで福岡に行っていたので、事務作業は基本的にfutabatoに任せっきりです。
参加登録を終えた後は、登録が反映されているか、他のチームはどんな感じなのかを把握したくて、公式ページの更新をurlwatchとcronでDiscordに通知していました(Dockerでcronしようとして地味に苦戦した)(feedくれ)。
1次審査
まずはVMが配布されました。適当にVM立てて吸い出したディスクマウントすればシュッと見れるかなぁと思ってやってみたんですが、LVMのせいか、なんか上手く行きません。
バイナリエディタ使って色々と書き換えたり、ちまちまcloud-init関係のファイルとか設定とか抜いたり、shadow抜いてhashcatとかしてる間にオープンリダイレクトできそうなパラメータを見つけたりしていました。
そんな感じでごちゃごちゃしている間に、y0d3nがFTKImager使ってシュッと全部ぶっこ抜いてました。
俺の仕事はもう終わりです。努力の方向性を間違えていて、実はかなり落ち込んだ。
初手で使えそうなツールはVM使ってでも全部試す。CTFでもそう。学びですね。
あとFTKImager、検索Topに出てくる公式ページから落とすとバージョン古くてできなかった。
さて、ぶっこ抜いた後は診断の開始です。BurpよりVimの方が慣れているので、設定ファイルを見たり、ソースコードを読んだりして脆弱性を探しました。
/var/www/dist/.nojekyll
があって、GitHub Pages使ってたのかな?ってなった。あとソースコードにMEMO
とかTODO
とかvulnerable
とか書いてあって面白かったです。
あとシンプルに未定義変数参照してるバグとかあって面白かったです。
見つけた脆弱性とその扱い
慣れないPHPと格闘しながら、DoSに繋げられそうな奴見つけたり、ReDoS見つけたりしました。
パッケージやライブラリについても、色々無理矢理やって脆弱性のある古いバージョンの物を特定したりしていました。
(Re)DoSについては、max_execution_time
が30に設定されている事、パッケージやライブラリについては、脆弱性の攻撃可能性が0または0に近い事から、これらは結局報告に至りませんでした。
色々見つけはしたんですが、「まぁ報告する程では無いかな」という気持ちになりましたね。
これは脆弱性診断として正しいんでしょうか。プロの意見を聞きたいです。
もし診断対象が自社だったりした場合は普通にコメントレベルで、「この正規表現はユーザの入力によってはReDoSが発生する可能性がありますよ」とか言えそうな気がする。
あとはOWASPとか見ながらPHP等の脆弱な設定を徹底的に探して共有したり、最新のCVEまで全部見て刺さらないか探したりしていましたが、基本不発でしたね。
俺の戦場には敵がいなかったので、専門外ではありますがドキュメントの校正などを行っていました。
1次審査の締め切り直前は、3日間富士山方面へゴルフ旅行に行ってました。本当に申し訳ないと思っていますが、富士山の見えるゴルフ場が綺麗だったので貼っておきます。
締め切り前日は宿のベランダで極寒の中作業していました。
最終審査
ぶっこ抜き対策でFull Disk Encryptionとかされたら面倒だな〜とか考えていましたが、杞憂でしたね。
とにかくdiffを見ます。Configについても脆弱になっている事は特に無く、結局ソース読んだり1次の時と同じような事しかできませんでした。
あとなんか今更cloud-initでansible入ったり、is_int
がis_numeric
になっているのが気になりました。
最終審査へ向けての仕事は報告書・スライドの校正とデザイン等への口出しです。
直前はまた沖縄へ3日間ゴルフ旅行に行っていました。マジで本当にかなり申し訳ないです。なんでこうなったのか分からないけど景色も良かったしベストスコアも出たので写真貼っておきます。
飛行機で寝ることができず、当日はしっかりと絶起しました。マジで迷惑しかかけていないのでお土産は大量に買いました。
結果報告はかなり緊張しました。俺のコロンビアが晒されています。
優勝確認後はみんなでふぐを食べに行きました。おいしかったです。
余談
さて、期間中にも関わらず、かなりゴルフに行っていましたが、合計何回行っていたんでしょうか。数えてみました。
10回行ってました。いかがでしたか?
ところで、優勝賞品であるBurp Suite Proはメンバーの半数が既に所持しており、副賞であるiPad miniもメンバーの半数が所持しています。オタクって怖いですね。
長々と言い訳を書き連ねてきましたが、優勝できたのは本当にメンバーのおかげです。ありがとうございました。
最後に
この記事はIPFactory Advent Calendar 2022の17日分です。
昨日はy0d3nの「MBSD Cybersecurity Challenges 2022優勝記、明日はfutabatoのMBSD Cybersecurity Challenges 2022 参加記です。
参加記3連続。
Comments