Security research · Q2 2026

Van verkenning tot reverse shell.

Hoe webcompromitties zich in de praktijk voltrekken — in zes fasen — en op welk punt je als verdediger de keten kunt breken.

RaamwerkISO 27001 · NIS2 · MITRE ATT&CK
DoelgroepBlue team · DevSecOps · IT-management
VormDefensieve analyse — geen payloads

De meeste web-compromitties volgen een voorspelbaar patroon. Wie het patroon kent, kan het op elke schakel doorbreken.

Dit document beschrijft hoe een aanvaller — extern, ongeauthenticeerd — van nul naar volledige controle over een webapplicatie werkt. Het is nadrukkelijk geen handleiding: er worden geen werkende exploits, commandoregels of configuraties gedeeld die een aanvaller nog niet in bredere publicaties (OWASP, MITRE) kan vinden. Het doel is het tegenovergestelde — aan de defensieve kant precies weten welk signaal bij welke fase hoort en welke controle dat signaal blokkeert of detecteert.

Per fase wordt de mapping gemaakt naar ISO 27001:2022 Annex A (de 8.x-technische controls) en naar de eisen uit NIS2 voor entiteiten die onder die richtlijn vallen. De structuur volgt losjes de bewezen fasen uit de Lockheed Martin kill chain en MITRE ATT&CK tactieken voor web-georiënteerde initiële toegang.

Zes fasen, zes kansen om te stoppen.

01 Verkenning Recon 02 Initiële toegang Exploit / auth bypass 03 Uitvoering RCE / webshell 04 C2 / reverse shell Callback naar attacker 05 Persistentie Backdoors, cronjobs 06 Lateral & exfil Pivot, data-uitvoer WAF · rate limit Patching · input val. Least priv · AppArmor Egress filter · EDR FIM · config baseline Netwerk-segm. · DLP DEFENSIEVE CONTROLES PER FASE AANVALSFASE (MITRE ATT&CK GEORIËNTEERD)
01
FASE 01

Verkenning

Vóór de eerste echte aanraking is er bijna altijd passieve en actieve verkenning. Passief betekent dat de aanvaller openbare bronnen doorloopt: DNS-records, certificaat-transparantielogs, GitHub-commits, jobadvertenties die technologie-stack verklappen, leaks op pastes. Actief betekent daadwerkelijk contact met de applicatie — fingerprinting van webserver, framework-versies, exposed endpoints, admin-panelen, directory-enumeratie.

Deze fase is voor verdedigers de eenvoudigst over het hoofd te ziene, omdat "gewoon verkeer" — een HEAD-request, een 404 op /.git/config — in het ruis van normaal webverkeer verdwijnt. Tegelijk is het de fase met de hoogste voorspellende waarde: gecoördineerde scanning gaat bijna altijd vooraf aan een gerichte aanval.

Aanvaller Hun gedrag

  • DNS- en subdomein-enumeratiecrt.sh, Amass, Subfinder
  • Tech-stack fingerprintingWappalyzer, headers, favicon-hash
  • Directory- en endpoint-brute-forcewordlists tegen /admin, /backup, /.env
  • Scannen op bekende CVE-padenNuclei templates, Shodan queries

Verdediger Wat te zien

  • Pieken in 404/403 van één bron-IP of ASNbaseline 4xx per uur per IP
  • Requests naar bestanden die nooit bestaan/.git, /.env, /wp-admin op niet-WP
  • User-agents van bekende scannersnuclei/, sqlmap/, masscan/
  • TLS-fingerprinting afwijkingenJA3/JA4 hashes van headless clients
// Primaire detectie-signalen

> SUM(404) per src_ip per 5min > threshold · unique_paths_touched / time-window spike · scanner-ua regex hits

ISO 27001:2022 Annex A — primaire controles
A.8.16
Monitoring activities — logaggregatie en afwijkingsdetectie op edge-verkeer
A.8.20
Networks security — WAF en rate limiting per endpoint-categorie
A.8.23
Web filtering — uitgaande scans beperken, bekende bad IPs blokken
A.5.7
Threat intelligence — actuele feeds voor scanner-IPs en C2-indicatoren
02
FASE 02

