Cache Poisoning via URL discrepancies

Reading time: 5 minutes

tip

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)

Support HackTricks

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.

note

Lengo la shambulizi hili ni kufanya seva ya cache ifikirie kuwa rasilimali ya static 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 inachukua ukurasa wa dynamic (ambayo inaweza kuhifadhi taarifa nyeti kuhusu mtumiaji, mzigo mbaya kama XSS au kuelekeza ili kupakua faili ya JS kutoka tovuti ya washambuliaji kwa mfano).

Delimiters

URL delimiters hutofautiana kwa mfumo na seva, ikihusisha jinsi maombi yanavyopangwa na majibu yanavyoshughulikiwa. Baadhi ya delimiters za asili za kawaida 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).

Delimiters maalum zinaweza kupatikana kufuatia mchakato huu:

  • Hatua ya 1: Tambua maombi yasiyoweza kuhifadhiwa na uyatumie kufuatilia jinsi URLs zenye delimiters zinazowezekana zinavyoshughulikiwa.
  • Hatua ya 2: Ongeza viambatisho vya nasibu kwenye njia na linganisha majibu ya seva ili kubaini kama herufi inafanya kazi kama delimiter.
  • Hatua ya 3: Ingiza delimiters zinazowezekana kabla ya viambatisho vya nasibu ili kuona kama majibu yanabadilika, ikionyesha matumizi ya delimiter.

Normalization & Encodings

  • Madhumuni: Wapangaji wa URL katika seva za cache na asili huweka URLs sawa ili kutoa njia za ramani za mwisho na funguo za cache.
  • Mchakato: Inatambua delimiters za njia, inatoa na kuweka sawa njia kwa kutafsiri herufi na kuondoa sehemu za dot.

Encodings

Seva tofauti za HTTP na proxies kama Nginx, Node, na CloudFront zinatafsiri delimiters kwa njia tofauti, zikileta 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 ikitafsiri herufi tofauti baada ya kupakua njia bila tafsiri yoyote na kuangalia kama majibu ya njia iliyotafsiriwa yalitoka kwenye majibu ya cache.

Dot segment

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 hizi njia kama funguo wakati nyingine zinaweza kutatua njia na kutumia /home/index kama ufunguo wa cache.
Kama ilivyokuwa hapo awali, kutuma maombi haya ya aina na kuangalia kama majibu yalikusanywa kutoka kwenye cache husaidia kubaini kama majibu kwa /home/index ni majibu yaliyotumwa wakati hizo njia zinapohitajika.

Static Resources

Seva kadhaa za cache zitakumbuka kila wakati jibu ikiwa inatambuliwa kama static. Hii inaweza kuwa kwa sababu:

  • 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 delimiter na kiambatisho static kama ombi kwa /home$image.png litakumbuka /home$image.png na seva ya asili itajibu na /home
  • Mikoa ya static inayojulikana: Mikoa ifuatayo ina faili za static na kwa hivyo majibu yao yanapaswa kuhifadhiwa: /static, /assets, /wp-content, /media, /templates, /public, /shared
  • Inawezekana kulazimisha cache kuhifadhi jibu la dynamic kwa kutumia delimiter, mkoa wa static na dots kama: /home/..%2fstatic/something itakumbuka /static/something na jibu litakuwa /home
  • Mikoa ya static + dots: Ombi kwa /static/..%2Fhome au kwa /static/..%5Chome linaweza kuhifadhiwa kama lilivyo lakini jibu linaweza kuwa /home
  • Faili za static: Faili maalum zingine kila wakati zinakumbukwa 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.

tip

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)

Support HackTricks