mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-30 08:30:57 +00:00
208 lines
12 KiB
Markdown
208 lines
12 KiB
Markdown
# Spesiale HTTP-koppe
|
|
|
|
<details>
|
|
|
|
<summary><strong>Leer AWS-hacking van 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 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
|
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
|
* Ontdek [**The PEASS Family**](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 hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
|
|
|
|
</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 hop-by-hop-koppe na)
|
|
|
|
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-versoeksmokkelary
|
|
|
|
* `Content-Length: 30`
|
|
* `Transfer-Encoding: chunked`
|
|
|
|
{% content-ref url="../../pentesting-web/http-request-smuggling/" %}
|
|
[http-request-smuggling](../../pentesting-web/http-request-smuggling/)
|
|
{% endcontent-ref %}
|
|
|
|
## Kaskoppe
|
|
|
|
**Bedienerkaskoppe**:
|
|
|
|
* **`X-Cache`** in die respons kan die waarde **`miss`** hê as die versoek nie gekasheer is nie en die waarde **`hit`** as dit gekasheer is
|
|
* **`Cache-Control`** dui aan of 'n bron gekasheer word en wanneer die bron weer gekasheer sal word: `Cache-Control: public, max-age=1800`
|
|
* **`Vary`** word dikwels in die respons gebruik om **bykomende koppe** aan te dui wat as **deel van die kassleutel** hanteer word, selfs al is hulle normaalweg nie gesleutel nie.
|
|
* **`Age`** definieer die tyd in sekondes wat die voorwerp in die proksi-kas was.
|
|
* **`Server-Timing: cdn-cache; desc=HIT`** dui ook aan dat 'n bron gekasheer is
|
|
|
|
{% content-ref url="../../pentesting-web/cache-deception.md" %}
|
|
[cache-deception.md](../../pentesting-web/cache-deception.md)
|
|
{% endcontent-ref %}
|
|
|
|
**Plaaslike kaskoppe**:
|
|
|
|
* `Clear-Site-Data`: Kop om aan te dui watter kas verwyder moet word: `Clear-Site-Data: "cache", "cookies"`
|
|
* `Expires`: Bevat die datum/tyd wanneer die respons moet verval: `Expires: Wed, 21 Oct 2015 07:28:00 GMT`
|
|
* `Pragma: no-cache` dieselfde as `Cache-Control: no-cache`
|
|
* `Warning`: Die **`Warning`** algemene HTTP-kop bevat inligting oor moontlike probleme met die status van die boodskap. Meer as een `Warning`-kop kan in 'n respons voorkom. `Warning: 110 anderson/1.3.37 "Response is stale"`
|
|
|
|
## Voorwaardelik
|
|
|
|
* Versoeke met hierdie koppe: **`If-Modified-Since`** en **`If-Unmodified-Since`** sal slegs met data reageer as die responskop\*\*`Last-Modified`\*\* 'n ander tyd bevat.
|
|
* Voorwaardelike versoeke met **`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 **bereken op grond** van die **inhoud** van die respons. Byvoorbeeld, `ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"` dui aan dat die `Etag` die **Sha1** van **37 byte** is.
|
|
|
|
## Reeksversoeke
|
|
|
|
* **`Accept-Ranges`**: Dui aan of die bediener reeksversoeke 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 voorwaardelike reeksversoek wat slegs vervul word as die gegewe etiket of datum ooreenstem met die afgelewerde bron. Word gebruik om te voorkom dat twee reekse vanaf 'n onverenigbare weergawe van die bron afgelaai word.
|
|
* **`Content-Range`**: Dui aan waar in 'n volledige boodskap 'n gedeeltelike boodskap hoort.
|
|
|
|
## Inligting oor boodskapliggaam
|
|
|
|
* **`Content-Length`:** Die grootte van die bron, in desimale getal van byte.
|
|
* **`Content-Type`**: Dui die media-tipe van die bron aan
|
|
* **`Content-Encoding`**: Word gebruik om die kompressie-algoritme aan te dui.
|
|
* **`Content-Language`**: Beskryf die menslike taal(tale) bedoel vir die gehoor, sodat dit 'n gebruiker in staat stel om te onderskei 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 bron **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
|
|
## Bedienerinligting
|
|
|
|
* `Bediener: Apache/2.4.1 (Unix)`
|
|
* `X-Powered-By: PHP/5.3.3`
|
|
|
|
## Beheer
|
|
|
|
* **`Allow`**: Hierdie kop is gebruik om die HTTP-metodes te kommunikeer wat 'n hulpbron kan hanteer. Byvoorbeeld, dit kan gespesifiseer word as `Allow: GET, POST, HEAD`, wat aandui dat die hulpbron hierdie metodes ondersteun.
|
|
* **`Expect`**: Dit word 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 gebruikssituasie behels die `Expect: 100-continue` kop, wat aandui dat die kliënt van plan is om 'n groot data-pakket te stuur. Die kliënt soek na 'n `100 (Continue)`-reaksie voordat hy met die oordrag voortgaan. Hierdie meganisme help om netwerkgebruik te optimaliseer deur op bevestiging van die bediener te wag.
|
|
|
|
## Aflaai
|
|
|
|
* Die **`Content-Disposition`**-kop in HTTP-reaksies bepaal of 'n lêer **inline** (binne die webblad) vertoon moet word of as 'n **bylaag** (afgelaai) behandel 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/" %}
|
|
[content-security-policy-csp-bypass](../../pentesting-web/content-security-policy-csp-bypass/)
|
|
{% endcontent-ref %}
|
|
|
|
### **Vertroue Tipes**
|
|
|
|
Deur Vertroue Tipes af te dwing deur middel van CSP, kan programme beskerm word teen DOM XSS-aanvalle. Vertroue Tipes verseker dat slegs spesifiek ontwerpte voorwerpe, wat voldoen aan vasgestelde sekuriteitsbeleide, gebruik kan word in gevaarlike web API-oproepe, en sodoende JavaScript-kode standaard beveilig.
|
|
```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, '>');
|
|
});
|
|
}
|
|
```
|
|
|
|
```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 voorkom MIME-tipe sniffing, 'n praktyk wat kan lei tot XSS kwesbaarhede. Dit verseker dat webblaaier die MIME-tipes wat deur die bediener gespesifiseer is, respekteer.
|
|
```
|
|
X-Content-Type-Options: nosniff
|
|
```
|
|
### **X-Frame-Options**
|
|
|
|
Om clickjacking te beveg, beperk hierdie kop die manier waarop dokumente ingebed kan word in `<frame>`, `<iframe>`, `<embed>`, of `<object>` etikette, en beveel aan dat alle dokumente hul ingebedde toestemmings eksplisiet spesifiseer.
|
|
```
|
|
X-Frame-Options: DENY
|
|
```
|
|
### **Cross-Origin Resource Policy (CORP) en Cross-Origin Resource Sharing (CORS)**
|
|
|
|
CORP is krities vir die spesifisering van watter hulpbronne deur webwerwe gelaai kan word, om kruisweb-lekke te verminder. CORS, aan die ander kant, maak voorsiening vir 'n meer buigsame meganisme vir die deel van hulpbronne oor oorsprongsgrense heen, deur die selfde-oorsprong-beleid onder sekere voorwaardes 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 hulpbronne en die interaksie met kruis-oorsprong vensters, onderskeidelik.
|
|
```
|
|
Cross-Origin-Embedder-Policy: require-corp
|
|
Cross-Origin-Opener-Policy: same-origin-allow-popups
|
|
```
|
|
### **HTTP Streng Transport Sekuriteit (HSTS)**
|
|
|
|
Laastens, HSTS is 'n sekuriteitskenmerk wat dwing dat webblaaier slegs met bedieners kommunikeer oor veilige HTTPS-verbindinge, wat 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 van 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 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
|
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
|
* Ontdek [**The PEASS Family**](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 hacking-truuks 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>
|