Client Side Prototype Pollution
Kugundua kwa kutumia Zana za Moja kwa Moja
Zana https://github.com/dwisiswant0/ppfuzz, https://github.com/kleiton0x00/ppmap na https://github.com/kosmosec/proto-find zinaweza kutumika kupata udhaifu wa prototype pollution.
Zaidi ya hayo, unaweza pia kutumia nyongeza ya kivinjari PPScan kuangalia kiotaji unachofikia kwa udhaifu wa prototype pollution.
Kurekebisha mahali ambapo mali inatumika
Kupata sababu ya msingi ya Prototype Pollution
Mara tu udhaifu wa prototype pollution unapogundulika na zana yoyote, na ikiwa msimbo si mgumu kupita kiasi, unaweza kupata udhaifu kwa kutafuta maneno muhimu kama location.hash
, decodeURIComponent
, au location.search
katika Zana za Wataalamu za Chrome. Njia hii inakuwezesha kubaini sehemu iliyo hatarini ya msimbo wa JavaScript.
Kwa misimbo mikubwa na ngumu zaidi, njia rahisi ya kugundua msimbo hatarini inajumuisha hatua zifuatazo:
Tumia zana kubaini udhaifu na kupata payload iliyoundwa kuweka mali katika mjenzi. Mfano uliopewa na ppmap unaweza kuonekana kama:
constructor[prototype][ppmap]=reserved
.Weka breakpoint kwenye mstari wa kwanza wa msimbo wa JavaScript utakaotekelezwa kwenye ukurasa. Fanya upya ukurasa na payload, ukisimamisha utekelezaji kwenye breakpoint hii.
Wakati utekelezaji wa JavaScript umesimamishwa, tekeleza script ifuatayo kwenye console ya JS. Script hii itatoa ishara wakati mali ya 'ppmap' inaundwa, kusaidia katika kutafuta asili yake:
Rudi kwenye kichupo cha Sources na uchague “Resume script execution”. JavaScript itaendelea kutekelezwa, na mali ya 'ppmap' itachafuka kama inavyotarajiwa. Kutumia kipande kilichotolewa husaidia kutambua mahali halisi ambapo mali ya 'ppmap' inachafuka. Kwa kuchunguza Call Stack, stacks tofauti ambapo uchafuzi ulitokea zinaweza kuonekana.
Unapofanya maamuzi kuhusu stack ipi ya kuchunguza, mara nyingi ni muhimu kulenga stacks zinazohusiana na faili za maktaba ya JavaScript, kwani uchafuzi wa prototype mara nyingi hutokea ndani ya maktaba hizi. Tambua stack husika kwa kuchunguza kiambatisho chake kwa faili za maktaba (inaonekana upande wa kulia, kama picha iliyotolewa kwa mwongozo). Katika hali zenye stacks nyingi, kama zile kwenye mistari ya 4 na 6, chaguo la busara ni stack kwenye mstari wa 4, kwani inawakilisha tukio la awali la uchafuzi na hivyo sababu ya msingi ya udhaifu. Kubofya kwenye stack kutakupeleka kwenye msimbo ulio hatarini.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fmiro.medium.com%2Fmax%2F1400%2F1*S8NBOl1a7f1zhJxlh-6g4w.jpeg&width=768&dpr=4&quality=100&sign=7de3adb9&sv=1)
Kutafuta Gadget za Script
Gadget ni msimbo ambao utakabiliwa mara tu udhaifu wa PP utakapogundulika.
Ikiwa programu ni rahisi, tunaweza kutafuta maneno muhimu kama srcdoc/innerHTML/iframe/createElement
na kupitia msimbo wa chanzo na kuangalia kama inaleta utendaji wa javascript. Wakati mwingine, mbinu zilizotajwa zinaweza kutokupata gadgets kabisa. Katika kesi hiyo, kupitia msimbo wa chanzo wa safi kunaweza kufichua gadgets nzuri kama mfano ulio hapa chini.
Mfano wa Kupata gadget ya PP katika msimbo wa maktaba ya Mithil
Angalia andiko hili: https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/
Urejeleaji wa payloads kwa maktaba zenye udhaifu
Kupita kwa HTML Sanitizers kupitia PP
Utafiti huu unaonyesha gadgets za PP za kutumia ili kupita sanizations zinazotolewa na baadhi ya maktaba za HTML sanitizers:
sanitize-html
dompurify
Closure
References
Last updated