Special HTTP headers

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Liste reči i alati

Zaglavlja za promenu lokacije

Preusmeravanje IP adrese izvora:

  • 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 (Proverite zaglavlja hop-by-hop)

Preusmeravanje lokacije:

  • X-Original-URL: /admin/console

  • X-Rewrite-URL: /admin/console

Hop-by-Hop zaglavlja

Hop-by-Hop zaglavlje je zaglavlje koje je dizajnirano da bude obrađeno i korišćeno od strane proksi servera koji trenutno obrađuje zahtev, za razliku od end-to-end zaglavlja.

  • Connection: close, X-Forwarded-For

Hakersko Smućkarenje HTTP zahteva

  • Content-Length: 30

  • Transfer-Encoding: chunked

Zaglavlja Keširanja

Zaglavlja keša servera:

  • X-Cache u odgovoru može imati vrednost miss kada zahtev nije bio keširan i vrednost hit kada jeste keširan

  • Slično ponašanje u zaglavlju Cf-Cache-Status

  • Cache-Control ukazuje da li se resurs kešira i kada će sledeći put resurs ponovo biti keširan: Cache-Control: public, max-age=1800

  • Vary se često koristi u odgovoru da ukazuje na dodatna zaglavlja koja se tretiraju kao deo ključa keša čak i ako obično nisu ključna.

  • Age definiše vreme u sekundama koliko je objekat bio u kešu proksija.

  • Server-Timing: cdn-cache; desc=HIT takođe ukazuje da je resurs bio keširan

Lokalna zaglavlja keša:

  • Clear-Site-Data: Zaglavlje koje ukazuje na keš koji treba ukloniti: Clear-Site-Data: "cache", "cookies"

  • Expires: Sadrži datum/vreme kada bi odgovor trebalo da istekne: Expires: Wed, 21 Oct 2015 07:28:00 GMT

  • Pragma: no-cache isto kao Cache-Control: no-cache

  • Warning: Opšte HTTP zaglavlje Warning sadrži informacije o mogućim problemima sa statusom poruke. Više od jednog Warning zaglavlja može se pojaviti u odgovoru. Warning: 110 anderson/1.3.37 "Response is stale"

Uslovi

  • Zahtevi koji koriste ova zaglavlja: If-Modified-Since i If-Unmodified-Since će dobiti odgovor samo ako zaglavlje odgovora**Last-Modified** sadrži drugačije vreme.

  • Uslovni zahtevi koji koriste If-Match i If-None-Match koriste vrednost Etag tako da će veb server poslati sadržaj odgovora ako su podaci (Etag) promenjeni. Etag se uzima iz HTTP odgovora.

  • Vrednost Etag se obično računa na osnovu sadržaja odgovora. Na primer, ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI" ukazuje da je Etag Sha1 od 37 bajtova.

Zahtevi opsega

  • Accept-Ranges: Ukazuje da li server podržava zahteve opsega, i ako podržava, u kojoj jedinici se opseg može izraziti. Accept-Ranges: <range-unit>

  • Range: Ukazuje deo dokumenta koji server treba da vrati.

  • If-Range: Kreira uslovni zahtev opsega koji se ispunjava samo ako dati etag ili datum odgovara udaljenom resursu. Koristi se da spreči preuzimanje dva opsega sa nekompatibilne verzije resursa.

  • Content-Range: Ukazuje gde u celom telu poruke delimična poruka pripada.

Informacije o telu poruke

  • Content-Length: Veličina resursa, u decimalnom broju bajtova.

  • Content-Type: Ukazuje medijum tip resursa

  • Content-Encoding: Koristi se za specificiranje algoritma kompresije.

  • Content-Language: Opisuje ljudski jezik(e) namenjen publici, tako da korisnik može da razlikuje prema sopstvenom preferiranom jeziku.

  • Content-Location: Ukazuje alternativnu lokaciju za vraćene podatke.

