SOME - Same Origin Method Execution

Support HackTricks

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

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 ya opener wazi.

  • Pia angalia andiko hili la CTF: https://ctftime.org/writeup/36068

References

Support HackTricks

Last updated