Content Security Policy (CSP) Bypass
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Join HackenProof Discord server to communicate with experienced hackers and bug bounty hunters!
Hacking Insights Engage with content that delves into the thrill and challenges of hacking
Real-Time Hack News Keep up-to-date with fast-paced hacking world through real-time news and insights
Latest Announcements Stay informed with the newest bug bounties launching and crucial platform updates
Join us on Discord and start collaborating with top hackers today!
Content Security Policy (CSP) se prepoznaje kao tehnologija pretraživača, prvenstveno usmerena na zaštitu od napada kao što su cross-site scripting (XSS). Funkcioniše tako što definiše i detaljno opisuje puteve i izvore sa kojih se resursi mogu sigurno učitati od strane pretraživača. Ovi resursi obuhvataju niz elemenata kao što su slike, okviri i JavaScript. Na primer, politika može dozvoliti učitavanje i izvršavanje resursa sa iste domene (self), uključujući inline resurse i izvršavanje string koda putem funkcija kao što su eval
, setTimeout
ili setInterval
.
Implementacija CSP se vrši putem odgovornih header-a ili uključivanjem meta elemenata u HTML stranicu. U skladu sa ovom politikom, pretraživači proaktivno sprovode ove odredbe i odmah blokiraju sve otkrivene prekršaje.
Implemented via response header:
Implementirano putem meta taga:
CSP može biti primenjen ili praćen korišćenjem ovih zaglavlja:
Content-Security-Policy
: Primena CSP; pregledač blokira sve prekršaje.
Content-Security-Policy-Report-Only
: Koristi se za praćenje; izveštava o prekršajima bez blokiranja. Idealno za testiranje u pre-produkcijskim okruženjima.
CSP ograničava porekla za učitavanje aktivnog i pasivnog sadržaja, kontrolišući aspekte kao što su izvršavanje inline JavaScript-a i korišćenje eval()
. Primer politike je:
script-src: Dozvoljava specifične izvore za JavaScript, uključujući URL-ove, inline skripte i skripte koje pokreću upravljači događaja ili XSLT stilove.
default-src: Postavlja podrazumevanu politiku za preuzimanje resursa kada specifične direktive za preuzimanje nisu prisutne.
child-src: Specifikuje dozvoljene resurse za web radnike i sadržaj u ugnježdenim okvirima.
connect-src: Ograničava URL-ove koji se mogu učitati koristeći interfejse kao što su fetch, WebSocket, XMLHttpRequest.
frame-src: Ograničava URL-ove za okvire.
frame-ancestors: Specifikuje koji izvori mogu ugraditi trenutnu stranicu, primenljivo na elemente kao što su <frame>
, <iframe>
, <object>
, <embed>
, i <applet>
.
img-src: Definiše dozvoljene izvore za slike.
font-src: Specifikuje validne izvore za fontove učitane koristeći @font-face
.
manifest-src: Definiše dozvoljene izvore datoteka manifest aplikacije.
media-src: Definiše dozvoljene izvore za učitavanje medijskih objekata.
object-src: Definiše dozvoljene izvore za elemente <object>
, <embed>
, i <applet>
.
base-uri: Specifikuje dozvoljene URL-ove za učitavanje koristeći <base>
elemente.
form-action: Navodi validne krajnje tačke za slanje obrazaca.
plugin-types: Ograničava mime tipove koje stranica može da pozove.
upgrade-insecure-requests: Naredjuje pretraživačima da prepišu HTTP URL-ove na HTTPS.
sandbox: Primena ograničenja sličnih sandbox atributu <iframe>
.
report-to: Specifikuje grupu kojoj će izveštaj biti poslat ako se politika prekrši.
worker-src: Specifikuje validne izvore za Worker, SharedWorker, ili ServiceWorker skripte.
prefetch-src: Specifikuje validne izvore za resurse koji će biti preuzeti ili unapred preuzeti.
navigate-to: Ograničava URL-ove na koje dokument može da navigira na bilo koji način (a, obrazac, window.location, window.open, itd.)
*
: Dozvoljava sve URL-ove osim onih sa data:
, blob:
, filesystem:
shemama.
'self'
: Dozvoljava učitavanje sa iste domene.
'data'
: Dozvoljava resursima da se učitavaju putem data sheme (npr., Base64 kodirane slike).
'none'
: Blokira učitavanje sa bilo kog izvora.
'unsafe-eval'
: Dozvoljava korišćenje eval()
i sličnih metoda, ne preporučuje se iz bezbednosnih razloga.
'unsafe-hashes'
: Omogućava specifične inline upravljače događaja.
'unsafe-inline'
: Dozvoljava korišćenje inline resursa kao što su inline <script>
ili <style>
, ne preporučuje se iz bezbednosnih razloga.
'nonce'
: Lista dozvoljenih inline skripti koristeći kriptografski nonce (broj koji se koristi jednom).
Ako imate ograničeno izvršavanje JS-a, moguće je dobiti korišćen nonce unutar stranice sa doc.defaultView.top.document.querySelector("[nonce]")
i zatim ga ponovo koristiti za učitavanje maliciozne skripte (ako se koristi strict-dynamic, bilo koji dozvoljeni izvor može učitati nove izvore pa ovo nije potrebno), kao u:
'sha256-<hash>'
: Beleži skripte sa specifičnim sha256 hash-om.
'strict-dynamic'
: Omogućava učitavanje skripti iz bilo kog izvora ako je beljen od strane nonce-a ili hash-a.
'host'
: Precizira specifičan host, kao što je example.com
.
https:
: Ograničava URL-ove na one koji koriste HTTPS.
blob:
: Omogućava učitavanje resursa sa Blob URL-ova (npr., Blob URL-ovi kreirani putem JavaScript-a).
filesystem:
: Omogućava učitavanje resursa sa datotečnog sistema.
'report-sample'
: Uključuje uzorak kršećeg koda u izveštaju o kršenju (korisno za debagovanje).
'strict-origin'
: Slično 'self', ali osigurava da nivo bezbednosti protokola izvora odgovara dokumentu (samo sigurni izvori mogu učitavati resurse sa sigurnih izvora).
'strict-origin-when-cross-origin'
: Šalje pune URL-ove prilikom pravljenja zahteva sa istog izvora, ali šalje samo izvor kada je zahtev međuzvorni.
'unsafe-allow-redirects'
: Omogućava učitavanje resursa koji će odmah preusmeriti na drugi resurs. Nije preporučljivo jer slabi bezbednost.
Radni payload: "/><script>alert(1);</script>
Ovo ne radi, za više informacija proverite ovo.
Radni payload:
Ako možete nekako da omogućite da dozvoljeni JS kod kreira novi script tag u DOM-u sa vašim JS kodom, zato što ga dozvoljeni skript kreira, novi script tag će biti dozvoljen za izvršavanje.
Radni payload:
Izgleda da ovo više ne funkcioniše
Radni payloadi:
Ako možete da otpremite JS datoteku, možete da zaobiđete ovaj CSP:
Radni payload:
Međutim, veoma je verovatno da server validira otpremeljenu datoteku i da će vam dozvoliti da otpremite određene tipove datoteka.
Štaviše, čak i ako biste mogli da otpremite JS kod unutar datoteke koristeći ekstenziju koju server prihvata (kao što je: script.png), to neće biti dovoljno jer neki serveri poput apache servera biraju MIME tip datoteke na osnovu ekstenzije i pregledači poput Chrome-a će odbiti da izvrše Javascript kod unutar nečega što bi trebalo da bude slika. "Nadamo se", postoje greške. Na primer, iz CTF-a sam saznao da Apache ne prepoznaje .wave ekstenziju, stoga je ne servira sa MIME tipom kao audio/*.
Odavde, ako pronađete XSS i otpremanje datoteka, i uspete da pronađete pogrešno interpretiranu ekstenziju, mogli biste pokušati da otpremite datoteku sa tom ekstenzijom i sadržajem skripte. Ili, ako server proverava ispravan format otpremeljene datoteke, kreirajte poliglot (neki primeri poliglotova ovde).
Ako nije moguće injektovati JS, još uvek možete pokušati da eksfiltrirate, na primer, kredencijale injektovanjem akcije forme (i možda očekujući da menadžeri lozinki automatski popune lozinke). Možete pronaći primer u ovom izveštaju. Takođe, primetite da default-src
ne pokriva akcije formi.
Za neke od sledećih payload-a unsafe-eval
čak nije ni potreban.
Učitajte ranjivu verziju angulera i izvršite proizvoljni JS:
window
object (check out this post):Post pokazuje da možete učitati sve biblioteke sa cdn.cloudflare.com
(ili bilo kog drugog dozvoljenog JS biblioteka repozitorijuma), izvršiti sve dodate funkcije iz svake biblioteke i proveriti koje funkcije iz kojih biblioteka vraćaju window
objekat.
Angular XSS iz imena klase:
Prema ovom CTF izveštaju, možete zloupotrebiti https://www.google.com/recaptcha/ unutar CSP-a da izvršite proizvoljan JS kod zaobilaženjem CSP-a:
Više payload-a iz ovog izveštaja:
Sledeći URL preusmerava na example.com (iz ovde):
Abuziranje *.google.com/script.google.com
Moguće je zloupotrebiti Google Apps Script da se primi informacija na stranici unutar script.google.com. Kao što je urađeno u ovom izveštaju.
Scenariji poput ovog gde je script-src
postavljen na self
i određenu domenu koja je na beloj listi mogu se zaobići korišćenjem JSONP. JSONP krajnje tačke omogućavaju nesigurne callback metode koje omogućavaju napadaču da izvrši XSS, radni payload:
JSONBee sadrži spremne JSONP krajnje tačke za CSP zaobilaženje različitih veb sajtova.
Ista ranjivost će se pojaviti ako pouzdana krajnja tačka sadrži Open Redirect jer ako je inicijalna krajnja tačka pouzdana, preusmeravanja su pouzdana.
Kao što je opisano u sledećem postu, postoji mnogo domena trećih strana, koje mogu biti dozvoljene negde u CSP-u, koje se mogu zloupotrebiti za ili eksfiltraciju podataka ili izvršavanje JavaScript koda. Neki od ovih trećih strana su:
www.facebook.com, *.facebook.com
Exfil
Hotjar
*.hotjar.com, ask.hotjar.io
Exfil
Jsdelivr
*.jsdelivr.com, cdn.jsdelivr.net
Exec
Amazon CloudFront
*.cloudfront.net
Exfil, Exec
Amazon AWS
*.amazonaws.com
Exfil, Exec
Azure Websites
*.azurewebsites.net, *.azurestaticapps.net
Exfil, Exec
Salesforce Heroku
*.herokuapp.com
Exfil, Exec
Google Firebase
*.firebaseapp.com
Exfil, Exec
Ako pronađete bilo koji od dozvoljenih domena u CSP-u vašeg cilja, postoji šansa da biste mogli da zaobiđete CSP registracijom na usluzi treće strane i, ili eksfiltrirate podatke na tu uslugu ili izvršite kod.
Na primer, ako pronađete sledeći CSP:
или
Treba da budete u mogućnosti da exfiltrirate podatke, slično kao što je to oduvek rađeno sa Google Analytics/Google Tag Manager. U ovom slučaju, pratite ove opšte korake:
Napravite Facebook Developer nalog ovde.
Napravite novu aplikaciju "Facebook Login" i izaberite "Website".
Idite na "Settings -> Basic" i dobijte svoj "App ID".
Na ciljanom sajtu sa kojeg želite da exfiltrirate podatke, možete exfiltrirati podatke direktno koristeći Facebook SDK uređaj "fbq" kroz "customEvent" i payload podataka.
Idite na svoj App "Event Manager" i izaberite aplikaciju koju ste kreirali (napomena: menadžer događaja može se naći na URL-u sličnom ovome: https://www.facebook.com/events_manager2/list/pixel/[app-id]/test_events).
Izaberite karticu "Test Events" da vidite događaje koji se šalju sa "vašeg" veb sajta.
Zatim, na strani žrtve, izvršite sledeći kod da inicijalizujete Facebook praćenje piksela da upućuje na napadačev Facebook developer account app-id i da izdate prilagođeni događaj poput ovog:
Što se tiče ostalih sedam trećih strana navedenih u prethodnoj tabeli, postoji mnogo drugih načina na koje ih možete zloupotrebiti. Pogledajte prethodni blog post za dodatna objašnjenja o drugim zloupotrebama trećih strana.
Pored prethodno pomenutog preusmeravanja za zaobilaženje ograničenja putanje, postoji još jedna tehnika koja se zove Relative Path Overwrite (RPO) koja se može koristiti na nekim serverima.
Na primer, ako CSP dozvoljava putanju https://example.com/scripts/react/
, može se zaobići na sledeći način:
Pregledač će na kraju učitati https://example.com/scripts/angular/angular.js
.
To funkcioniše jer za pregledač učitavate datoteku pod imenom ..%2fangular%2fangular.js
koja se nalazi pod https://example.com/scripts/react/
, što je u skladu sa CSP.
∑, oni će to dekodirati, efektivno tražeći https://example.com/scripts/react/../angular/angular.js
, što je ekvivalentno https://example.com/scripts/angular/angular.js
.
Iskorišćavanjem ove nekonzistentnosti u interpretaciji URL-a između pregledača i servera, pravila putanje se mogu zaobići.
Rešenje je da se %2f
ne tretira kao /
na strani servera, osiguravajući doslednu interpretaciju između pregledača i servera kako bi se izbegao ovaj problem.
Online primer: https://jsbin.com/werevijewa/edit?html,output
Ako je direktiva base-uri nedostajuća, možete je zloupotrebiti da izvršite dangling markup injection.
Štaviše, ako stranica učitava skriptu koristeći relativnu putanju (kao što je <script src="/js/app.js">
) koristeći Nonce, možete zloupotrebiti base tag da učitate skriptu sa vašeg servera, postignuvši XSS.
Ako je ranjiva stranica učitana sa httpS, koristite httpS URL u bazi.
Specifična politika poznata kao Content Security Policy (CSP) može ograničiti JavaScript događaje. Ipak, AngularJS uvodi prilagođene događaje kao alternativu. Unutar događaja, AngularJS pruža jedinstveni objekat $event
, koji se odnosi na objekat nativnog pregledača. Ovaj $event
objekat može se iskoristiti za zaobilaženje CSP-a. Važno je napomenuti da u Chrome-u, $event/event
objekat poseduje atribut path
, koji sadrži niz objekata uključenih u lanac izvršenja događaja, pri čemu je objekat window
uvek smešten na kraju. Ova struktura je ključna za taktike bekstva iz sandbox-a.
Usmeravanjem ovog niza na orderBy
filter, moguće je iterirati kroz njega, koristeći terminalni element (objekat window
) za aktiviranje globalne funkcije kao što je alert()
. Prikazani kod ispod objašnjava ovaj proces:
Ovaj deo ističe korišćenje ng-focus
direktive za pokretanje događaja, koristeći $event.path|orderBy
za manipulaciju path
nizom, i koristeći window
objekat za izvršavanje alert()
funkcije, čime se otkriva document.cookie
.
Pronađite druge Angular zaobilaženja na https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
CSP politika koja beleži domene za učitavanje skripti u Angular JS aplikaciji može se zaobići kroz pozivanje callback funkcija i određene ranjive klase. Dodatne informacije o ovoj tehnici mogu se pronaći u detaljnom vodiču dostupnom na ovom git repository.
Radni payloadi:
Drugi JSONP arbitrarni izvršni krajnji tački mogu se naći ovde (neki od njih su obrisani ili ispravljeni)
Šta se dešava kada CSP naiđe na preusmeravanje na serverskoj strani? Ako preusmeravanje vodi ka drugom poreklu koje nije dozvoljeno, i dalje će propasti.
Međutim, prema opisu u CSP specifikaciji 4.2.2.3. Putanje i preusmeravanja, ako preusmeravanje vodi ka drugačijoj putanji, može zaobići originalna ograničenja.
Evo jednog primera:
Ako je CSP postavljen na https://www.google.com/a/b/c/d
, pošto se putanja uzima u obzir, skripte /test
i /a/test
će biti blokirane od strane CSP-a.
Međutim, konačni http://localhost:5555/301
će biti preusmeren na serverskoj strani na https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//
. Pošto je u pitanju preusmeravanje, putanja se ne uzima u obzir, i skripta može biti učitana, čime se zaobilazi ograničenje putanje.
Sa ovim preusmeravanjem, čak i ako je putanja potpuno navedena, i dalje će biti zaobiđena.
Stoga, najbolje rešenje je osigurati da veb sajt nema otvorene ranjivosti za preusmeravanje i da ne postoje domeni koji se mogu iskoristiti u CSP pravilima.
Pročitajte kako ovde.
'unsafe-inline'
znači da možete izvršiti bilo koji skript unutar koda (XSS može izvršiti kod) i img-src *
znači da možete koristiti bilo koju sliku sa bilo kog resursa na veb stranici.
Možete zaobići ovaj CSP eksfiltracijom podataka putem slika (u ovoj situaciji XSS zloupotrebljava CSRF gde stranica dostupna botu sadrži SQLi, i izvlači zastavicu putem slike):
From: https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle
Možete takođe zloupotrebiti ovu konfiguraciju da učitate javascript kod umetnut unutar slike. Ako, na primer, stranica dozvoljava učitavanje slika sa Twitter-a. Možete napraviti posebnu sliku, otpremiti je na Twitter i zloupotrebiti "unsafe-inline" da izvršite JS kod (kao regularni XSS) koji će učitati sliku, izvući JS iz nje i izvršiti ga: https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/
Funkcija servisnih radnika importScripts
nije ograničena CSP-om:
Istraživanje: https://portswigger.net/research/bypassing-csp-with-policy-injection
Ako je parametar koji ste poslali nalepio unutar deklaracije politike, onda možete izmeniti politiku na neki način koji je čini beskorisnom. Možete dozvoliti skriptu 'unsafe-inline' sa bilo kojim od ovih zaobilaženja:
Zato što će ova direktiva prepisati postojeće script-src direktive. Možete pronaći primer ovde: 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
U Edge-u je mnogo jednostavnije. Ako možete dodati u CSP samo ovo: ;_
Edge će odbaciti celu politiku.
Primer: http://portswigger-labs.net/edge_csp_injection_xndhfye721/?x=;_&y=%3Cscript%3Ealert(1)%3C/script%3E
Obratite pažnju na nedostatak direktive 'unsafe-inline'
Ovog puta možete naterati žrtvu da učita stranicu pod vašom kontrolom putem XSS sa <iframe
. Ovog puta ćete naterati žrtvu da pristupi stranici sa koje želite da izvučete informacije (CSRF). Ne možete pristupiti sadržaju stranice, ali ako nekako možete kontrolisati vreme koje stranica treba da učita možete izvući informacije koje su vam potrebne.
Ovog puta će se zastavica izvući, kada god se karakter ispravno pogodi putem SQLi, odgovor traje duže zbog sleep funkcije. Tada ćete moći da izvučete zastavicu:
Ovaj napad bi podrazumevao neku vrstu socijalnog inženjeringa gde napadač uverava korisnika da prevuče i ispusti link preko bookmarkleta u pretraživaču. Ovaj bookmarklet bi sadržao malicious javascript kod koji bi, kada se prevuče ili klikne, bio izvršen u kontekstu trenutnog web prozora, zaobilazeći CSP i omogućavajući krađu osetljivih informacija kao što su kolačići ili tokeni.
Za više informacija proverite originalni izveštaj ovde.
U ovoj CTF analizi, CSP se zaobilazi injektovanjem unutar dozvoljenog iframe-a strožijeg CSP-a koji je zabranio učitavanje specifične JS datoteke koja je, zatim, putem prototype pollution ili dom clobbering omogućila zloupotrebu različitog skripta za učitavanje proizvoljnog skripta.
Možete ograničiti CSP iframe-a sa csp
atributom:
U ovoj CTF analizi, bilo je moguće putem HTML injekcije da se ograniči više CSP tako da je skripta koja sprečava CSTI onemogućena i stoga je ranjivost postala iskoristiva. CSP se može učiniti restriktivnijim korišćenjem HTML meta tagova i inline skripte se mogu onemogućiti uklanjanjem unosa koji omogućava njihov nonce i omogućavanjem specifične inline skripte putem sha:
Ako uspete da naterate server da odgovori sa zaglavljem Content-Security-Policy-Report-Only
sa vrednošću koju kontrolišete (možda zbog CRLF), mogli biste da ga usmerite na vaš server i ako obavijete JS sadržaj koji želite da exfiltrirate sa <script>
i zato što je veoma verovatno da unsafe-inline
nije dozvoljen od strane CSP, ovo će pokrenuti CSP grešku i deo skripte (koji sadrži osetljive informacije) biće poslat serveru iz Content-Security-Policy-Report-Only
.
Za primer proverite ovaj CTF izveštaj.
An iframe
is created that points to a URL (let's call it https://example.redirect.com
) which is permitted by CSP.
This URL then redirects to a secret URL (e.g., https://usersecret.example2.com
) that is not allowed by CSP.
By listening to the securitypolicyviolation
event, one can capture the blockedURI
property. This property reveals the domain of the blocked URI, leaking the secret domain to which the initial URL redirected.
Zanimljivo je napomenuti da pregledači poput Chrome-a i Firefox-a imaju različita ponašanja u vezi sa iframovima u odnosu na CSP, što može dovesti do potencijalnog curenja osetljivih informacija zbog neodređenog ponašanja.
Druga tehnika uključuje iskorišćavanje samog CSP-a za dedukciju tajnog poddomena. Ova metoda se oslanja na algoritam binarne pretrage i prilagođavanje CSP-a kako bi uključila specifične domene koje su namerno blokirane. Na primer, ako je tajni poddomen sastavljen od nepoznatih karaktera, možete iterativno testirati različite poddomene modifikovanjem CSP direktive da blokira ili dozvoli te poddomene. Evo isječka koji prikazuje kako bi CSP mogao biti postavljen da olakša ovu metodu:
Prateći koje zahteve CSP blokira ili dozvoljava, može se suziti mogući skup karaktera u tajnom poddomeni, na kraju otkrivajući punu URL adresu.
Obe metode koriste nijanse implementacije i ponašanja CSP-a u pregledačima, pokazujući kako naizgled sigurni propisi mogu nenamerno otkriti osetljive informacije.
Trik iz ovde.
Pridružite se HackenProof Discord serveru da komunicirate sa iskusnim hakerima i lovcima na greške!
Hacking Insights Uključite se u sadržaj koji se bavi uzbuđenjem i izazovima hakovanja
Real-Time Hack News Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
Latest Announcements Budite informisani o najnovijim nagradama za greške i važnim ažuriranjima platformi
Pridružite nam se na Discord i počnite da sarađujete sa vrhunskim hakerima danas!
Prema poslednjoj tehnici komentarisanoj u ovom videu, slanje previše parametara (1001 GET parametar iako to možete uraditi i sa POST parametrima i više od 20 fajlova). Svaki definisani header()
u PHP web kodu neće biti poslat zbog greške koju će ovo izazvati.
PHP je poznat po tome što bafuje odgovor do 4096 bajtova po defaultu. Stoga, ako PHP prikazuje upozorenje, pružanjem dovoljno podataka unutar upozorenja, odgovor će biti poslat pre CSP zaglavlja, uzrokujući da se zaglavlje ignoriše. Tada se tehnika u suštini sastoji u punjenju bafera odgovora upozorenjima tako da CSP zaglavlje ne bude poslato.
Ideja iz ovog izveštaja.
Iz ovog izveštaja izgleda da je bilo moguće zaobići CSP zaštitu učitavanjem stranice greške (potencijalno bez CSP-a) i prepisivanjem njenog sadržaja.
SOME je tehnika koja zloupotrebljava XSS (ili veoma ograničen XSS) u krajnjoj tački stranice da zloupotrebi druge krajnje tačke iste domene. To se postiže učitavanjem ranjive krajnje tačke sa stranice napadača, a zatim osvežavanjem stranice napadača na pravu krajnju tačku u istoj domeni koju želite da zloupotrebite. Na ovaj način ranjiva krajnja tačka može koristiti opener
objekat u payload-u da pristupi DOM-u prave krajnje tačke za zloupotrebu. Za više informacija pogledajte:
Pored toga, wordpress ima JSONP krajnju tačku u /wp-json/wp/v2/users/1?_jsonp=data
koja će odraziti podatke poslati u izlazu (sa ograničenjem samo na slova, brojeve i tačke).
Napadač može zloupotrebiti tu krajnju tačku da generiše SOME napad protiv WordPress-a i ugradi ga unutar <script s
rc=/wp-json/wp/v2/users/1?_jsonp=some_attack></script>
napominjemo da će ovaj script biti učitan jer je dozvoljen od 'self'. Pored toga, i zato što je WordPress instaliran, napadač može zloupotrebiti SOME napad kroz ranjivu callback krajnju tačku koja zaobilazi CSP da bi dala više privilegija korisniku, instalirao novi dodatak...
Za više informacija o tome kako izvesti ovaj napad pogledajte https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/
Ako postoji strogi CSP koji vam ne dozvoljava da interagujete sa spoljnim serverima, postoji nekoliko stvari koje uvek možete uraditi da izvučete informacije.
Možete jednostavno ažurirati lokaciju da pošaljete tajne informacije na server napadača:
Možete preusmeriti injektovanjem meta taga (ovo je samo preusmeravanje, ovo neće otkriti sadržaj)
Da bi učitali stranice brže, pregledači će unapred rešavati imena hostova u IP adrese i keširati ih za kasniju upotrebu.
Možete naterati pregledač da unapred reši ime hosta sa: <link rel="dns-prefetch" href="something.com">
Možete zloupotrebiti ovo ponašanje da izvršite eksfiltraciju osetljivih informacija putem DNS zahteva:
Još jedan način:
Da bi se izbeglo da se ovo desi, server može poslati HTTP zaglavlje:
Очигледно, ова техника не ради у безглавим прегледачима (ботовима)
На неколико страница можете прочитати да WebRTC не проверава connect-src
политику CSP-а.
У ствари, можете leak информације користећи DNS захтев. Погледајте овај код:
Još jedna opcija:
https://csper.io/docs/generating-content-security-policy
Pridružite se HackenProof Discord serveru da komunicirate sa iskusnim hakerima i lovcima na greške!
Hacking Insights Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
Vesti o hakovanju u realnom vremenu Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
Najnovija obaveštenja Budite informisani o najnovijim nagradama za greške i važnim ažuriranjima platformi
Pridružite nam se na Discord i počnite da sarađujete sa vrhunskim hakerima danas!
```html ```
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)