16. Het XSS Lab
Hier wordt het spannend. Of verontrustend. Het hangt ervan af of je een contract hebt of niet, en dat onderscheid maakt in de beveiligingsindustrie het verschil tussen “consultant” en “verdachte.” Zorg dat je het juiste visitekaartje hebt.
De Beacon
De applicatie serveert een JavaScript-bestand op /x.js. Als een kwetsbare website dit laadt via een XSS-kwetsbaarheid, doet het script drie dingen: cookies sturen naar /xxs/cookies, localStorage dumpen naar /xxs/localstorage, en toetsaanslagen loggen naar /xxs/keylogger. De server dedupliceert op IP + User-Agent + MD5-hash en slaat alles op. Het is een digitale stoffzuiger voor andermans browserinhoud. Je kunt dit op twee manieren bekijken: als een schending van privacy of als een beveiligingstest. Het verschil is een handtekening op een contract.
Het Dashboard — Alleen het Nu
Het XSS-dashboard (/dashboard/xxs) toont uitsluitend de unieke hooked clients van de afgelopen 5 minuten. Geen historisch archief van ooit-gehookte browsers die allang zijn afgesloten. Alleen wat nu draait. De KPI toont “Active Clients (5m)” met het aantal unieke IP’s. De tabel: IP, user-agent, last seen. Het is real-time. Het is relevant. Het is opgeruimd. Drie bijvoeglijke naamwoorden die zelden op dezelfde software van toepassing zijn, en als ze dat wel zijn, weet je dat iemand zijn best heeft gedaan.
Heartbeat & C2
De beacon pollt periodiek /xxs/commands. Bij elke poll wordt het tijdstip bijgewerkt — een heartbeat. Commando’s worden aangemaakt via het dashboard of de API, opgehaald door de beacon, uitgevoerd in de browser van het doelwit, en het resultaat wordt teruggestuurd. Het is een volledig XSS C2-systeem. En het is precies het bewijs dat je opdrachtgever nodig heeft om te begrijpen dat XSS niet “alleen maar een pop-upje” is. Dat misverstand is zo wijdverbreid dat je er een boek over zou kunnen schrijven. Maar dat ga je niet doen, want je bent een pentester en geen auteur, hoewel het feit dat je deze handleiding leest suggereert dat je op zijn minst een lezer bent, en dat is al meer dan de gemiddelde CISO.
Data Downloaden
Cookies in Netscape-formaat (direct bruikbaar met curl -b). Keylogger-data als tekst. localStorage als dump. Credentials als gebruiker:wachtwoord-paren. Als je opdrachtgever deze bestanden ziet in het rapport, hoeft hij niet meer te vragen hoe erg XSS is. De cookies liggen op tafel. Letterlijk. Het is het meest overtuigende bewijs dat je kunt leveren zonder iemands wachtwoord hardop voor te lezen in een vergaderruimte. Hoewel — als de opdrachtgever bijzonder hardleers is — dat laatste ook een optie is. Ik raad het niet aan. Maar ik verbied het ook niet.