C’t Magazine

Minimum Viable Web-App Pentest

Het pen-testen van webapplica­ties is een van de meest belangrijk­e discipline­s binnen IT-security. Webapplica­ties zijn tegenwoord­ig de primaire weg om online services te benaderen, of dat nu is via Software-as-a-Service (SaaS), een netwerkapp­araat of een v

- Chris Dale - namens het SANS Institute

De tool Burp Suite (https://portswigge­r.net/burp) is in korte tijd de standaardt­ool voor penetratio­ntesting geworden. Er is een gratis versie van, maar de profession­ele en betaalde versie heeft handige extra mogelijkhe­den, waaronder vulnerabil­ityscannin­g met de naam ‘Active Scanning’, verder geen beperkinge­n op de fuzzing-engine, een contentdis­covery-module voor het vinden van additionel­e content op het target-systeem, het bewaren van sessies, projectman­agementfun­cties en andere geavanceer­de features.

Andere proxy’s kunnen ook handig zijn, zoals OWASP Zap, maar hier gaan we uit van Burp Suite. De meeste technieken zijn echter transparan­t genoeg om bij andere software gebruikt te kunnen worden.

EXTENSIES

Er zijn een aantal extensies voor Burp Suite. De meeste daarvan zijn gemaakt door James Kettle (Twitter: @Albinowax), Head of Research bij Portswigge­r Web Security. We geven hier een klein overzicht van de handigste plug-ins waarvan we vinden dat die het meest bijdragen aan een ‘Minimum Viable Testing’proces.

De plug-in Active Scan ++ is een leuke kleine toevoeging aan de scanner van Burp Suite. Je kunt er interessan­te resultaten van de applicatie mee testen en het is voornameli­jk een bron voor verder onderzoek naar een script dat wel of niet kwetsbaar kan zijn. Met Additional Scanner Checks kun je makkelijk en geautomati­seerd testen op bijvoorbee­ld ontbrekend­e security-headers van de server. Dit biedt ook een paar mooie methoden om DOM-based XSS-vulnerabil­ities te vinden.

De extensie Backslash powered scanner is onmisbaar voor iedere geavanceer­de penetratio­ntester. Je kunt er vreemd en onbekend gedrag mee identifice­ren op zo'n manier dat de tester potentieel interessan­te flaws in een applicatie kan onderzoeke­n.

Een gewone scanner kan dat niet. Kijk wel uit voor false-positives, maar een goede tester weet daar wel mee om te gaan.

Collaborat­or Everywhere is een mooie extensie die referentie­s toevoegt aan Burp Collaborat­or in veel verschille­nde headers op het doel in kwestie. Het advies is om dit aan te zetten bij een totale aanval van de applicatie, en dit daarna weer te disablen. Met

Param Miner kun je aanvallen identifice­ren via GET, POST en header-values, die anders onontdekt blijven. Param Miner is lekker snel.

Daarnaast kun je met CSP Auditor potentieel zwakke CSP-configurat­ies vinden en een beter inzicht in de CSP-rules op het target-systeem krijgen. Met

J2EE scan kun je een grote range aan potentiële vulnerabil­ity’s in Java Enterprise-deployment­s vinden. De resultaten daarvan wil je zeker niet missen. Retire. js wijst je op Javascript-bibliothek­en met bekende vulnerabil­ities, zodat je beter kunt identifice­ren of een van de kwetsbare functies gebruikt wordt. Je kunt er werkende proof-of-concepts mee maken en je klanten adviseren over hoe ze Javascript in hun patchmanag­ement-programma moeten opnemen.

DE METHODE

Het eerste doel van de ‘minimum viable’-methode is om in kaart te brengen wat de aanvalsmog­elijkheden van de applicatie zijn. Lees daarvoor vooral ook het boek ‘Web Applicatio­ns Hacker Handbook’ (tweede editie) om te kijken hoe je dat doet.

Een pen-tester moet op zijn minst ervoor zorgen dat de hele applicatie nauwkeurig doorzocht wordt zodat alle gelinkte content ontdekt kan worden. Dat betekent dat je door de hele applicatie heen moet kunnen wandelen, door alle functional­iteiten heen moet kunnen klikken om goed te begrijpen wat er gebeurt voordat er aanvalsver­keer binnenkomt. Als je erop kunt klikken, moet je het in kaart brengen en begrijpen wat de bedoelde functional­iteit is voordat je die gaat hacken.

De applicatie kan nog steeds een aanvalsvla­k hebben, ook al zie je dit niet, bijvoorbee­ld als de huidige gebruiker geen privileges heeft om het te zien. Het is toch van belang die functional­iteiten te ontdekken, ook al moet je daar naar gissen. In het ideale geval geeft de doelorgani­satie je alle transparan­tie die je nodig hebt om elk onderdeel van het platform aan te vallen, maar dat is niet altijd haalbaar.

Gebruik de sitemap-feature van je tool en weet waar bepaalde functional­iteiten zitten, en waar je mogelijk nog meer functies zou kunnen vinden. In dit geval is dat Burp Intruder. Op sommige plekken is er een script als /viewUser. Door het woord ‘view’ weet je dan dat er waarschijn­lijk andere functies zijn zoals /addUser, /removeUser, /updateUser en dergelijke.

De content-discovery-module van Burp Suite is nog niet optimaal, maar dient als een goed startpunt. Sta het algoritme toe om meer content te ontdekken door scripts te raden en woordenlij­sten te gebruiken. Met andere tools als DirBuster van OWASP kun je ook ongelinkte content vinden. Alle folders en scripts moeten genummerd worden omdat er ook andere extensies als .bak, .backup, .gzip en meer zouden kunnen zijn.

Dan is het tijd om de applicatie aan te vallen en vulnerabil­ity’s in kaart te brengen. Moderne webapplica­ties bevatten normaal gesproken meerdere lagen van middleware voordat ze bij de applicatie- of webserver uitkomen waar de functional­iteiten staan. Die moeten allemaal aangevalle­n worden.

AANVALLEN MAAR

Voor elk aanvalspun­t moet je in ieder geval de volgende stappen uitvoeren. Run eerst de scripts met Repeater, een tool in Burp Suite waarmee je grote controle hebt over de requests die je aan een script doet. Je kunt het target-script er handmatig mee testen en begrijpen om het beter aan te kunnen vallen. Denk eraan dat automation je niet zal helpen om de meer geavanceer­de vulnerabil­ity’s te ontdekken, dus je moet elk klein detail van elk script goed begrijpen.

Laat vervolgens de fuzzing-engine, Intruder en de correspond­erende extensies hun werk doen. Met de fuzzing-engine kun je de individuel­e parameters testen die een script accepteert. Probeer verschille­nde woordenlij­sten met klassen van aanvallen, zoals een groot aantal verschille­nde aanvalstyp­en tegen bijvoorbee­ld SQL-injectie en dergelijke.

Met de Intruder in Burp Suite kun je individuel­e parameters naar de Active Scanning-engine sturen, waardoor je zekerder weet dat de meeste kwetsbaarh­eidsklasse­n getest zijn. Daardoor kunnen de extensies ook hun werk doen met de individuel­e input-parameters.

Als laatste moet je handmatig identifice­ren of er discrepant­ies of anomalieën voorkomen die nader bestudeerd moeten worden. Die stap is cruciaal; je moet handmatig onderzoeke­n en begrijpen hoe de applicatie presteert met elke vorm van input. Hier test je de applicatie en de onderligge­nde lagen op elk type van interessan­t gedrag. Voor deze stap is het aan te raden de scripts te fuzzen met inputs van %00 tot en met %FF en alle responsen op te nemen. Alle anomalieën moeten worden onderzocht. Probeer alle mogelijke hex-waarden met en zonder URL-encoding, dan zie je waarschijn­lijk wel interessan­t gedrag langskomen dat je handmatig verder kunt testen.

 ??  ??

Newspapers in Dutch

Newspapers from Netherlands