18 KiB
Ειδικοί κεφαλίδες HTTP
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Ερευνητής Ερυθράς Ομάδας AWS του HackTricks)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα τηλεγραφήματος ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Λίστες Λέξεων & Εργαλεία
- https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers
- https://github.com/rfc-st/humble
Κεφαλίδες για Αλλαγή Τοποθεσίας
Αναδιατύπωση πηγής IP:
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
(Ελέγξτε τις κεφαλίδες hop-by-hop)
Αναδιατύπωση τοποθεσίας:
X-Original-URL: /admin/console
X-Rewrite-URL: /admin/console
Κεφαλίδες Hop-by-Hop
Μια κεφαλίδα hop-by-hop είναι μια κεφαλίδα που σχεδιάστηκε να επεξεργαστεί και να καταναλωθεί από τον διακομιστή μεσολάβησης που χειρίζεται αυτήν την αίτηση, αντί για μια κεφαλίδα end-to-end.
Connection: close, X-Forwarded-For
{% content-ref url="../../pentesting-web/abusing-hop-by-hop-headers.md" %} abusing-hop-by-hop-headers.md {% endcontent-ref %}
Χρήση Αιτήσεων HTTP Smuggling
Content-Length: 30
Transfer-Encoding: chunked
{% content-ref url="../../pentesting-web/http-request-smuggling/" %} http-request-smuggling {% endcontent-ref %}
Κεφαλίδες Προσωρινής Αποθήκευσης
Κεφαλίδες Αποθήκευσης Διακομιστή:
- Το
X-Cache
στην απόκριση μπορεί να έχει την τιμήmiss
όταν η αίτηση δεν ήταν κρυφή και την τιμήhit
όταν είναι κρυφή - Παρόμοια συμπεριφορά στην κεφαλίδα
Cf-Cache-Status
- Το
Cache-Control
υποδεικνύει αν ένας πόρος αποθηκεύεται και πότε θα αποθηκευτεί ξανά ο πόρος:Cache-Control: public, max-age=1800
- Το
Vary
χρησιμοποιείται συχνά στην απόκριση για να υποδείξει επιπλέον κεφαλίδες που θεωρούνται μέρος του κλειδιού της μνήμης cache ακόμη κι αν συνήθως δεν είναι κλειδωμένες. - Το
Age
ορίζει τα δευτερόλεπτα που το αντικείμενο έχει παραμείνει στην μνήμη cache του διακομιστή. - Το
Server-Timing: cdn-cache; desc=HIT
υποδεικνύει επίσης ότι ένας πόρος ήταν κρυφός
{% content-ref url="../../pentesting-web/cache-deception/" %} cache-deception {% endcontent-ref %}
Τοπικές Κεφαλίδες Αποθήκευσης:
Clear-Site-Data
: Κεφαλίδα για να υποδείξει την μνήμη cache που πρέπει να αφαιρεθεί:Clear-Site-Data: "cache", "cookies"
Expires
: Περιέχει ημερομηνία/ώρα πότε θα πρέπει να λήξει η απόκριση:Expires: Wed, 21 Oct 2015 07:28:00 GMT
Pragma: no-cache
ίδιο με τοCache-Control: no-cache
Warning
: Η γενική κεφαλίδα HTTPWarning
περιέχει πληροφορίες για πιθανά προβλήματα με την κατάσταση του μηνύματος. Περισσότερες από μία κεφαλίδεςWarning
μπορεί να εμφανιστούν σε μια απόκριση.Warning: 110 anderson/1.3.37 "Response is stale"
Συνθήκες
- Οι αιτήσεις που χρησιμοποιούν αυτές τις κεφαλίδες:
If-Modified-Since
καιIf-Unmodified-Since
θα απαντηθούν με δεδομένα μόνο εάν η κεφαλίδα απάντησηςLast-Modified
περιέχει διαφορετική ώρα. - Συνθήκες αιτήσεων χρησιμοποιώντας τις
If-Match
καιIf-None-Match
χρησιμοποιούν μια τιμή Etag έτσι ώστε ο web διακομιστής να στείλει το περιεχόμενο της απόκρισης εάν τα δεδομένα (Etag) έχουν αλλάξει. ΤοEtag
προέρχεται από την απόκριση HTTP. - Η τιμή Etag υπολογίζεται συνήθως με βάση το περιεχόμενο της απόκρισης. Για παράδειγμα, το
ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"
υποδηλώνει ότι τοEtag
είναι το Sha1 των 37 bytes.
Αιτήσεις Εύρους
Accept-Ranges
: Υποδεικνύει εάν ο διακομιστής υποστηρίζει αιτήσεις εύρους και, αν ναι, με ποιά μονάδα μπορεί να εκφραστεί το εύρος.Accept-Ranges: <range-unit>
Range
: Υποδεικνύει το τμήμα ενός εγγράφου που ο διακομιστής πρέπει να επιστρέψει.If-Range
: Δημιουργεί μια συνθήκη αιτήσεων εύρους που εκπληρώνεται μόνο εάν το δοθέν etag ή η ημερομηνία ταιριάζει με το απομακρυσμένο πόρο. Χρησιμοποιείται για να αποτρέψει τη λήψη δύο εύρων από ασύμβατες εκδόσεις του πόρου.Content-Range
: Υποδεικνύει πού σε ένα πλήρες μήνυμα σώματος ανήκει ένα μερικό μήνυμα.
Πληροφορίες Σώματος Μηνύματος
Content-Length
: Το μέγεθος του πόρου, σε δεκαδικό αριθμό bytes.Content-Type
: Υποδεικνύει τον τύπο μέσου του πόρουContent-Encoding
: Χρησιμοποιείται για να καθορίσει τον αλγόριθμο συμπίεσης.Content-Language
: Περιγράφει την ανθρώπινη γλώσσα(ες) που προορίζονται για το κοινό, έτσι ώστε να επιτρέπει στον χρήστη να διαφοροποιηθεί ανάλογα με την προτιμώμενη γλώσσα των χρηστών.Content-Location
: Υποδεικνύει μια εναλλακτική τοποθεσία για τα επιστρεφόμενα δεδομένα.
Από την άποψη της δοκιμής διείσδυσης αυτές οι πληροφορίες είναι συνήθως "άχρηστες", αλλά αν ο πόρος είναι προστατευμένος από ένα 401 ή 403 και μπορείτε να βρείτε κάποιον τρόπο για να αποκτήσετε αυτήν τη πληροφορία, αυ
Πληροφορίες Εξυπηρετητή
Server: Apache/2.4.1 (Unix)
X-Powered-By: PHP/5.3.3
Ελέγχοι
Allow
: Αυτή η κεφαλίδα χρησιμοποιείται για να επικοινωνήσει τις μεθόδους HTTP που μπορεί να χειριστεί ένας πόρος. Για παράδειγμα, μπορεί να καθοριστεί ωςAllow: GET, POST, HEAD
, υποδηλώνοντας ότι ο πόρος υποστηρίζει αυτές τις μεθόδους.Expect
: Χρησιμοποιείται από τον πελάτη για να μεταφέρει τις προσδοκίες που ο εξυπηρετητής πρέπει να πληροί για το αίτημα να επεξεργαστεί με επιτυχία. Ένα συνηθισμένο παράδειγμα περιλαμβάνει την κεφαλίδαExpect: 100-continue
, η οποία υποδηλώνει ότι ο πελάτης προτίθεται να στείλει ένα μεγάλο φορτίο δεδομένων. Ο πελάτης αναμένει μια απάντηση100 (Continue)
πριν συνεχίσει με τη μετάδοση. Αυτός ο μηχανισμός βοηθά στη βελτιστοποίηση της χρήσης του δικτύου περιμένοντας την επιβεβαίωση του εξυπηρετητή.
Λήψεις
- Η κεφαλίδα
Content-Disposition
στις απαντήσεις HTTP καθορίζει εάν ένα αρχείο πρέπει να εμφανιστεί ενσωματωμένο (εντός της ιστοσελίδας) ή να θεωρηθεί ως συνημμένο (κατεβασμένο). Για παράδειγμα:
Content-Disposition: attachment; filename="filename.jpg"
Αυτό σημαίνει ότι το αρχείο με το όνομα "filename.jpg" προορίζεται να ληφθεί και να αποθηκευτεί.
Ασφαλείς Επικεφαλίδες
Πολιτική Ασφάλειας Περιεχομένου (CSP)
{% content-ref url="../../pentesting-web/content-security-policy-csp-bypass/" %} content-security-policy-csp-bypass {% endcontent-ref %}
Αξιόπιστοι Τύποι
Με την επιβολή των Αξιόπιστων Τύπων μέσω της CSP, οι εφαρμογές μπορούν να προστατευτούν από επιθέσεις DOM XSS. Οι Αξιόπιστοι Τύποι εξασφαλίζουν ότι μόνο συγκεκριμένα κατασκευασμένα αντικείμενα, συμμορφωμένα με καθιερωμένες πολιτικές ασφαλείας, μπορούν να χρησιμοποιηθούν σε επικίνδυνες κλήσεις ιστού API, εξασφαλίζοντας έτσι τον κώδικα JavaScript από προεπιλογή.
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => str.replace(/\</g, '<').replace(/>/g, '>');
});
}
// Assignment of raw strings is blocked, ensuring safety.
el.innerHTML = 'some string'; // Throws an exception.
const escaped = policy.createHTML('<img src=x onerror=alert(1)>');
el.innerHTML = escaped; // Results in safe assignment.
X-Content-Type-Options
Αυτή η κεφαλίδα εμποδίζει τον έλεγχο τύπου MIME, μια πρακτική που θα μπορούσε να οδηγήσει σε ευπάθειες XSS. Βεβαιώνει ότι οι περηφάνιες σέβονται τους τύπους MIME που καθορίζονται από τον διακομιστή.
X-Content-Type-Options: nosniff
X-Frame-Options
Για να αντιμετωπίσει το clickjacking, αυτή η κεφαλίδα περιορίζει τον τρόπο με τον οποίο τα έγγραφα μπορούν να ενσωματωθούν σε ετικέτες <frame>
, <iframe>
, <embed>
ή <object>
, συστήνοντας σε όλα τα έγγραφα να καθορίζουν ρητά τις άδειες ενσωμάτωσής τους.
X-Frame-Options: DENY
Πολιτική Διασποράς Πόρων Από Διαφορετική Προέλευση (CORP) και Κοινή Χρήση Πόρων Από Διαφορετική Προέλευση (CORS)
Η CORP είναι κρίσιμη για τον καθορισμό των πόρων που μπορούν να φορτωθούν από ιστότοπους, μειώνοντας τις διαρροές μεταξύ ιστοσελίδων. Από την άλλη, το CORS επιτρέπει έναν πιο ευέλικτο μηχανισμό κοινής χρήσης πόρων από διαφορετική προέλευση, χαλαρώνοντας την πολιτική της ίδιας προέλευσης υπό συγκεκριμένες συνθήκες.
Cross-Origin-Resource-Policy: same-origin
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
Πολιτική Ενσωμάτωσης Διακορυφής Προέλευσης (COEP) και Πολιτική Άνοιγμας Διακορυφής Προέλευσης (COOP)
Το COEP και το COOP είναι ουσιώδη για την ενεργοποίηση της απομόνωσης διακορυφής προέλευσης, μειώνοντας σημαντικά τον κίνδυνο επιθέσεων παρόμοιων με το Spectre. Ελέγχουν τη φόρτωση πόρων διακορυφής προέλευσης και την αλληλεπίδραση με παράθυρα διακορυφής προέλευσης, αντίστοιχα.
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin-allow-popups
HTTP Strict Transport Security (HSTS)
Τέλος, το HSTS είναι μια λειτουργία ασφαλείας που επιβάλλει στους browsers να επικοινωνούν με τους servers μόνο μέσω ασφαλών συνδέσεων HTTPS, βελτιώνοντας έτσι την απορρήτου και την ασφάλεια.
Strict-Transport-Security: max-age=3153600
Αναφορές
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
- https://web.dev/security-headers/
- https://web.dev/articles/security-headers
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στη 💬 ομάδα Discord ή στη ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του GitHub.