Overview
Tijdens dit lab lag mijn focus op het misbruiken van een anonieme TFTP-upload, wachtwoordhergebruik en een escalatie via LXD. Door deze zwakke plekken effectief te combineren, kon ik een volledige aanvalsketen opzetten: van het uploaden van een PHP-webshell tot het verkrijgen van volledige roottoegang op de host via een geprivilegieerde container.
Reconnaissance
Mijn initiële poortscan voerde ik uit met Nmap. Hieruit kwamen twee interessante ingangen naar voren: TFTP (poort 69/UDP) en HTTP (poort 80).
| Port | Service | Interessant omdat |
|---|---|---|
| 69/UDP | TFTP | Schrijven naar de webmap |
| 80 | HTTP / PHP | Geüpload script uitvoeren |
Enumeration
Tijdens het onderzoeken van de TFTP-service ontdekte ik dat er sprake was van een misconfiguratie: de service stond ongeauthenticeerd schrijven toe rechtstreeks in de webroot (/var/www/html). Dit gaf mij de unieke mogelijkheid om bestanden te uploaden en deze vervolgens via de webserver aan te roepen.
Initial Access
Via de open TFTP-verbinding heb ik een PHP-webshell geüpload. Door deze webshell via HTTP aan te roepen, verkreeg ik mijn initiële toegang als de systeemservice www-data. Bij het inspecteren van de webmap stuitte ik op een .htaccess- en een .htpasswd-bestand. Ik heb de inloggegevens hieruit achterhaald en getest op lokale accounts. Dit bleek een voltreffer: vanwege wachtwoordhergebruik kon ik met het commando su direct overschakelen naar de lokale gebruiker mike.
Privilege Escalation
Als de gebruiker mike ontdekte ik dat mijn account lid was van de lxd-groep. Dit lidmaatschap maakte misbruik mogelijk van een bekende ontwerpfout in de rechtenstructuur van Ubuntu/LXD (CVE-2023-5536). Omdat gebruikers binnen deze groep standaard containers kunnen beheren met verhoogde rechten, heb ik met behulp van Distrobuilder een minimale Alpine Linux-container gebouwd. Ik startte deze container op als een geprivilegieerde instantie en koppelde het volledige bestandssysteem van de host-machine aan de /mnt-map binnen de container. Eenmaal in de container kon ik met volledige rootrechten de host-bestanden aanpassen (zoals de root-wachtwoorden of sudoers-rechten), waarmee ik de host definitief en volledig wist te overnemen
Lessons Learned
- Ongeauthenticeerd schrijven naar een webmap kan code-uitvoering opleveren.
- Wachtwoordhergebruik kan verdere lokale toegang geven.
- Te ruime containerrechten kunnen de host raken.
Gebruikte tools
• Nmap • TFTP • Distrobuilder •
Git • Python