In dit onderdeel ging het over applicaties die te veel vertrouwen leggen bij client-side waarden of verouderde componenten. Een belangrijk onderscheid uit de les: encoding maakt data leesbaar in een ander formaat, maar is geen encryptie.
In een oogopslag
| Onderwerp | Concept |
|---|---|
| Cookies decoderen | Waarden in cookies kunnen BASE64, hex of dubbel encoded zijn |
| Cookie/role manipulatie | Rollen of flags zoals role=user of admin=false staan soms client-side |
| Meaningful tokens | Een token kan na decoding leesbare velden bevatten |
| Voorspelbare session IDs | Session IDs kunnen sequential, time-based of zwak random zijn |
| Horizontal escalation | Client-side IDs kunnen naar data van een andere gebruiker wijzen |
| Outdated components | Oude versies kunnen bekende CVE’s hebben |
| CORS misconfiguratie | Foute Origin-afhandeling kan cross-origin data lekken |
Technieken in detail
Cookies inspecteren en decoderen
Cookies inspecteren en decoderen
Cookie- en rolewaarden
Cookie- en rolewaarden
Meaningful tokens ontleden
Meaningful tokens ontleden
Een hex- of BASE64-token kan soms naar leesbare velden decoderen.Typische onderdelen:
- username, user ID of e-mailadres
- rol, groep of applicatierechten
- oplopend nummer
- IP-adres of datum
- hash gecombineerd met leesbare velden
Voorspelbare session IDs
Voorspelbare session IDs
Bij sessies is randomness belangrijk. In de les kwamen meerdere zwakke patronen aan bod.
| Patroon | Signaal | Gevolg |
|---|---|---|
| Sequential | telkens +1 | vorige of volgende waarde ligt dicht bij de huidige |
| Time-based | bevat timestamp | de waarde hangt af van tijd |
| Zwakke formule | wiskundig verband, bijvoorbeeld sin(seed) | kleine seed-ruimte kan voorspelbaar zijn |
| Zwakke random | vaste posities blijven gelijk | Burp Sequencer kan patronen zichtbaar maken |
Horizontal privilege escalation
Horizontal privilege escalation
Horizontal escalation betekent dat een gebruiker data of acties van een andere gebruiker kan bereiken zonder een hogere rol te hebben.Veelvoorkomende client-side signalen:
- basket ID
- order ID
- profile ID
- user ID in een request body
- resource-ID in een URL
Vulnerable and outdated components
Vulnerable and outdated components
Verouderde libraries, plugins of CMS-versies kunnen bekende kwetsbaarheden bevatten.Bronnen voor versiesignalen:
<meta name="generator">- HTTP headers
- Wappalyzer
- JavaScript- of CSS-bestandsnamen
- WordPress REST endpoints zoals
/wp-json/wp/v2/users - directory listing onder
/wp-content/
.env, wp-config.php.bak, wp-config.php~, db.sql en backup.zip waren voorbeelden van gevoelige exposed files.CORS misconfiguratie
CORS misconfiguratie
CORS bepaalt welke origins browserdata mogen opvragen. Een foutieve configuratie kan gevoelige data cross-origin beschikbaar maken.Een belangrijk signaal is een response die de externe origin terugkaatst in combinatie met:
| Variant | Signaal |
|---|---|
| Reflected origin | server kaatst elke Origin terug |
| Modified origin | prefix/suffix wordt te breed vertrouwd |
Wildcard * | Access-Control-Allow-Origin: * |
| Subdomain trust | te ruim vertrouwen in *.domain.com |
| Null origin | Origin: null via sandboxed context |
Encoding herkennen
| Type | Ziet eruit als | Decode |
|---|---|---|
| BASE64 | A-Za-z0-9+/, eindigt vaak op = | base64 -d of CyberChef |
| ASCII-hex | alleen 0-9a-f, even lengte | hex naar tekst |
| URL encoding | %3a, %2f, %20 | URL-decode |
| HTML entities | :, :, : | HTML-decode |
| Unicode escape | \u003a | Unicode-decode |
Handige parameters
curl
| Parameter | Wat doet het? | Handig wanneer |
|---|---|---|
-i | Toont headers en body. | Cookies, CORS headers en responseverschillen zien. |
-H "Cookie: role=admin" | Stuurt een aangepaste cookieheader. | Client-side role trust testen. |
-b "session=..." | Stuurt cookie-data mee. | Een bestaande sessie herhalen. |
-H "Origin: https://evil.example" | Zet een Origin-header. | CORS gedrag controleren. |
-H "Content-Type: application/json" | Zet JSON content type. | API bodies testen. |
-d '{"id":2}' | Stuurt POST-data mee. | Client-side IDs of roles in bodies testen. |
-v | Toont extra requestdetails. | Redirects, TLS en headergedrag debuggen. |
WPScan
| Parameter | Wat doet het? | Handig wanneer |
|---|---|---|
--url https://site | Zet de WordPress target. | Basis voor elke WPScan-run. |
-e vp,vt,u | Enumereert kwetsbare plugins, kwetsbare themes en users. | Snelle WordPress sanity check. |
--plugins-detection mixed | Combineert passieve en agressievere plugin-detectie. | Meer pluginresultaten nodig. |
--api-token TOKEN | Haalt vulnerability data op via WPScan API. | CVE-info bij gevonden plugins of themes. |
--random-user-agent | Wisselt User-Agent. | Simpele blocks of filters omzeilen. |
--proxy http://127.0.0.1:8080 | Stuurt WPScan via proxy. | Requests in Burp bekijken. |
Patronen uit de les
Functie toont data per ID
Mogelijk horizontale autorisatiebug als de server de eigenaar niet controleert.
Tools
Browser DevTools
Referentie voor cookies, storage, network requests en response headers.
curl
Terminaltool voor cookies, headers en handmatige HTTP-requests.
Burp Suite
Proxytool voor HTTP history, Decoder, Sequencer, Repeater en Intruder.
CyberChef
Tool voor BASE64, hex, URL encoding, HTML entities en Magic.
WPScan
Scanner voor WordPress-versies, plugins, users en bekende kwetsbaarheden.
CVE
Referentie voor bekende kwetsbaarheden in softwareversies.