Overview
Tijdens dit lab lag de focus op het uitbuiten van een XML External Entity (XXE)-kwetsbaarheid, het buitmaken van een private SSH-sleutel en het escaleren van rechten via een schrijfbaar batchbestand. Door deze elementen succesvol aan elkaar te knopen, wist ik vanuit de webapplicatie een interactieve SSH-sessie te starten als de gebruiker daniel, om vervolgens via een slecht beveiligde geplande taak volledige roottoegang (Administrator) te verkrijgen.
Reconnaissance
Mijn initiële poortscan voerde ik uit met Nmap. Hieruit kwamen de volgende twee services als primaire doelen naar voren:
| 80 | HTTP / Apache | Aanwezigheid van XML-functionaliteit in de webapplicatie |
| 22 | SSH | Mogelijkheid tot inloggen zodra er authenticatiemateriaal is gevonden |
Enumeration
Bij het analyseren van de webomgeving stuitte ik op een loginpagina met actieve XML-functionaliteit. De invoerverwerking bleek niet correct te zijn afgeschermd tegen externe entiteiten. Omdat de applicatie geen gebruik maakte van up-to-date XML-parsers waarin externe entiteiten standaard zijn uitgeschakeld, was de omgeving kwetsbaar voor een XXE-aanval. Met deze kwetsbaarheid kon ik willekeurige lokale bestanden op het systeem uitlezen. Tijdens de inspectie van de gebruikersmappen wist ik zo de private SSH-sleutel (id_rsa) uit de profielmap van de gebruiker daniel te extraheren
Initial Access
Met de buitgemaakte private SSH-sleutel kon ik direct verbinding maken met de SSH-service op poort 22. Hierdoor transformeerde ik de passieve bestandstoegang vanuit de webapplicatie succesvol in een interactieve Windows-gebruikerssessie als daniel, waarmee de gebruikersvlag binnen handbereik kwam.
Privilege Escalation
Eenmaal ingelogd startte ik een lokale inspectie van het bestandssysteem. In de map C:\Log-Management trof ik een batchscript aan genaamd job.bat. Bij het controleren van de bestandsrechten via icacls bleek dat de groep BUILTIN\Users (waar mijn account daniel onder viel) volledige schrijfrechten (F) had op dit bestand. Omdat dit script periodiek door een geplande taak met verhoogde Administrator-rechten werd uitgevoerd, kon ik hier eenvoudig misbruik van maken. Ik heb een Netcat-payload (nc.exe) naar de machine overgebracht en deze via een echo-commando in job.bat geplaatst. Toen de geplande taak een moment later automatisch op de achtergrond startte, werd mijn payload met de hoogste rechten uitgevoerd. Dit leverde mij direct een reverse shell op met Administrator-rechten, waarmee de machine volledig was overgenomen.
Lessons Learned
- XXE kan lokale bestanden bereikbaar maken.
- Zwakke bestandsrechten op scripts die door systeemservices of geplande taken worden aangeroepen, heffen de beveiliging tussen reguliere gebruikers en beheerders volledig op.
- Periodieke administrative scripts moeten altijd in afgeschermde mappen staan waar reguliere gebruikers geen schrijftoegang toe hebben.
Gebruikte tools
Nmap • Nmap • Burp Suite • SSH •
Netcat • PowerShell