12 KiB
Posebni HTTP zaglavlja
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili da preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje 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
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
{% content-ref url="../../pentesting-web/abusing-hop-by-hop-headers.md" %} abusing-hop-by-hop-headers.md {% endcontent-ref %}
Hakovanje HTTP zahteva
Content-Length: 30
Transfer-Encoding: chunked
{% content-ref url="../../pentesting-web/http-request-smuggling/" %} http-request-smuggling {% endcontent-ref %}
Zaglavlja keširanja
Zaglavlja keša servera:
X-Cache
u odgovoru može imati vrednostmiss
kada zahtev nije keširan i vrednosthit
kada jeste- Slično ponašanje u zaglavlju
Cf-Cache-Status
Cache-Control
ukazuje da li se resurs kešira i kada će sledeći put biti keširan ponovo: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
{% content-ref url="../../pentesting-web/cache-deception.md" %} cache-deception.md {% endcontent-ref %}
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 kaoCache-Control: no-cache
Warning
:Warning
opšte HTTP zaglavlje sadrži informacije o mogućim problemima sa statusom poruke. Više od jednogWarning
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
iIf-Unmodified-Since
će dobiti odgovor samo ako zaglavlje odgovora**Last-Modified
** sadrži drugačije vreme. - Uslovni zahtevi koji koriste
If-Match
iIf-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 jeEtag
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 na tip medija resursaContent-Encoding
: Koristi se za specificiranje algoritma kompresije.Content-Language
: Opisuje ljudski jezik(e) namenjen publiku, tako da korisnik može da razlikuje prema sopstvenom preferiranom jeziku.Content-Location
: Ukazuje na alternativnu lokaciju za vraćene podatke.
Sa stanoviš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ž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
: Ovaj zaglavlje se koristi za komunikaciju HTTP metoda koje resurs može obraditi. Na primer, može biti navedeno kaoAllow: 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 zaglavljeExpect: 100-continue
, koje signalizira da klijent namerava poslati veliki podatkovni paket. Klijent traži odgovor100 (Continue)
pre nastavka sa prenosom. Ovaj mehanizam pomaže u optimizaciji korišćenja mreže čekajući potvrdu servera.
Preuzimanja
- Zaglavlje
Content-Disposition
u HTTP odgovorima usmerava da li bi fajl trebalo da bude prikazan inline (unutar veb stranice) ili tretiran kao attachment (preuzet). Na primer:
Content-Disposition: attachment; filename="filename.jpg"
Ovo znači da je datoteka nazvana "filename.jpg" namenjena za preuzimanje i čuvanje.
Bezbednosni zaglavlja
Politika bezbednosti sadržaja (CSP)
{% content-ref url="../../pentesting-web/content-security-policy-csp-bypass/" %} content-security-policy-csp-bypass {% endcontent-ref %}
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, '<').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
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 dokumenti mogu biti ugrađeni u <frame>
, <iframe>
, <embed>
, ili <object>
oznake, preporučujući svim dokumentima da eksplicitno specificiraju svoja dozvola za ugrađivanje.
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 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
- 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
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.