Content Security Policy (CSP) Bypass
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)
Sluit aan by HackenProof Discord bediener om met ervare hackers en bug bounty jagters te kommunikeer!
Hacking Inligting Betrek met inhoud wat die opwinding en uitdagings van hacking ondersoek
Regstydse Hack Nuus Bly op hoogte van die vinnige hacking wêreld deur regstydse nuus en insigte
Laaste Aankondigings Bly ingelig oor die nuutste bug bounties wat bekendgestel word en belangrike platform opdaterings
Sluit by ons aan op Discord en begin vandag saamwerk met top hackers!
Inhoudsekuriteitsbeleid (CSP) word erken as 'n blaastegnologie, hoofsaaklik gemik op beskerming teen aanvalle soos cross-site scripting (XSS). Dit funksioneer deur paaie en bronne te definieer en te detailleer waaruit hulpbronne veilig deur die blaaiers gelaai kan word. Hierdie hulpbronne sluit 'n reeks elemente in soos beelde, rame, en JavaScript. Byvoorbeeld, 'n beleid kan die laai en uitvoering van hulpbronne van dieselfde domein (self) toelaat, insluitend inline hulpbronne en die uitvoering van stringkode deur funksies soos eval
, setTimeout
, of setInterval
.
Implementering van CSP word uitgevoer deur antwoordkoppe of deur meta-elemente in die HTML-bladsy in te sluit. Na hierdie beleid, handhaaf blaaiers proaktief hierdie bepalings en blokkeer onmiddellik enige opgespoor oortredings.
Geïmplementeer via antwoordkop:
Geïmplementeer deur middel van 'n meta-tag:
CSP kan afgedwing of gemonitor wees met behulp van hierdie koptekste:
Content-Security-Policy
: Dwing die CSP af; die blaaiers blokkeer enige oortredings.
Content-Security-Policy-Report-Only
: Gebruik vir monitering; rapporteer oortredings sonder om hulle te blokkeer. Ideaal vir toetsing in pre-produksie omgewings.
CSP beperk die oorspronge vir die laai van beide aktiewe en passiewe inhoud, wat aspekte soos inline JavaScript-uitvoering en die gebruik van eval()
beheer. 'n Voorbeeld beleid is:
script-src: Laat spesifieke bronne vir JavaScript toe, insluitend URL's, inline skripte, en skripte wat deur gebeurtenis hanteerders of XSLT-stylesheets geaktiveer word.
default-src: Stel 'n standaard beleid in vir die verkryging van hulpbronne wanneer spesifieke verkrygingsdirektiewe afwesig is.
child-src: Spesifiseer toegelate bronne vir webwerkers en ingebedde raaminhoud.
connect-src: Beperk URL's wat gelaai kan word met behulp van interfaces soos fetch, WebSocket, XMLHttpRequest.
frame-src: Beperk URL's vir rame.
frame-ancestors: Spesifiseer watter bronne die huidige bladsy kan inkorporeer, van toepassing op elemente soos <frame>
, <iframe>
, <object>
, <embed>
, en <applet>
.
img-src: Definieer toegelate bronne vir beelde.
font-src: Spesifiseer geldige bronne vir skrifte wat met @font-face
gelaai word.
manifest-src: Definieer toegelate bronne van toepassingsmanifestlêers.
media-src: Definieer toegelate bronne vir die laai van media-objekte.
object-src: Definieer toegelate bronne vir <object>
, <embed>
, en <applet>
elemente.
base-uri: Spesifiseer toegelate URL's vir laai met behulp van <base>
elemente.
form-action: Lys geldige eindpunte vir vormindienings.
plugin-types: Beperk mime-tipes wat 'n bladsy mag aanroep.
upgrade-insecure-requests: Beveel aan dat blaaiers HTTP-URL's na HTTPS herskryf.
sandbox: Pas beperkings toe wat soortgelyk is aan die sandbox-attribuut van 'n <iframe>
.
report-to: Spesifiseer 'n groep waaraan 'n verslag gestuur sal word indien die beleid oortree word.
worker-src: Spesifiseer geldige bronne vir Worker, SharedWorker, of ServiceWorker skripte.
prefetch-src: Spesifiseer geldige bronne vir hulpbronne wat verkry of vooraf verkry sal word.
navigate-to: Beperk die URL's waartoe 'n dokument op enige manier kan navigeer (a, vorm, window.location, window.open, ens.)
*
: Laat alle URL's toe behalwe dié met data:
, blob:
, filesystem:
skemas.
'self'
: Laat laai vanaf dieselfde domein toe.
'data'
: Laat hulpbronne toe om via die data-skema gelaai te word (bv. Base64-gecodeerde beelde).
'none'
: Blokkeer laai vanaf enige bron.
'unsafe-eval'
: Laat die gebruik van eval()
en soortgelyke metodes toe, nie aanbeveel vir veiligheidsredes nie.
'unsafe-hashes'
: Aktiveer spesifieke inline gebeurtenis hanteerders.
'unsafe-inline'
: Laat die gebruik van inline hulpbronne soos inline <script>
of <style>
toe, nie aanbeveel vir veiligheidsredes nie.
'nonce'
: 'n Witlys vir spesifieke inline skripte wat 'n kriptografiese nonce (nommer wat een keer gebruik word) gebruik.
As jy JS beperkte uitvoering het, is dit moontlik om 'n gebruikte nonce binne die bladsy te kry met doc.defaultView.top.document.querySelector("[nonce]")
en dit dan te hergebruik om 'n kwaadwillige skrip te laai (as strict-dynamic gebruik word, kan enige toegelate bron nuwe bronne laai, so dit is nie nodig nie), soos in:
'sha256-<hash>'
: Witlys scripts met 'n spesifieke sha256-hash.
'strict-dynamic'
: Laat die laai van scripts van enige bron toe as dit deur 'n nonce of hash gewitlys is.
'host'
: Spesifiseer 'n spesifieke gasheer, soos example.com
.
https:
: Beperk URL's tot dié wat HTTPS gebruik.
blob:
: Laat hulpbronne toe om van Blob-URL's gelaai te word (bv. Blob-URL's wat via JavaScript geskep is).
filesystem:
: Laat hulpbronne toe om van die lêerstelsel gelaai te word.
'report-sample'
: Sluit 'n monster van die oortredende kode in die oortredingsverslag in (nuttig vir foutopsporing).
'strict-origin'
: Soortgelyk aan 'self' maar verseker dat die protokol-sekuriteitsvlak van die bronne ooreenstem met die dokument (slegs veilige oorspronge kan hulpbronne van veilige oorspronge laai).
'strict-origin-when-cross-origin'
: Stuur volle URL's wanneer dieselfde oorsprong versoeke gemaak word, maar stuur slegs die oorsprong wanneer die versoek kruis-oorsprong is.
'unsafe-allow-redirects'
: Laat hulpbronne toe om gelaai te word wat onmiddellik na 'n ander hulpbron sal herlei. Nie aanbeveel nie, aangesien dit sekuriteit verzwak.
Working payload: "/><script>alert(1);</script>
Dit werk nie, vir meer inligting kyk hier.
Werkslading:
As jy op een of ander manier 'n toegelate JS-kode 'n nuwe script-tag in die DOM met jou JS-kode kan maak, omdat 'n toegelate script dit skep, sal die nuwe script-tag toegelaat word om uitgevoer te word.
Werkslading:
Dit lyk asof dit nie meer werk nie
Werksame payloads:
As jy 'n JS-lêer kan oplaai, kan jy hierdie CSP omseil:
Werkslading:
However, it's highly probable that the server is validating the uploaded file and will only allow you to upload determined type of files.
Moreover, even if you could upload a JS code inside a file using an extension accepted by the server (like: script.png) this won't be enough because some servers like apache server select MIME type of the file based on the extension and browsers like Chrome will reject to execute Javascript code inside something that should be an image. "Hopefully", there are mistakes. For example, from a CTF I learnt that Apache doesn't know the .wave extension, therefore it doesn't serve it with a MIME type like audio/*.
From here, if you find a XSS and a file upload, and you manage to find a misinterpreted extension, you could try to upload a file with that extension and the Content of the script. Or, if the server is checking the correct format of the uploaded file, create a polyglot (some polyglot examples here).
If not possible to inject JS, you could still try to exfiltrate for example credentials injecting a form action (and maybe expecting password managers to auto-fill passwords). You can find an example in this report. Also, notice that default-src
does not cover form actions.
Vir sommige van die volgende payload unsafe-eval
is nie eens nodig nie.
Laai 'n kwesbare weergawe van angular en voer arbitrêre JS uit:
window
-objek teruggee (kyk na hierdie pos):Die pos wys dat jy alle biblioteke van cdn.cloudflare.com
(of enige ander toegelate JS-biblioteek repo) kan laai, alle bygevoegde funksies van elke biblioteek kan uitvoer, en watter funksies van watter biblioteke die window
-objek teruggee kan nagaan.
Angular XSS vanaf 'n klasnaam:
Volgens hierdie CTF skrywe kan jy https://www.google.com/recaptcha/ binne 'n CSP misbruik om arbitrêre JS kode uit te voer en die CSP te omseil:
Meer payloads van hierdie skrywe:
Die volgende URL herlei na example.com (van hier):
Abuse van *.google.com/script.google.com
Dit is moontlik om Google Apps Script te misbruik om inligting te ontvang op 'n bladsy binne script.google.com. Soos dit in hierdie verslag gedoen word.
Scenariod soos hierdie waar script-src
op self
en 'n spesifieke domein wat op die witlys is, gestel is, kan omseil word met JSONP. JSONP-eindpunte laat onveilige terugroepmetodes toe wat 'n aanvaller in staat stel om XSS uit te voer, werkende payload:
JSONBee bevat gereed-om-te-gebruik JSONP eindpunte om CSP te omseil van verskillende webwerwe.
Die dieselfde kwesbaarheid sal voorkom as die vertroude eindpunt 'n Open Redirect bevat omdat as die aanvanklike eindpunt vertrou word, omleidings vertrou word.
Soos beskryf in die volgende pos, is daar baie derdeparty domeine, wat dalk êrens in die CSP toegelaat word, wat misbruik kan word om of data te ekfiltreer of JavaScript-kode uit te voer. Sommige van hierdie derdepartye is:
Entiteit | Toegelate Domein | Vermoëns |
---|---|---|
www.facebook.com, *.facebook.com | Ekfil | |
Hotjar | *.hotjar.com, ask.hotjar.io | Ekfil |
Jsdelivr | *.jsdelivr.com, cdn.jsdelivr.net | Exec |
Amazon CloudFront | *.cloudfront.net | Ekfil, Exec |
Amazon AWS | *.amazonaws.com | Ekfil, Exec |
Azure Websites | *.azurewebsites.net, *.azurestaticapps.net | Ekfil, Exec |
Salesforce Heroku | *.herokuapp.com | Ekfil, Exec |
Google Firebase | *.firebaseapp.com | Ekfil, Exec |
As jy enige van die toegelate domeine in die CSP van jou teiken vind, is daar 'n kans dat jy die CSP mag kan omseil deur op die derdeparty diens te registreer en, of data na daardie diens te ekfiltreer of kode uit te voer.
Byvoorbeeld, as jy die volgende CSP vind:
of
U moet in staat wees om data te exfiltreer, soortgelyk aan hoe dit altyd gedoen is met Google Analytics/Google Tag Manager. In hierdie geval volg u hierdie algemene stappe:
Skep 'n Facebook Developer-rekening hier.
Skep 'n nuwe "Facebook Login" app en kies "Webwerf".
Gaan na "Instellings -> Basies" en kry u "App ID"
In die teikenwebwerf waarvan u data wil exfiltreer, kan u data exfiltreer deur die Facebook SDK gadget "fbq" direk te gebruik deur 'n "customEvent" en die datalaai.
Gaan na u App "Event Manager" en kies die toepassing wat u geskep het (let op dat die gebeurtenisbestuurder in 'n URL soortgelyk aan hierdie een gevind kan word: https://www.facebook.com/events_manager2/list/pixel/[app-id]/test_events
Kies die oortjie "Toetsgebeurtenisse" om die gebeurtenisse te sien wat deur "u" webwerf gestuur word.
Dan, aan die kant van die slagoffer, voer u die volgende kode uit om die Facebook-opsporing pixel te initialiseer om na die aanvaller se Facebook ontwikkelaar rekening app-id te wys en 'n aangepaste gebeurtenis soos volg uit te reik:
As vir die ander sewe derdeparty-domeine wat in die vorige tabel gespesifiseer is, is daar baie ander maniere waarop jy hulle kan misbruik. Verwys na die vorige blogpos vir addisionele verduidelikings oor ander derdeparty-misbruik.
Benewens die bogenoemde herleiding om padbeperkings te omseil, is daar 'n ander tegniek genaamd Relative Path Overwrite (RPO) wat op sommige bedieners gebruik kan word.
Byvoorbeeld, as CSP die pad https://example.com/scripts/react/
toelaat, kan dit soos volg omgegaan word:
Die blaaiers sal uiteindelik https://example.com/scripts/angular/angular.js
laai.
Dit werk omdat jy vir die blaaiers 'n lêer met die naam ..%2fangular%2fangular.js
laai wat geleë is onder https://example.com/scripts/react/
, wat voldoen aan CSP.
∑, hulle sal dit decodeer, wat effektief https://example.com/scripts/react/../angular/angular.js
versoek, wat gelyk is aan https://example.com/scripts/angular/angular.js
.
Deur hierdie inkonsekwentheid in URL-interpretasie tussen die blaaiers en die bediener te benut, kan die padreëls omseil word.
Die oplossing is om nie %2f
as /
aan die bedienerkant te behandel nie, wat 'n konsekwente interpretasie tussen die blaaiers en die bediener verseker om hierdie probleem te vermy.
Aanlyn Voorbeeld: https://jsbin.com/werevijewa/edit?html,output
As die base-uri riglyn ontbreek, kan jy dit misbruik om 'n dangling markup injection uit te voer.
Boonop, as die bladsy 'n skrif laai met 'n relatiewe pad (soos <script src="/js/app.js">
) met 'n Nonce, kan jy die base tag misbruik om dit te laai vanaf jou eie bediener wat 'n XSS bereik.
As die kwesbare bladsy met httpS gelaai word, gebruik 'n httpS-url in die basis.
'n Spesifieke beleid bekend as Content Security Policy (CSP) mag JavaScript gebeurtenisse beperk. Nietemin, AngularJS stel pasgemaakte gebeurtenisse as 'n alternatief bekend. Binne 'n gebeurtenis bied AngularJS 'n unieke objek $event
, wat na die inheemse blaaiersgebeurtenis objek verwys. Hierdie $event
objek kan benut word om die CSP te omseil. Opmerklik is dat die $event/event
objek in Chrome 'n path
attribuut het, wat 'n objekarray bevat wat betrokke is by die gebeurtenis se uitvoeringsketting, met die window
objek altyd aan die einde. Hierdie struktuur is van kardinale belang vir sandbox ontsnappingstaktieke.
Deur hierdie array na die orderBy
filter te rig, is dit moontlik om oor dit te itereren, en die terminale element (die window
objek) te benut om 'n globale funksie soos alert()
te aktiveer. Die gedemonstreerde kode-snippet hieronder verhelder hierdie proses:
Hierdie snit beklemtoon die gebruik van die ng-focus
rigting om die gebeurtenis te aktiveer, deur $event.path|orderBy
te gebruik om die path
array te manipuleer, en die window
objek te benut om die alert()
funksie uit te voer, wat document.cookie
onthul.
Vind ander Angular omseilings in https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
'n CSP-beleid wat domeine vir skriplaai in 'n Angular JS-toepassing witlys, kan omseil word deur die aanroep van terugroepfunksies en sekere kwesbare klasse. Verdere inligting oor hierdie tegniek kan gevind word in 'n gedetailleerde gids beskikbaar op hierdie git repository.
Werkende payloads:
Ander JSONP arbitrêre uitvoerings eindpunte kan gevind word in hier (sommige van hulle is verwyder of reggestel)
Wat gebeur wanneer CSP server-kant hergidsering teëkom? As die hergidsering na 'n ander oorsprong lei wat nie toegelaat word nie, sal dit steeds misluk.
E however, volgens die beskrywing in CSP spesifikasie 4.2.2.3. Paaie en Hergidserings, as die hergidsering na 'n ander pad lei, kan dit die oorspronklike beperkings omseil.
Hier is 'n voorbeeld:
If CSP is gestel na https://www.google.com/a/b/c/d
, omdat die pad oorweeg word, sal beide /test
en /a/test
skripte deur CSP geblokkeer word.
Echter, die finale http://localhost:5555/301
sal op die bediener-kant herlei word na https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//
. Aangesien dit 'n herleiding is, word die pad nie oorweeg nie, en die skrip kan gelaai word, wat die padbeperking omseil.
Met hierdie herleiding, selfs al is die pad heeltemal gespesifiseer, sal dit steeds omseil word.
Daarom is die beste oplossing om te verseker dat die webwerf geen oop herleiding kwesbaarhede het nie en dat daar geen domeine is wat in die CSP-reëls uitgebuit kan word nie.
Lees hoe hier.
'unsafe-inline'
beteken dat jy enige skrip binne die kode kan uitvoer (XSS kan kode uitvoer) en img-src *
beteken dat jy enige beeld van enige bron op die webblad kan gebruik.
Jy kan hierdie CSP omseil deur die data via beelde te exfiltreer (in hierdie geval misbruik die XSS 'n CSRF waar 'n bladsy wat deur die bot toeganklik is 'n SQLi bevat, en die vlag via 'n beeld onttrek):
From: https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle
Jy kan ook hierdie konfigurasie misbruik om javascript kode in 'n beeld in te laai. As die bladsy byvoorbeeld die laai van beelde van Twitter toelaat. Jy kan 'n spesiale beeld skep, dit na Twitter oplaai en die "unsafe-inline" misbruik om 'n JS kode (soos 'n gewone XSS) uit te voer wat die beeld sal laai, die JS daaruit sal onttrek en dit sal uitvoer: https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/
Dienswerkers importScripts
funksie is nie beperk deur CSP nie:
Navorsing: https://portswigger.net/research/bypassing-csp-with-policy-injection
As 'n parameter wat deur jou gestuur word binne die verklaring van die beleid geplak word, kan jy die beleid op 'n manier verander wat dit onbruikbaar maak. Jy kan script 'unsafe-inline' met enige van hierdie omseilings toelaat:
Omdat hierdie riglyn bestaande script-src riglyne sal oorskryf. Jy kan 'n voorbeeld hier vind: http://portswigger-labs.net/edge_csp_injection_xndhfye721/?x=%3Bscript-src-elem+*&y=%3Cscript+src=%22http://subdomain1.portswigger-labs.net/xss/xss.js%22%3E%3C/script%3E
In Edge is dit baie eenvoudiger. As jy net hierdie in die CSP kan byvoeg: ;_
Edge sal die hele beleid verwerp.
Voorbeeld: http://portswigger-labs.net/edge_csp_injection_xndhfye721/?x=;_&y=%3Cscript%3Ealert(1)%3C/script%3E
Let op die gebrek aan die riglyn 'unsafe-inline'
Hierdie keer kan jy die slagoffer dwing om 'n bladsy in jou beheer te laai via XSS met 'n <iframe
. Hierdie keer gaan jy die slagoffer laat toegang hê tot die bladsy waarvandaan jy inligting wil onttrek (CSRF). Jy kan nie die inhoud van die bladsy toegang nie, maar as jy op een of ander manier die tyd wat die bladsy nodig het om te laai kan beheer, kan jy die inligting wat jy nodig het onttrek.
Hierdie keer gaan 'n vlag onttrek word, wanneer 'n karakter korrek geraai word via SQLi neem die antwoord meer tyd weens die slaapfunksie. Dan sal jy in staat wees om die vlag te onttrek:
Hierdie aanval sou 'n bietjie sosiale ingenieurswese impliseer waar die aanvaller die gebruiker oortuig om 'n skakel oor die bladmerklet van die blaaier te sleep en te laat val. Hierdie bladmerklet sou kwaadwillige javascript kode bevat wat, wanneer gesleep en laat val of geklik, in die konteks van die huidige webvenster uitgevoer sou word, CSP omseil en toelaat om sensitiewe inligting soos koekies of tokens te steel.
Vir meer inligting kyk die oorspronklike verslag hier.
In hierdie CTF-skrywe, word CSP omgegaan deur binne 'n toegelate iframe 'n meer beperkende CSP in te spuit wat die laai van 'n spesifieke JS-lêer verbied het wat, dan, via prototype besoedeling of dom klobbering toegelaat het om 'n ander skrip te misbruik om 'n arbitrêre skrip te laai.
Jy kan 'n CSP van 'n Iframe beperk met die csp
attribuut:
In hierdie CTF skrywe, was dit moontlik om via HTML inspuiting 'n CSP meer te beperk sodat 'n skrip wat CSTI voorkom, gedeaktiveer is en daarom het die kwesbaarheid uitvoerbaar geword. CSP kan meer beperkend gemaak word deur HTML meta-tags en inline skripte kan gedeaktiveer word deur die invoer wat hul nonce toelaat te verwyder en spesifieke inline skrip via sha in te skakel:
As jy daarin slaag om die bediener te laat antwoordgee met die koptekst Content-Security-Policy-Report-Only
met 'n waarde wat deur jou beheer word (miskien as gevolg van 'n CRLF), kan jy dit laat wys na jou bediener en as jy die JS-inhoud wat jy wil eksfiltreer met <script>
omhul en omdat dit hoogs waarskynlik unsafe-inline
nie toegelaat word deur die CSP nie, sal dit 'n CSP-fout veroorsaak en 'n deel van die skrip (wat die sensitiewe inligting bevat) sal na die bediener gestuur word vanaf Content-Security-Policy-Report-Only
.
Vir 'n voorbeeld kyk na hierdie CTF-skrywe.
'n iframe
word geskep wat na 'n URL wys (kom ons noem dit https://example.redirect.com
) wat deur CSP toegelaat word.
Hierdie URL lei dan na 'n geheime URL (bv. https://usersecret.example2.com
) wat nie toegelaat word deur CSP nie.
Deur na die securitypolicyviolation
gebeurtenis te luister, kan 'n mens die blockedURI
eienskap vang. Hierdie eienskap onthul die domein van die geblokkeerde URI, wat die geheime domein waarheen die aanvanklike URL gelei het, lek.
Dit is interessant om op te let dat blaaiers soos Chrome en Firefox verskillende gedrag het in die hantering van iframes met betrekking tot CSP, wat kan lei tot die moontlike lek van sensitiewe inligting as gevolg van onbepaalde gedrag.
'n Ander tegniek behels die benutting van die CSP self om die geheime subdomein af te lei. Hierdie metode maak staat op 'n binêre soekalgoritme en die aanpassing van die CSP om spesifieke domeine in te sluit wat doelbewus geblokkeer is. Byvoorbeeld, as die geheime subdomein uit onbekende karakters bestaan, kan jy iteratief verskillende subdomeine toets deur die CSP-riglyn aan te pas om hierdie subdomeine te blokkeer of toe te laat. Hier is 'n snit wat wys hoe die CSP opgestel kan word om hierdie metode te fasiliteer:
Deur te monitor watter versoeke geblokkeer of toegelaat word deur die CSP, kan 'n mens die moontlike karakters in die geheime subdomein beperk, uiteindelik die volle URL onthul.
Albei metodes benut die nuanses van CSP-implementering en gedrag in blaaiers, wat demonstreer hoe blykbaar veilige beleide onbedoeld sensitiewe inligting kan lek.
Trick from here.
Sluit aan by HackenProof Discord bediener om met ervare hackers en bug bounty jagters te kommunikeer!
Hacking Insights Betrek jouself met inhoud wat die opwinding en uitdagings van hacking ondersoek
Real-Time Hack News Bly op hoogte van die vinnig bewegende hacking wêreld deur middel van real-time nuus en insigte
Latest Announcements Bly ingelig oor die nuutste bug bounties wat bekendgestel word en belangrike platform opdaterings
Join us on Discord en begin vandag saamwerk met top hackers!
Volgens die laaste tegniek kommentaar in hierdie video, om te veel parameters te stuur (1001 GET parameters alhoewel jy dit ook met POST params en meer as 20 lêers kan doen). Enige gedefinieerde header()
in die PHP webkode sal nie gestuur word weens die fout wat dit sal veroorsaak nie.
PHP is bekend vir die buffering van die antwoord tot 4096 bytes per standaard. Daarom, as PHP 'n waarskuwing toon, deur genoeg data binne waarskuwings te verskaf, sal die antwoord gestuur word voor die CSP header, wat veroorsaak dat die header geïgnoreer word. Dan bestaan die tegniek basies uit die antwoordbuffer met waarskuwings te vul sodat die CSP header nie gestuur word nie.
Idee van hierdie skrywe.
Van hierdie skrywe lyk dit of dit moontlik was om 'n CSP-beskerming te omseil deur 'n foutbladsy (potensieel sonder CSP) te laai en sy inhoud te herskryf.
SOME is 'n tegniek wat 'n XSS (of hoogs beperkte XSS) in 'n eindpunt van 'n bladsy misbruik om ander eindpunte van dieselfde oorsprong te misbruik. Dit word gedoen deur die kwesbare eindpunt vanaf 'n aanvallerbladsy te laai en dan die aanvallerbladsy te verfris na die werklike eindpunt in dieselfde oorsprong wat jy wil misbruik. Op hierdie manier kan die kwesbare eindpunt die opener
objek in die payload gebruik om die DOM van die werklike eindpunt te misbruik. Vir meer inligting, kyk:
Boonop het wordpress 'n JSONP eindpunt in /wp-json/wp/v2/users/1?_jsonp=data
wat die data wat in die uitvoer gestuur word, reflekteer (met die beperking van slegs letters, syfers en punte).
'n Aanvaller kan daardie eindpunt misbruik om 'n SOME-aanval teen WordPress te genereer en dit binne <script s
rc=/wp-json/wp/v2/users/1?_jsonp=some_attack></script>
te inkorporeer, let daarop dat hierdie script gelaai sal word omdat dit toegelaat word deur 'self'. Boonop, en omdat WordPress geïnstalleer is, kan 'n aanvaller die SOME-aanval misbruik deur die kwesbare callback eindpunt wat die CSP omseil om meer voorregte aan 'n gebruiker te gee, 'n nuwe plugin te installeer...
Vir meer inligting oor hoe om hierdie aanval uit te voer, kyk https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/
As daar 'n streng CSP is wat jou nie toelaat om met eksterne bedieners te interaksie nie, is daar 'n paar dinge wat jy altyd kan doen om die inligting te ekstrapoleer.
Jy kan net die ligging opdateer om die geheime inligting na die aanvaller se bediener te stuur:
Jy kan herlei deur 'n meta-tag in te voeg (dit is net 'n herleiding, dit sal nie inhoud lek nie)
Om bladsye vinniger te laai, gaan blaaiers hostnames vooraf oplos in IP adresse en dit vir later gebruik kas.
Jy kan 'n blaaier aanwys om 'n hostname vooraf op te los met: <link rel="dns-prefetch" href="something.com">
Jy kan hierdie gedrag misbruik om sensitiewe inligting via DNS versoeke te exfiltreer:
Nog 'n manier:
Om te voorkom dat dit gebeur, kan die bediener die HTTP-kop stuur:
Blykbaar werk hierdie tegniek nie in koplose blaaiers (bots) nie
Op verskeie bladsye kan jy lees dat WebRTC nie die connect-src
beleid van die CSP nagaan nie.
Werklik kan jy leak inligting gebruik maak van 'n DNS versoek. Kyk na hierdie kode:
Nog 'n opsie:
https://csper.io/docs/generating-content-security-policy
Sluit aan by HackenProof Discord bediener om met ervare hackers en bug bounty jagters te kommunikeer!
Hacking Inligting Betrek met inhoud wat die opwinding en uitdagings van hacking ondersoek
Regte Tyd Hack Nuus Bly op hoogte van die vinnige hacking wêreld deur middel van regte tyd nuus en insigte
Laaste Aankondigings Bly ingelig oor die nuutste bug bounties wat bekendgestel word en belangrike platform opdaterings
Sluit by ons aan op Discord en begin vandag saamwerk met top hackers!
```html ```
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)