# SOME - Same Origin Method Execution {{#include ../../banners/hacktricks-training.md}} ## Same Origin Method Execution Kutakuwa na nyakati ambapo unaweza kutekeleza javascript kidogo kwenye ukurasa. Kwa mfano, katika kesi ambapo unaweza [**kudhibiti thamani ya callback ambayo itatekelezwa**](#javascript-function). Katika hizo kesi, moja ya mambo bora unayoweza kufanya ni **kufikia DOM ili kuita chochote** kitendo nyeti unachoweza kukiona huko (kama kubonyeza kitufe). Hata hivyo, kwa kawaida utapata udhaifu huu katika **nukta ndogo bila kitu chochote cha kuvutia katika DOM**. Katika hali hizo, 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 kwenye kikoa kimoja** 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 **mhasiriwa 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 ukidhalilisha callback** na kutumia kitu **`opener`** ili **kufikia na kutekeleza kitendo chochote katika ukurasa wa awali** (ambayo sasa ina DOM ya kuvutia). > [!CAUTION] > 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 kikoa kimoja**. Hii ndiyo sababu, ili kudhulumu udhaifu huu, unahitaji kutafuta aina fulani ya **XSS katika kikoa kimoja**. ### Exploitation - Unaweza kutumia fomu hii ili **kuunda PoC** ya kudhulumu aina hii ya udhaifu: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator) - Ili kupata njia ya DOM kwa kipengele cha HTML chenye bonyezo unaweza kutumia nyongeza hii ya kivinjari: [https://www.someattack.com/Playground/targeting_tool](https://www.someattack.com/Playground/targeting_tool) ### Example - Unaweza kupata mfano dhaifu katika [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/) - Kumbuka kwamba katika mfano huu seva in **azalisha msimbo wa javascript** na **kuongeza** kwenye HTML kulingana na **maudhui ya parameter ya callback:** ``. Ndio maana katika mfano huu huwezi kuhitaji kuonyesha matumizi ya `opener` wazi. - Pia angalia andiko hili la CTF: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068) ## References - [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/) {{#include ../../banners/hacktricks-training.md}}