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

189 lines
10 KiB
Markdown

# Spesiale HTTP-koppe
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
## Woordlyste & Gereedskap
* [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)
## Koppe om Ligging te Verander
Herskryf **IP-bron**:
* `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` (Kyk na hop-by-hop koppe)
Herskryf **ligging**:
* `X-Original-URL: /admin/console`
* `X-Rewrite-URL: /admin/console`
## Hop-by-Hop koppe
'n Hop-by-hop kop is 'n kop wat ontwerp is om verwerk en verbruik te word deur die tans hanteerende proksi, in teenstelling met 'n end-to-end kop.
* `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 %}
## HTTP Aanvraag Smuggling
* `Content-Length: 30`
* `Transfer-Encoding: chunked`
{% content-ref url="../../pentesting-web/http-request-smuggling/" %}
[http-request-smuggling](../../pentesting-web/http-request-smuggling/)
{% endcontent-ref %}
## Kegelkoppe
* Aanvrae wat hierdie koppe gebruik: **`If-Modified-Since`** en **`If-Unmodified-Since`** sal reageer met data slegs as die responskop\*\*`Last-Modified`\*\* 'n ander tyd bevat.
* Kondisionele aanvrae met behulp van **`If-Match`** en **`If-None-Match`** gebruik 'n Etag-waarde sodat die webbediener die inhoud van die respons sal stuur as die data (Etag) verander het. Die `Etag` word geneem uit die HTTP-respons.
* Die **Etag**-waarde word gewoonlik **berekend op grond** van die **inhoud** van die respons. Byvoorbeeld, `ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"` dui aan dat die `Etag` die **Sha1** van **37 byte** is.
## Reeks aanvrae
* **`Accept-Ranges`**: Dui aan of die bediener reeks aanvrae ondersteun, en indien wel, in watter eenheid die reeks uitgedruk kan word. `Accept-Ranges: <range-unit>`
* **`Range`**: Dui die deel van 'n dokument aan wat die bediener moet terugstuur.
* **`If-Range`**: Skep 'n kondisionele reeks aanvraag wat slegs vervul word as die gegewe etiket of datum ooreenstem met die afgeleë hulpbron. Gebruik om te voorkom dat twee reekse vanaf 'n onversoenbare weergawe van die hulpbron afgelaai word.
* **`Content-Range`**: Dui aan waar in 'n volledige liggaamboodskap 'n gedeeltelike boodskap behoort.
## Inligting oor boodskaplighaam
* **`Content-Length`:** Die grootte van die hulpbron, in desimale getal van bytes.
* **`Content-Type`**: Dui die mediatipe van die hulpbron aan
* **`Content-Encoding`**: Gebruik om die kompressie-algoritme te spesifiseer.
* **`Content-Language`**: Beskryf die menslike ta(a)l(e) bedoel vir die gehoor, sodat dit 'n gebruiker in staat stel om te differensieer volgens die gebruikers se eie voorkeurstaal.
* **`Content-Location`**: Dui 'n alternatiewe ligging vir die teruggekeerde data aan.
Vanuit 'n pentest-oogpunt is hierdie inligting gewoonlik "nutteloos", maar as die hulpbron beskerm word deur 'n 401 of 403 en jy kan 'n manier vind om hierdie inligting te kry, kan dit interessant wees.\
Byvoorbeeld 'n kombinasie van **`Range`** en **`Etag`** in 'n HEAD-aanvraag kan die inhoud van die bladsy lek via HEAD-aanvrae:
* 'n Aanvraag met die kop `Range: bytes=20-20` en met 'n respons wat `ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"` bevat, lek dat die SHA1 van die byte 20 is `ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y`
## Bedienerinligting
* `Bediener: Apache/2.4.1 (Unix)`
* `X-Aangedryf deur: PHP/5.3.3`
## Beheer
* **`Toelaat`**: Hierdie kop is gebruik om die HTTP-metodes te kommunikeer wat 'n hulpbron kan hanteer. Byvoorbeeld, dit kan gespesifiseer word as `Toelaat: KRY, POS, KOP`, wat aandui dat die hulpbron hierdie metodes ondersteun.
* **`Verwag`**: Deur die kliënt gebruik om verwagtinge oor te dra wat die bediener moet nakom vir die versoek om suksesvol verwerk te word. 'n Algemene geval behels die `Verwag: 100-aanhou`-kop, wat aandui dat die kliënt van voorneme is om 'n groot data-lading te stuur. Die kliënt soek na 'n `100 (Aanhou)`-reaksie voordat voortgegaan word met die oordrag. Hierdie meganisme help om netwerkgebruik te optimaliseer deur op bevestiging van die bediener te wag.
## Aflaaibare lêers
* Die **`Inhoud-Disposisie`**-kop in HTTP-antwoorde dui aan of 'n lêer **lynsgewys** (binne die webbladsy) vertoon moet word of as 'n **bylae** (afgelaai) hanteer moet word. Byvoorbeeld:
```
Content-Disposition: attachment; filename="filename.jpg"
```
Dit beteken die lêernaam "filename.jpg" is bedoel om afgelaai en gestoor te word.
## Sekuriteitskoppe
### Inhoud Sekuriteitsbeleid (CSP) <a href="#csp" id="csp"></a>
{% content-ref url="../../pentesting-web/content-security-policy-csp-bypass/" %}
[inhoud-sekuriteitsbeleid-csp-omseil](../../pentesting-web/content-security-policy-csp-bypass/)
{% endcontent-ref %}
### **Vertroue Tipes**
Deur Vertroue Tipes af te dwing deur CSP, kan programme beskerm word teen DOM XSS aanvalle. Vertroue Tipes verseker dat slegs spesifiek ontwerpte voorwerpe, in ooreenstemming met vasgestelde sekuriteitsbeleide, gebruik kan word in gevaarlike web API-oproepe, en sodoende JavaScript-kode outomaties beveilig.
```javascript
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => str.replace(/\</g, '&lt;').replace(/>/g, '&gt;');
});
}
```
```javascript
// 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-Inhouds-Tipe-Keuses**
Hierdie kop belet MIME-tipe-sniffing, 'n praktyk wat kan lei tot XSS-kwesbaarhede. Dit verseker dat webblaaier die MIME-tipes respekteer wat deur die bediener gespesifiseer is.
```
X-Content-Type-Options: nosniff
```
### **X-Frame-Options**
Om clickjacking te beveg, beperk hierdie kop die inbedding van dokumente in `<frame>`, `<iframe>`, `<embed>`, of `<object>` etikette, en beveel aan dat alle dokumente hul inbeddingsregte uitdruklik moet spesifiseer.
```
X-Frame-Options: DENY
```
### **Cross-Origin Resource Policy (CORP) en Cross-Origin Resource Sharing (CORS)**
CORP is noodsaaklik vir die spesifisering van watter bronne deur webwerwe gelaai kan word, om kruiswebwerf-lekke te verminder. CORS, aan die ander kant, maak 'n meer buigsame kruis-oorsprong brondeling meganisme moontlik, deur die selfde-oorsprong beleid onder sekere omstandighede te verslap.
```
Cross-Origin-Resource-Policy: same-origin
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
```
### **Cross-Origin Embedder Policy (COEP) en Cross-Origin Opener Policy (COOP)**
COEP en COOP is noodsaaklik vir die aktivering van kruis-oorsprong isolasie, wat die risiko van Spectre-soort aanvalle aansienlik verminder. Hulle beheer die laai van kruis-oorsprong bronne en die interaksie met kruis-oorsprong vensters, onderskeidelik.
```
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin-allow-popups
```
### **HTTP Strikte Vervoer Sekuriteit (HSTS)**
Laastens is HSTS 'n sekuriteitskenmerk wat dwing dat webblaaie slegs oor veilige HTTPS-verbindinge met bedieners kommunikeer, wat sodoende privaatheid en sekuriteit verbeter.
```
Strict-Transport-Security: max-age=3153600
```
## Verwysings
* [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition)
* [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers)
* [https://web.dev/security-headers/](https://web.dev/security-headers/)
* [https://web.dev/articles/security-headers](https://web.dev/articles/security-headers)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>