Initiële toegang

Als de verkenning een kwetsbaarheid oplevert, probeert de aanvaller die uit te buiten om een eerste voet aan wal te krijgen. In webcontext gaat dat zelden via één categorie — de meest exploited zijn anno 2026 nog altijd injection-families (SQLi, command injection, template injection), authenticatiefouten (broken auth, IDOR, zwakke reset-flows), deserialisatie in legacy-stacks, en in toenemende mate SSRF als springplank naar interne services.

Het typische patroon: een parameter wordt onvoldoende gevalideerd, geraakt in een gevoelige context (SQL-query, shell-exec, templating-engine), en de aanvaller krijgt een primitive — een klein stukje gecontroleerde uitvoering, waarmee verdere stappen mogelijk worden.

Aanvaller Hun gedrag

  • Payload-variaties in querystring en bodytijdgebaseerde SQLi, encoding-omzeiling
  • Auth-bypass proberenJWT-alg confusion, session fixation
  • SSRF naar metadata-endpoints169.254.169.254 in AWS/Azure
  • Deserialisatie-gadgetsJava, .NET, PHP unserialize()

Verdediger Wat te zien

  • WAF-rules die vuren op payload-patronenOWASP CRS paranoia 2+
  • Abnormale response-tijden per endpointtijdgebaseerde injecties verraden zichzelf
  • Exceptions met SQL/framework-trace in logsstack traces zijn zowel IoC als leak
  • Uitgaande requests vanaf applicatie-serversnaar metadata-IPs, onbekende hosts
// Primaire detectie-signalen

> WAF block/allow ratio per endpoint · p99 response time anomaly · exception-log volume spike · egress DNS naar onbekende TLDs

ISO 27001:2022 Annex A — primaire controles
A.8.8
Management of technical vulnerabilities — patchbeleid, SBOM, tijdige upgrade-cadans
A.8.25
Secure development life cycle — threat modelling en secure coding standards
A.8.28
Secure coding — input validation, output encoding, parametrized queries
A.8.29
Security testing — SAST/DAST in de pipeline, externe pentest-cadans
03
FASE 03

Uitvoering

Met een primitive in handen wordt het doel een stabielere uitvoeringscontext. Vaak betekent dat: een webshell droppen in een writable directory, een serialized object plaatsen dat bij elke request wordt geladen, of een at-rest config-waarde wijzigen die bij de volgende herstart wordt ingelezen.

De aanvaller probeert de primitive om te zetten naar een manier om herhaaldelijk en interactief commands uit te voeren. Dit is de laatste fase waarin de applicatie nog het enige aangetaste component is — daarna verplaatst de actie zich richting het OS en de netwerklaag.

Aanvaller Hun gedrag

  • Writable paths zoekenuploads/, tmp/, cache/, log/
  • Webshell uploadengecamoufleerd als image, .jsp.jpg, polyglot
  • Supply-chain via dependency confusionmalafide pakketversies
  • Memory-only execution via exploitgeen file on disk, moeilijker te FIM'en

Verdediger Wat te zien

  • Nieuwe bestanden in document-rootFIM triggers op uploads/, assets/
  • Process spawns van webserver-userwww-data → bash/sh/python is verdacht
  • Afwijkende child-processes van app-runtimejava → /bin/sh, php-fpm → nc
  • Uitgaande DNS-resolutie naar rare TLDsngrok, .top, DGA-achtige domeinen
// Primaire detectie-signalen

> FIM alert op /var/www · process-tree: webserver-uid parent + shell child · new listening socket op app-server

ISO 27001:2022 Annex A — primaire controles
A.8.2
Privileged access rights — webserver-user zonder shell, read-only webroot
A.8.7
Protection against malware — EDR op applicatie-hosts, niet alleen endpoints
A.8.19
Installation of software — whitelisting, immutable container-images, AppArmor/SELinux
A.8.32
Change management — detectie van ongeautoriseerde wijzigingen aan productie-artefacten
04
FASE 04 — HET KRITIEKE MOMENT

