Articles

DOM basert Cross Site Scripting

Posted on

den mindre kjente Xss-Teknikken

  • DOM står For Document Object Model
  • XSS står for cross-site scripting
  • hovedforskjellen MELLOM DOM-BASERT XSS og andre xss-sårbarheter er at nyttelasten er innebygd på klientsiden i stedet for serversiden
  • DOM-basert xss sårbarheter må derfor forhindres på klientsiden

sårbarheter på tvers AV nettsteder (XSS) først BLE kjent gjennom CERT Advisory CA-2000-02 (Ondsinnede HTML-Koder Innebygd I Klient Webforespørsler), selv om disse sikkerhetsproblemene hadde blitt utnyttet før. SÅ XSS har allerede eksistert en stund. Og som du forventer, har det allerede vært en rekke Labs artikler om emnet, inkludert Cross Site Scripting-Den Undervurderte Faren og Cross-Site-Scripting og Preventing Script Injection – En Kort Guide. Denne artikkelen fokuserer imidlertid i stor grad PÅ DOM basert cross-site scripting, et begrep først laget I 2005 Av Amit Klein. Han publiserte definisjonen AV DOM basert cross-site scripting (XSS) og avgrenset det fra andre cross-site scripting sårbarheter. For å forstå DOM basert cross-site scripting, må du først en dypere forståelse AV DOM.

Hva ER DOM?

Dokumentobjektmodellen er et programgrensesnitt som definerer strukturen til dokumenter. Det som er relevant for vårt formål er AT DOM sørger for objektorientert representasjon AV HTML-dokumenter, spesielt:

  • HVORDAN ET HTML-element representeres som et objekt
  • hva attributtene til ET HTML-element er
  • hvilke metoder kan brukes til å få tilgang TIL ET HTML-element
  • hva hendelsene i ET HTML-element er

DETTE betyr AT DOM angir hvordan HTML-elementer kan bli funnet, lagt TIL, endret eller slettet i nettleseren. DET betyr AT DOM tilbyr en mulighet for å manipulere HTML-sider. I Disse dager Brukes JavaScript vanligvis til denne typen manipulasjon.

det skal bemerkes at HVER nettleser implementerer DOM-standarden annerledes. Dette kan påvirke om ET BESTEMT DOM XSS-angrep fungerer i en bestemt nettleser.

Hva ER DOM – BASERT XSS?

et dom-basert xss-sårbarhet oppstår når DOM brukes til å generere dynamisk innhold som inneholder brukerinndata som kan behandles uten å sjekke. Denne typen angrep utføres Med JavaScript i brukerens nettleser. Her er stedene som (ondsinnet) brukerinngang bringer INN I DOM, utpekt som kilde. Stedene der (skadelig) brukerinngang kan utføres I DOM er betegnet som sink.

et eksempel på en enkel sårbarhet for skripting på tvers av nettsteder:

<!DOCTYPE html><html> <body> <script> var source = "Hello " + decodeURIComponent(location.hash.split("#")); //Source var divElement = document.createElement("div"); divElement.innerHTML = source; //Sink document.body.appendChild(divElement); </script> </body></html>

sårbarheten kan for eksempel utløses med FØLGENDE GET-forespørsel:

GET www.vulnerable-website.example#<img src="test" onerror="alert('XSS')">

Vi kan se at dette eksemplet kreves ved hjelp av decodeURIComponent – metoden. Dette er fordi moderne nettlesere kode spesialtegn I URL og angrepet ikke ville fungere uten disse spesialtegn blir dekodet. Innholdet i variabelen source legges til div-elementet ved hjelp av innerHTML. Dette er det problematiske elementet i koden, fordi tildelingen til innerHTML fører til at verdien som følger med den, tolkes SOM HTML. Hvis verdien inneholder JavaScript, utføres dette også.

det bør påpekes at dette ikke endrer serverresponsen. Den ondsinnede modifikasjonen oppstår bare når JavaScript-koden utføres på klientsiden, som DOM senere endrer.

de mest kjente kildene og vaskene er listet opp nedenfor. Det skal bemerkes at dette på ingen måte er en uttømmende liste.

Kilder

  • dokument.URL
  • dokument.henvisning
  • plassering
  • plassering.href
  • plassering.søk
  • plassering.hash
  • plassering.banenavn

Synker

  • eval
  • setTimeout
  • setInterval
  • dokument.skriv
  • element.Innerhtml

Forhindre DOM-basert XSS

fordi det er tilfeller der nyttelasten aldri gjør det til serveren, er det ikke en oppgave å forhindre dette sikkerhetsproblemet på serversiden. Eksemplet ovenfor er et slikt tilfelle. Arsaken er at innholdet som vises etter at et # – tegn ikke sendes av nettleseren til serveren.

den første og viktigste anbefalingen er å unngå å bruke brukerstyrte data for dynamisk generering av innhold når det er mulig. Hvis DETTE er helt uunngåelig, er den beste måten å forhindre DOM basert XSS å bruke secure output methods (sink) som hindrer kjøring av skadelig innebygd kode. I kodebiten ovenfor er den eneste måten å gjøre koden trygg på å erstatte .innerHTML med .textContent. DETTE er fordi – i motsetning til innerHtml – HTML-elementer i textContent – metoden ikke utføres.

DEN DOM-baserte XSS Prevention Cheat Sheet fra OWASP har mange nyttige tips for å utvikle sikre dynamiske nettsteder med JavaScript. Der finner du også beskrivelser av kontekstavhengig koding, som kreves når det er umulig å bytte til en sikker utgangsmetode.

Forskjeller fra ANDRE xss-sårbarheter

den viktigste forskjellen er hvor angrepet er innebygd i koden. I motsetning til andre sårbarheter for skripting på tvers av nettsteder, er koden ikke innebygd på serversiden, men heller på klientsiden. Dette betyr at nyttelasten ikke finnes i svarkoden. DOM-baserte xss-sårbarheter kan derfor bare oppdages under kjøring eller ved å sjekke nettstedets DOM.

i de fleste tilfeller er det ikke lett å finne DOM-baserte xss-sårbarheter. En nyttig tilnærming som bruker statisk kode analyse tilnærming er beskrevet i artikkelen Burp basert-xss.

Om Forfatteren

Andrea Hauser

Andrea Hauser ble uteksaminert Med En Bachelor Of Science FHO i informasjonsteknologi ved University Of Applied Sciences Rapperswil. Hun fokuserer sitt offensive arbeid på webapplikasjonstesting og realisering av sosialtekniske kampanjer. Hennes forskningsfokus er å skape og analysere deepfakes. (ORCID 0000-0002-5161-8658)

Lenker

  • http://www.webappsec.org/projects/articles/071105.html
  • https://support.portswigger.net/customer/portal/articles/2325926-using-burp-scanner-to-test-for-dom
  • https://www.cert.org/historical/advisories/CA-2000-02.cfm
  • https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet
  • https://www.w3.org/DOM/

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.