Sa tačke gledišta pentesta, ove informacije su obično "beskorisne", ali ako je resurs zaštićen sa 401 ili 403 i možete pronaći neki način da dobijete ove informacije, to bi moglo biti interesantno. Na primer, kombinacija Range i Etag u HEAD zahtevu može otkriti sadržaj stranice putem HEAD zahteva:

  • Zahtev sa zaglavljem Range: bytes=20-20 i sa odgovorom koji sadrži ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y" otkriva da je SHA1 bajta 20 ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y

Informacije o serveru

  • Server: Apache/2.4.1 (Unix)

  • X-Powered-By: PHP/5.3.3

Kontrole

  • Allow: Ovaj zaglavlje se koristi za komunikaciju HTTP metoda koje resurs može obraditi. Na primer, može biti navedeno kao Allow: GET, POST, HEAD, što ukazuje da resurs podržava ove metode.

  • Expect: Koristi se od strane klijenta da prenese očekivanja koja server treba da ispuni da bi zahtev bio uspešno obrađen. Čest slučaj upotrebe uključuje zaglavlje Expect: 100-continue, što signalizira da klijent namerava da pošalje veliki podatkovni paket. Klijent traži odgovor 100 (Continue) pre nastavka prenosa. Ovaj mehanizam pomaže u optimizaciji upotrebe mreže čekajući potvrdu servera.

Preuzimanja

  • Zaglavlje Content-Disposition u HTTP odgovorima usmerava da li bi datoteka trebalo da bude prikazana inline (unutar veb stranice) ili tretirana kao attachment (preuzeta). Na primer:

Content-Disposition: attachment; filename="filename.jpg"

Ovo znači da je datoteka pod nazivom "filename.jpg" namenjena za preuzimanje i čuvanje.

Bezbednosni zaglavlja

Politika bezbednosti sadržaja (CSP)

Povereni tipovi

Primjenom Poverenih tipova putem CSP-a, aplikacije mogu biti zaštićene od DOM XSS napada. Povereni tipovi osiguravaju da samo specifično oblikovani objekti, u skladu sa uspostavljenim bezbednosnim politikama, mogu biti korišćeni u opasnim pozivima web API-ja, čime se podrazumevano obezbeđuje JavaScript kod.

// 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;');
});
}
// 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-Content-Type-Options

Ovaj zaglavlje sprečava MIME tip sniffing, praksu koja može dovesti do XSS ranjivosti. Osigurava da pretraživači poštuju MIME tipove navedene od strane servera.

X-Content-Type-Options: nosniff

X-Frame-Options

Da bi se borili protiv clickjacking-a, ovaj zaglavlje ograničava način na koji se dokumenti mogu ugraditi u <frame>, <iframe>, <embed>, ili <object> oznake, preporučujući da svi dokumenti eksplicitno specificiraju svoja dozvola za ugradnju.

X-Frame-Options: DENY

Cross-Origin Resource Policy (CORP) i Cross-Origin Resource Sharing (CORS)

CORP je ključan za specificiranje koje resurse mogu biti učitani od strane veb sajtova, čime se umanjuju prekogranični propusti. CORS, s druge strane, omogućava fleksibilniji mehanizam deljenja resursa preko različitih porekla, opuštajući politiku istog porekla pod određenim uslovima.

Cross-Origin-Resource-Policy: same-origin
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true

Cross-Origin Embedder Policy (COEP) i Cross-Origin Opener Policy (COOP)

COEP i COOP su ključni za omogućavanje izolacije preko različitih izvora, značajno smanjujući rizik od napada sličnih Spectre-u. Oni kontrolišu učitavanje resursa sa različitih izvora i interakciju sa prozorima sa različitih izvora, redom.

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin-allow-popups

HTTP Strict Transport Security (HSTS)

Na kraju, HSTS je sigurnosna funkcija koja prisiljava pretraživače da komuniciraju sa serverima samo preko sigurnih HTTPS veza, čime se poboljšava privatnost i sigurnost.

Strict-Transport-Security: max-age=3153600

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated