12 KiB
Specjalne nagłówki HTTP
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź SUBSCRIPTION PLANS!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.
Listy słów i narzędzia
- https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers
- https://github.com/rfc-st/humble
Nagłówki do zmiany lokalizacji
Zmień źródło IP:
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
(Sprawdź nagłówki hop-by-hop)
Zmień lokalizację:
X-Original-URL: /admin/console
X-Rewrite-URL: /admin/console
Nagłówki hop-by-hop
Nagłówek hop-by-hop jest nagłówkiem, który jest przeznaczony do przetwarzania i konsumowania przez aktualnie obsługujący żądanie serwer proxy, w przeciwieństwie do nagłówka 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 %}
Nagłówki pamięci podręcznej
Nagłówki pamięci podręcznej serwera:
X-Cache
w odpowiedzi może mieć wartośćmiss
, jeśli żądanie nie było w pamięci podręcznej, i wartośćhit
, jeśli jest w pamięci podręcznejCache-Control
wskazuje, czy zasób jest buforowany i kiedy zostanie ponownie buforowany:Cache-Control: public, max-age=1800
Vary
jest często używane w odpowiedzi, aby wskazać dodatkowe nagłówki, które są traktowane jako część klucza pamięci podręcznej, nawet jeśli normalnie nie są kluczowe.Age
definiuje czas w sekundach, przez który obiekt był w pamięci podręcznej serwera pośredniczącego.Server-Timing: cdn-cache; desc=HIT
również wskazuje, że zasób był buforowany
{% content-ref url="../../pentesting-web/cache-deception.md" %} cache-deception.md {% endcontent-ref %}
Nagłówki pamięci podręcznej lokalnej:
Clear-Site-Data
: Nagłówek wskazujący, jakie dane pamięci podręcznej powinny zostać usunięte:Clear-Site-Data: "cache", "cookies"
Expires
: Zawiera datę/czas, kiedy odpowiedź powinna wygasnąć:Expires: Wed, 21 Oct 2015 07:28:00 GMT
Pragma: no-cache
to samo coCache-Control: no-cache
Warning
: Ogólny nagłówek HTTPWarning
zawiera informacje o możliwych problemach ze statusem wiadomości. W odpowiedzi może pojawić się więcej niż jeden nagłówekWarning
.Warning: 110 anderson/1.3.37 "Response is stale"
Warunki
- Żądania korzystające z tych nagłówków:
If-Modified-Since
iIf-Unmodified-Since
będą otrzymywać dane tylko wtedy, gdy nagłówek odpowiedziLast-Modified
zawiera inną godzinę. - Żądania warunkowe korzystające z
If-Match
iIf-None-Match
używają wartości Etag, więc serwer WWW wyśle zawartość odpowiedzi, jeśli dane (Etag) uległy zmianie. WartośćEtag
jest pobierana z odpowiedzi HTTP. - Wartość Etag jest zwykle obliczana na podstawie zawartości odpowiedzi. Na przykład,
ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"
wskazuje, żeEtag
to Sha1 z 37 bajtów.
Żądania zakresu
Accept-Ranges
: Wskazuje, czy serwer obsługuje żądania zakresu i w jakiej jednostce zakres może być wyrażony.Accept-Ranges: <range-unit>
Range
: Wskazuje część dokumentu, którą serwer powinien zwrócić.If-Range
: Tworzy warunkowe żądanie zakresu, które jest spełnione tylko wtedy, gdy podany etag lub data pasuje do zdalnego zasobu. Służy do zapobiegania pobieraniu dwóch zakresów z niezgodnych wersji zasobu.Content-Range
: Wskazuje, gdzie w pełnej wiadomości ciała znajduje się wiadomość częściowa.
Informacje o treści wiadomości
Content-Length
: Rozmiar zasobu, w postaci dziesiętnego liczby bajtów.Content-Type
: Wskazuje typ multimediów zasobuContent-Encoding
: Używane do określenia algorytmu kompresji.Content-Language
: Opisuje język(i) ludzki(e) przeznaczony dla odbiorców, umożliwiając użytkownikowi różnicowanie zgodnie z preferowanym przez użytkownika językiem.
Informacje o serwerze
Server: Apache/2.4.1 (Unix)
X-Powered-By: PHP/5.3.3
Kontrole
Allow
: Ten nagłówek służy do komunikacji metod HTTP, które zasób może obsłużyć. Na przykład, może być określony jakoAllow: GET, POST, HEAD
, co oznacza, że zasób obsługuje te metody.Expect
: Wykorzystywany przez klienta do przekazania oczekiwań, które serwer musi spełnić, aby żądanie zostało pomyślnie przetworzone. Powszechnym przypadkiem użycia jest nagłówekExpect: 100-continue
, który sygnalizuje, że klient zamierza wysłać dużą ilość danych. Klient oczekuje odpowiedzi100 (Continue)
przed kontynuacją transmisji. Ten mechanizm pomaga optymalizować wykorzystanie sieci, oczekując potwierdzenia serwera.
Pobieranie
- Nagłówek
Content-Disposition
w odpowiedziach HTTP określa, czy plik powinien być wyświetlany wewnętrznie (wewnątrz strony internetowej) czy traktowany jako załącznik (pobierany). Na przykład:
Content-Disposition: attachment; filename="filename.jpg"
To oznacza, że plik o nazwie "filename.jpg" ma być pobrany i zapisany.
Nagłówki zabezpieczeń
Polityka zabezpieczeń treści (CSP)
{% content-ref url="../../pentesting-web/content-security-policy-csp-bypass/" %} content-security-policy-csp-bypass {% endcontent-ref %}
Zaufane typy
Poprzez wprowadzenie Zaufanych Typów za pomocą CSP, aplikacje mogą być chronione przed atakami DOM XSS. Zaufane Typy zapewniają, że tylko specjalnie opracowane obiekty, zgodne z ustalonymi politykami bezpieczeństwa, mogą być używane w niebezpiecznych wywołaniach interfejsu API sieci Web, co zabezpiecza kod JavaScript domyślnie.
// 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
Ten nagłówek zapobiega wykrywaniu typu MIME, praktyce, która może prowadzić do podatności XSS. Zapewnia, że przeglądarki będą respektować typy MIME określone przez serwer.
X-Content-Type-Options: nosniff
X-Frame-Options
Aby zwalczyć clickjacking, ten nagłówek ogranicza sposób osadzania dokumentów w znacznikach <frame>
, <iframe>
, <embed>
lub <object>
, zalecając, aby wszystkie dokumenty jawnie określały swoje uprawnienia do osadzania.
X-Frame-Options: DENY
Cross-Origin Resource Policy (CORP) i Cross-Origin Resource Sharing (CORS)
CORP jest kluczowy dla określenia, które zasoby mogą być ładowane przez strony internetowe, ograniczając wycieki między stronami. CORS z kolei umożliwia bardziej elastyczny mechanizm udostępniania zasobów między różnymi źródłami, rozluźniając politykę samego źródła w określonych warunkach.
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 są niezbędne do włączenia izolacji międzydomenowej, co znacznie redukuje ryzyko ataków podobnych do Spectre. Kontrolują ładowanie zasobów z innych domen oraz interakcję z oknami z innych domen, odpowiednio.
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin-allow-popups
HTTP Strict Transport Security (HSTS)
Ostatnią funkcją HSTS jest zabezpieczenie, które zmusza przeglądarki do komunikowania się tylko przez bezpieczne połączenia HTTPS, co zwiększa prywatność i bezpieczeństwo.
Strict-Transport-Security: max-age=3153600
Odwołania
- 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
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.