hacktricks/src/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md

43 lines
3.2 KiB
Markdown

# 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:** `<script>opener.{callbacl_content}</script>`. 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}}