JavaScript Attacks â Medium
De ontwikkelaar is geschrokken dat mensen zijn functies via de Console aanroepen en maakt de code onleesbaar.
1. Predict (Voorspel)â
De broncode van de pagina bevat nu een zwaar ge-obfusceerd (minified) JavaScript-bestand. Het ziet eruit als een wirwar van letters:
eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}...
Vraag: Heeft de ontwikkelaar hiermee de kwetsbaarheid uit het Low level weggenomen?
Antwoord
Nee. De code is misschien moeilijk leesbaar voor een mens (Security by Obscurity), maar de browser moet de code uiteindelijk kunnen uitvoeren. Via de Developer Tools kun je de "Pretty Print"-knop gebruiken of een online de-obfuscator â de code komt netjes terug in leesbare inspringing. De functie om het token te maken staat er nog steeds in, alleen met een gekker naam.
2. Run (Uitvoeren)â
Start het lab en bekijk het formulier.
Labbeperking: Deze aanval vereist toegang tot de F12 Sources en Console. Omdat het lab in een beveiligd iframe draait, is dit beperkt mogelijk. Voor de volledige ervaring heb je een lokale DVWA-installatie nodig.
Vul success in en klik op Submit. Observeer de foutmelding.
3. Investigate (Onderzoeken)â
Ga in F12 naar het tabblad Sources (of Debugger in Firefox). Zoek het externe JavaScript-bestand van deze module (bijv. medium.js). Klik onderin op het {}-icoon (Pretty Print).
Vraag: Wat zie je na het uitvoeren van Pretty Print? Zijn er herkenbare functienamen? Wat onthult dit over de bescherming die obfuscatie biedt?
Antwoord
Na Pretty Print is de code veel beter leesbaar. Je ziet functies met namen als do_something(e) of vergelijkbaar. Dit onthult dat obfuscatie alleen de leesbaarheid vermindert â niet de functionaliteit. Elke browser-tool die "Pretty Print" ondersteunt of online de-obfuscators (zoals beautifier.io) kunnen de code direct terugbrengen naar leesbare broncode.
4. Modify & Make (Aanpassen & Maken)â
Ontcijfer de functienaam en roep die aan via de Console met het woord success.
Tip
Zoek in de ge-de-obfusceerde code naar een functie die een token berekent. In veel DVWA-versies heet die do_something. Roep haar aan via de Console.
Antwoord
- Open F12 â Sources en "Pretty Print" het JavaScript-bestand.
- Zoek de tokengeneratiefunctie (bijv.
do_something). - Open F12 â Console en typ:
do_something("XXsuccessXX")(of de exacte input die het script verwacht). - Klik op Submit. De server accepteert de request.
5. â Wat moest je zien?â
- Zonder de Console aanpassing geeft het formulier "Invalid Token".
- Na het aanroepen van de ge-de-obfusceerde functie slaagt het formulier.
- Pretty Print toont de volledige logica van het script, ongeacht de obfuscatie.
Werkt de Console niet in het lab? Probeer het in een lokale DVWA-installatie met volledige toegang tot F12.