SECCON名古屋 コンプガチャ writeup
SECCON名古屋行ってきました。
多分大阪でも出たと思うんですが、Web100のコンプガチャのwriteup書きます。
つってもあれですね、Burpのログふっ飛ばしちゃったんで、色々察して下さい☆
てか、僕のツイートの後にwakatonoさんが呟いていた……気付かなかった……
id:10 Web 100pt コンプガチャ
チャンピオンを倒してフラグをゲットせよ
見た時点では札幌で出たスロットマシーン系かと思ってました。
一応writeup読んでたので、PHPでhttpクエリを楽に飛ばせる関数作ってたんですが、まぁ使う機会はありませんでした。
とりあえずURLがRESTにある/battle/user/1みたいな記述になってるのとPOSTされる値がdata[_Token][key]=1ac4432ef…… みたいな形式になってるのが見えたので、Mass Assignmentだろうなと踏んで、パラメータ改竄による勝利を目標にしました。
この手のフレームワークっぽいものを使った問題だと、SQLとかXSSは少ない気がします。ORマッパーを狙うのはあるかもしれませんが、まだ見たこと無いのでとりあえずスルー。
Mass AssignmentはGithubで見つかった一件で有名ですね。その辺の話は、そらはーのブログに詳しく載っています。(github の mass assignment 脆弱性が突かれた件)
ざっくり説明すると、
<form method="POST"> <input type="text" name="data[name]" size="10"> <input type="text" name="data[bio]" size="30"> <input type="submit" value="Change"> </form>
というフォームがあった時に、
<?php #---略---# $user->update(array("name"=>$_POST["data"]["name"] "bio"=>$_POST["data"]["bio"] )); #---略---# ?>
とすべき所を、
<?php #---略---# $user->update($_POST["data"]); #---略---# ?>
と、してしまった場合に起こります。
update出来る物がname,bioだけなら良いのですが、例えば別の場所でidやpasswordやlankをupdateするために、何にでも対応できる万能なupdateにしたとすると、burpとかでdata[id]=hogeといったものを突っ込むことで勝手に色々値が書き換えられてしまいます。
githubの件ではこれで日付やら公開鍵やらをごにょごにょしたっぽいです。
で、フローとしては、
- 書き換えるパラメータと値の特定
- 書き換える場所の特定
- 書き換え
- バトル
- キタ━━(゚∀゚)⌒Y⌒(。A。)⌒Y⌒(゚∀゚)⌒Y⌒(。A。)⌒Y⌒(゚∀゚)━━!!
こんな感じになるのかな、と考えました。ほかにも、強制的に勝った事にするパターンなんかも考えてました。
で、色々やった結果、書き換えるパラメータと値はやぎはしゅが見つけた、"勝負する"を選んだ時にいける画面で降って来るJSONから特定しました。JSONの中にはpasswordとかwinとか、色々思わせぶりな要素もあったのですが、先に方針を決めていたのでスルーしました。
書き換えたのはparamsだかpowerだかの要素です。これだけ値が99999とかになっていて、これを基準に勝敗を決めているのでは、と考えたためです。
場所に関しては少し迷いました。このフレームワーク(?)では殆どのPOSTにdata[_Token][fields]=1e64ac…… というものがついており、これがランダムに変わる上、POST時にdata[battle][win]=1 とかやろうとするとforbiddenを返してきます。なので、このCSRF対策とパラメータ改竄対策っぽいものをすり抜けられ、かつMass Assignmentで書き換えられる場所を探す必要がありました。
探し回った挙句、挑戦者の名前を変える所を使いました。ここだけはdata[]という形式でなく、name=hogehogeという普通の形式でPOSTしていました。このため、改竄対策をすり抜けられると考えました。
また、書き換え対象のデータは自ユーザのものなので、自ユーザのデータがupdateされていなければなりません。
このフォームはユーザデータをupdateしているという条件も満たしています。
で、場所とパラメータと値が特定できたので、名前変更と同時にparamsに9999999999くらいの数字を叩き込んで勝負したら、flagを吐いてくれました。
冷静に考えるとフレームワークの処理っぽくないのにMass Assignmentがあるのは気持ち悪いですね。だって、バックで動いているコードは多分これですよ?
$user->update($_POST);
うわー、って感じですよね。
感想としては、
コンプガチャで煽られたこと、忘れないからな(涙
— やぎはしゅ (@yagihashoo) 2013, 12月 15
とか
Web屋としての人権は守ったので満足である。
— やぎはしゅ (@yagihashoo) 2013, 12月 15
とか。僕の場合はマイナー脆弱性Web屋としての、ですね。
あとパスワードマネージャーの曲がちょいちょい流れててテンションあがりました。あの曲聞くと不思議な力が働いて集中出来ますw
まぁそんなこんなで無事に優勝しました。
とりあえずチーム********、優勝です。
— alc(T.Usui) (@noritama_ususio) 2013, 12月 15
優勝あざっす http://t.co/J5phyWxrbb
— やぎはしゅ (@yagihashoo) 2013, 12月 15
とりあえず、SECCON CTF名古屋大会に********として参加して、優勝しました http://t.co/ulPq3Xa6kQ
— ほよたか (@hawk_light20) 2013, 12月 15
後半の追い上げとか運営のイジメとか、色々つらいことがありましたが、全部やぎはしゅが打ち倒してくれました。
@noritama_ususio ひろたん1、俺9くらい(爆弾
— やぎはしゅ (@yagihashoo) 2013, 12月 15
皆さんお疲れ様でした!
本戦でこわい人達にボコされてきます!!!!
セキュリティキャンプ2013
今年はチューターとして参加してきましたー。
Web以外分からんマンなのでWeb組のNW構築に手間取ってしまったり、参加者に近過ぎたり、VM準備遅かったり、色々反省点が……特にVM準備、夜遅くまでやっててすいません……
今年のWeb組では講師陣お手製のSNSを使った攻防戦がメインだったのですが、結構色んな脆弱性が潰されてて驚きました。CSP使って守ったり、パスワードの扱いを丸々改善してたり、結構レベル高かったと思います。あとチュータースペシャルアタックが凄まじかったですね。その発想は無かった、みたいな感じでした。
CTFは……突然の振りによって二問キャンプ期間中に作ったのですが、誘導に失敗しましたごめんなさい。FUNの方は大体予想通りの流れで、直感で解く人やっぱ来たか、とか思ってたんですが、もう一個の方は……。分かってれば出来たわー、みたいな反応してる人が結構居たので、もう少し綺麗な誘導が出来ればなー、とか思ったり。Not SQL But...くらいは言っちゃっても良かったかもしれません。
キャンパーになら一部抜粋して公開しても大丈夫っぽい(?)ので、FUNの方だけで良ければ。(もう一個の方は配るまでも無いコードなのでw)
プレゼンは事故った感満載でしたね。すいません。とりあえずPublic Suffix ListとCSRF対策トークン+ログイン前の強制再生成がアレな事だけ覚えといて下さい。
去年と違って企業見学がありましたが、これも中々面白かったですね。チューターは後ろで名刺交換したり写真撮ったりしてただけですが……('
To 参加者各位
キャンプは終わりましたが(まだn日目の朝カウントされてたりしますが)むしろこっから先が本番です。月並みな言葉ですが、日常の中で何するかに全てがかかってます。某氏のように毎日XSSを見つけたり、ブログを書いたり、時事ネタを追ったりサーベイしたり……。とりあえず顔本で講師陣を捕まえておくと、面白い時事ネタを流してくれるのでめっちゃお勧めです。この機会に是非。
To Webチューターのお二方
僕が至らぬために負担をかけてしまったと思います。色々すいません&ありがとうございました。チュータープレゼンと攻撃デモ、流石でした。(詳しくは書けない悲しみ)
なのでとりあえず宣伝だけ……
つ http://ctf.nash-dev.com/entrance
To NW組のチューターさんと宮本さん
会場のネットワークを支えてくれてありがとうございました。参加者の時はあまり意識しませんでしたが、チューターになって改めて凄いなぁと思いました。
キャンプ協議会の方々、運営局の方々、協賛企業の方々、講師の方々、チューターの方々、そして何より参加者の方々、この素晴らしいキャンプをありがとうございました!
C#の斬新な解釈
C#の、HttpWebRequest,HttpWebResponse,CookieContainer の斬新な挙動のお蔭で二時間潰してしまったのでメモ。
簡単に纏めると、Set-CookieヘッダでPathを省略したCookieを受け取った時、CookieContainerさんは勝手にPathを "Cookieを吐いたファイルへのパス"と解釈するらしい。ディレクトリではなくファイルな点に注意。
つまり"http://www.hoge.com/my/home.php"でSet-Cookie( Set-Cookie: token=hogehoge) とかして、そのCookieContainerを使って "http://www.hogehoge.com/my/site.php"にアクセスしてもtokenは送られて来ないって事。
"http://www.hoge.com/my/home.php"でしか有効にならないらしい。
IEですらこんな挙動しねーぞ……どういうこっちゃ
Memcached
前々から気になってたmemcachedについて少しお勉強。
memcached - Wikipedia
http://ja.wikipedia.org/wiki/Memcached
memcached - a distributed memory object caching system
要するにメモリ上に置いとくデータベースみたいなモノ。
set hoge 0 0 4
fuga
>STORED
get hoge
>VALUE hoge 0 4
>fuga
>END
みたいなの。詳しくはここら辺を参考に。
[memcached] - Life with IT
http://l-w-i.net/t/memcached/command_001.txt
第1回 memcachedの基本
http://gihyo.jp/dev/feature/01/memcached/0001
続きを読む
交流会
妄想まとめ→感想まとめ になりつつある気がする……。
サーベイしたものを纏めようかと思ってたのですが、アウトプットが下手で何もネタが出ず、結局微妙な短文で終わるという結果になるだろうなぁとか考えながら放置することはや数ヶ月……。
閑話休題。
産学情報セキュリティ人材育成交流会に参加してきました。
ノートPC広げてる人が殆ど居なかったり、そもそもAPについて何も書かれて居なかったりと、キャンプ関係のとは大分違った雰囲気でした。
もし次回があるなら出来ればAP書いておいて下さいorz
某先輩にguest用のを教わったのですが、迷った末にテザって呟いてました。
初っ端にカスペルスキーの方からのお話があったのですが、タイトルが「マルウェア解析者の目から見える世界」だったんで、てっきり機械語mgmgな話かと思ってたのですが、結構Web系の話も多く、幸い全く分からんな感じにはなりませんでした。
"サイト改竄→気付かれないようにiframeを入れる→攻撃用のページを見せ、環境解析→脆弱性があるアプリ(java,PDFリーダ等)を見つけたらexploitをプレゼント→乗っ取って更に被害を広める"
みたいなGumblar的なのがまたあって、こいつは解析者の手に渡らないように特定のIPとかからきてもexploitを返さないようにしてるんだよー的な事を言っていました。
素人的には、そんなん別に会社名を一切出さずに契約した、一般環境に見せかけたマルウェア入手用のクライアントを使われたら意味無いのでは、と思うのですが、果たしてアンチリサーチャー効果はあったのでしょうか……。
ほかにc99shellの実演、設置するとそれを作った側(≠使う側・設置される側)にメールで情報が行くフリーのバックドアのコード説明等もありました。
c99shellシェルの実演中、セーフモード的なのでOSコマンドを実行出来ないようにしてたらどうなるんだろう……と思ったのですが、セーフモードって廃止されてたんですね……。
バックドアの方はお決まりのbase64とevalを組み合わせたあれでした。ぬーん
パネルディスカッションは、今はこんな仕事してます、将来のためにこんなことしといた方がいいよ、採用するならこんなやつ的な話でした。
まぁ予想通りというかなんというか……英語……つら……。
どうやら必要性に駆られれば人間は変わるらしいです。そんな事になる前からどうにかしたいのですが、英語と聞くと本能的に逃げたくなるタイプでして……。
強制的な変化が起きて欲しいような、欲しくないような……。
会場から何処で専門的な技術をつけたんですか的な質問が出たのですが、どうもやはり独学というのが主流らしいですね。懇親会でも何人かの人と話してたのですが、やはり独学の模様。分野的に仕方ないとはいえ、この辺どうにかならないものか、とも思いますが……。
あと、そういった専門的な技術は無くても大丈夫、みたいな事も言ってました。学生のうちは基礎を固めておけって事ですね。
やはり新卒に期待すること、というか新卒を取る意味というのはその辺にあるのでしょうか。
逆に今やりたい事があるなら、それと違う場所に飛ばされても突き通せと言ってました。この辺はIT業界的で、大企業といえど分野融合・革新的な事を許容してくれる気質なのですね。
懇親会では割とソロプレイ感ありましたが、なんだかんだ聞きたかった某社のお話や業界の話が聞けたので個人的には満足でした。詳しくは書けませんがw
危機管理コンテストに出ている人やWebセキュに興味ある人を見つけられたのも結構な収穫でした。白浜で会えるといいのですが……。
あ、この本頂きました。IIJの方、ありがとうございます!
サイバー攻撃からビジネスを守る―セキュリティ診断サービスガイド
- 作者: 警察庁,ISOG-J
- 出版社/メーカー: エヌティティ出版
- 発売日: 2013/02/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
と、ここまで書いて思ったのですが、口調が今までと全く違いますね。
なんかダメなブログの典型的な事をやってる気がしますが、まぁネタ帳的な意味では口調とか関係ないので気にしない方向でw
そんなこんなで、雑な感想まとめを終わらせて頂きます。
ではでは。
第二回APASEC
キャンパーとラボユース関係者とそれらに興味ある人が集まる勉強会APASECに参加してきました!
というか、発表させて頂きました。
内容はセッション固定化攻撃の概要・例や対策と、脆弱性検査ツールを実装しましたよーって話です。
具体例の所の話、若干不名誉な話だったのに快く許可を出してくれた方に感謝します。
発表中のTLを読み返していたら……。
徳丸本読めよというテレパシーを送っている
— デデキント節電さん (@ntddk) 2013年3月29日
まさに。ちゃんとリジェネレート出来ない場合の対策や、ログイン前の固定化等にも触れられていて、かなりお勧めです。
体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践
- 作者: 徳丸浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2011/03/03
- メディア: 大型本
- 購入: 119人 クリック: 4,283回
- この商品を含むブログ (132件) を見る
ググれって言っちゃいましたが、これ一冊読めばほぼ大丈夫です。とはいえ怖い人からバシバシ斧が飛んでくるのがインターネッツなので、油断は出来ませんが……。
他の方の発表はレイヤー高めスキルレベル低めの僕には若干難しめでしたが、どれもかなり面白かったです。(ネタ的な意味でも、勉強的な意味でも)
C-Helper、経験者がああいうのを組もうとすると、意識してない所で初心者が詰まって死ぬ、みたいなパターンになりがちなんですが(論プロSAやってて思いました)その辺の解決も出来てて、凄いなと思いました。
大学の授業でもそうですが、予習目的で入学前の期間に配布して~、みたいな用途でも使えそうで、そうすると某ゼミ的に「あ、ここC-Helperでやった所だ!」みたいな感じになって色々捗るのではないかなと思います。
ほもっきんちゃん特定出来たし、久々にあゆあゆさんや木田氏と会えたし、満足満足。
改めて、運営の方、サイボウズの方、ありがとうございました。
OSC一日目
酒飲んで寝たら17時とかに起きて一日の予定全部吹っ飛んだひろたんです。どうも。
飲んだって言ってもたかが缶一本なのに……くやしいビクンビクン
ちなみに飲んだのはラ・フランスハートです。割と美味かった。
さて、OSCにも行かずSECCONTLも眺めずにずっと寝てただけとかアレすぎるんで、とりあえず昨日のOSC一日目の事書きます。
http://www.ospn.jp/osc2013-spring/
まずは講演を。
OpenStackで実現する分散ストレージ「Swift」とプライベートクラウド
内容はOpenStackとSwiftの概要、実際に簡単に管理出来るよー的なデモでした。
簡単に端末足せるし、RESTで管理出来るしシンプルな構造だから色々作りやすいけど現状いいクライアントサイドのソフトが無いよーって言ってたので、DropBoxが微妙になったら自分でクライアント実装しちゃおうかな、とか思ってます。
因みにCyberDuckはちょっと設定をしないと使えない模様。
Swiftはコンテナとオブジェクトによる管理で、コンテナにはコンテナを持たせられない、という事だったので、もう少し直感的に管理出来るGUIアプリでも作ろうかなぁ、みたいな。
ディレクトリの情報をxmlで持たせて、ユーザ側に出来る限りコンテナとかを意識させない作りにすれば、割と使えるんじゃないかな、と思ってます。
ただまぁ、認証の方式が変わったり突然方針変換して構造変えられると悲しいので、今の所とりあえず妄想するだけ。
いまさら聞けないHTML5とWebPlatform.org
あれ、どっかで見たことあるマークがスライドに……って、ウチやんwwwwてかORFで展示してた人が話してるwwwみたいな事が。講師の名前くらい見とけよって話ですね、ええ。
WebPlatform.orgというのは、各ブラウザベンダ毎にまとめられてる情報をさらにまとめた感じのサイトらしいです。他に、各ブラウザの対応状況をまとめたページ(http://caniuse.com/)の紹介とかもありました。
今後何かHTML5の技術を使う時は参考にしようかと思ってます。
HTML5+WebGLは、何故盛り上がらないのか!?
大変!WebGLちゃん息してない!!って話でした(適当)
Googleさんが頑張って色々出してたけど(例:http://workshop.chromeexperiments.com/bookcase/)
去年の今頃を最後に音沙汰無しになったらしいです。
原因として、MSがDirectXにとってユーザにとって有害だからIEに実装しない、って方針をとってることと、スマフォだとまともに実装されてないって事をあげてました。
うーん、面白いとは思うんですが、いかんせん僕には複雑すぎて……。 というかそもそもそういうモノをデザインするセンスが(ry
講演は、講師お手製のWebGLを使ったスライド再生ソフトを使っていたのですが、外積計算やら視点変更用の演算やらを全て自分で実装しなければならず、私のように生で書くのはマジキチだから素直にThree.jsとか使ってくださいね!って言ってましたw
展示は二、三階にあって、二階はどっちかというと企業が、三階はユーザ会や有志が多かった印象でした。そのせいか、三階にはちょいちょいセキュキャンで見たことある人とか居ました。(講師含む)
以下展示で面白そうだったの列挙
Wakanda : http://www.wakanda.jp/
javascriptで色々出来るモノみたいです(適当)
DB設計を視覚的に出来たり、呼出しをJSで書けたり、中々面白そう。IDE落としたんで、後で遊んでみます。
Mogok : http://mogok.jp/
IIJがやってるRails用のPaaSですね。Heroku的なものと勝手に認識してます。今後どうなるかは分かりませんが、とりあえず使ってみようかなと思ってます。IIJだし。
Apache Camel : http://camel.apache.org/
どうも形式変換ソフト的な感じらしいんですが、何が出来るのかちょっと良く把握できなかったので後で色々調べてみようと思います。
from("url").to("url")みたいな事をやると変換されるよ!urlはfile:とかhttp:とかみたいなの以外にも沢山種類があるよ!って言ってました。各言語、マシンごとに変換ライブラリを用意しないで済むってのが最大の利点みたいな感じらしいです。
……ところで、ググったらサジェストで「Apache Camel みさくらなんこつ」とか出てきたwww
にゃるほお゛お゛っど、ちゅまりこのぉおおターバンのぉおお女のぉおお子はこのぉおお後……(by みさくら語コンバータ:http://jet-black-laver.sakura.ne.jp/RTM/nankotu.htm)
opencocon : http://opencocon.org/
シンクラのためのOSらしいです。Win8を古いノートPCから操作するデモやってました。これで家のデスクトップいじれば色々幸せになれるのでは……
Piwik : http://ja.piwik.org/
Google Analyticsのオープンソース版らしいです。Googleに情報を渡したくないならこれがいいよ、と言ってました。Google対策をしてるユーザもいるらしいですし、ビジネス用のサイトなんかを作る事になった時にでも使ってみようかなと思います。
ネタ的な意味で気になったのはmikutterとかEjectとか。としぁ氏にふぁぼられたらEjectされるクラ使ってもらおうぜ!みたいな話してきました。
あとは、担当がノロという名のウイルスに感染して上下から情報流出を起こしたから無人ブースなんだ!ごめんね!って張ってあったMODX CMSもウケたw
ちょっと気になったのはCMS。
色んなCMSが展示されてたんですが、CMSって何でも作れる的な方向を目指すと結局プラグインの数勝負になってWPに負けるんじゃないかなぁ、と思ってるんですが、どうなんですかね。NIIのNetCommonsとかはちょっと気になりましたが。一つの教室にまとめてCMS戦争とかしてみたら面白そう、みたいな不謹慎な事考えてました。
色々面白いのはありましたが、特に記憶に残ったのはこんな感じでした。
最後に貰い物の画像と紹介を張っときます。
左下から
LPICノート
PostgreSQLファイル
Apache Camelファイル+らくだ人形
UltraMonkeyファイル(3枚)+バッジ
MOGOKパンフ(何か可愛いから載せた)
NetCommonsのキャラの名刺(緑川陽菜)
小江戸らぐ名刺
GMO AppsCloudのシール
mikkuterシール
ウサギィシール(何故かMSブースで貰った)
ボールペン(日立?)
BlackDuckの人形(押すと鳴く)+ボール(抽選であたった)+箸
Ubuntuイメージディスク*2
OpenSUSEイメージディスク
open coconイメージディスク
at-link うmy棒(検証用・障害対応用)