Special HTTP headers
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Rewrite IP source:
X-Originating-IP: 127.0.0.1
X-Forwarded-For: 127.0.0.1
X-Forwarded: 127.0.0.1
Forwarded-For: 127.0.0.1
X-Forwarded-Host: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-ProxyUser-Ip: 127.0.0.1
X-Original-URL: 127.0.0.1
Client-IP: 127.0.0.1
X-Client-IP: 127.0.0.1
X-Host: 127.0.0.1
True-Client-IP: 127.0.0.1
Cluster-Client-IP: 127.0.0.1
Via: 1.0 fred, 1.1 127.0.0.1
Connection: close, X-Forwarded-For
(Check hop-by-hop headers)
Rewrite location:
X-Original-URL: /admin/console
X-Rewrite-URL: /admin/console
A hop-by-hop header is a header which is designed to be processed and consumed by the proxy currently handling the request, as opposed to an end-to-end header.
Connection: close, X-Forwarded-For
Content-Length: 30
Transfer-Encoding: chunked
Server Cache Headers:
X-Cache
in the response may have the value miss
when the request wasn't cached and the value hit
when it is cached
Similar behaviour in the header Cf-Cache-Status
Cache-Control
indicates if a resource is being cached and when will be the next time the resource will be cached again: Cache-Control: public, max-age=1800
Vary
is often used in the response to indicate additional headers that are treated as part of the cache key even if they are normally unkeyed.
Age
defines the times in seconds the object has been in the proxy cache.
Server-Timing: cdn-cache; desc=HIT
also indicates that a resource was cached
Local Cache headers:
Clear-Site-Data
: Header to indicate the cache that should be removed: Clear-Site-Data: "cache", "cookies"
Expires
: Contains date/time when the response should expire: Expires: Wed, 21 Oct 2015 07:28:00 GMT
Pragma: no-cache
same as Cache-Control: no-cache
Warning
: The Warning
general HTTP header contains information about possible problems with the status of the message. More than one Warning
header may appear in a response. Warning: 110 anderson/1.3.37 "Response is stale"
Requests using these headers: If-Modified-Since
and If-Unmodified-Since
will be responded with data only if the response header**Last-Modified
** contains a different time.
Conditional requests using If-Match
and If-None-Match
use an Etag value so the web server will send the content of the response if the data (Etag) has changed. The Etag
is taken from the HTTP response.
The Etag value is usually calculated based on the content of the response. For example, ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"
indicates that the Etag
is the Sha1 of 37 bytes.
Accept-Ranges
: Indicates if the server supports range requests, and if so in which unit the range can be expressed. Accept-Ranges: <range-unit>
Range
: Indicates the part of a document that the server should return.
If-Range
: Creates a conditional range request that is only fulfilled if the given etag or date matches the remote resource. Used to prevent downloading two ranges from incompatible version of the resource.
Content-Range
: Indicates where in a full body message a partial message belongs.
Content-Length
: The size of the resource, in decimal number of bytes.
Content-Type
: Indicates the media type of the resource
Content-Encoding
: Used to specify the compression algorithm.
Content-Language
: Describes the human language(s) intended for the audience, so that it allows a user to differentiate according to the users' own preferred language.
Content-Location
: Indicates an alternate location for the returned data.
Από την άποψη ενός pentest, αυτές οι πληροφορίες είναι συνήθως "άχρηστες", αλλά αν το resource είναι protected από 401 ή 403 και μπορείτε να βρείτε κάποιο way να get αυτές τις info, αυτό θα μπορούσε να είναι interesting.
Για παράδειγμα, ένας συνδυασμός Range
και Etag
σε ένα HEAD request μπορεί να διαρρεύσει το περιεχόμενο της σελίδας μέσω HEAD requests:
Ένα αίτημα με την κεφαλίδα Range: bytes=20-20
και με μια απάντηση που περιέχει ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"
διαρρέει ότι το SHA1 του byte 20 είναι ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y
Server: Apache/2.4.1 (Unix)
X-Powered-By: PHP/5.3.3
Allow
: This header is used to communicate the HTTP methods a resource can handle. For example, it might be specified as Allow: GET, POST, HEAD
, indicating that the resource supports these methods.
Expect
: Utilized by the client to convey expectations that the server needs to meet for the request to be processed successfully. A common use case involves the Expect: 100-continue
header, which signals that the client intends to send a large data payload. The client looks for a 100 (Continue)
response before proceeding with the transmission. This mechanism helps in optimizing network usage by awaiting server confirmation.
The Content-Disposition
header in HTTP responses directs whether a file should be displayed inline (within the webpage) or treated as an attachment (downloaded). For instance:
Αυτό σημαίνει ότι το αρχείο με το όνομα "filename.jpg" προορίζεται να κατέβει και να αποθηκευτεί.
Με την επιβολή των Trusted Types μέσω CSP, οι εφαρμογές μπορούν να προστατευτούν από επιθέσεις DOM XSS. Οι Trusted Types διασφαλίζουν ότι μόνο ειδικά κατασκευασμένα αντικείμενα, που συμμορφώνονται με καθορισμένες πολιτικές ασφαλείας, μπορούν να χρησιμοποιηθούν σε επικίνδυνες κλήσεις web API, εξασφαλίζοντας έτσι τον κώδικα JavaScript από προεπιλογή.
Αυτή η κεφαλίδα αποτρέπει την ανίχνευση τύπου MIME, μια πρακτική που θα μπορούσε να οδηγήσει σε ευπάθειες XSS. Διασφαλίζει ότι οι περιηγητές σέβονται τους τύπους MIME που καθορίζονται από τον διακομιστή.
Για να καταπολεμηθεί το clickjacking, αυτή η κεφαλίδα περιορίζει το πώς μπορούν να ενσωματωθούν έγγραφα σε <frame>
, <iframe>
, <embed>
, ή <object>
ετικέτες, προτείνοντας σε όλα τα έγγραφα να καθορίζουν ρητά τις άδειες ενσωμάτωσής τους.
Η CORP είναι κρίσιμη για τον καθορισμό ποιες πόροι μπορούν να φορτωθούν από ιστοσελίδες, μετριάζοντας τις διαρροές μεταξύ ιστότοπων. Η CORS, από την άλλη πλευρά, επιτρέπει έναν πιο ευέλικτο μηχανισμό διαμοιρασμού πόρων μεταξύ διαφορετικών προελεύσεων, χαλαρώνοντας την πολιτική της ίδιας προέλευσης υπό ορισμένες συνθήκες.
COEP και COOP είναι απαραίτητα για την ενεργοποίηση της διασυνοριακής απομόνωσης, μειώνοντας σημαντικά τον κίνδυνο επιθέσεων τύπου Spectre. Ελέγχουν τη φόρτωση διασυνοριακών πόρων και την αλληλεπίδραση με διασυνοριακά παράθυρα, αντίστοιχα.
Τέλος, το HSTS είναι μια λειτουργία ασφαλείας που αναγκάζει τους περιηγητές να επικοινωνούν με τους διακομιστές μόνο μέσω ασφαλών συνδέσεων HTTPS, ενισχύοντας έτσι την ιδιωτικότητα και την ασφάλεια.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)