# Spesiale HTTP-koppe
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)! 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.
## 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`**: 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) {% 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, '>'); }); } ``` ```javascript // Assignment of raw strings is blocked, ensuring safety. el.innerHTML = 'some string'; // Throws an exception. const escaped = policy.createHTML(''); 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 ``, `