Terug naar de website
Trainingsomgeving

18 kwetsbaarheden, verstopt in een gewoon ogend bureau

Studio Maatwerk is een fictief bureau met opzettelijke beveiligingsfouten. Vind ze, verzamel de CYBERBREIN{…}-flags en sluit af met een certificaat. Je voortgang blijft in deze browser staan.

Start hier
Twee challenges vragen om een ingelogde klant. Gebruik een demo-account of maak er zelf één aan.
  1. STAP 1

    Log in op het klantportaal, of maak een account aan.

  2. STAP 2

    Zoek kwetsbaarheden op de site — gebruik de hint per challenge.

  3. STAP 3

    Voer elke gevonden flag hieronder in en exporteer je certificaat.

Demo-klantaccounts

  • klant@moduline.demo

    Thomas Bakker

    Inloggen
  • klant@travelhacks.demo

    Sophie de Vries

    Inloggen
  • legacy@studiomaatwerk.com

    Jeroen Visser

    Inloggen

Inloggen vult het formulier vast in. Alleen klantaccounts — het admin-wachtwoord staat er bewust niet bij, dat is challenge 1.

Voortgang & flag
Controleer je CYBERBREIN{...}-flag; behaalde challenges worden lokaal onthouden in deze browser.

Behaald: (laden)

0%

Behaal minstens één flag via controleren om te exporteren.

De challenges

01
Zwakke inloggegevens
MakkelijkA07:2021

Het adminpaneel zit achter een login. Zou het wachtwoord op een lijst met veelgebruikte wachtwoorden staan?

Wat je leert: Herkennen van zwakke wachtwoorden en credential stuffing-risico.

02
Brute-force zonder rate limiting
MediumA07:2021

Facturen zijn af te schermen met een 4-cijferige pincode. Zonder limiet op pogingen is dat geen slot.

Wat je leert: Ontbrekende rate limiting / account lockout en de kracht van brute-force.

03
IDOR op facturen
MediumA01:2021

Een klant ziet eigen facturen. Werkt de server ook echt op basis van jouw klant-id?

Wat je leert: Begrijpen van broken access control en IDOR.

04
Mass assignment → privilege escalation
MoeilijkA01:2021

Je kunt je profiel bijwerken. Maar welke velden accepteert de server eigenlijk allemaal?

Wat je leert: Mass assignment: een endpoint dat client-velden blind overneemt, geeft privilege escalation.

05
Open API zonder authenticatie
MakkelijkA01:2021

Soms ‘vergeten’ ontwikkelaars een endpoint achter auth te zetten.

Wat je leert: Datalek via onbeveiligde API’s herkennen.

06
SQL-injectie in zoekfunctie
MoeilijkA03:2021

De kennisbank heeft een zoekbalk. Die bouwt de query met stringplakwerk in plaats van parameters.

Wat je leert: SQL-injectie herkennen en de impact van niet-geparametriseerde queries.

07
Open directory (backup-simulatie)
MakkelijkA05:2021

Back-ups horen niet publiek. Deze map simuleert een configuratiefout.

Wat je leert: Exposed storage en backup-risico’s.

08
Wachtwoorden plat opgeslagen
MediumA02:2021

Een oud debug-endpoint exporteert gebruikers. Kijk eens hoe de wachtwoorden bewaard worden.

Wat je leert: Cryptographic failure: wachtwoorden horen gehasht (bcrypt/argon2), nooit plat.

09
Stored XSS via contactbericht
MediumA03:2021

Het admin-paneel toont berichten op een onveilige manier.

Wat je leert: Stored XSS en onveilige output-encoding.

10
SSRF via link-preview
MoeilijkA10:2021

Het portaal haalt een preview op van elke URL die je opgeeft. Ook interne adressen?

Wat je leert: SSRF: de server laten praten met interne diensten die van buiten niet bereikbaar zijn.

11
Publiek .env (simulatie)
MakkelijkA05:2021

Een per ongeluk blootgesteld configuratiebestand is een klassieker.

Wat je leert: Begrijpen waarom .env nooit publiek mag zijn.

12
Uitgebreide foutmeldingen
MakkelijkA05:2021

Een rapport-endpoint klapt om bij rare invoer en vertelt daarbij iets te veel.

Wat je leert: Verbose errors / stacktraces lekken interne details aan de aanvaller.

13
Client-side rol (simulatie)
MediumA01:2021

Een demo-cookie vertrouwt op de browser. Dat mag nooit echte autorisatie zijn.

Wat je leert: Client-side trust en privilege escalation.

14
Clickjacking (ontbrekende frame-bescherming)
MediumA05:2021

De site kan in een iframe geladen worden. Een aanvaller kan er zo een neplaag overheen leggen.

Wat je leert: Ontbrekende X-Frame-Options / frame-ancestors maakt clickjacking mogelijk.

15
Lekkende wachtwoord-reset
MediumA04:2021

De wachtwoord-vergeten-flow lijkt normaal. Maar hoe wordt de reset-code gemaakt en verstuurd?

Wat je leert: Onveilig ontworpen recovery: voorspelbare/gelekte tokens en user enumeration.

16
Verouderde component
MakkelijkA06:2021

Een statuspagina verklapt de gebruikte componenten en hun versies. Eén ervan is niet meer onderhouden.

Wat je leert: Version disclosure en het risico van verouderde/EOL-afhankelijkheden.

17
Ongetekende data vertrouwd
MoeilijkA08:2021

Een import-endpoint accepteert een geserialiseerd instellingenblob met een handtekening. Wordt die wel gecontroleerd?

Wat je leert: Integriteitsfalen: vertrouwen op client-geleverde, niet-geverifieerde (geserialiseerde) data.

18
Zwakke upload → stored XSS
MediumA05:2021

Het portaal accepteert ‘logo’s’ maar controleert extensies slecht — en serveert het bestand daarna gewoon terug.

Wat je leert: Upload-risico’s: een geaccepteerd .html/.svg voert uit op de eigen origin (stored XSS via upload).