Command & control — de reverse shell.

De reverse shell is de handgreep waarmee aanvallers het gedrag van webexploits verlaten en het gedrag van interactieve systeem-gebruikers aannemen. De gecompromitteerde server zet een uitgaande verbinding op naar infrastructuur onder controle van de aanvaller (vandaar "reverse"), en alle verdere interactie loopt over die kanaal.

Dat uitgaande karakter is precies het aangrijpingspunt voor de verdediging. De meeste interne netwerken hebben geen egress-filter van betekenis — webservers mogen alles naar buiten, zolang het maar 443/tcp heet. Juist daar wint deze techniek: een shell over TLS naar een anonieme VPS is vanuit netwerk-oogpunt niet te onderscheiden van een legitieme API-call, zonder expliciete controles.

Variaties: klassieke bash-over-tcp, shells verpakt in HTTPS, protocollen-tunneling (DNS, ICMP), en modernere C2-frameworks die jitter en sleep-patterns gebruiken om binnen beaconing-noise te verdwijnen.

Aanvaller Hun gedrag

  • Outbound connect naar C2-endpoint443/tcp TLS meest gebruikt
  • Beaconing met jitter30-300s interval, ±20% random
  • Protocol-tunneling bij strenge egressDNS over HTTPS, ICMP payloads
  • Domain fronting via CDNverstoppen achter legitieme Akamai/Cloudflare

Verdediger Wat te zien

  • Periodieke uitgaande sessies van een serverbeacon-interval zichtbaar in netflow
  • TLS naar domeinen die server nooit eerder contacteerdeeerste-contact anomaly
  • DNS-volume anomalie per hostDNS-tunnel is luidruchtig
  • Process holding een ongewone outbound socketEDR-telemetrie: nc, socat, python script
// Primaire detectie-signalen

> periodicity analysis op netflow per src-host · JA3 hash niet eerder gezien vanaf die host · DNS entropy score per subdomein · process-to-socket mapping van EDR

ISO 27001:2022 Annex A — primaire controles
A.8.21
Security of network services — expliciet egress filter, default deny outbound
A.8.22
Segregation of networks — DMZ strikt gescheiden van productie-backend
A.8.16
Monitoring activities — SIEM-correlatie op server-initiated outbound
A.5.23
Information security for cloud services — egress control in cloud-VPC/NSG
05
FASE 05

Persistentie

Met interactieve toegang op het systeem wordt overleven van herstarts en patches de eerstvolgende zorg van de aanvaller. Klassieke technieken: een cronjob of systemd-timer die de callback opnieuw initieert, een aangepaste SSH-sleutelfile, een backdoor-account, een modificatie aan een opstart-service of webapplicatie-config.

Deze fase genereert meetbare afwijkingen van de verwachte systeemtoestand. Als je systeem-configuratie niet onder configuration management valt en je kunt geen diff maken tegen een bekende baseline, wordt deze fase pas zichtbaar wanneer het te laat is.

Aanvaller Hun gedrag

  • Cronjob / systemd-timer toevoegencallback elke N minuten
  • SSH-authorized_keys aanvullennieuwe publieke sleutel bijzetten
  • Backdoor-user aanmakenmet uid 0, of sudoers-entry
  • App-code of middleware aanpassenmalafide middleware in request-chain

Verdediger Wat te zien

  • Wijzigingen in /etc/passwd, /etc/cron*, ~/.sshFIM triggers op elk pad uit deze set
  • Nieuwe systemd unit files/etc/systemd/system, ~/.config/systemd
  • Config-drift tegen Ansible/Puppet-baselinedaily diff gedraaid
  • Nieuwe listening portsss/netstat periodiek vergelijken
// Primaire detectie-signalen

> FIM op de cron-, ssh- en systemd-paden · config-management drift report · nieuwe uid 0 user alert · audit-log op useradd/usermod

ISO 27001:2022 Annex A — primaire controles
A.8.9
Configuration management — baseline en drift-detectie op alle kritische hosts
A.8.5
Secure authentication — beperkte sudo-rechten, geen shared accounts, key-rotatie
A.8.15
Logging — audit-trails van user-management en scheduler-acties
A.8.32
Change management — formeel proces; ongeplande wijzigingen worden alerts
06
FASE 06

