SOME - Same Origin Method Execution
Same Origin Method Execution
Kutakuwa na matukio ambapo unaweza kutekeleza javascript fulani katika ukurasa. Kwa mfano, katika kesi ambapo unaweza kudhibiti thamani ya callback ambayo itatekelezwa.
Katika hizo kesi, moja ya mambo bora unayoweza kufanya ni kufikia DOM ili kuita chochote kitendo nyeti unachoweza kukiona huko (kama kubofya kitufe). Hata hivyo, kawaida utapata hii udhaifu katika nukta ndogo bila kitu chochote cha kuvutia katika DOM.
Katika hizo hali, shambulio hili litakuwa la manufaa sana, kwa sababu lengo lake ni kuwa na uwezo wa kudhulumu utekelezaji wa JS mdogo ndani ya DOM kutoka ukurasa tofauti kutoka kwa eneo moja na vitendo vingi vya kuvutia.
Kimsingi, mtiririko wa shambulio ni kama ifuatavyo:
Pata callback ambayo unaweza kudhulumu (inaweza kuwa na mipaka kwa [\w\._]).
Ikiwa haijapunguzika na unaweza kutekeleza JS yoyote, unaweza tu kudhulumu hii kama XSS ya kawaida.
Fanya mhusika afungue ukurasa unaodhibitiwa na mshambuliaji.
Ukurasa utafungua mwenyewe katika dirisha tofauti (dirisha jipya litakuwa na kitu
opener
kinachorejelea cha awali).Ukurasa wa awali utafungua ukurasa ambapo DOM ya kuvutia iko.
Ukurasa wa pili utafungua ukurasa dhaifu ukidhulumu callback na kutumia kitu
opener
ili kufikia na kutekeleza kitendo fulani katika ukurasa wa awali (ambayo sasa ina DOM ya kuvutia).
Kumbuka kwamba hata kama ukurasa wa awali unapata URL mpya baada ya kuunda ukurasa wa pili, kitu cha opener
cha ukurasa wa pili bado ni rejeleo halali kwa ukurasa wa kwanza katika DOM mpya.
Zaidi ya hayo, ili ukurasa wa pili uweze kutumia kitu cha opener kurasa zote mbili lazima ziwe katika eneo moja. Hii ndiyo sababu, ili kudhulumu udhaifu huu, unahitaji kupata aina fulani ya XSS katika eneo moja.
Exploitation
Unaweza kutumia fomu hii ili kuunda PoC ya kudhulumu aina hii ya udhaifu: https://www.someattack.com/Playground/SOMEGenerator
Ili kupata njia ya DOM kwa kipengele cha HTML kwa kubofya unaweza kutumia nyongeza hii ya kivinjari: https://www.someattack.com/Playground/targeting_tool
Example
Unaweza kupata mfano dhaifu katika https://www.someattack.com/Playground/
Kumbuka kwamba katika mfano huu server in aunda msimbo wa javascript na kuongeza kwenye HTML kulingana na maudhui ya parameter ya callback:
<script>opener.{callbacl_content}</script>
. Ndio maana katika mfano huu huhitaji kuashiria matumizi yaopener
wazi.Pia angalia andiko hili la CTF: https://ctftime.org/writeup/36068
References
Last updated