12 KiB
Specijalni HTTP zaglavlja
{% hint style="success" %}
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podrška HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Liste reči i alati
- https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/Web/http-request-headers
- https://github.com/rfc-st/humble
Zaglavlja za promenu lokacije
Prepisivanje IP 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 hop-by-hop zaglavlja)
Prepisivanje 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 konzumirano od strane proksija koji trenutno obrađuje zahtev, za razliku od zaglavlja end-to-end.
Connection: close, X-Forwarded-For
{% content-ref url="../../pentesting-web/abusing-hop-by-hop-headers.md" %} abusing-hop-by-hop-headers.md {% endcontent-ref %}
HTTP Request Smuggling
Content-Length: 30
Transfer-Encoding: chunked
{% content-ref url="../../pentesting-web/http-request-smuggling/" %} http-request-smuggling {% endcontent-ref %}
Cache zaglavlja
Zaglavlja server keša:
X-Cache
u odgovoru može imati vrednostmiss
kada zahtev nije keširan i vrednosthit
kada je keširan- Slično ponašanje u zaglavlju
Cf-Cache-Status
Cache-Control
označava da li se resurs kešira i kada će biti sledeći put keširan:Cache-Control: public, max-age=1800
Vary
se često koristi u odgovoru da označi dodatna zaglavlja koja se tretiraju kao deo keš ključa čak i ako su obično neključevi.Age
definiše vreme u sekundama koliko je objekat bio u proksi kešu.Server-Timing: cdn-cache; desc=HIT
takođe označava da je resurs keširan
{% content-ref url="../../pentesting-web/cache-deception/" %} cache-deception {% endcontent-ref %}
Lokalna keš zaglavlja:
Clear-Site-Data
: Zaglavlje koje označava keš koji treba ukloniti:Clear-Site-Data: "cache", "cookies"
Expires
: Sadrži datum/vreme kada odgovor treba da istekne:Expires: Wed, 21 Oct 2015 07:28:00 GMT
Pragma: no-cache
isto kaoCache-Control: no-cache
Warning
:Warning
opšte HTTP zaglavlje sadrži informacije o mogućim problemima sa statusom poruke. Može se pojaviti više od jednogWarning
zaglavlja u odgovoru.Warning: 110 anderson/1.3.37 "Response is stale"
Uslovi
- Zahtevi koji koriste ova zaglavlja:
If-Modified-Since
iIf-Unmodified-Since
će dobiti odgovor sa podacima samo ako zaglavlje odgovora**Last-Modified
** sadrži drugačije vreme. - Uslovni zahtevi koristeći
If-Match
iIf-None-Match
koriste Etag vrednost tako da web server pošalje sadržaj odgovora ako su podaci (Etag) promenjeni.Etag
se uzima iz HTTP odgovora. - Vrednost Etag se obično izračunava na osnovu sadržaja odgovora. Na primer,
ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"
označava da jeEtag
Sha1 od 37 bajtova.
Zahtevi opsega
Accept-Ranges
: Označava da li server podržava zahteve opsega, i ako da, u kojoj jedinici se opseg može izraziti.Accept-Ranges: <range-unit>
Range
: Označava deo dokumenta koji server treba da vrati.If-Range
: Stvara uslovni zahtev opsega koji se ispunjava samo ako dati etag ili datum odgovara udaljenom resursu. Koristi se da se spreči preuzimanje dva opsega iz nekompatibilnih verzija resursa.Content-Range
: Označava gde u punom telu poruke pripada delimična poruka.
Informacije o telu poruke
Content-Length
: Veličina resursa, u decimalnom broju bajtova.Content-Type
: Označava medijski tip resursaContent-Encoding
: Koristi se za specifikaciju algoritma kompresije.Content-Language
: Opisuje ljudski jezik(e) namenjene publici, tako da omogućava korisniku da razlikuje prema vlastitom preferiranom jeziku.Content-Location
: Označava alternativnu lokaciju za vraćene podatke.
Iz perspektive pentesta, ove informacije su obično "beskorisne", ali ako je resurs zaštićen 401 ili 403 i možete pronaći neki način da dobijete ove informacije, to bi moglo biti zanimljivo.
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žiETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"
otkriva da je SHA1 bajta 20ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y
Informacije o serveru
Server: Apache/2.4.1 (Unix)
X-Powered-By: PHP/5.3.3
Kontrole
Allow
: Ovo zaglavlje se koristi za komunikaciju HTTP metoda koje resurs može obraditi. Na primer, može biti specificirano kaoAllow: GET, POST, HEAD
, što označava da resurs podržava ove metode.Expect
: Koristi se od strane klijenta da prenese očekivanja koja server treba da ispuni kako bi zahtev bio uspešno obrađen. Uobičajena upotreba uključuje zaglavljeExpect: 100-continue
, koje signalizira da klijent namerava da pošalje veliki paket podataka. Klijent traži100 (Continue)
odgovor pre nego što nastavi sa prenosom. Ovaj mehanizam pomaže u optimizaciji korišćenja mreže čekajući potvrdu servera.
Preuzimanja
Content-Disposition
zaglavlje u HTTP odgovorima usmerava da li bi datoteka trebala biti prikazana inline (unutar veb stranice) ili tretirana kao prilog (preuzeta). Na primer:
Content-Disposition: attachment; filename="filename.jpg"
Ovo znači da je datoteka pod imenom "filename.jpg" namenjena preuzimanju i čuvanju.
Bezbednosni Headeri
Politika Bezbednosti Sadržaja (CSP)
{% content-ref url="../../pentesting-web/content-security-policy-csp-bypass/" %} content-security-policy-csp-bypass {% endcontent-ref %}
Poverljivi Tipovi
Sprovodeći Poverljive Tipove putem CSP-a, aplikacije se mogu zaštititi od DOM XSS napada. Poverljivi Tipovi osiguravaju da se samo posebno kreirani objekti, u skladu sa uspostavljenim bezbednosnim politikama, mogu koristiti u opasnim pozivima web API-ja, čime se podrazumevano osigurava JavaScript kod.
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => str.replace(/\</g, '<').replace(/>/g, '>');
});
}
// 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
Ova glava sprečava MIME tip sniffing, praksu koja može dovesti do XSS ranjivosti. Osigurava da pregledači poštuju MIME tipove koje je odredio server.
X-Content-Type-Options: nosniff
X-Frame-Options
Da bi se borili protiv clickjacking-a, ovaj header ograničava kako se dokumenti mogu ugraditi u <frame>
, <iframe>
, <embed>
, ili <object>
tagove, preporučujući svim dokumentima da eksplicitno navedu svoja dopuštenja za ugradnju.
X-Frame-Options: DENY
Cross-Origin Resource Policy (CORP) i Cross-Origin Resource Sharing (CORS)
CORP je ključan za određivanje koje resurse mogu učitati veb sajtovi, smanjujući cross-site leak-ove. CORS, s druge strane, omogućava fleksibilniji mehanizam deljenja resursa između različitih izvora, opuštajući politiku istog izvora 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 između različitih izvora, značajno smanjujući rizik od napada sličnih Spectre-u. Oni kontrolišu učitavanje resursa iz drugih izvora i interakciju sa prozorima iz drugih 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 bezbednosna funkcija koja prisiljava pretraživače da komuniciraju sa serverima samo preko sigurnih HTTPS veza, čime se poboljšava privatnost i bezbednost.
Strict-Transport-Security: max-age=3153600
References
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
- https://web.dev/security-headers/
- https://web.dev/articles/security-headers
{% hint style="success" %}
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.