Abusing Service Workers
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
'n dienswerker is 'n skrif wat deur jou blaaier in die agtergrond uitgevoer word, geskei van enige webblad, wat funksies moontlik maak wat nie 'n webblad of gebruikersinteraksie vereis nie, en dus aflyn en agtergrondverwerking vermoëns verbeter. Gedetailleerde inligting oor dienswerkers kan hier gevind word. Deur dienswerkers binne 'n kwesbare webdomein te misbruik, kan aanvallers beheer verkry oor die slagoffer se interaksies met alle bladsye binne daardie domein.
Bestaande dienswerkers kan nagegaan word in die Dienswerkers afdeling van die Toepassing oortjie in Ontwikkelaar Gereedskap. 'n Ander metode is om chrome://serviceworker-internals te besoek vir 'n meer gedetailleerde weergawe.
Drukkennisgewing toestemmings het 'n direkte impak op 'n dienswerker se vermoë om met die bediener te kommunikeer sonder direkte gebruikersinteraksie. As toestemmings geweier word, beperk dit die dienswerker se potensiaal om 'n voortdurende bedreiging te wees. Omgekeerd, die toekenning van toestemmings verhoog sekuriteitsrisiko's deur die ontvangs en uitvoering van potensiële ontploffings moontlik te maak.
Om hierdie kwesbaarheid te misbruik, moet jy vind:
'n manier om arbitraire JS lêers na die bediener op te laai en 'n XSS om die dienswerker van die opgelaaide JS-lêer te laai
'n kwesbare JSONP versoek waar jy die uitset kan manipuleer (met arbitraire JS kode) en 'n XSS om die JSONP met 'n payload te laai wat 'n kwaadwillige dienswerker sal laai.
In die volgende voorbeeld gaan ek 'n kode aanbied om 'n nuwe dienswerker te registreer wat na die fetch
gebeurtenis sal luister en elke opgevraagde URL na die aanvallers se bediener sal stuur (dit is die kode wat jy nodig het om te oplaai na die bediener of te laai via 'n kwesbare JSONP antwoord):
En dit is die kode wat die werker sal registreer (die kode wat jy moet kan uitvoer deur 'n XSS te misbruik). In hierdie geval sal 'n GET versoek na die aanvallers bediener gestuur word om te ken of die registrasie van die dienswerker suksesvol was of nie:
In die geval van die misbruik van 'n kwesbare JSONP-eindpunt, moet jy die waarde binne var sw
plaas. Byvoorbeeld:
Daar is 'n C2 toegewy aan die uitbuiting van Service Workers genoem Shadow Workers wat baie nuttig sal wees om hierdie kwesbaarhede te misbruik.
Die 24-uur cache riglyn beperk die lewe van 'n kwaadwillige of gecompromitteerde service worker (SW) tot hoogstens 24 uur na 'n XSS kwesbaarheid regstelling, met die aanname van aanlyn kliëntstatus. Om kwesbaarheid te minimaliseer, kan webwerf operateurs die SW skrip se Time-To-Live (TTL) verlaag. Ontwikkelaars word ook aangeraai om 'n service worker kill-switch te skep vir vinnige deaktivering.
importScripts
in 'n SW via DOM ClobberingDie funksie importScripts
wat vanaf 'n Service Worker aangeroep word, kan 'n skrip van 'n ander domein invoer. As hierdie funksie aangeroep word met 'n parameter wat 'n aanvaller kan verander, kan hy 'n JS skrip van sy domein invoer en XSS verkry.
Dit omseil selfs CSP beskermings.
Voorbeeld kwesbare kode:
index.html
sw.js
Vir meer inligting oor wat DOM Clobbering is, kyk:
Dom ClobberingAs die URL/domein waar die SW gebruik maak van importScripts
binne 'n HTML-element is, is dit moontlik om dit te verander via DOM Clobbering om die SW 'n skrip van jou eie domein te laat laai.
Vir 'n voorbeeld hiervan, kyk na die verwysingsskakel.
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)