Lateraal en exfiltratie.

De laatste fase is beweging binnen het netwerk en het daadwerkelijk uitvoeren van data. De gecompromitteerde webserver is zelden het uiteindelijke doel — die ligt in de databases, fileshares, ERP-systemen, of in het identity-platform. Lateraal verplaatsen gebeurt via gestolen credentials (memory-scraping, config-files), misbruikte service-accounts, of pass-the-hash / pass-the-ticket technieken op Windows-kant.

De daadwerkelijke exfiltratie volgt — in compressed, encrypted chunks, vaak gemengd met legitiem verkeer (HTTPS naar cloud-storage, DNS-tunneling voor kleine volumes). Dit is óók het moment waarop ransomware-actoren doorgaans hun lading droppen. Wie hier nog niet gedetecteerd heeft, zit in een incident-responsescenario, niet meer in een preventiescenario.

Aanvaller Hun gedrag

  • Credential-harvesting op gecompromitteerd hostenv vars, config-files, .aws/, .kube/
  • Pivoten naar interne servicesDB, Redis, interne API's, AD
  • Kerberoasting / pass-the-hashals AD bereikbaar vanaf DMZ
  • Gecontroleerde exfil in chunksTLS naar cloud storage, DNS tunnels

Verdediger Wat te zien

  • Oost-west verkeer tussen zones die elkaar niet horen te pratennetwerk-segmentatie-violation
  • Authenticatie-patronen van service-accounts vanaf nieuwe hostsATP/identity-logs
  • Groot volume uitgaand per host (baseline-drift)netflow delta tegen 30d-avg
  • Read-access patterns op file-sharesmass-read door één account = IoC
// Primaire detectie-signalen

> segment-crossing flows die default-deny horen te zijn · auth spike per service-account · egress bytes per host vs 30d-baseline · file-read rate per user

ISO 27001:2022 Annex A — primaire controles
A.8.22
Segregation of networks — micro-segmentatie; geen vrije oost-west-paden
A.8.3
Information access restriction — need-to-know op data- en fileshare-niveau
A.8.12
Data leakage prevention — DLP op egress, patroonherkenning van bulk-export
A.5.30
ICT readiness for business continuity — geteste recovery bij ransomware-scenario

Elke laag is een kans om de keten te doorbreken.

De sterkte van deze aanpak zit niet in één perfecte controle, maar in het cumulatieve effect: een aanvaller moet elke laag passeren zonder een signaal te produceren dat je oppikt. In de praktijk lukt dat hoogst zelden. Vijf lagen waar je je aandacht op moet concentreren:

LAAG 01 · Edge
Perimeter en WAF
WAF (OWASP CRS of managed), rate limiting per endpoint-categorie, scanner-ASN blocks, geo-restricties voor admin-paths. Dit is ook waar bot-management en TLS-fingerprinting hun nut bewijzen.
LAAG 02 · App
Veilige applicatie-ontwikkeling
Parametrized queries, strikte input-validatie, output-encoding, authenticatie-frameworks ipv eigen rolsels, dependency-scanning (SCA) in de pipeline, threat modeling bij elke feature van betekenis.
LAAG 03 · Runtime
Gehardend runtime-platform
Minimal base images, read-only root filesystem, non-root uid voor applicatie-processen, AppArmor/SELinux profielen, geen shell in het webserver-container-image, EDR op de host.
LAAG 04 · Netwerk
Egress-controle en segmentatie
Default-deny outbound vanuit de DMZ, expliciete allowlist voor externe API's, DNS-forwarders met logging en filtering, strikte segmentatie tussen DMZ en interne zones met aantoonbare paden.
LAAG 05 · Observatie
Logging, correlatie en response
Centrale logaggregatie (SIEM), correlatie-regels per fase uit deze keten, playbooks voor de 10-20 meest waarschijnlijke scenario's, regelmatige tabletop-oefeningen — en incident response die niet pas bij melding begint.