撤退

参加報告を記します.

CTF for ビギナーズ奈良に行った

CTF for ビギナーズ奈良に行った

TMCTF出たけど,書かずにこの時期まできてしまった… 書こうとは思っていたんだけど…(完

行くまで

奈良には初めて行くということで,鹿に会えると楽しみにしていたが会えず. 現地の人に鹿は野生で駅にまで入ってくることがあるみたいな話を聞いて,自分の感覚の鳩に近い生物なんだなあと思った.

あと,福岡で会ったことのある人が4人くらい居て楽しかった.

あとNAISTへ向かうバスでSuicaが使えなくて100マス戻った.

チュートリアル

服部さんと小出先生の説明から.小出先生とは競技後に福岡での話(デバドラの話)が話せて楽しかったです.

服部さんが世界観の説明の時に「クソな上司からadminのログインIDとパスワードを教えてもらえずに,これを直せと投げられた」というフレーズを使っていて,僕もその経験ある!となり笑いました. (ただ,僕の上司はとても良い人だということだけ補足だけしておきます.)

小出先生は相変わらずの話しっぷりで,面白かったです.raspberryのスペル,難しいですよね.

競技について

競技は福岡の時仲良くなったふるつきくんと2人チームNOPで出ました.

本当はここでSECCONって入ったあの紙の画像を上げるとかっこいいけど,画像撮ってない…

競技全体についてはスコアボードを見れば分かるけど,スクリプトを完成させたチームと終盤にシステムを稼働させていたチームが上位に行った感じですね.

あとは,MacOS Xだと有線LANが使えなくて焦ったけどXUbuntuなら無事使えたとか,外部接続が出来ないからslackが使えないとか色々ありました.

わかったこと

SSH関連

  • 開始してすぐにsu pipassword:raspberryでログイン出来たので,デフォルトのままのアカウントがあるんだなーと思いパスワードを適当に変更.(これがフラグ
  • ほんでふるつき君に他のIPにこれでログインしてよって言っておいたら,すぐにcommandっていうのがあります!と教えてくれて(優秀)flagぽいものを見つけ出すも,IPとチームの対応が分からないという事態になる.
  • パスワード変えたし大丈夫でしょと思っていたら,突然sshの接続が切れてて,ぶちギレwコマンドで確認するとpiのセッションがあり混乱する.
  • あとからssh pi@ipaddrを試してみたらどうもプロンプトの様子がおかしいので,バッグドア型ぽいと気がつく.su piでのユーザ切り替えによる認識だったから気がつかなかった!(フラグ回収
  • 落とされたsshsudo service sshd restartで力業の復旧を行う.
  • だいぶ時間が経った後/home/pi/work/ssh...にあったソースコードを読んだ感じだと,piでのsshログインだけ別の扱いになっててなるほどねってなった.
  • piでログインしてもなにも出来ない(使えるコマンドがかなり制限されてた)のになんでsshを閉じるんだ…周りはスーパーハカーだらけかよビギナーズ詐欺かと思ったらcommandにそういう機能があったらしい.そのコード読む時間なかったよ…ごめんなさい小出先生…
  • 最後にはなんかsudo service sshd restartが効かなくなって,エラーを頑張って調べたら,sambaがarch linuxで動かねえ!って記事しか出てこなくて完 リブート掛けたら締め出し喰らって完 僕のアタックアンドディフェンスはここで終わってしまった.
  • あとで小出先生にrestart効かなくなった原因を尋ねたところ,「なんでだろう.なんかファイル足りないのかも」と言われてほーってなった.

SSHの部,完

Webサービス関連

  • とりあえず開発環境から本番環境にapp/bootstrap.phpをいじったらOops!画面に突入した.(未解決問題 *1
  • ふるつき君がほいほい脆弱性を見つけて来たので,sshの対応に追われながら直していった.
  • 具体的にはログインハッシュ,uploadの部分,認証無しでユーザ情報がedit出来る部分,アクセスログのUserAgentでXSSできる部分を直した.
  • ふるつき君が書く攻撃コードを手伝ったりもしていたら,他チームの1000点ラッシュが始まる.
  • 自分達は最初の1000点ラッシュの時の攻撃は喰らわなかったけど,その後Capital Nagaokaチームのadminに入れるというやつを喰らい1000点取られる.
  • 長岡はCapitalでは無いと思った.
  • なんかConfigファイルが消えてて,ディフェンスポイントが入らなくなった.これがくせ者で,かなりの時間を費やしてしまった(しかも,他の問題が発生し復旧せず)
  • 他にもsqlインジェクションとか直してないし,色々と手が回らなかった.
  • 帰宅してから書いたコードに思いを馳せてたら,phpを弾くアップローダじゃなくて,phpだけ受け入れるアップローダになってた気がしたけど,アップローダから攻撃したseccap_koチームからは点を取られていないので謎が深まる.(ただそれだとConfigファイルが消えてたのと整合性が取れる.でももっと他に消すものがある気もするけど…)

Webの部,完

NAISTについて

  • 食堂の炒飯が割といける.
  • この時期のNAISTでは野焼きやバーべーキューが行われるので,焦げ臭くてもraspiが燃えたとは限らないということ.
  • 足である奈良交通バスではSuicaが使えない.

感想

  • 面白かったけど,もっと点数は取れたんじゃ無いかなーって気がしました.色々運が良くてアタックに成功したけど,人手不足やら実装力不足やらipアドレスとチームの対応付けの失敗で得点が伸びなかったということが残念でした.
  • これだけ未解決の問題が多いと点数が伸びなくてもやむなしといったところですね.それでも防御の点数のインフレが無ければ割と上位でしたが(笑)そういう意味でも点数の配分は難しいなあと思いました.
  • デバッグとバックアップはちゃんとしようと思いました.
  • 防御点の割合がかなり高くなるなら,トータルで見てApacheアップローダ系の致命的にやられるヤツを直すまで止めてもいいかもしれないと思いました.
  • Web系の防御点が1チーム1000点で,複数の攻撃可能箇所から取れるものが同一なためにどこか一つでも開いてるとやられるので,中途半端に直しても意味があまりなかったですね.そういう意味でもかなり簡単に全体を確認してから出すのはとても大切な感じがします.
  • あとiptablesの変更はかなりテクくて良いなと思いました.
  • 腰がめっちゃ痛くなりました.
  • 知り合いが居ると楽しかったです.
  • とても楽しかったわけですが,運営の皆さんはとても大変そうでした.とても感謝しています.ありがとうございました.

*1:本番環境の設定についてソースコードが公開されてみたのでやってみたところ,fuel/app/config/production/production.phpを編集してデータベースの設定が必要だったみたいです.確かにそらそうだー