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)
Katika solution ya challenge, @Strellic_ inapendekeza njia inayofanana na sehemu ya awali. Hebu tuangalie.
Katika changamoto hii, mshambuliaji anahitaji bypass hii:
Ikiwa atafanya hivyo, anaweza kutuma postmessage yenye maudhui ya HTML ambayo itandikwa kwenye ukurasa kwa kutumia innerHTML
bila kusafishwa (XSS).
Njia ya kupita kikaguzi cha kwanza ni kwa kufanya window.calc.contentWindow
kuwa undefined
na e.source
kuwa null
:
window.calc.contentWindow
kwa kweli ni document.getElementById("calc")
. Unaweza kuharibu document.getElementById
kwa kutumia <img name=getElementById />
(zingatia kuwa Sanitizer API -hapa- haijapangwa kulinda dhidi ya mashambulizi ya DOM clobbering katika hali yake ya msingi).
Kwa hivyo, unaweza kuharibu document.getElementById("calc")
kwa kutumia <img name=getElementById /><div id=calc></div>
. Kisha, window.calc
itakuwa undefined
.
Sasa, tunahitaji e.source
kuwa undefined
au null
(kwa sababu ==
inatumika badala ya ===
, null == undefined
ni True
). Kupata hii ni "rahisi". Ikiwa unaunda iframe na kutuma postMessage kutoka kwake na mara moja kuondoa iframe, e.origin
itakuwa null
. Angalia msimbo ufuatao
Ili kupita ukaguzi wa pili kuhusu token ni kwa kutuma token
yenye thamani null
na kufanya thamani ya window.token
kuwa undefined
:
Kutuma token
katika postMessage yenye thamani null
ni rahisi.
window.token
katika kuita kazi getCookie
ambayo inatumia document.cookie
. Kumbuka kwamba ufikiaji wowote wa document.cookie
katika kurasa za asili null
unachochea makosa. Hii itafanya window.token
kuwa na thamani undefined
.
Suluhisho la mwisho na @terjanq ni ifuatayo:
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)