Parameter Pollution | JSON Injection
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
HTTP Parameter Pollution (HPP) ni mbinu ambapo washambuliaji wanabadilisha vigezo vya HTTP ili kubadilisha tabia ya programu ya wavuti kwa njia zisizokusudiwa. Ubadilishaji huu unafanywa kwa kuongeza, kubadilisha, au kuiga vigezo vya HTTP. Athari za mabadiliko haya hazionekani moja kwa moja kwa mtumiaji lakini zinaweza kubadilisha kwa kiasi kikubwa utendaji wa programu upande wa seva, huku zikiwa na athari zinazoweza kuonekana upande wa mteja.
URL ya muamala wa programu ya benki:
Original URL: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000
Kwa kuingiza vigezo vya ziada from
:
Manipulated URL: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC
Muamala unaweza kuchajiwa kwa makosa kwa accountC
badala ya accountA
, ikionyesha uwezo wa HPP kubadilisha miamala au kazi nyingine kama vile kurekebisha nywila, mipangilio ya 2FA, au maombi ya funguo za API.
Njia vigezo vinavyopaswa na kupewa kipaumbele inategemea teknolojia ya wavuti inayotumika, ikihusisha jinsi HPP inavyoweza kutumika.
Zana kama Wappalyzer husaidia kubaini teknolojia hizi na tabia zao za upasuaji.
OTP Manipulation Case:
Context: Mfumo wa kuingia unahitaji Nambari ya Muda Mmoja (OTP) ulitumiwa vibaya.
Method: Kwa kukamata ombi la OTP kwa kutumia zana kama Burp Suite, washambuliaji waligundua vigezo vya email
katika ombi la HTTP.
Outcome: OTP, iliyokusudiwa kwa barua pepe ya awali, ilitumwa badala yake kwa anwani ya pili ya barua pepe iliyotajwa katika ombi lililobadilishwa. Kasoro hii iliruhusu ufikiaji usioidhinishwa kwa kukwepa kipimo cha usalama kilichokusudiwa.
Hali hii inaonyesha makosa makubwa katika nyuma ya programu, ambayo ilipokea kigezo cha kwanza email
kwa ajili ya uzalishaji wa OTP lakini ilitumia cha mwisho kwa ajili ya usambazaji.
API Key Manipulation Case:
Scenario: Programu inaruhusu watumiaji kuboresha funguo zao za API kupitia ukurasa wa mipangilio ya wasifu.
Attack Vector: Mshambuliaji anagundua kwamba kwa kuongeza kigezo cha ziada api_key
kwenye ombi la POST, wanaweza kubadilisha matokeo ya kazi ya kuboresha funguo za API.
Technique: Kwa kutumia zana kama Burp Suite, mshambuliaji anaunda ombi ambalo lina vigezo viwili vya api_key
: kimoja halali na kingine kibaya. Seva, ikipokea tu matukio ya mwisho, inasasisha funguo za API kwa thamani iliyotolewa na mshambuliaji.
Result: Mshambuliaji anapata udhibiti juu ya utendaji wa API wa mwathirika, akipata au kubadilisha data binafsi bila idhini.
Mfano huu unasisitiza zaidi umuhimu wa kushughulikia vigezo kwa usalama, hasa katika vipengele muhimu kama vile usimamizi wa funguo za API.
Njia teknolojia za wavuti zinavyoshughulikia vigezo vya HTTP vilivyoigizwa inatofautiana, ikihusisha uwezekano wao wa kushambuliwa na HPP:
Flask: Inachukua thamani ya kigezo cha kwanza kilichokutana, kama vile a=1
katika mfuatano wa maswali a=1&a=2
, ikipa kipaumbele mfano wa awali kuliko nakala zinazofuata.
PHP (on Apache HTTP Server): Kinyume chake, inapa kipaumbele thamani ya mwisho ya kigezo, ikichagua a=2
katika mfano uliopewa. Tabia hii inaweza kwa bahati mbaya kuruhusu HPP kwa kuheshimu kigezo kilichobadilishwa na mshambuliaji badala ya asili.
Matokeo haya yalichukuliwa kutoka https://medium.com/@0xAwali/http-parameter-pollution-in-2024-32ec1b810f89
Puuza chochote baada ya %00 katika jina la kigezo.
Shughulikia jina[] kama array.
_GET haina maana ya Njia ya GET.
Pendelea kigezo cha mwisho.
Inatumia vichungi & na ; kugawanya vigezo.
Haitambui jina[].
Pendelea kigezo cha kwanza.
POST RequestMapping == PostMapping & GET RequestMapping == GetMapping.
POST RequestMapping & PostMapping inatambua jina[].
Pendelea jina ikiwa jina NA jina[] vinapatikana.
Unganisha vigezo e.g. kwanza, mwisho.
POST RequestMapping & PostMapping inatambua kigezo cha swali chenye Content-Type.
Inatambua jina[].
Unganisha vigezo e.g. kwanza, mwisho.
Haitambui jina[].
Pendelea kigezo cha kwanza.
Haitambui jina[].
Pendelea kigezo cha kwanza.
Haitambui jina[].
Pendelea kigezo cha mwisho.
Haitambui jina[].
Pendelea kigezo cha mwisho.
The front-end inaweza kuamini tukio la kwanza wakati backend inatumia tukio la pili la ufunguo.
Mifano fulani haitatafsiriwa vizuri na frontend lakini backend itatafsiri na kutumia funguo hizo, hii inaweza kuwa na manufaa ili kupita vizuizi fulani:
Kumbuka jinsi katika kesi hizi upande wa mbele unaweza kufikiria kwamba test == 1
na upande wa nyuma utafikiri kwamba test == 2
.
Hii pia inaweza kutumika kupita vizuizi vya thamani kama:
Hapa tutatumia serializer kutoka kila parser ili kuona matokeo yake.
Serializer 1 (kwa mfano, maktaba ya GoJay ya GoLang) itatoa:
description = "Duplicate with comments"
test = 2
extra = ""
Serializer 2 (kwa mfano, maktaba ya JSON-iterator ya Java) itatoa:
description = "Duplicate with comments"
extra = "/*"
extra2 = "*/"
test = 1
Vinginevyo, matumizi rahisi ya maoni yanaweza pia kuwa na ufanisi:
Maktaba ya GSON ya Java:
Maktaba ya simdjson ya Ruby:
Nambari
inaweza kufasiriwa kwa uwakilishi mwingi, ikiwa ni pamoja na:
Which might create inconsistences
Jifunze & fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze & fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)