<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen** oder **HackTricks im PDF-Format herunterladen** möchten, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
Ein hop-by-hop-Header ist ein Header, der dazu bestimmt ist, vom Proxy verarbeitet und konsumiert zu werden, der aktuell die Anfrage bearbeitet, im Gegensatz zu einem end-to-end-Header.
* **`X-Cache`** in der Antwort kann den Wert **`miss`** haben, wenn die Anfrage nicht zwischengespeichert wurde, und den Wert **`hit`**, wenn sie zwischengespeichert ist
* Ähnliches Verhalten im Header **`Cf-Cache-Status`**
* **`Cache-Control`** gibt an, ob eine Ressource zwischengespeichert wird und wann die Ressource wieder zwischengespeichert wird: `Cache-Control: public, max-age=1800`
* **`Vary`** wird oft in der Antwort verwendet, um **zusätzliche Header** anzugeben, die als **Teil des Cache-Schlüssels** behandelt werden, auch wenn sie normalerweise nicht als Schlüssel verwendet werden.
*`Warning`: Der allgemeine HTTP-Header **`Warning`** enthält Informationen über mögliche Probleme mit dem Status der Nachricht. Mehr als ein `Warning`-Header kann in einer Antwort erscheinen. `Warning: 110 anderson/1.3.37 "Response is stale"`
* Anfragen mit diesen Headern: **`If-Modified-Since`** und **`If-Unmodified-Since`** werden nur mit Daten beantwortet, wenn der Antwort-Header **`Last-Modified`** eine andere Zeit enthält.
* Bedingte Anfragen mit **`If-Match`** und **`If-None-Match`** verwenden einen Etag-Wert, sodass der Webserver den Inhalt der Antwort sendet, wenn die Daten (Etag) geändert wurden. Der `Etag` wird aus der HTTP-Antwort entnommen.
* Der **Etag**-Wert wird normalerweise **basierend** auf dem **Inhalt** der Antwort berechnet. Zum Beispiel zeigt `ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"` an, dass der `Etag` das **Sha1** von **37 Bytes** ist.
* **`Accept-Ranges`**: Gibt an, ob der Server Bereichsanfragen unterstützt und in welcher Einheit der Bereich ausgedrückt werden kann. `Accept-Ranges: <range-unit>`
* **`If-Range`**: Erstellt eine bedingte Bereichsanfrage, die nur erfüllt wird, wenn der angegebene Etag oder das Datum mit der entfernten Ressource übereinstimmt. Wird verwendet, um das Herunterladen von zwei Bereichen aus inkompatiblen Versionen der Ressource zu verhindern.
* **`Content-Range`**: Gibt an, wo in einer vollständigen Nachricht ein Teil der Nachricht gehört.
* **`Content-Language`**: Beschreibt die menschliche Sprache(n), die für das Publikum vorgesehen sind, sodass ein Benutzer gemäß seiner eigenen bevorzugten Sprache unterscheiden kann.
Von einem Pentest-Gesichtspunkt aus sind diese Informationen normalerweise "nutzlos", aber wenn die Ressource durch ein 401 oder 403 geschützt ist und Sie einen Weg finden, um diese Informationen zu erhalten, könnte dies **interessant** sein.\
Zum Beispiel kann eine Kombination von **`Range`** und **`Etag`** in einer HEAD-Anfrage den Inhalt der Seite über HEAD-Anfragen preisgeben:
* Eine Anfrage mit dem Header `Range: bytes=20-20` und mit einer Antwort, die `ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"` enthält, gibt preis, dass das SHA1 des Bytes 20 `ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y` ist
* **`Erlauben`**: Dieser Header wird verwendet, um die HTTP-Methoden zu kommunizieren, die eine Ressource verarbeiten kann. Zum Beispiel könnte angegeben werden `Allow: GET, POST, HEAD`, was darauf hinweist, dass die Ressource diese Methoden unterstützt.
* **`Erwarten`**: Wird vom Client genutzt, um Erwartungen zu übermitteln, die der Server erfüllen muss, damit die Anfrage erfolgreich verarbeitet wird. Ein häufiger Anwendungsfall beinhaltet den `Expect: 100-continue` Header, der signalisiert, dass der Client beabsichtigt, eine große Datenlast zu senden. Der Client wartet auf eine `100 (Continue)` Antwort, bevor er mit der Übertragung fortfährt. Dieser Mechanismus hilft dabei, die Netzwerkauslastung zu optimieren, indem auf die Bestätigung des Servers gewartet wird.
* Der **`Content-Disposition`**-Header in HTTP-Antworten gibt an, ob eine Datei **inline** (innerhalb der Webseite) angezeigt oder als **Anhang** (heruntergeladen) behandelt werden soll. Zum Beispiel:
Durch die Durchsetzung von Trusted Types über CSP können Anwendungen vor DOM XSS-Angriffen geschützt werden. Trusted Types stellen sicher, dass nur speziell erstellte Objekte, die den etablierten Sicherheitsrichtlinien entsprechen, in gefährlichen Web-API-Aufrufen verwendet werden können, wodurch der JavaScript-Code standardmäßig abgesichert wird.
Dieser Header verhindert das MIME-Typ-Sniffing, eine Praxis, die zu XSS-Sicherheitslücken führen könnte. Er stellt sicher, dass Browser die vom Server angegebenen MIME-Typen respektieren.
Um Clickjacking entgegenzuwirken, beschränkt dieser Header, wie Dokumente in `<frame>`, `<iframe>`, `<embed>` oder `<object>` Tags eingebettet werden können, und empfiehlt, dass alle Dokumente ihre Einbettungsberechtigungen explizit angeben.
CORP ist entscheidend, um festzulegen, welche Ressourcen von Websites geladen werden können, um Cross-Site-Leaks zu verhindern. CORS hingegen ermöglicht einen flexibleren Mechanismus für den Austausch von Ressourcen zwischen verschiedenen Ursprüngen und lockert die Same-Origin-Richtlinie unter bestimmten Bedingungen.
COEP und COOP sind entscheidend für die Aktivierung der Cross-Origin-Isolierung, was das Risiko von Spectre-ähnlichen Angriffen erheblich reduziert. Sie kontrollieren das Laden von Ressourcen aus anderen Ursprüngen und die Interaktion mit Fenstern aus anderen Ursprüngen.
Zuletzt ist HSTS eine Sicherheitsfunktion, die Browser dazu zwingt, nur über sichere HTTPS-Verbindungen mit Servern zu kommunizieren, wodurch die Privatsphäre und Sicherheit verbessert werden.
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.