diff --git a/src/pentesting-web/domain-subdomain-takeover.md b/src/pentesting-web/domain-subdomain-takeover.md index 7508ed894..e59841e3f 100644 --- a/src/pentesting-web/domain-subdomain-takeover.md +++ b/src/pentesting-web/domain-subdomain-takeover.md @@ -5,7 +5,7 @@ ## Przejęcie domeny -Jeśli odkryjesz jakąś domenę (domain.tld), która **jest używana przez jakąś usługę w zakresie**, ale **firma** **straciła** **własność** nad nią, możesz spróbować ją **zarejestrować** (jeśli jest wystarczająco tania) i poinformować firmę. Jeśli ta domena otrzymuje jakieś **wrażliwe informacje**, takie jak ciasteczko sesyjne przez **GET** parametr lub w nagłówku **Referer**, to na pewno jest to **vulnerability**. +Jeśli odkryjesz jakąś domenę (domain.tld), która **jest używana przez jakąś usługę w zakresie**, ale **firma** **straciła** **własność** tej domeny, możesz spróbować ją **zarejestrować** (jeśli jest wystarczająco tania) i poinformować firmę. Jeśli ta domena otrzymuje jakieś **wrażliwe informacje**, takie jak ciasteczko sesyjne przez **GET** parametr lub w nagłówku **Referer**, to na pewno jest to **vulnerabilność**. ### Przejęcie subdomeny @@ -27,49 +27,65 @@ Istnieje kilka narzędzi z słownikami do sprawdzania możliwych przejęć: - [https://github.com/Stratus-Security/Subdominator](https://github.com/Stratus-Security/Subdominator) - [https://github.com/NImaism/takeit](https://github.com/NImaism/takeit) -### Generacja przejęcia subdomeny przez wildcard DNS +### Generowanie przejęcia subdomeny za pomocą wildcard DNS -Gdy w domenie używany jest wildcard DNS, każda żądana subdomena tej domeny, która nie ma innego adresu wyraźnie określonego, będzie **rozwiązywana do tych samych informacji**. Może to być adres IP A, CNAME... +Gdy w domenie używany jest wildcard DNS, każda żądana subdomena tej domeny, która nie ma innego adresu, zostanie **rozwiązana do tych samych informacji**. Może to być adres IP A, CNAME... Na przykład, jeśli `*.testing.com` jest wildcardowane do `1.1.1.1`. Wtedy `not-existent.testing.com` będzie wskazywać na `1.1.1.1`. -Jednak jeśli zamiast wskazywać na adres IP, administrator systemu wskaże to na **usługę zewnętrzną przez CNAME**, jak na przykład subdomena G**ithuba** (`sohomdatta1.github.io`). Atakujący może **utworzyć swoją własną stronę zewnętrzną** (w Gihubie w tym przypadku) i powiedzieć, że `something.testing.com` wskazuje tam. Ponieważ **CNAME wildcard** zgodzi się, atakujący będzie mógł **generować dowolne subdomeny dla domeny ofiary wskazujące na jego strony**. +Jednak jeśli zamiast wskazywać na adres IP, administrator systemu wskaże to na **usługę zewnętrzną przez CNAME**, jak na przykład subdomena G**ithuba** (`sohomdatta1.github.io`). Atakujący może **utworzyć swoją własną stronę zewnętrzną** (w Gihub w tym przypadku) i powiedzieć, że `something.testing.com` wskazuje tam. Ponieważ **CNAME wildcard** zgodzi się, atakujący będzie mógł **generować dowolne subdomeny dla domeny ofiary wskazujące na jego strony**. -Możesz znaleźć przykład tej luki w opisie CTF: [https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api) +Możesz znaleźć przykład tej vulnerabilności w opisie CTF: [https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api) ## Wykorzystywanie przejęcia subdomeny -Przejęcie subdomeny to w zasadzie spoofing DNS dla konkretnej domeny w internecie, pozwalający atakującym ustawiać rekordy A dla domeny, co prowadzi do wyświetlania treści z serwera atakującego w przeglądarkach. Ta **przejrzystość** w przeglądarkach sprawia, że domeny są podatne na phishing. Atakujący mogą stosować [_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting) lub [_Doppelganger domains_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) w tym celu. Szczególnie podatne są domeny, w których URL w phishingowym e-mailu wydaje się być legalny, oszukując użytkowników i omijając filtry spamowe z powodu wrodzonego zaufania do domeny. +Przejęcie subdomeny to zasadniczo spoofing DNS dla konkretnej domeny w internecie, pozwalający atakującym ustawiać rekordy A dla domeny, co prowadzi do wyświetlania treści z serwera atakującego w przeglądarkach. Ta **przejrzystość** w przeglądarkach sprawia, że domeny są podatne na phishing. Atakujący mogą stosować [_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting) lub [_Doppelganger domains_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) w tym celu. Szczególnie podatne są domeny, w których URL w phishingowym e-mailu wydaje się być legalny, oszukując użytkowników i omijając filtry spamowe z powodu wrodzonego zaufania do domeny. Sprawdź ten [post po więcej szczegółów](https://0xpatrik.com/subdomain-takeover/) ### **Certyfikaty SSL** -Certyfikaty SSL, jeśli są generowane przez atakujących za pośrednictwem usług takich jak [_Let's Encrypt_](https://letsencrypt.org/), zwiększają wiarygodność tych fałszywych domen, czyniąc ataki phishingowe bardziej przekonującymi. +Certyfikaty SSL, jeśli są generowane przez atakujących za pomocą usług takich jak [_Let's Encrypt_](https://letsencrypt.org/), zwiększają wiarygodność tych fałszywych domen, czyniąc ataki phishingowe bardziej przekonującymi. ### **Bezpieczeństwo ciasteczek i przejrzystość przeglądarki** -Przejrzystość przeglądarki dotyczy również bezpieczeństwa ciasteczek, regulowanego przez polityki takie jak [Same-origin policy](https://en.wikipedia.org/wiki/Same-origin_policy). Ciasteczka, często używane do zarządzania sesjami i przechowywania tokenów logowania, mogą być wykorzystywane przez przejęcie subdomeny. Atakujący mogą **zbierać ciasteczka sesyjne** po prostu kierując użytkowników do skompromitowanej subdomeny, zagrażając danym i prywatności użytkowników. +Przejrzystość przeglądarki dotyczy również bezpieczeństwa ciasteczek, regulowanego przez polityki takie jak [Same-origin policy](https://en.wikipedia.org/wiki/Same-origin_policy). Ciasteczka, często używane do zarządzania sesjami i przechowywania tokenów logowania, mogą być wykorzystywane przez przejęcie subdomeny. Atakujący mogą **zbierać ciasteczka sesyjne** po prostu kierując użytkowników do skompromitowanej subdomeny, narażając dane użytkowników i prywatność. + +### Ominięcie CORS + +Może być możliwe, że każda subdomena ma dostęp do zasobów CORS z głównej domeny lub innych subdomen. Może to być wykorzystane przez atakującego do **dostępu do wrażliwych informacji** poprzez nadużycie żądań CORS. + +### CSRF - Ominięcie ciasteczek Same-Site + +Może być możliwe, że subdomena ma prawo wysyłać ciasteczka do domeny lub innych subdomen, co zostało zablokowane przez atrybut `Same-Site` ciasteczek. Należy jednak zauważyć, że tokeny anty-CSRF nadal zapobiegną temu atakowi, jeśli są prawidłowo wdrożone. + +### Przekierowanie tokenów OAuth + +Może być możliwe, że skompromitowana subdomena może być używana w URL `redirect_uri` w przepływie OAuth. Może to być wykorzystane przez atakującego do **kradzieży tokena OAuth**. + +### Ominięcie CSP + +Może być możliwe, że skompromitowana subdomena (lub każda subdomena) może być używana na przykład w `script-src` CSP. Może to być wykorzystane przez atakującego do **wstrzykiwania złośliwych skryptów** i nadużywania potencjalnych luk XSS. ### **E-maile i przejęcie subdomeny** -Kolejny aspekt przejęcia subdomeny dotyczy usług e-mailowych. Atakujący mogą manipulować **rekordami MX**, aby odbierać lub wysyłać e-maile z legalnej subdomeny, zwiększając skuteczność ataków phishingowych. +Innym aspektem przejęcia subdomeny są usługi e-mailowe. Atakujący mogą manipulować **rekordami MX**, aby odbierać lub wysyłać e-maile z legalnej subdomeny, zwiększając skuteczność ataków phishingowych. ### **Wyższe ryzyko** -Dalsze ryzyka obejmują **przejęcie rekordu NS**. Jeśli atakujący zdobędzie kontrolę nad jednym rekordem NS domeny, mogą potencjalnie skierować część ruchu do serwera pod swoją kontrolą. To ryzyko jest zwiększone, jeśli atakujący ustawi wysoki **TTL (Time to Live)** dla rekordów DNS, wydłużając czas trwania ataku. +Dalsze ryzyka obejmują **przejęcie rekordu NS**. Jeśli atakujący zdobędzie kontrolę nad jednym rekordem NS domeny, mogą potencjalnie skierować część ruchu do serwera pod swoją kontrolą. To ryzyko wzrasta, jeśli atakujący ustawi wysoki **TTL (Time to Live)** dla rekordów DNS, wydłużając czas trwania ataku. -### Luka w rekordzie CNAME +### Wrażliwość rekordu CNAME -Atakujący mogą wykorzystać nieprzypisane rekordy CNAME wskazujące na zewnętrzne usługi, które nie są już używane lub zostały wycofane. Pozwala im to stworzyć stronę pod zaufaną domeną, co dodatkowo ułatwia phishing lub dystrybucję złośliwego oprogramowania. +Atakujący mogą wykorzystać nieprzypisane rekordy CNAME wskazujące na zewnętrzne usługi, które nie są już używane lub zostały wycofane. Pozwala to im na stworzenie strony pod zaufaną domeną, co dodatkowo ułatwia phishing lub dystrybucję złośliwego oprogramowania. ### **Strategie łagodzenia** Strategie łagodzenia obejmują: -1. **Usunięcie podatnych rekordów DNS** - To jest skuteczne, jeśli subdomena nie jest już potrzebna. +1. **Usunięcie wrażliwych rekordów DNS** - To jest skuteczne, jeśli subdomena nie jest już potrzebna. 2. **Przypisanie nazwy domeny** - Zarejestrowanie zasobu u odpowiedniego dostawcy chmurowego lub ponowne zakupienie wygasłej domeny. -3. **Regularne monitorowanie luk** - Narzędzia takie jak [aquatone](https://github.com/michenriksen/aquatone) mogą pomóc w identyfikacji podatnych domen. Organizacje powinny również zrewidować swoje procesy zarządzania infrastrukturą, zapewniając, że tworzenie rekordów DNS jest ostatnim krokiem w tworzeniu zasobów i pierwszym krokiem w ich usuwaniu. +3. **Regularne monitorowanie wrażliwości** - Narzędzia takie jak [aquatone](https://github.com/michenriksen/aquatone) mogą pomóc w identyfikacji podatnych domen. Organizacje powinny również zrewidować swoje procesy zarządzania infrastrukturą, zapewniając, że tworzenie rekordów DNS jest ostatnim krokiem w tworzeniu zasobów i pierwszym krokiem w ich usuwaniu. Dla dostawców chmurowych weryfikacja własności domeny jest kluczowa, aby zapobiec przejęciom subdomen. Niektórzy, jak [GitLab](https://about.gitlab.com/2018/02/05/gitlab-pages-custom-domain-validation/), dostrzegli ten problem i wdrożyli mechanizmy weryfikacji domen. @@ -77,5 +93,6 @@ Dla dostawców chmurowych weryfikacja własności domeny jest kluczowa, aby zapo - [https://0xpatrik.com/subdomain-takeover/](https://0xpatrik.com/subdomain-takeover/) - [https://www.stratussecurity.com/post/subdomain-takeover-guide](https://www.stratussecurity.com/post/subdomain-takeover-guide) +- [https://www.hackerone.com/blog/guide-subdomain-takeovers-20](https://www.hackerone.com/blog/guide-subdomain-takeovers-20) {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/hacking-with-cookies/README.md b/src/pentesting-web/hacking-with-cookies/README.md index b9a1a80fb..4cdaa9b6e 100644 --- a/src/pentesting-web/hacking-with-cookies/README.md +++ b/src/pentesting-web/hacking-with-cookies/README.md @@ -1,4 +1,4 @@ -# Hacking Cookies +# Cookies Hacking {{#include ../../banners/hacktricks-training.md}} @@ -6,15 +6,15 @@ Ciasteczka mają kilka atrybutów, które kontrolują ich zachowanie w przeglądarce użytkownika. Oto przegląd tych atrybutów w bardziej pasywnej formie: -### Expires i Max-Age +### Wygasa i Max-Age Data wygaśnięcia ciasteczka jest określona przez atrybut `Expires`. Z kolei atrybut `Max-age` definiuje czas w sekundach, po którym ciasteczko zostanie usunięte. **Wybierz `Max-age`, ponieważ odzwierciedla to nowocześniejsze praktyki.** -### Domain +### Domeny -Hosty, które mają otrzymać ciasteczko, są określone przez atrybut `Domain`. Domyślnie jest on ustawiony na hosta, który wydał ciasteczko, nie obejmując jego subdomen. Jednak gdy atrybut `Domain` jest wyraźnie ustawiony, obejmuje również subdomeny. To sprawia, że specyfikacja atrybutu `Domain` jest mniej restrykcyjną opcją, przydatną w scenariuszach, gdzie konieczne jest udostępnianie ciasteczek między subdomenami. Na przykład ustawienie `Domain=mozilla.org` sprawia, że ciasteczka są dostępne na jego subdomenach, takich jak `developer.mozilla.org`. +Hosty, które mają otrzymać ciasteczko, są określone przez atrybut `Domain`. Domyślnie jest on ustawiony na hosta, który wydał ciasteczko, nie uwzględniając jego subdomen. Jednak gdy atrybut `Domain` jest wyraźnie ustawiony, obejmuje również subdomeny. To sprawia, że specyfikacja atrybutu `Domain` jest mniej restrykcyjną opcją, przydatną w scenariuszach, gdzie konieczne jest udostępnianie ciasteczek między subdomenami. Na przykład, ustawienie `Domain=mozilla.org` sprawia, że ciasteczka są dostępne na jego subdomenach, takich jak `developer.mozilla.org`. -### Path +### Ścieżka Atrybut `Path` wskazuje konkretną ścieżkę URL, która musi być obecna w żądanym URL, aby nagłówek `Cookie` został wysłany. Atrybut ten traktuje znak `/` jako separator katalogów, co pozwala na dopasowania w podkatalogach. @@ -23,7 +23,7 @@ Atrybut `Path` wskazuje konkretną ścieżkę URL, która musi być obecna w ż Gdy dwa ciasteczka mają tę samą nazwę, wybór ciasteczka do wysłania opiera się na: - Ciasteczku pasującym do najdłuższej ścieżki w żądanym URL. -- Najnowszym ustawionym ciasteczku, jeśli ścieżki są identyczne. +- Najnowszym ciasteczku, jeśli ścieżki są identyczne. ### SameSite @@ -34,15 +34,15 @@ Gdy dwa ciasteczka mają tę samą nazwę, wybór ciasteczka do wysłania opiera Pamiętaj, że podczas konfigurowania ciasteczek zrozumienie tych atrybutów może pomóc zapewnić, że będą one działać zgodnie z oczekiwaniami w różnych scenariuszach. -| **Typ żądania** | **Przykładowy kod** | **Ciasteczka wysyłane, gdy** | -| ---------------- | ---------------------------------- | ----------------------------- | -| Link | \\ | NotSet\*, Lax, None | -| Prerender | \ | NotSet\*, Lax, None | -| Form GET | \