Cache Poisoning via URL discrepancies
Last updated
Last updated
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Hii ni muhtasari wa mbinu zilizopendekezwa katika chapisho https://portswigger.net/research/gotta-cache-em-all ili kutekeleza mashambulizi ya cache poisoning kwa kutumia tofauti kati ya cache proxies na seva za wavuti.
Lengo la shambulizi hili ni kufanya seva ya cache ifikirie kuwa rasilimali ya statiki inachukuliwa ili iweze kuikumbuka wakati seva ya cache inahifadhi kama ufunguo wa cache sehemu ya njia lakini seva ya wavuti inajibu kwa kutatua njia nyingine. Seva ya wavuti itatatua njia halisi ambayo itakuwa ikipakia ukurasa wa dynamic (ambayo inaweza kuhifadhi taarifa nyeti kuhusu mtumiaji, mzigo mbaya kama XSS au kuhamasisha kupakia faili ya JS kutoka tovuti ya washambuliaji kwa mfano).
Wakaguzi wa URL hutofautiana kwa mfumo na seva, na kuathiri jinsi maombi yanavyopitishwa na majibu yanavyoshughulikiwa. Baadhi ya wakaguzi wa asili maarufu ni:
Semicolon: Inatumika katika Spring kwa mabadiliko ya matrix (mfano /hello;var=a/world;var1=b;var2=c
→ /hello/world
).
Dot: Inaelezea muundo wa majibu katika Ruby on Rails (mfano /MyAccount.css
→ /MyAccount
)
Null Byte: Inakata njia katika OpenLiteSpeed (mfano /MyAccount%00aaa
→ /MyAccount
).
Newline Byte: Inatenganisha vipengele vya URL katika Nginx (mfano /users/MyAccount%0aaaa
→ /account/MyAccount
).
Wakaguzi wengine maalum wanaweza kupatikana kufuatia mchakato huu:
Hatua ya 1: Tambua maombi yasiyoweza kuhifadhiwa na uyatumie kufuatilia jinsi URL zenye wakaguzi wanaoweza kutumika zinavyoshughulikiwa.
Hatua ya 2: Ongeza viambatisho vya nasibu kwenye njia na linganisha jibu la seva ili kubaini ikiwa herufi inafanya kazi kama wakaguzi.
Hatua ya 3: Ingiza wakaguzi wanaoweza kutumika kabla ya viambatisho vya nasibu kuona ikiwa jibu linabadilika, kuashiria matumizi ya wakaguzi.
Madhumuni: Wakaguzi wa URL katika seva za cache na asili huweka URL sawa ili kutoa njia za ramani za mwisho na funguo za cache.
Mchakato: Inatambua wakaguzi wa njia, inatoa na kuweka sawa njia kwa kutafsiri herufi na kuondoa sehemu za dot.
Seva tofauti za HTTP na proxies kama Nginx, Node, na CloudFront zinatafsiri wakaguzi tofauti, na kusababisha kutokuelewana kati ya CDNs na seva za asili ambazo zinaweza kutumiwa. Kwa mfano, ikiwa seva ya wavuti inafanya mabadiliko haya /myAccount%3Fparam
→ /myAccount?param
lakini seva ya cache inahifadhi kama ufunguo njia /myAccount%3Fparam
, kuna kutokuelewana.
Njia moja ya kuangalia kutokuelewana hizi ni kutuma maombi ya URL kuandika herufi tofauti baada ya kupakia njia bila kuandika chochote na kuangalia ikiwa jibu la njia iliyowekwa lilitoka kwenye jibu la cache.
Kuweka sawa kwa njia ambapo dots zinahusika pia ni ya kuvutia sana kwa mashambulizi ya cache poisoning. Kwa mfano, /static/../home/index
au /aaa..\home/index
, baadhi ya seva za cache zitakumbuka njia hizi na wenyewe kama funguo wakati wengine wanaweza kutatua njia na kutumia /home/index
kama funguo ya cache.
Kama ilivyokuwa hapo awali, kutuma maombi haya ya aina na kuangalia ikiwa jibu lilipatikana kutoka kwenye cache husaidia kubaini ikiwa jibu kwa /home/index
ni jibu lililotumwa wakati njia hizo zinapohitajika.
Seva kadhaa za cache zitakumbuka kila wakati jibu ikiwa inatambuliwa kama statiki. Hii inaweza kuwa kwa sababu ya:
Kiambatisho: Cloudflare kila wakati itakumbuka faili zenye viambatisho vifuatavyo: 7z, csv, gif, midi, png, tif, zip, avi, doc, gz, mkv, ppt, tiff, zst, avif, docx, ico, mp3, pptx, ttf, apk, dmg, iso, mp4, ps, webm, bin, ejs, jar, ogg, rar, webp, bmp, eot, jpg, otf, svg, woff, bz2, eps, jpeg, pdf, svgz, woff2, class, exe, js, pict, swf, xls, css, flac, mid, pls, tar, xlsx
Inawezekana kulazimisha cache kuhifadhi jibu la dynamic kwa kutumia wakaguzi na kiambatisho cha statiki kama ombi kwa /home$image.png
itakumbuka /home$image.png
na seva ya asili itajibu na /home
Mikoa ya statiki inayojulikana: Mikoa ifuatayo ina faili za statiki na kwa hivyo jibu lao linapaswa kuhifadhiwa: /static, /assets, /wp-content, /media, /templates, /public, /shared
Inawezekana kulazimisha cache kuhifadhi jibu la dynamic kwa kutumia wakaguzi, mkoa wa statiki na dots kama: /home/..%2fstatic/something
itakumbuka /static/something
na jibu litakuwa /home
Mikoa ya statiki + dots: Ombi kwa /static/..%2Fhome
au kwa /static/..%5Chome
linaweza kuhifadhiwa kama ilivyo lakini jibu linaweza kuwa /home
Faili za statiki: Faili maalum zingine kila wakati huhifadhiwa kama /robots.txt
, /favicon.ico
, na /index.html
. Ambazo zinaweza kutumiwa vibaya kama /home/..%2Frobots.txt
ambapo cache inaweza kuhifadhi /robots.txt
na seva ya asili inajibu kwa /home
.
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)