Opgeslagen XSS

Opgeslagen XSS

Eenmaal geplant, loopt hij daarna voor elke bezoeker.

Wat is Opgeslagen XSS?

Opgeslagen cross-site scripting hoeft slechts één keer te worden geplant. Elke gebruiker die de pagina daarna laadt, voert het script van de aanvaller uit tegen zijn eigen sessie, zonder dat er op een link moet worden geklikt en er niets te merken is. U plaatst een afbeeldingstag met een onerror -handler in een gastenboek, laadt vervolgens de pagina zelf en ziet hoe uw sessiecookie wordt afgedrukt. De oplossing ontsnapt bij de weergavegrens, zodat de identieke payload die zich nog in de database bevindt, als tekst wordt weergegeven. De opgeslagen waarde hoeft nooit te worden opgeschoond om de fix te behouden.

Wat je leert in Opgeslagen XSS

Opgeslagen XSS — Trainingsstappen

  1. Zoek het communityforum

    Vandaag richt Bob zich op Signal Coast, wiens communityforum elk lid een korte openbare notitie laat posten die elk ander lid leest. Hij logt in met een wegwerpaccount en opent het gastenboek van het forum om te zien hoe het omgaat met wat mensen schrijven.

  2. Notities worden weergegeven zoals geschreven

    Het gastenboek doet een belofte die de meeste sites nooit zullen nakomen: het geeft elke notitie precies weer zoals geschreven, inclusief HTML. Een veld dat alles wat je typt omzet in live markeringen, is precies wat Bob hoopte te vinden.

  3. Plaats een normale notitie

    Ten eerste gedraagt Bob zich als ieder ander lid en plaatst hij een gewone notitie om te zien hoe het gastenboek daarmee omgaat. Het briefje sluit precies aan op de muur zoals geschreven: platte tekst, niets ongewoons. Dit is de functie die werkt zoals bedoeld.

  4. Escaleer naar een script

    Het veld geeft HTML weer, dus Bob geeft het een script in plaats van een zin. Zijn probe is een afbeeldingstag met een bron die niet kan worden geladen en een onerror -handler die de sessiecookie van de kijker leest. De afbeelding mislukt, de handler wordt uitgevoerd en de browser verschijnt, wat de notitie ook zegt. Hier wordt de sessie afgedrukt, het bewijs dat een notitie code kan uitvoeren met de login van de kijker eraan gekoppeld.

  5. Het loopt samen met de sessie

    Daar is het: de notitie draaide vanzelf en plaatste de livesessiecookie van de kijker, zonder dat er op een link werd geklikt en zonder dat er een bestand werd geopend. Vandaag een onschuldige afdruk; morgen een stil baken naar Bob's server. Bob heeft bewezen dat de muur loopt, wat een briefje ook bevat. Nu bouwt hij het echte wapen.

  6. Plant de valse login

    Bob ruilt de probe in voor een notitie die de pagina herschrijft in een sessie-verlopen aanmeldingsvak, met een handler die bakens geeft wat er naar zijn eigen server wordt getypt. Voor elk lid dat de muur laadt, lijkt het erop dat het forum hem of haar simpelweg heeft gevraagd om opnieuw in te loggen. De inloggegevens gaan rechtstreeks naar Bob.

  7. De val is bewapend

    De valse login is nu de nieuwste aantekening aan de muur, en het lijkt precies op het forum dat leden vraagt ​​om opnieuw in te loggen. De handler stuurt alles wat erin wordt getypt rechtstreeks naar de server van Bob. Hij heeft het een keer geplant; elk lid dat het vertrouwt en tekent, overhandigt zijn wachtwoord.

  8. Alice opent de muur

    U bent eigenaar van de weergavecode van het gastenboek. Vanochtend praat je bij over de community, net als elke andere beheerder die zijn dag begint: open je browser en ga naar de muur. U heeft niet op een link geklikt en niets uitgevoerd. U laadt gewoon een pagina die u beheert.

  9. Hit op lading

    De pagina was nog maar net geladen en er verschijnt al een pop-up die uw sessiecookie afdrukt. Je hebt niets getypt en op niets geklikt. Een van Bob's aantekeningen werd weergegeven zodra de muur werd weergegeven, in uw beheerderssessie. Op zijn postuur zou dezelfde handler die sessie rechtstreeks naar hem sturen.

  10. En een valse login eronder

    Blader over de muur en er is een tweede notitie geplaatst: een inlogvak voor sessie verlopen dat lijkt op dat van het forum. Elk lid dat het vertrouwt en ondertekent, overhandigt zijn wachtwoord aan de aanvaller. Dit zijn opgeslagen notities die door de browser van elke kijker worden uitgevoerd. Als ingenieur die eigenaar is van deze pagina, weet u dat de oplossing in de rendercode zit.

Dekking van beveiligingsframeworks

OWASP Top 10

  • A05:2025 Injection
  • A03:2021 Injection

CWE

  • CWE-79 Improper Neutralization of Input During Web Page Generation

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security