hacktricks/network-services-pentesting/pentesting-web/special-http-headers.md

177 lines
13 KiB
Markdown
Raw Normal View History

2024-02-10 22:40:18 +00:00
# Ειδικοί κεφαλίδες HTTP
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 22:40:18 +00:00
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
2024-02-03 12:22:53 +00:00
2024-02-10 22:40:18 +00:00
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 22:40:18 +00:00
## Λίστες λέξεων & Εργαλεία
2021-09-19 15:52:48 +00:00
* [https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers](https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers)
* [https://github.com/rfc-st/humble](https://github.com/rfc-st/humble)
2021-09-19 15:52:48 +00:00
2024-02-10 22:40:18 +00:00
## Κεφαλίδες για αλλαγή τοποθεσίας
2021-09-19 15:19:00 +00:00
2024-02-10 22:40:18 +00:00
Αναγραφή **πηγής IP**:
2021-09-19 15:19:00 +00:00
2022-04-05 22:24:52 +00:00
* `X-Originating-IP: 127.0.0.1`
2021-09-19 15:52:48 +00:00
* `X-Forwarded-For: 127.0.0.1`
2022-04-19 22:38:50 +00:00
* `X-Forwarded: 127.0.0.1`
2021-09-19 15:52:48 +00:00
* `Forwarded-For: 127.0.0.1`
2021-09-27 10:58:30 +00:00
* `X-Forwarded-Host: 127.0.0.1`
2022-04-05 22:24:52 +00:00
* `X-Remote-IP: 127.0.0.1`
2021-09-19 15:19:00 +00:00
* `X-Remote-Addr: 127.0.0.1`
* `X-ProxyUser-Ip: 127.0.0.1`
* `X-Original-URL: 127.0.0.1`
2021-09-19 15:52:48 +00:00
* `Client-IP: 127.0.0.1`
2021-09-27 10:58:30 +00:00
* `X-Client-IP: 127.0.0.1`
* `X-Host: 127.0.0.1`
2021-09-19 15:52:48 +00:00
* `True-Client-IP: 127.0.0.1`
* `Cluster-Client-IP: 127.0.0.1`
2021-09-20 13:06:32 +00:00
* `Via: 1.0 fred, 1.1 127.0.0.1`
2024-02-10 22:40:18 +00:00
* `Connection: close, X-Forwarded-For` (Ελέγξτε τις κεφαλίδες hop-by-hop)
2021-09-19 15:19:00 +00:00
2024-02-10 22:40:18 +00:00
Αναγραφή **τοποθεσίας**:
2021-09-19 15:19:00 +00:00
* `X-Original-URL: /admin/console`
* `X-Rewrite-URL: /admin/console`
2024-02-10 22:40:18 +00:00
## Κεφαλίδες hop-by-hop
2021-09-19 15:19:00 +00:00
2024-02-10 22:40:18 +00:00
Μια κεφαλίδα hop-by-hop είναι μια κεφαλίδα που σχεδιάστηκε να επεξεργαστείται και να καταναλώνεται από τον προξενητή που χειρίζεται αυτήν την αίτηση, αντίθετα από μια κεφαλίδα end-to-end.
2021-09-19 15:19:00 +00:00
* `Connection: close, X-Forwarded-For`
{% content-ref url="../../pentesting-web/abusing-hop-by-hop-headers.md" %}
[abusing-hop-by-hop-headers.md](../../pentesting-web/abusing-hop-by-hop-headers.md)
{% endcontent-ref %}
2021-09-19 15:19:00 +00:00
2024-02-10 22:40:18 +00:00
## Χειρισμός αιτημάτων HTTP
2021-09-19 15:19:00 +00:00
* `Content-Length: 30`
* `Transfer-Encoding: chunked`
2021-11-05 20:59:42 +00:00
{% content-ref url="../../pentesting-web/http-request-smuggling/" %}
[http-request-smuggling](../../pentesting-web/http-request-smuggling/)
{% endcontent-ref %}
2021-09-19 15:19:00 +00:00
2024-02-10 22:40:18 +00:00
## Κεφαλίδες προσωρινής αποθήκευσης
2021-09-19 15:52:48 +00:00
2024-02-10 22:40:18 +00:00
**Κεφαλίδες προσωρινής αποθήκευσης διακομιστή**:
2021-09-20 13:06:32 +00:00
2024-02-10 22:40:18 +00:00
* Το **`X-Cache`** στην απόκριση μπορεί να έχει την τιμή **`miss`** όταν η αίτηση δεν ήταν αποθηκευμένη και την τιμή **`hit`** όταν είναι αποθηκευμένη
* Το **`Cache-Control`** υποδεικνύει εάν ένας πόρος αποθηκεύεται και πότε θα γίνει ξανά η επόμενη φορά που θα αποθηκευτεί ο πόρος: `Cache-Control: public, max-age=1800`
* Το **`Vary`** χρησιμοποιείται συχνά στην απόκριση για να **υποδείξει επιπλέον κεφαλίδες** που θεωρούνται **μέρος του κλειδιού της προσωρινής αποθήκευσης** ακόμα κι αν συνήθως δεν έχουν κλειδί.
* Το **`Age`** καθορίζει τον χρόνο σε δευτερόλεπτα που ο αντικείμενο έχει παραμείνει στην προσωρινή αποθήκευση του διαμεσολαβητή.
* Το **`Server-Timing: cdn-cache; desc=HIT`** υποδεικνύει επίσης ότι ένας πόρος ήταν αποθηκευμένος
2021-09-19 15:52:48 +00:00
{% content-ref url="../../pentesting-web/cache-deception.md" %}
2024-02-10 22:40:18 +00:00
[cache
## Πληροφορίες Διακομιστή
2021-09-20 13:06:32 +00:00
* `Server: Apache/2.4.1 (Unix)`
* `X-Powered-By: PHP/5.3.3`
2024-02-10 22:40:18 +00:00
## Ελέγχοι
2021-09-20 13:06:32 +00:00
2024-02-10 22:40:18 +00:00
* **`Allow`**: Αυτή η κεφαλίδα χρησιμοποιείται για να επικοινωνήσει τις μεθόδους HTTP που μπορεί να χειριστεί ένας πόρος. Για παράδειγμα, μπορεί να καθοριστεί ως `Allow: GET, POST, HEAD`, που υποδηλώνει ότι ο πόρος υποστηρίζει αυτές τις μεθόδους.
* **`Expect`**: Χρησιμοποιείται από τον πελάτη για να μεταδώσει τις προσδοκίες που πρέπει να πληροί ο διακομιστής για να επεξεργαστεί με επιτυχία το αίτημα. Ένα συνηθέστερο παράδειγμα είναι η κεφαλίδα `Expect: 100-continue`, η οποία υποδεικνύει ότι ο πελάτης προτίθεται να στείλει ένα μεγάλο φορτίο δεδομένων. Ο πελάτης αναμένει μια απάντηση `100 (Continue)` πριν συνεχίσει με τη μετάδοση. Αυτός ο μηχανισμός βοηθά στη βελτιστοποίηση της χρήσης του δικτύου, περιμένοντας την επιβεβαίωση του διακομιστή.
2021-09-20 13:06:32 +00:00
2024-02-10 22:40:18 +00:00
## Λήψεις
2021-09-20 13:06:32 +00:00
2024-02-10 22:40:18 +00:00
* Η κεφαλίδα **`Content-Disposition`** στις απαντήσεις HTTP καθορίζει εάν ένα αρχείο πρέπει να εμφανίζεται **ενσωματωμένο** (μέσα στην ιστοσελίδα) ή να θεωρείται ως **συνημμένο** (λήψη). Για παράδειγμα:
2024-02-08 21:36:15 +00:00
```
Content-Disposition: attachment; filename="filename.jpg"
```
2024-02-10 22:40:18 +00:00
Αυτό σημαίνει ότι το αρχείο με όνομα "filename.jpg" προορίζεται να ληφθεί και να αποθηκευτεί.
2021-09-20 13:06:32 +00:00
2024-02-10 22:40:18 +00:00
## Επικεφαλίδες Ασφαλείας
2024-02-10 22:40:18 +00:00
### Πολιτική Ασφάλειας Περιεχομένου (CSP) <a href="#csp" id="csp"></a>
2022-04-19 22:38:50 +00:00
{% content-ref url="../../pentesting-web/content-security-policy-csp-bypass/" %}
[content-security-policy-csp-bypass](../../pentesting-web/content-security-policy-csp-bypass/)
{% endcontent-ref %}
2024-02-10 22:40:18 +00:00
### **Αξιόπιστοι Τύποι**
2024-02-10 22:40:18 +00:00
Με την επιβολή των Αξιόπιστων Τύπων μέσω του CSP, οι εφαρμογές μπορούν να προστατευθούν από επιθέσεις DOM XSS. Οι Αξιόπιστοι Τύποι εξασφαλίζουν ότι μόνο ειδικά δημιουργημένα αντικείμενα, συμμορφούμενα με καθιερωμένες πολιτικές ασφαλείας, μπορούν να χρησιμοποιηθούν σε επικίνδυνες κλήσεις του web API, εξασφαλίζοντας έτσι τον προεπιλεγμένο προστατευμένο κώδικα JavaScript.
```javascript
2021-10-19 22:49:43 +00:00
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
2024-02-10 22:40:18 +00:00
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => str.replace(/\</g, '&lt;').replace(/>/g, '&gt;');
});
2021-10-19 22:49:43 +00:00
}
```
```javascript
2024-02-08 21:36:15 +00:00
// Assignment of raw strings is blocked, ensuring safety.
el.innerHTML = 'some string'; // Throws an exception.
2021-10-19 22:49:43 +00:00
const escaped = policy.createHTML('<img src=x onerror=alert(1)>');
2024-02-08 21:36:15 +00:00
el.innerHTML = escaped; // Results in safe assignment.
2021-10-19 22:49:43 +00:00
```
2024-02-08 21:36:15 +00:00
### **X-Content-Type-Options**
2021-10-19 22:49:43 +00:00
2024-02-10 22:40:18 +00:00
Αυτή η κεφαλίδα αποτρέπει το MIME type sniffing, μια πρακτική που μπορεί να οδηγήσει σε ευπάθειες XSS. Βεβαιώνεται ότι οι περιηγητές σέβονται τα MIME types που καθορίζονται από τον διακομιστή.
2024-02-08 21:36:15 +00:00
```
2021-10-19 22:49:43 +00:00
X-Content-Type-Options: nosniff
```
2024-02-08 21:36:15 +00:00
### **X-Frame-Options**
2021-10-19 22:49:43 +00:00
2024-02-10 22:40:18 +00:00
Για να αντιμετωπιστεί το clickjacking, αυτή η κεφαλίδα περιορίζει τον τρόπο με τον οποίο τα έγγραφα μπορούν να ενσωματωθούν σε ετικέτες `<frame>`, `<iframe>`, `<embed>` ή `<object>`, συνιστώντας σε όλα τα έγγραφα να καθορίζουν ρητά τις άδειες ενσωμάτωσής τους.
2024-02-08 21:36:15 +00:00
```
2021-10-19 22:49:43 +00:00
X-Frame-Options: DENY
```
2024-02-10 22:40:18 +00:00
### **Πολιτική Διασυνοριακών Πόρων (CORP) και Διαμοιρασμός Διασυνοριακών Πόρων (CORS)**
2021-10-19 22:49:43 +00:00
2024-02-10 22:40:18 +00:00
Η CORP είναι κρίσιμη για τον καθορισμό των πόρων που μπορούν να φορτωθούν από ιστότοπους, μειώνοντας τις διαρροές μεταξύ ιστοτόπων. Από την άλλη πλευρά, το CORS επιτρέπει έναν ευέλικτο μηχανισμό διαμοιρασμού διασυνοριακών πόρων, χαλαρώνοντας την πολιτική ίδιας προέλευσης υπό ορισμένες συνθήκες.
2021-10-19 22:49:43 +00:00
```
Cross-Origin-Resource-Policy: same-origin
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
```
2024-02-10 22:40:18 +00:00
### **Cross-Origin Embedder Policy (COEP) και Cross-Origin Opener Policy (COOP)**
2024-02-10 22:40:18 +00:00
Το COEP και το COOP είναι απαραίτητα για την ενεργοποίηση της απομόνωσης των προέλευσης-διασταυρούμενων πόρων, μειώνοντας σημαντικά τον κίνδυνο επιθέσεων παρόμοιων με το Spectre. Ελέγχουν τη φόρτωση πόρων από διαφορετική προέλευση και την αλληλεπίδραση με παράθυρα από διαφορετική προέλευση, αντίστοιχα.
2024-02-08 21:36:15 +00:00
```
2021-10-19 22:49:43 +00:00
Cross-Origin-Embedder-Policy: require-corp
2024-02-08 21:36:15 +00:00
Cross-Origin-Opener-Policy: same-origin-allow-popups
2021-10-19 22:49:43 +00:00
```
2024-02-08 21:36:15 +00:00
### **HTTP Strict Transport Security (HSTS)**
2021-10-19 22:49:43 +00:00
2024-02-10 22:40:18 +00:00
Τέλος, το HSTS είναι μια λειτουργία ασφαλείας που αναγκάζει τους περιηγητές να επικοινωνούν με τους διακομιστές μόνο μέσω ασφαλών συνδέσεων HTTPS, βελτιώνοντας έτσι την απορρήτου και την ασφάλεια.
2024-02-08 21:36:15 +00:00
```
2021-10-19 22:49:43 +00:00
Strict-Transport-Security: max-age=3153600
```
2024-02-10 22:40:18 +00:00
## Αναφορές
2021-09-19 19:55:40 +00:00
2024-02-08 21:36:15 +00:00
* [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition)
2021-09-19 19:55:40 +00:00
* [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers)
2021-10-19 22:49:43 +00:00
* [https://web.dev/security-headers/](https://web.dev/security-headers/)
2024-02-08 21:36:15 +00:00
* [https://web.dev/articles/security-headers](https://web.dev/articles/security-headers)
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 22:40:18 +00:00
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
2024-02-03 12:22:53 +00:00
2024-02-10 22:40:18 +00:00
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
2022-04-28 16:01:33 +00:00
</details>