12 KiB
Spesiale HTTP-koptekste
Leer AWS-hacking vanaf 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 INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling eksklusiewe NFT's
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou haktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.
Woordlyste & Gereedskap
- https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers
- https://github.com/rfc-st/humble
Koptekste 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
(Kontroleer hop-by-hop koptekste)
Herskryf ligging:
X-Original-URL: /admin/console
X-Rewrite-URL: /admin/console
Hop-by-Hop koptekste
'n Hop-by-hop kopteks is 'n kopteks wat ontwerp is om verwerk en verbruik te word deur die tans hanteerende proksi, in teenstelling met 'n end-to-end kopteks.
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 Aanvraag Smuggling
Content-Length: 30
Transfer-Encoding: chunked
{% content-ref url="../../pentesting-web/http-request-smuggling/" %} http-request-smuggling {% endcontent-ref %}
Kegelkoptekste
Bediener Kegelkoptekste:
X-Cache
in die respons kan die waardemiss
hê wanneer die aanvraag nie gekašeer was nie en die waardehit
wanneer dit gekašeer is- Soortgelyke gedrag in die kopteks
Cf-Cache-Status
Cache-Control
dui aan of 'n hulpbron gekašeer word en wanneer die hulpbron weer gekašeer sal word:Cache-Control: public, max-age=1800
Vary
word dikwels in die respons gebruik om addisionele koptekste aan te dui wat as deel van die kasleutel hanteer word selfs al is hulle normaalweg nie gesleutel nie.Age
definieer die tyd in sekondes wat die voorwerp in die proksikas was.Server-Timing: cdn-cache; desc=HIT
dui ook aan dat 'n hulpbron gekašeer was
{% content-ref url="../../pentesting-web/cache-deception.md" %} cache-deception.md {% endcontent-ref %}
Plaaslike Kegelkoptekste:
Clear-Site-Data
: Kopteks om aan te dui watter kas verwyder moet word:Clear-Site-Data: "cache", "cookies"
Expires
: Bevat datum/tyd wanneer die respons moet verval:Expires: Wed, 21 Oct 2015 07:28:00 GMT
Pragma: no-cache
dieselfde asCache-Control: no-cache
Warning
: DieWarning
algemene HTTP-kopteks bevat inligting oor moontlike probleme met die status van die boodskap. Meer as eenWarning
-kopteks kan in 'n respons verskyn.Warning: 110 anderson/1.3.37 "Response is stale"
Kondisionele
- Aanvrae wat hierdie koptekste gebruik:
If-Modified-Since
enIf-Unmodified-Since
sal reageer met data slegs as die responskopteks**Last-Modified
** 'n ander tyd bevat. - Kondisionele aanvrae met behulp van
If-Match
enIf-None-Match
gebruik 'n Etag-waarde sodat die webbediener die inhoud van die respons sal stuur as die data (Etag) verander het. DieEtag
word geneem uit die HTTP-respons. - Die Etag-waarde word gewoonlik berekend op grond van die inhoud van die respons. Byvoorbeeld,
ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"
dui aan dat dieEtag
die Sha1 van 37 byte is.
Reeksaanvrae
Accept-Ranges
: Dui aan of die bediener reeksaanvrae ondersteun, en indien wel, in watter eenheid die reeks uitgedruk kan word.Accept-Ranges: <range-unit>
Range
: Dui die deel van 'n dokument aan wat die bediener moet terugstuur.If-Range
: Skep 'n kondisionele reeksaanvraag wat slegs vervul word as die gegewe etiket of datum ooreenstem met die afgeleë hulpbron. Gebruik om te voorkom dat twee reekse vanaf 'n onversoenbare weergawe van die hulpbron afgelaai word.Content-Range
: Dui aan waar in 'n volledige liggaamboodskap 'n gedeeltelike boodskap behoort.
Inligting oor boodskaplighaam
Content-Length
: Die grootte van die hulpbron, in desimale getal van bytes.Content-Type
: Dui die media-tipe van die hulpbron aanContent-Encoding
: Gebruik om die kompressie-algoritme te spesifiseer.Content-Language
: Beskryf die menslike ta(a)l(e) bedoel vir die gehoor, sodat dit 'n gebruiker in staat stel om te differensieer volgens die gebruikers se eie voorkeurtaal.Content-Location
: Dui 'n alternatiewe ligging vir die teruggekeerde data aan.
Vanuit 'n pentest-oogpunt is hierdie inligting gewoonlik "nutteloos", maar as die hulpbron 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 Etag
in 'n HEAD-aanvraag kan die inhoud van die bladsy lek via HEAD-aanvrae:
- 'n Aanvraag met die kopteks
Range: bytes=20-20
en met 'n respons watETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"
bevat, lek dat die SHA1 van die byte 20 isETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y
Bedienerinligting
Bediener: Apache/2.4.1 (Unix)
X-Aangedryf deur: PHP/5.3.3
Beheer
Toelaat
: Hierdie kop word gebruik om die HTTP-metodes te kommunikeer wat 'n hulpbron kan hanteer. Byvoorbeeld, dit kan gespesifiseer word asToelaat: KRY, POS, HOOF
, wat aandui dat die hulpbron hierdie metodes ondersteun.Verwag
: 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 geval behels dieVerwag: 100-aanhou
kop, wat aandui dat die kliënt van voorneme is om 'n groot data-lading te stuur. Die kliënt soek na 'n100 (Aanhou)
-reaksie voordat voortgegaan word met die oordrag. Hierdie meganisme help om netwerkgebruik te optimaliseer deur op bevestiging van die bediener te wag.
Aflaaibare lêers
- Die
Inhoud-Disposisie
-kop in HTTP-reaksies dui aan of 'n lêer lynsgewys (binne die webbladsy) vertoon moet word of as 'n bylaag (afgelaai) hanteer moet word. Byvoorbeeld:
Content-Disposition: attachment; filename="filename.jpg"
Hierdie beteken die lêernaam "filename.jpg" is bedoel om afgelaai en gestoor te word.
Sekuriteitskoppe
Inhoudsekuriteitsbeleid (CSP)
{% content-ref url="../../pentesting-web/content-security-policy-csp-bypass/" %} content-security-policy-csp-bypass {% endcontent-ref %}
Vertroue Tipes
Deur Vertroue Tipes af te dwing deur CSP, kan programme beskerm word teen DOM XSS-aanvalle. Vertroue Tipes verseker dat slegs spesifiek ontwerpte voorwerpe, in ooreenstemming met vasgestelde sekuriteitsbeleide, gebruik kan word in gevaarlike web API-oproepe, en sodoende JavaScript-kode outomaties beveilig.
// 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-Inhouds-Tipe-Keuses
Hierdie kop voorkom MIME-tipe-sniffing, 'n praktyk wat kan lei tot XSS-kwesbaarhede. Dit verseker dat webblaaier die MIME-tipes respekteer wat deur die bediener gespesifiseer is.
X-Content-Type-Options: nosniff
X-Frame-Options
Om klieklok te beveg, beperk hierdie kop die inbedding van dokumente in <frame>
, <iframe>
, <embed>
, of <object>
etikette, en beveel aan dat alle dokumente hul inbeddingsregte uitdruklik moet spesifiseer.
X-Frame-Options: DENY
Cross-Origin Resource Policy (CORP) en Cross-Origin Resource Sharing (CORS)
CORP is noodsaaklik vir die spesifisering van watter bronne deur webwerwe gelaai kan word, om kruiswebwerf-lekke te verminder. CORS, aan die ander kant, maak 'n meer buigsame kruis-oorsprong brondeling meganisme moontlik, wat die selfde-oorsprong beleid onder sekere omstandighede verslap.
Cross-Origin-Resource-Policy: same-origin
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
Cross-Origin Embedder Policy (COEP) en Cross-Origin Opener Policy (COOP)
COEP en COOP is noodsaaklik vir die aktivering van kruis-oorsprong isolasie, wat die risiko van Spectre-soort aanvalle aansienlik verminder. Hulle beheer die laai van kruis-oorsprong bronne en die interaksie met kruis-oorsprong vensters, onderskeidelik.
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin-allow-popups
HTTP Strikte Vervoer Sekuriteit (HSTS)
Laastens is HSTS 'n sekuriteitsfunksie wat dwing dat webblaaie slegs oor veilige HTTPS-verbindinge met bedieners kommunikeer, wat privaatheid en sekuriteit verbeter.
Strict-Transport-Security: max-age=3153600
Verwysings
- 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
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hack-truuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.