Uitgelichte track
Bits n Bites: diepgaand
Een live witwasoperatie verborgen in een bezorgapp: klim door de gelederen om erachter te komen wie er achter de verdacht ogende restaurants zit.
Waarom het ertoe doet in de echte wereld
Dit zijn geen theoretische kwetsbaarheden. In 2017 verloor Equifax 147 miljoen records doordat een enkele webframework niet werd gepatcht. In 2023 compromitteerde een SQL injection-fout in MOVEit data bij meer dan 2.000 organisaties. In 2012 liet een mass assignment-bug op GitHub een aanvaller zijn eigen SSH-sleutel toevoegen aan elke repository. In 2016 stelden gebroken toegangscontroles bij Uber 57 miljoen gebruikersrecords bloot. Bits n Bites combineert al deze kwetsbaarheidsklassen in een enkel doelwit, want precies zo falen echte applicaties: niet door een enkele fout, maar door een keten ervan. De track begint zoals een echte aanvaller zou beginnen, door gelekte breachdata te ontginnen. Weten hoe je deze zwakheden opspoort en aan elkaar verbindt is het verschil tussen veilige code shippen en het volgende incidentrapport worden.
Wat je gaat hacken
Je doelwit is Bits n Bites, een mobiele bezorgapp waarvan de API-endpoints bijna alles doen behalve gebruikersdata beschermen. Voordat je de app uberhaupt aanraakt, bevraag je een gelekte Equifax-achtige dataset in Azure Table Storage en gebruik je verschillen in loginresponses om actieve accounts te identificeren. Vanaf daar stopt de aanvalsketen niet meer.
Boolean-based blind SQL injection op het zoekendpoint voor restaurants laat je MFA-identifiers extraheren die de UI nooit toont. Insecure direct object references laten je TOTP-secrets van andere gebruikers lezen. Een mass assignment-fout laat je MFA-configuraties kapen die de frontend bewust verbergt. Client-side JavaScript onthult hardcoded AES-encryptiesleutels. Opgeslagen XSS in de chat tussen chauffeur en vendor steelt live authenticatietokens. En een XML-exportfunctie, kwetsbaar voor XXE, wordt een server-side request forgery-gadget die het interne financiele grootboek bereikt.
Elke kwetsbaarheid voedt de volgende. Je voert geen losstaande oefeningen uit. Verspreid over 13 challenges en 5 fases bouw je een enkele, doorlopende aanvalsketen van een gelekte dataset helemaal tot aan het interne grootboek dat bewijst dat de witwasoperatie bestaat.
Challenges
Mobiele applicaties kunnen dezelfde kwetsbaarheden hebben
Chain echte kwetsbaarheden over vijf fases, van Equifax-achtige data-recon tot een volledige XXE-naar-SSRF exfiltratieketen. Elke techniek is gekoppeld aan een gedocumenteerde breach.
De aanval begint voordat je de app aanraakt. Bevraag een gelekte dataset in Azure Table Storage met OData-filters, kruisreferenceer treffers vervolgens met het loginformulier van het platform, dat het bestaan van accounts lekt via verschillende foutmeldingen. Zo wapenen echte aanvallers breachdata.
Het zoekendpoint voor restaurants geeft resultaten of een lege lijst terug afhankelijk van een geinjecteerde booleaanse voorwaarde. Geen foutmeldingen, geen timing-trucs. Alleen waar of onwaar, een bit per keer, totdat je MFA-identifiers hebt geextraheerd die de API was gebouwd om te verbergen. Hetzelfde patroon achter de MOVEit-breach die in 2023 meer dan 2.000 organisaties compromitteerde.
De frontend verbergt het MFA-eigenaarschapsveld, maar de API accepteert het. Stuur een opgemaakte JSON-body met andermans e-mailadres en je eigen MFA-instellings-ID, en het platform wijst hun tweede factor aan jou toe. In 2012 liet dezelfde klasse kwetsbaarheid op GitHub een aanvaller zijn SSH-sleutel toevoegen aan elke repository.
De chat tussen chauffeur en vendor blokkeert exacte scripttags maar geen case-variaties. Injecteer een opgeslagen XSS-payload die het authenticatietoken van de vendor uit localStorage steelt. Gebruik dat token vervolgens om toegang te krijgen tot het vendor-portaal en misbruik een XXE-kwetsbaarheid in de XML-exportfunctie, die je omzet in een SSRF-gadget die het interne financiele grootboek bereikt.
Verander een enkele ID in het MFA-instellings-endpoint en lees de TOTP-secret van een andere gebruiker. Vind vervolgens een hardcoded AES-sleutel begraven in client-side JavaScript en gebruik die om het e-mailadres van de chauffeur uit orderbonnen te ontsleutelen. Uber verloor in 2016 57 miljoen records aan gebroken toegangscontroles zoals deze.
