Bypassing SOP with Iframes - 2
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)
Nella soluzione per questa sfida, @Strellic_ propone un metodo simile alla sezione precedente. Controlliamolo.
In questa sfida, l'attaccante deve bypassare questo:
Se lo fa, può inviare un postmessage con contenuto HTML che verrà scritto nella pagina con innerHTML
senza sanificazione (XSS).
Il modo per bypassare il primo controllo è rendere window.calc.contentWindow
undefined
e e.source
null
:
window.calc.contentWindow
è in realtà document.getElementById("calc")
. Puoi sovrascrivere document.getElementById
con <img name=getElementById />
(nota che l'API Sanitizer -qui- non è configurata per proteggere contro attacchi di DOM clobbering nel suo stato predefinito).
Pertanto, puoi sovrascrivere document.getElementById("calc")
con <img name=getElementById /><div id=calc></div>
. Poi, window.calc
sarà undefined
.
Ora, abbiamo bisogno che e.source
sia undefined
o null
(perché ==
è usato invece di ===
, null == undefined
è True
). Ottenere questo è "facile". Se crei un iframe e invi un postMessage da esso e immediatamente rimuovi l'iframe, e.origin
sarà null
. Controlla il seguente codice
Per bypassare il secondo controllo riguardo al token, si invia token
con valore null
e si rende il valore di window.token
undefined
:
Inviare token
nel postMessage con valore null
è banale.
window.token
nella chiamata alla funzione getCookie
che utilizza document.cookie
. Si noti che qualsiasi accesso a document.cookie
in pagine di origine null
genera un errore. Questo farà sì che window.token
abbia valore undefined
.
La soluzione finale di @terjanq è il seguente:
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)