# Vichwa Maalum vya HTTP
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)! Njia nyingine za kusaidia HackTricks: * Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)! * Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com) * Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family) * **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
## Orodha za Maneno & Zana * [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) ## Vichwa vya Kubadilisha Mahali Badilisha **IP chanzo**: * `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` (Angalia vichwa vya hatua kwa hatua) Badilisha **mahali**: * `X-Original-URL: /admin/console` * `X-Rewrite-URL: /admin/console` ## Vichwa vya Hatua kwa Hatua Kichwa cha hatua kwa hatua ni kichwa ambacho kimeundwa kusindika na kutumiwa na wakala anayeshughulikia ombi wakati huo, tofauti na kichwa cha mwisho hadi mwisho. * `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 %} ## Kudukua Ombi la HTTP * `Content-Length: 30` * `Transfer-Encoding: chunked` {% content-ref url="../../pentesting-web/http-request-smuggling/" %} [http-request-smuggling](../../pentesting-web/http-request-smuggling/) {% endcontent-ref %} ## Vichwa vya Kuhifadhi **Vichwa vya Kuhifadhi kwenye Seva**: * **`X-Cache`** kwenye jibu inaweza kuwa na thamani **`miss`** wakati ombi halikuhifadhiwa na thamani **`hit`** wakati inahifadhiwa * Tabia sawa kwenye kichwa **`Cf-Cache-Status`** * **`Cache-Control`** inaonyesha ikiwa rasilimali inahifadhiwa na lini itahifadhiwa tena: `Cache-Control: public, max-age=1800` * **`Vary`** mara nyingi hutumiwa kwenye jibu kuonyesha vichwa vingine vinavyotibiwa kama **sehemu ya ufunguo wa hifadhi** hata kama kawaida hawana ufunguo. * **`Age`** inaainisha wakati katika sekunde ambazo kitu kimekuwa kwenye hifadhi ya wakala. * **`Server-Timing: cdn-cache; desc=HIT`** pia inaonyesha kwamba rasilimali ilihifadhiwa {% content-ref url="../../pentesting-web/cache-deception/" %} [cache-deception](../../pentesting-web/cache-deception/) {% endcontent-ref %} **Vichwa vya Hifadhi za Kienyeji**: * `Clear-Site-Data`: Kichwa cha kuonyesha hifadhi inayopaswa kuondolewa: `Clear-Site-Data: "cache", "cookies"` * `Expires`: Ina tarehe/saa ambayo jibu linapaswa kumalizika: `Expires: Wed, 21 Oct 2015 07:28:00 GMT` * `Pragma: no-cache` sawa na `Cache-Control: no-cache` * `Warning`: Kichwa cha **`Warning`** cha jumla cha HTTP kina habari kuhusu matatizo yanayowezekana na hali ya ujumbe. Zaidi ya kichwa kimoja cha `Warning` kinaweza kuonekana kwenye jibu. `Warning: 110 anderson/1.3.37 "Response is stale"` ## Masharti * Maombi yanayotumia vichwa hivi: **`If-Modified-Since`** na **`If-Unmodified-Since`** yatajibiwa na data tu ikiwa kichwa cha jibu\*\*`Last-Modified`\*\* kina wakati tofauti. * Maombi ya masharti kwa kutumia **`If-Match`** na **`If-None-Match`** hutumia thamani ya Etag ili seva ya wavuti itume maudhui ya jibu ikiwa data (Etag) imebadilika. `Etag` inachukuliwa kutoka kwa jibu la HTTP. * Thamani ya **Etag** kawaida **huhesabiwa kulingana** na **maudhui** ya jibu. Kwa mfano, `ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"` inaonyesha kuwa `Etag` ni **Sha1** ya **baiti 37**. ## Maombi ya Mipaka * **`Accept-Ranges`**: Inaonyesha ikiwa seva inasaidia maombi ya mipaka, na ikiwa ndivyo, kwa kipimo gani mipaka inaweza kutolewa. `Accept-Ranges: ` * **`Range`**: Inaonyesha sehemu ya hati ambayo seva inapaswa kurudisha. * **`If-Range`**: Inaunda ombi la mipaka la masharti ambalo litatimizwa tu ikiwa etag au tarehe iliyotolewa inalingana na rasilimali ya mbali. Hutumiwa kuzuia kupakua mipaka miwili kutoka kwa toleo lisilofanana la rasilimali. * **`Content-Range`**: Inaonyesha wapi katika ujumbe kamili wa mwili sehemu ndogo ya ujumbe inahusika. ## Taarifa ya Mwili wa Ujumbe * **`Content-Length`:** Ukubwa wa rasilimali, kwa idadi ya desimali ya baiti. * **`Content-Type`**: Inaonyesha aina ya media ya rasilimali * **`Content-Encoding`**: Hutumiwa kueleza algorithm ya ujazo. * **`Content-Language`**: Inaelezea lugha za binadamu zilizokusudiwa kwa hadhira, ili kuruhusu mtumiaji kutofautisha kulingana na lugha wanayopendelea. * **`Content-Location`**: Inaonyesha mahali mbadala kwa data iliyorudishwa. Kutoka mtazamo wa pentest habari hii kawaida ni "haina maana", lakini ikiwa rasilimali inalindwa na 401 au 403 na unaweza kupata njia fulani ya kupata habari hii, hii inaweza kuwa **ya kuvutia.**\ Kwa mfano, mchanganyiko wa **`Range`** na **`Etag`** katika ombi la HEAD inaweza kufichua maudhui ya ukurasa kupitia maombi ya HEAD: * Ombi lenye kichwa `Range: bytes=20-20` na jibu lenye `ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"` linafichua kuwa SHA1 ya baiti 20 ni `ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y` ## Taarifa za Seva * `Server: Apache/2.4.1 (Unix)` * `X-Powered-By: PHP/5.3.3` ## Udhibiti * **`Allow`**: Kichwa hiki hutumika kuwasiliana njia za HTTP ambazo rasilimali inaweza kushughulikia. Kwa mfano, inaweza kutajwa kama `Allow: GET, POST, HEAD`, ikionyesha kuwa rasilimali inasaidia njia hizi. * **`Expect`**: Hutumiwa na mteja kuwasilisha matarajio ambayo seva inahitaji kukidhi ili ombi litendewe kwa mafanikio. Matumizi ya kawaida ni pamoja na kichwa cha `Expect: 100-continue`, ambacho kinaashiria kuwa mteja anapanga kutuma mzigo mkubwa wa data. Mteja hutarajia jibu la `100 (Endelea)` kabla ya kuendelea na uhamishaji. Mbinu hii husaidia katika kuboresha matumizi ya mtandao kwa kusubiri uthibitisho wa seva. ## Upakuaji * Kichwa cha **`Content-Disposition`** katika majibu ya HTTP hutoa maelekezo ikiwa faili inapaswa kuonyeshwa **inline** (ndani ya ukurasa wa wavuti) au kutendewa kama **attachment** (kupakuliwa). Kwa mfano: ``` Content-Disposition: attachment; filename="filename.jpg" ``` ## Vichwa vya Usalama ### Sera ya Usalama wa Yaliyomo (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 %} ### **Aina Zilizothibitishwa** Kwa kutekeleza Aina Zilizothibitishwa kupitia CSP, programu zinaweza kulindwa dhidi ya mashambulizi ya DOM XSS. Aina Zilizothibitishwa hufanya uhakika kwamba vitu vilivyoundwa kwa makusudi maalum, vinavyofuata sera za usalama zilizowekwa, ndivyo vinavyoweza kutumika katika wito hatari wa API za wavuti, hivyo kuhakikisha msimbo wa JavaScript kwa chaguo-msingi. ```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-Content-Type-Options** Kichwa hiki kinazuia uchunguzi wa aina ya MIME, mazoezi ambayo yanaweza kusababisha udhaifu wa XSS. Inahakikisha kuwa vivinjari vinaheshimu aina za MIME zilizotajwa na seva. ``` X-Content-Type-Options: nosniff ``` ### **X-Frame-Options** Ili kupambana na clickjacking, kichwa hiki kinazuia jinsi nyaraka zinavyoweza kuingizwa katika lebo za ``, `