ctf4b奈良A&Dで悔しい思いをした話
attack-and-defense.doorkeeper.jp
に「友利奈緒キャンプ」で参加しました。結果は下位(◞‸◟)
スコアボードをキャッシュから拾ってきたので一応置いておきます.お疲れ様でした!
#ctf4b #a_and_d pic.twitter.com/257HArWrGO
— はいひる (@HighHigh_hill) 2015, 10月 17
チーム構成は
- 友利奈緒
- たかき(ってひと)
- とっきー
- はいひる
というセキュキャン2015オンリーのメンバーです。
問題
Web
何かの会員サイトがテーマでした。特定のページが無認証でアクセスでき、そのページでは会員の個人情報が丸々見えてしまうので、適当にスクレイピングしてcsv形式で提出して1000点ずつ得点を稼ぐような問題です。 お察しの通り、現地は1000点取られた(Damageが1000点加算した)チームが続出し、SecCap_KOがAttack Score 13830を稼ぐという地獄絵図となりました。うちも例外なく取られました。
ssh
各チームのサーバーのpiユーザーにsshログインします。commandという実行可能なファイルが置かれています。実行すると得点対象になるコードが現れます(kG4sbJZu)。
$ ssh pi@10.0.17.1 pi@10.0.17.1's password: Last login: Fri Oct 16 20:02:44 2015 from 172.16.13.1 bash-4.2$ ./command Return-Path: <koide@ai.kyutech.ac.jp> X-Original-To: koide@ai.kyutech.ac.jp Delivered-To: koide@ai.kyutech.ac.jp Received: from [192.168.1.101] (st0995.nas811.p-fukuoka.nttpc.ne.jp [210.136.142.131]) by mail.ai.kyutech.ac.jp (Postfix) with ESMTPS id D9672660B5 for <koide@ai.kyutech.ac.jp>; Mon, 12 Oct 2015 18:16:37 +0900 (JST) From: Koide Hiroshi <koide@ai.kyutech.ac.jp> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Subject: Love letter for you Message-Id: <1955675C-B9BD-44B5-8D3F-ABFB550E97E5@ai.kyutech.ac.jp> Date: Mon, 12 Oct 2015 18:16:37 +0900 To: Koide Hiroshi <koide@ai.kyutech.ac.jp> Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2104\)) X-Mailer: Apple Mail (2.2104) Dearest Raspberry, I love you. The secret code is kG4sbJZu.
piユーザーのパスワードは初期設定ではraspberryです。これは午前中のチュートリアルで教わったことであります。 早いもんがちで提出すると100点もらえます。 commandはSSHのデーモンを止める役割もあったそうです。
次第
うちのチームで起こったことを僕が把握している限り順に列挙します。
- 数十分後にはSSHのデーモンが止まる。以降sshを使って何もできなくなる
- どうしようもない状況では運営に助けてもらう(rebootしてもらう)ことも可能らしい
- 友利奈緒がsshのcommandでポイントをとれることを確認
- サーバーの番号とチーム名の対応がわからなくて得点をとるまでに時間がかかった
- 開始1~2時間以内に、はいひるがWebで100件丸々個人情報をとれるページを発見
- たかきがsubmitしたが得点にならなかったらしい
- 一時4位まで上がる
- 友利奈緒キャンプ1000点持ってかれる
- 友利奈緒が例のページの情報を使って得点できることを確認
- Webサービスが停止。Defense Scoreが入らない状況になりますます下位に転落
- 後半のDefense Socreの倍掛けの恩恵を受けられなかった
反省点
- SecCap_KOがごっそり点稼ぎを始めるよりもずっと前に1000点ずつ得点する方法がわかっていたのに、それはできない方法としてまかり通ってしまっていた
- 1000点とられる前にWebを止めるという英断ができなかった
- 意思決定が圧倒的に遅すぎた
最後に
curlでまとめて取ってきた個人情報(HTML形式)をスクレイピングして提出できる形式に直してくれるスクリプト
iptablesでボット以外からのアクセスを弾くアイデア賢すぎる(ネットワークアドレスを変えてアクセスしてきたチームがあったそうだが)