diff --git a/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md b/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md
index ee6028478..5ae769957 100644
--- a/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md
+++ b/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md
@@ -12,7 +12,7 @@ Każdy wpis w GOT odpowiada symbolowi w zewnętrznych bibliotekach, które może
### **PLT: Procedure Linkage Table**
-**Procedure Linkage Table (PLT)** działa blisko z GOT i służy jako trampolina do obsługi wywołań funkcji zewnętrznych. Gdy binarne **wywołuje funkcję zewnętrzną po raz pierwszy, kontrola jest przekazywana do wpisu w PLT powiązanego z tą funkcją**. Ten wpis PLT jest odpowiedzialny za wywołanie dynamicznego linkera w celu rozwiązania adresu funkcji, jeśli nie został on jeszcze rozwiązany. Po rozwiązaniu adresu, jest on przechowywany w **GOT**.
+**Procedure Linkage Table (PLT)** działa blisko z GOT i służy jako trampolina do obsługi wywołań funkcji zewnętrznych. Gdy binarne **wywołuje funkcję zewnętrzną po raz pierwszy, kontrola jest przekazywana do wpisu w PLT powiązanego z tą funkcją**. Ten wpis PLT jest odpowiedzialny za wywołanie dynamicznego linkera w celu rozwiązania adresu funkcji, jeśli nie został on jeszcze rozwiązany. Po rozwiązaniu adresu jest on przechowywany w **GOT**.
**Dlatego** wpisy GOT są używane bezpośrednio, gdy adres funkcji lub zmiennej zewnętrznej jest rozwiązany. **Wpisy PLT są używane do ułatwienia początkowego rozwiązania** tych adresów za pośrednictwem dynamicznego linkera.
@@ -20,13 +20,13 @@ Każdy wpis w GOT odpowiada symbolowi w zewnętrznych bibliotekach, które może
### Sprawdź GOT
-Uzyskaj adres tabeli GOT za pomocą: **`objdump -s -j .got ./exec`**
+Uzyskaj adres do tabeli GOT za pomocą: **`objdump -s -j .got ./exec`**
.png>)
-Obserwuj, jak po **załadowaniu** **wykonywalnego** w GEF możesz **zobaczyć** **funkcje**, które są w **GOT**: `gef➤ x/20x 0xADDR_GOT`
+Zauważ, jak po **załadowaniu** **wykonywalnego** w GEF możesz **zobaczyć** **funkcje**, które są w **GOT**: `gef➤ x/20x 0xADDR_GOT`
- (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (2) (2).png>)
+ (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (2) (2).png>)
Korzystając z GEF, możesz **rozpocząć** sesję **debugowania** i wykonać **`got`**, aby zobaczyć tabelę got:
@@ -34,33 +34,33 @@ Korzystając z GEF, możesz **rozpocząć** sesję **debugowania** i wykonać **
### GOT2Exec
-W binarnym GOT ma **adresy do funkcji lub** do sekcji **PLT**, która załadowuje adres funkcji. Celem tego arbitralnego zapisu jest **nadpisanie wpisu GOT** funkcji, która ma być wykonana później **za pomocą** **adresu** PLT funkcji **`system`** na przykład.
+W binarnym GOT ma **adresy do funkcji lub** do sekcji **PLT**, która załadowuje adres funkcji. Celem tego arbitralnego zapisu jest **nadpisanie wpisu GOT** funkcji, która ma być wykonana później **z** **adresem** PLT funkcji **`system`** na przykład.
-Idealnie, będziesz **nadpisywać** **GOT** funkcji, która **ma być wywołana z parametrami kontrolowanymi przez Ciebie** (więc będziesz mógł kontrolować parametry wysyłane do funkcji system).
+Idealnie, chcesz **nadpisać** **GOT** funkcji, która **ma być wywołana z parametrami kontrolowanymi przez Ciebie** (abyś mógł kontrolować parametry wysyłane do funkcji systemowej).
-Jeśli **`system`** **nie jest używany** przez binarne, funkcja system **nie będzie** miała wpisu w PLT. W tym scenariuszu będziesz **musiał najpierw wycieknąć adres** funkcji `system`, a następnie nadpisać GOT, aby wskazywał na ten adres.
+Jeśli **`system`** **nie jest używany** przez binarne, funkcja systemowa **nie będzie** miała wpisu w PLT. W tym scenariuszu będziesz **musiał najpierw wycieknąć adres** funkcji `system`, a następnie nadpisać GOT, aby wskazywał na ten adres.
Możesz zobaczyć adresy PLT za pomocą **`objdump -j .plt -d ./vuln_binary`**
## wpisy GOT libc
-**GOT libc** jest zazwyczaj kompilowany z **częściowym RELRO**, co czyni go dobrym celem dla tego, zakładając, że możliwe jest ustalenie jego adresu ([**ASLR**](../common-binary-protections-and-bypasses/aslr/)).
+**GOT libc** jest zazwyczaj kompilowane z **częściowym RELRO**, co czyni go dobrym celem dla tej techniki, zakładając, że możliwe jest ustalenie jego adresu ([**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html)).
-Typowe funkcje libc będą wywoływać **inne funkcje wewnętrzne**, których GOT można nadpisać, aby uzyskać wykonanie kodu.
+Typowe funkcje libc będą wywoływać **inne funkcje wewnętrzne**, których GOT mogłoby być nadpisane w celu uzyskania wykonania kodu.
Znajdź [**więcej informacji na temat tej techniki tutaj**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries).
### **Free2system**
-W eksploitacji heap w CTF często można kontrolować zawartość chunków i w pewnym momencie nawet nadpisać tabelę GOT. Prosty trik, aby uzyskać RCE, jeśli gadżety nie są dostępne, to nadpisać adres GOT `free`, aby wskazywał na `system` i zapisać w chunku `"/bin/sh"`. W ten sposób, gdy ten chunk zostanie zwolniony, wykona `system("/bin/sh")`.
+W eksploitacji heap w CTF często można kontrolować zawartość kawałków i w pewnym momencie nawet nadpisać tabelę GOT. Prosty trik, aby uzyskać RCE, jeśli gadżety nie są dostępne, to nadpisać adres GOT `free`, aby wskazywał na `system` i zapisać w kawałku `"/bin/sh"`. W ten sposób, gdy ten kawałek zostanie zwolniony, wykona `system("/bin/sh")`.
### **Strlen2system**
-Inną powszechną techniką jest nadpisanie adresu GOT **`strlen`**, aby wskazywał na **`system`**, więc jeśli ta funkcja jest wywoływana z danymi wejściowymi od użytkownika, możliwe jest przekazanie ciągu `"/bin/sh"` i uzyskanie powłoki.
+Inną powszechną techniką jest nadpisanie adresu GOT **`strlen`**, aby wskazywał na **`system`**, więc jeśli ta funkcja jest wywoływana z danymi wejściowymi użytkownika, możliwe jest przekazanie ciągu `"/bin/sh"` i uzyskanie powłoki.
-Ponadto, jeśli `puts` jest używane z danymi wejściowymi od użytkownika, możliwe jest nadpisanie adresu GOT `strlen`, aby wskazywał na `system` i przekazanie ciągu `"/bin/sh"`, aby uzyskać powłokę, ponieważ **`puts` wywoła `strlen` z danymi wejściowymi od użytkownika**.
+Ponadto, jeśli `puts` jest używane z danymi wejściowymi użytkownika, możliwe jest nadpisanie adresu GOT `strlen`, aby wskazywał na `system` i przekazanie ciągu `"/bin/sh"`, aby uzyskać powłokę, ponieważ **`puts` wywoła `strlen` z danymi wejściowymi użytkownika**.
-## **Jeden gadżet**
+## **One Gadget**
{{#ref}}
../rop-return-oriented-programing/ret2lib/one-gadget.md
@@ -68,8 +68,8 @@ Ponadto, jeśli `puts` jest używane z danymi wejściowymi od użytkownika, moż
## **Wykorzystywanie GOT z Heap**
-Powszechnym sposobem uzyskania RCE z podatności na heap jest nadużycie fastbina, aby można było dodać część tabeli GOT do fastbina, więc za każdym razem, gdy ten chunk jest alokowany, będzie możliwe **nadpisanie wskaźnika funkcji, zazwyczaj `free`**.\
-Następnie, wskazując `free` na `system` i zwalniając chunk, w którym zapisano `/bin/sh\x00`, wykona powłokę.
+Powszechnym sposobem uzyskania RCE z podatności na heap jest nadużycie fastbina, aby można było dodać część tabeli GOT do fastbina, więc za każdym razem, gdy ten kawałek jest przydzielany, będzie można **nadpisać wskaźnik funkcji, zazwyczaj `free`**.\
+Następnie, wskazując `free` na `system` i zwalniając kawałek, w którym zapisano `/bin/sh\x00`, wykona powłokę.
Możliwe jest znalezienie [**przykładu tutaj**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/chunk_extend_overlapping/#hitcon-trainging-lab13)**.**
diff --git a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md
index 2ccffd784..0f349db9a 100644
--- a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md
+++ b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md
@@ -24,13 +24,13 @@ Przy tak wielu technikach dobrze jest mieć schemat, kiedy każda technika będz
Istnieje kilka sposobów, aby kontrolować przepływ programu:
-- [**Przepełnienia Stosu**](../stack-overflow/) nadpisując wskaźnik powrotu ze stosu lub EBP -> ESP -> EIP.
+- [**Przepełnienia Stosu**](../stack-overflow/index.html) nadpisujące wskaźnik powrotu ze stosu lub EBP -> ESP -> EIP.
- Może być konieczne nadużycie [**Przepełnień Liczbowych**](../integer-overflow.md), aby spowodować przepełnienie.
-- Lub poprzez **Arbitralne Zapis + Write What Where to Execution**.
-- [**Format strings**](../format-strings/)**:** Nadużyj `printf`, aby zapisać arbitralną zawartość w arbitralnych adresach.
-- [**Indeksowanie Tablic**](../array-indexing.md): Nadużyj źle zaprojektowanego indeksowania, aby móc kontrolować niektóre tablice i uzyskać arbitralny zapis.
+- Lub poprzez **Arbitralne Zapisanie + Write What Where to Execution**.
+- [**Format strings**](../format-strings/index.html)**:** Nadużyj `printf`, aby zapisać arbitralną zawartość w arbitralnych adresach.
+- [**Indeksowanie Tablic**](../array-indexing.md): Nadużyj źle zaprojektowanego indeksowania, aby móc kontrolować niektóre tablice i uzyskać arbitralne zapisanie.
- Może być konieczne nadużycie [**Przepełnień Liczbowych**](../integer-overflow.md), aby spowodować przepełnienie.
-- **bof do WWW poprzez ROP**: Nadużyj przepełnienia bufora, aby skonstruować ROP i móc uzyskać WWW.
+- **bof do WWW za pomocą ROP**: Nadużyj przepełnienia bufora, aby skonstruować ROP i móc uzyskać WWW.
Możesz znaleźć techniki **Write What Where to Execution** w:
@@ -40,7 +40,7 @@ Możesz znaleźć techniki **Write What Where to Execution** w:
## Wieczne Pętle
-Coś, co warto wziąć pod uwagę, to że zazwyczaj **jedna eksploatacja luki może nie wystarczyć**, aby przeprowadzić udaną eksploatację, szczególnie niektóre zabezpieczenia muszą być obejście. Dlatego warto omówić kilka opcji, aby **uczynić pojedynczą lukę eksploatowalną wiele razy** w tej samej egzekucji binarnej:
+Coś, co należy wziąć pod uwagę, to że zazwyczaj **jedna eksploatacja luki może nie być wystarczająca**, aby przeprowadzić udaną eksploatację, szczególnie niektóre zabezpieczenia muszą być obejście. Dlatego warto omówić kilka opcji, aby **uczynić pojedynczą lukę eksploatowalną wiele razy** w tej samej egzekucji binarnej:
- Zapisz w łańcuchu **ROP** adres funkcji **`main`** lub adres, w którym występuje **luka**.
- Kontrolując odpowiedni łańcuch ROP, możesz wykonać wszystkie akcje w tym łańcuchu.
@@ -52,16 +52,16 @@ Coś, co warto wziąć pod uwagę, to że zazwyczaj **jedna eksploatacja luki mo
### Cel: Wywołanie Istniejącej Funkcji
- [**ret2win**](#ret2win): Istnieje funkcja w kodzie, którą musisz wywołać (może z pewnymi specyficznymi parametrami), aby uzyskać flagę.
-- W **zwykłym bof bez** [**PIE**](../common-binary-protections-and-bypasses/pie/) **i** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/) wystarczy zapisać adres w adresie powrotu przechowywanym na stosie.
-- W bof z [**PIE**](../common-binary-protections-and-bypasses/pie/) będziesz musiał to obejść.
-- W bof z [**canary**](../common-binary-protections-and-bypasses/stack-canaries/) będziesz musiał to obejść.
+- W **zwykłym bof bez** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) **i** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/index.html) wystarczy zapisać adres w adresie powrotu przechowywanym na stosie.
+- W bof z [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) będziesz musiał to obejść.
+- W bof z [**canary**](../common-binary-protections-and-bypasses/stack-canaries/index.html) będziesz musiał to obejść.
- Jeśli musisz ustawić kilka parametrów, aby poprawnie wywołać funkcję **ret2win**, możesz użyć:
- Łańcucha [**ROP**](#rop-and-ret2...-techniques), jeśli jest wystarczająco dużo gadżetów, aby przygotować wszystkie parametry.
-- [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/) (w przypadku, gdy możesz wywołać ten syscall), aby kontrolować wiele rejestrów.
+- [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/index.html) (w przypadku, gdy możesz wywołać ten syscall), aby kontrolować wiele rejestrów.
- Gadżetów z [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) i [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md), aby kontrolować kilka rejestrów.
-- Poprzez [**Write What Where**](../arbitrary-write-2-exec/) możesz nadużyć innych luk (nie bof), aby wywołać funkcję **`win`**.
+- Poprzez [**Write What Where**](../arbitrary-write-2-exec/index.html) możesz nadużyć innych luk (nie bof), aby wywołać funkcję **`win`**.
- [**Przekierowywanie Wskaźników**](../stack-overflow/pointer-redirecting.md): W przypadku, gdy stos zawiera wskaźniki do funkcji, która ma być wywołana, lub do ciągu, który ma być użyty przez interesującą funkcję (system lub printf), możliwe jest nadpisanie tego adresu.
-- [**ASLR**](../common-binary-protections-and-bypasses/aslr/) lub [**PIE**](../common-binary-protections-and-bypasses/pie/) mogą wpływać na adresy.
+- [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) lub [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) mogą wpływać na adresy.
- [**Niezainicjowane zmienne**](../stack-overflow/uninitialized-variables.md): Nigdy nie wiesz.
### Cel: RCE
@@ -69,43 +69,43 @@ Coś, co warto wziąć pod uwagę, to że zazwyczaj **jedna eksploatacja luki mo
#### Poprzez shellcode, jeśli nx wyłączone lub mieszając shellcode z ROP:
- [**(Stack) Shellcode**](#stack-shellcode): To jest przydatne do przechowywania shellcode na stosie przed lub po nadpisaniu wskaźnika powrotu, a następnie **skok do niego**, aby go wykonać:
-- **W każdym przypadku, jeśli istnieje** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/)**,** w zwykłym bof będziesz musiał to obejść (leak).
-- **Bez** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **i** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md) możliwe jest skok do adresu stosu, ponieważ nigdy się nie zmieni.
-- **Z** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) będziesz potrzebował technik takich jak [**ret2esp/ret2reg**](../rop-return-oriented-programing/ret2esp-ret2reg.md), aby do niego skoczyć.
-- **Z** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md), będziesz musiał użyć [**ROP**](../rop-return-oriented-programing/), **aby wywołać `memprotect`** i uczynić stronę `rwx`, aby następnie **przechować shellcode tam** (wywołując read na przykład) i następnie tam skoczyć.
+- **W każdym przypadku, jeśli istnieje** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/index.html)**,** w zwykłym bof będziesz musiał to obejść (leak).
+- **Bez** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **i** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md) możliwe jest skok do adresu stosu, ponieważ nigdy się nie zmieni.
+- **Z** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) będziesz potrzebował technik takich jak [**ret2esp/ret2reg**](../rop-return-oriented-programing/ret2esp-ret2reg.md), aby skoczyć do niego.
+- **Z** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md), będziesz musiał użyć [**ROP**](../rop-return-oriented-programing/index.html) **do wywołania `memprotect`** i uczynić stronę `rwx`, aby następnie **przechować shellcode tam** (wywołując read na przykład) i następnie skoczyć tam.
- To połączy shellcode z łańcuchem ROP.
#### Poprzez syscalls
-- [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/): Przydatne do wywołania `execve`, aby uruchomić arbitralne polecenia. Musisz być w stanie znaleźć **gadżety do wywołania konkretnego syscall z parametrami**.
-- Jeśli [**ASLR**](../common-binary-protections-and-bypasses/aslr/) lub [**PIE**](../common-binary-protections-and-bypasses/pie/) są włączone, będziesz musiał je pokonać **w celu użycia gadżetów ROP** z binarnego lub bibliotek.
-- [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/) może być przydatne do przygotowania **ret2execve**.
+- [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/index.html): Przydatne do wywołania `execve`, aby uruchomić arbitralne polecenia. Musisz być w stanie znaleźć **gadżety do wywołania konkretnego syscall z parametrami**.
+- Jeśli [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) lub [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) są włączone, będziesz musiał je pokonać **w celu użycia gadżetów ROP** z binarnego lub bibliotek.
+- [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/index.html) może być przydatne do przygotowania **ret2execve**.
- Gadżety z [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) i [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md), aby kontrolować kilka rejestrów.
#### Poprzez libc
-- [**Ret2lib**](../rop-return-oriented-programing/ret2lib/): Przydatne do wywołania funkcji z biblioteki (zwykle z **`libc`**) jak **`system`** z pewnymi przygotowanymi argumentami (np. `'/bin/sh'`). Musisz, aby binarny **załadował bibliotekę** z funkcją, którą chciałbyś wywołać (zwykle libc).
-- Jeśli **skompilowane statycznie i bez** [**PIE**](../common-binary-protections-and-bypasses/pie/), **adres** `system` i `/bin/sh` nie zmienią się, więc możliwe jest ich użycie statycznie.
-- **Bez** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **i znając wersję libc** załadowaną, **adres** `system` i `/bin/sh` nie zmienią się, więc możliwe jest ich użycie statycznie.
-- Z [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **ale bez** [**PIE**](../common-binary-protections-and-bypasses/pie/)**, znając libc i z binarnym używającym funkcji `system`** możliwe jest **`ret` do adresu system w GOT** z adresem `'/bin/sh'` w parametrze (musisz to ustalić).
-- Z [ASLR](../common-binary-protections-and-bypasses/aslr/) ale bez [PIE](../common-binary-protections-and-bypasses/pie/), znając libc i **bez binarnego używającego `system`**:
+- [**Ret2lib**](../rop-return-oriented-programing/ret2lib/index.html): Przydatne do wywołania funkcji z biblioteki (zwykle z **`libc`**) jak **`system`** z pewnymi przygotowanymi argumentami (np. `'/bin/sh'`). Musisz, aby binarny **załadował bibliotekę** z funkcją, którą chciałbyś wywołać (zwykle libc).
+- Jeśli **skompilowane statycznie i bez** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html), **adres** `system` i `/bin/sh` nie będą się zmieniać, więc możliwe jest ich użycie statycznie.
+- **Bez** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **i znając wersję libc** załadowaną, **adres** `system` i `/bin/sh` nie będą się zmieniać, więc możliwe jest ich użycie statycznie.
+- Z [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **ale bez** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html)**, znając libc i z binarnym używającym funkcji `system`**, możliwe jest **`ret` do adresu system w GOT** z adresem `'/bin/sh'` w parametrze (musisz to ustalić).
+- Z [ASLR](../common-binary-protections-and-bypasses/aslr/index.html) ale bez [PIE](../common-binary-protections-and-bypasses/pie/index.html), znając libc i **bez binarnego używającego `system`**:
- Użyj [**`ret2dlresolve`**](../rop-return-oriented-programing/ret2dlresolve.md), aby rozwiązać adres `system` i go wywołać.
-- **Obejdź** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) i oblicz adres `system` i `'/bin/sh'` w pamięci.
-- **Z** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **i** [**PIE**](../common-binary-protections-and-bypasses/pie/) **i nie znając libc**: Musisz:
-- Obejść [**PIE**](../common-binary-protections-and-bypasses/pie/).
-- Znaleźć **wersję `libc`** używaną (wyciek kilku adresów funkcji).
+- **Obejdź** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) i oblicz adres `system` i `'/bin/sh'` w pamięci.
+- **Z** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **i** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) **i nie znając libc**: Musisz:
+- Obejść [**PIE**](../common-binary-protections-and-bypasses/pie/index.html).
+- Znaleźć **wersję libc** używaną (leak kilka adresów funkcji).
- Sprawdzić **poprzednie scenariusze z ASLR**, aby kontynuować.
#### Poprzez EBP/RBP
- [**Pivotowanie Stosu / EBP2Ret / Łańcuchowanie EBP**](../stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md): Kontroluj ESP, aby kontrolować RET poprzez przechowywany EBP na stosie.
- Przydatne dla **off-by-one** przepełnień stosu.
-- Przydatne jako alternatywny sposób na kontrolowanie EIP, nadużywając EIP do skonstruowania ładunku w pamięci, a następnie skacząc do niego poprzez EBP.
+- Przydatne jako alternatywny sposób na kontrolowanie EIP, nadużywając EIP do skonstruowania ładunku w pamięci, a następnie skacząc do niego za pomocą EBP.
#### Różne
- [**Przekierowywanie Wskaźników**](../stack-overflow/pointer-redirecting.md): W przypadku, gdy stos zawiera wskaźniki do funkcji, która ma być wywołana, lub do ciągu, który ma być użyty przez interesującą funkcję (system lub printf), możliwe jest nadpisanie tego adresu.
-- [**ASLR**](../common-binary-protections-and-bypasses/aslr/) lub [**PIE**](../common-binary-protections-and-bypasses/pie/) mogą wpływać na adresy.
+- [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) lub [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) mogą wpływać na adresy.
- [**Niezainicjowane zmienne**](../stack-overflow/uninitialized-variables.md): Nigdy nie wiesz.
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md b/src/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md
index 8491be1ca..6aa571cfd 100644
--- a/src/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md
+++ b/src/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md
@@ -4,13 +4,13 @@
## Podstawowe informacje
-Bit **No-Execute (NX)**, znany również jako **Execute Disable (XD)** w terminologii Intela, to funkcja zabezpieczeń oparta na sprzęcie, zaprojektowana w celu **łagodzenia** skutków ataków **buffer overflow**. Po wdrożeniu i włączeniu, odróżnia obszary pamięci przeznaczone na **kod wykonywalny** od tych przeznaczonych na **dane**, takich jak **stos** i **sterta**. Główna idea polega na zapobieganiu wykonaniu złośliwego kodu przez atakującego poprzez wykorzystanie luk w buffer overflow, umieszczając złośliwy kod na stosie i kierując do niego przepływ wykonania.
+Bit **No-Execute (NX)**, znany również jako **Execute Disable (XD)** w terminologii Intela, to funkcja zabezpieczeń oparta na sprzęcie, zaprojektowana w celu **łagodzenia** skutków ataków **buffer overflow**. Gdy jest wdrożona i włączona, rozróżnia obszary pamięci przeznaczone na **kod wykonywalny** i te przeznaczone na **dane**, takie jak **stos** i **sterta**. Główna idea polega na zapobieganiu wykonaniu złośliwego kodu przez atakującego poprzez wykorzystanie luk w buffer overflow, umieszczając złośliwy kod na stosie i kierując do niego przepływ wykonania.
## Obejścia
-- Możliwe jest użycie technik takich jak [**ROP**](../rop-return-oriented-programing/) **w celu obejścia** tej ochrony poprzez wykonywanie fragmentów kodu wykonywalnego już obecnego w binarnym.
-- [**Ret2libc**](../rop-return-oriented-programing/ret2lib/)
-- [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/)
+- Możliwe jest użycie technik takich jak [**ROP**](../rop-return-oriented-programing/index.html) **w celu obejścia** tej ochrony poprzez wykonywanie fragmentów kodu wykonywalnego już obecnego w binarnym.
+- [**Ret2libc**](../rop-return-oriented-programing/ret2lib/index.html)
+- [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/index.html)
- **Ret2...**
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md b/src/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md
index c98a6246d..db6e8beba 100644
--- a/src/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md
+++ b/src/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md
@@ -4,7 +4,7 @@
## Podstawowe informacje
-Plik binarny skompilowany jako PIE, czyli **Program niezależny od pozycji**, oznacza, że **program może być ładowany w różnych lokalizacjach pamięci** za każdym razem, gdy jest uruchamiany, co zapobiega twardo zakodowanym adresom.
+Plik binarny skompilowany jako PIE, czyli **Position Independent Executable**, oznacza, że **program może być ładowany w różnych lokalizacjach pamięci** za każdym razem, gdy jest uruchamiany, co zapobiega twardo zakodowanym adresom.
Sztuczka do wykorzystania tych binariów polega na wykorzystaniu **adresów względnych**—offsety między częściami programu pozostają takie same, nawet jeśli lokalizacje bezwzględne się zmieniają. Aby **obejść PIE, wystarczy wyciek jednego adresu**, zazwyczaj z **stosu** przy użyciu luk, takich jak ataki formatu ciągu. Gdy masz adres, możesz obliczyć inne na podstawie ich **stałych offsetów**.
@@ -17,13 +17,13 @@ Aby obejść PIE, konieczne jest **wycieknięcie jakiegoś adresu załadowanego*
- **Wyłączony ASLR**: Jeśli ASLR jest wyłączony, binarny skompilowany z PIE zawsze **będzie ładowany pod tym samym adresem**, dlatego **PIE będzie bezużyteczne**, ponieważ adresy obiektów zawsze będą w tym samym miejscu.
- Otrzymać **wyciek** (częste w łatwych wyzwaniach CTF, [**sprawdź ten przykład**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit))
-- **Brute-force wartości EBP i EIP** na stosie, aż wyciekną poprawne:
+- **Brute-force'ować wartości EBP i EIP** na stosie, aż wyciekną poprawne:
{{#ref}}
bypassing-canary-and-pie.md
{{#endref}}
-- Użyj luki **arbitralnego odczytu**, takiej jak [**format ciągu**](../../format-strings/), aby wyciekować adres binarnego (np. ze stosu, jak w poprzedniej technice), aby uzyskać bazę binarnego i użyć offsetów stamtąd. [**Znajdź przykład tutaj**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass).
+- Użyć luki **arbitralnego odczytu**, takiej jak [**format string**](../../format-strings/index.html), aby wyciekł adres binarnego (np. ze stosu, jak w poprzedniej technice), aby uzyskać bazę binarnego i użyć offsetów stamtąd. [**Znajdź przykład tutaj**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass).
## Odniesienia
diff --git a/src/binary-exploitation/libc-heap/heap-overflow.md b/src/binary-exploitation/libc-heap/heap-overflow.md
index c415b83fc..1f153ba06 100644
--- a/src/binary-exploitation/libc-heap/heap-overflow.md
+++ b/src/binary-exploitation/libc-heap/heap-overflow.md
@@ -4,9 +4,9 @@
## Podstawowe informacje
-Heap overflow jest jak [**stack overflow**](../stack-overflow/), ale w stercie. Zasadniczo oznacza to, że pewna przestrzeń została zarezerwowana w stercie do przechowywania danych, a **przechowywane dane były większe niż zarezerwowana przestrzeń.**
+Heap overflow jest jak [**stack overflow**](../stack-overflow/index.html), ale w stercie. Zasadniczo oznacza to, że pewna przestrzeń została zarezerwowana w stercie do przechowywania danych, a **przechowywane dane były większe niż zarezerwowana przestrzeń.**
-W przypadku stack overflow wiemy, że niektóre rejestry, takie jak wskaźnik instrukcji czy ramka stosu, będą przywracane ze stosu i może to być możliwe do nadużycia. W przypadku heap overflow **nie ma żadnych wrażliwych informacji przechowywanych domyślnie** w kawałku sterty, który może być przepełniony. Jednak mogą to być wrażliwe informacje lub wskaźniki, więc **krytyczność** tej podatności **zależy** od **tego, jakie dane mogą być nadpisane** i jak napastnik mógłby to wykorzystać.
+W przypadku stack overflow wiemy, że niektóre rejestry, takie jak wskaźnik instrukcji czy ramka stosu, będą przywracane ze stosu i można to wykorzystać. W przypadku heap overflow **nie ma żadnych wrażliwych informacji przechowywanych domyślnie** w kawałku sterty, który może być przepełniony. Jednak mogą to być wrażliwe informacje lub wskaźniki, więc **krytyczność** tej podatności **zależy** od **tego, jakie dane mogą być nadpisane** i jak atakujący może to wykorzystać.
> [!TIP]
> Aby znaleźć przesunięcia przepełnienia, możesz użyć tych samych wzorców, co w przypadku [**stack overflow**](../stack-overflow/index.html#finding-stack-overflows-offsets).
@@ -15,27 +15,27 @@ W przypadku stack overflow wiemy, że niektóre rejestry, takie jak wskaźnik in
W przypadku stack overflow układ i dane, które będą obecne na stosie w momencie, gdy podatność może zostać wyzwolona, są dość wiarygodne. Dzieje się tak, ponieważ stos jest liniowy, zawsze rośnie w kolidującej pamięci, w **konkretnych miejscach działania programu pamięć stosu zazwyczaj przechowuje podobny rodzaj danych** i ma pewną specyficzną strukturę z pewnymi wskaźnikami na końcu części stosu używanej przez każdą funkcję.
-Jednak w przypadku heap overflow używana pamięć nie jest liniowa, ale **alokowane kawałki są zazwyczaj w oddzielnych pozycjach pamięci** (nie jeden obok drugiego) z powodu **koszyków i stref** oddzielających alokacje według rozmiaru oraz dlatego, że **wcześniej zwolniona pamięć jest używana** przed alokowaniem nowych kawałków. Jest **skomplikowane, aby wiedzieć, jaki obiekt będzie kolidował z tym, który jest podatny** na przepełnienie sterty. Dlatego, gdy znajdzie się przepełnienie sterty, konieczne jest znalezienie **wiarygodnego sposobu, aby pożądany obiekt był następny w pamięci** od tego, który może być przepełniony.
+Jednak w przypadku heap overflow używana pamięć nie jest liniowa, ale **alokowane kawałki są zazwyczaj w oddzielnych pozycjach pamięci** (nie jeden obok drugiego) z powodu **koszyków i stref** oddzielających alokacje według rozmiaru oraz dlatego, że **wcześniej zwolniona pamięć jest używana** przed alokowaniem nowych kawałków. **Trudno jest wiedzieć, który obiekt będzie kolidował z tym, który jest podatny** na heap overflow. Dlatego, gdy znajdzie się heap overflow, konieczne jest znalezienie **wiarygodnego sposobu, aby pożądany obiekt był następny w pamięci** od tego, który może być przepełniony.
Jedną z technik używanych do tego jest **Heap Grooming**, która jest używana na przykład [**w tym poście**](https://azeria-labs.com/grooming-the-ios-kernel-heap/). W poście wyjaśniono, jak w jądrze iOS, gdy strefa kończy się pamięcią do przechowywania kawałków pamięci, rozszerza ją o stronę jądra, a ta strona jest dzielona na kawałki oczekiwanych rozmiarów, które będą używane w kolejności (do wersji iOS 9.2, potem te kawałki są używane w sposób losowy, aby utrudnić wykorzystanie tych ataków).
-Dlatego w poprzednim poście, w którym występuje przepełnienie sterty, aby wymusić kolidujący obiekt, kilka **`kallocs` jest wymuszanych przez kilka wątków, aby spróbować zapewnić, że wszystkie wolne kawałki są wypełnione i że tworzona jest nowa strona**.
+Dlatego w poprzednim poście, w którym występuje heap overflow, aby wymusić kolizję przepełnionego obiektu z obiektem ofiary, kilka **`kallocs` jest wymuszanych przez kilka wątków, aby spróbować zapewnić, że wszystkie wolne kawałki są wypełnione i że nowa strona jest tworzona**.
-Aby wymusić to wypełnienie obiektami o określonym rozmiarze, **alokacja poza linią związana z portem mach iOS** jest idealnym kandydatem. Poprzez skonstruowanie rozmiaru wiadomości, możliwe jest dokładne określenie rozmiaru alokacji `kalloc`, a gdy odpowiedni port mach zostanie zniszczony, odpowiednia alokacja zostanie natychmiast zwolniona z powrotem do `kfree`.
+Aby wymusić to wypełnienie obiektami o określonym rozmiarze, **alokacja poza linią związana z portem mach iOS** jest idealnym kandydatem. Poprzez skonstruowanie rozmiaru wiadomości, można dokładnie określić rozmiar alokacji `kalloc`, a gdy odpowiedni port mach zostanie zniszczony, odpowiednia alokacja zostanie natychmiast zwolniona do `kfree`.
-Następnie niektóre z tych miejsc mogą być **zwolnione**. **Lista zwolnień `kalloc.4096` zwalnia elementy w kolejności ostatni w pierwszej kolejności**, co zasadniczo oznacza, że jeśli niektóre miejsca są zwolnione, a exploit próbuje alokować kilka obiektów ofiar, próbując alokować obiekt podatny na przepełnienie, prawdopodobne jest, że ten obiekt będzie następował po obiekcie ofiary.
+Następnie niektóre z tych miejsc mogą być **zwolnione**. Lista wolnych elementów **`kalloc.4096` zwalnia elementy w kolejności ostatni wchodzi, pierwszy wychodzi**, co zasadniczo oznacza, że jeśli niektóre miejsca są zwolnione, a exploit próbuje alokować kilka obiektów ofiar, podczas gdy próbuje alokować obiekt podatny na przepełnienie, prawdopodobne jest, że ten obiekt będzie następował po obiekcie ofiary.
### Przykład libc
-[**Na tej stronie**](https://guyinatuxedo.github.io/27-edit_free_chunk/heap_consolidation_explanation/index.html) można znaleźć podstawową emulację przepełnienia sterty, która pokazuje, jak nadpisanie bitu prev in use następnego kawałka i pozycji prev size pozwala na **skonsolidowanie używanego kawałka** (sprawiając, że myśli, że jest nieużywany) i **następnie ponowne przydzielenie go**, będąc w stanie nadpisać dane, które są używane w innym wskaźniku.
+[**Na tej stronie**](https://guyinatuxedo.github.io/27-edit_free_chunk/heap_consolidation_explanation/index.html) można znaleźć podstawową emulację heap overflow, która pokazuje, jak nadpisanie bitu prev in use następnego kawałka i pozycji prev size pozwala na **konsolidację używanego kawałka** (sprawiając, że myśli, że jest nieużywany) i **następnie ponowne przydzielenie go**, będąc w stanie nadpisać dane, które są używane w innym wskaźniku.
-Inny przykład z [**protostar heap 0**](https://guyinatuxedo.github.io/24-heap_overflow/protostar_heap0/index.html) pokazuje bardzo podstawowy przykład CTF, w którym **heap overflow** może być nadużyty do wywołania funkcji zwycięzcy, aby **zdobyć flagę**.
+Inny przykład z [**protostar heap 0**](https://guyinatuxedo.github.io/24-heap_overflow/protostar_heap0/index.html) pokazuje bardzo podstawowy przykład CTF, w którym **heap overflow** może być wykorzystany do wywołania funkcji zwycięzcy, aby **zdobyć flagę**.
-W przykładzie [**protostar heap 1**](https://guyinatuxedo.github.io/24-heap_overflow/protostar_heap1/index.html) można zobaczyć, jak nadużycie przepełnienia bufora pozwala na **nadpisanie w pobliskim kawałku adresu**, gdzie **dane użytkownika** będą zapisywane.
+W przykładzie [**protostar heap 1**](https://guyinatuxedo.github.io/24-heap_overflow/protostar_heap1/index.html) można zobaczyć, jak wykorzystując przepełnienie bufora, można **nadpisać w pobliskim kawałku adres**, gdzie **dane użytkownika** będą zapisywane.
### Przykład ARM64
-Na stronie [https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/](https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/) można znaleźć przykład przepełnienia sterty, w którym polecenie, które ma być wykonane, jest przechowywane w następnym kawałku z przepełnionego kawałka. Tak więc, możliwe jest modyfikowanie wykonywanego polecenia poprzez nadpisanie go prostym exploitem, takim jak:
+Na stronie [https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/](https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/) można znaleźć przykład heap overflow, w którym polecenie, które ma być wykonane, jest przechowywane w następnym kawałku z przepełnionego kawałka. Tak więc, możliwe jest modyfikowanie wykonywanego polecenia, nadpisując je prostym exploitem, takim jak:
```bash
python3 -c 'print("/"*0x400+"/bin/ls\x00")' > hax.txt
```
diff --git a/src/binary-exploitation/rop-return-oriented-programing/README.md b/src/binary-exploitation/rop-return-oriented-programing/README.md
index 3cc9c3ff4..9ba4a412e 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/README.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/README.md
@@ -8,22 +8,22 @@
### Jak działa ROP
-1. **Przechwytywanie przepływu kontrolnego**: Najpierw atakujący musi przechwycić przepływ kontrolny programu, zazwyczaj wykorzystując przepełnienie bufora do nadpisania zapisanej adresu powrotu na stosie.
-2. **Łączenie gadżetów**: Atakujący następnie starannie wybiera i łączy gadżety, aby wykonać pożądane działania. Może to obejmować przygotowanie argumentów do wywołania funkcji, wywołanie funkcji (np. `system("/bin/sh")`) oraz obsługę wszelkich niezbędnych czynności porządkowych lub dodatkowych operacji.
-3. **Wykonanie ładunku**: Gdy wrażliwa funkcja zwraca, zamiast wracać do legalnej lokalizacji, zaczyna wykonywać łańcuch gadżetów.
+1. **Przechwytywanie Przepływu Kontroli**: Najpierw atakujący musi przechwycić przepływ kontroli programu, zazwyczaj wykorzystując przepełnienie bufora do nadpisania zapisanej adresu powrotu na stosie.
+2. **Łączenie Gadżetów**: Atakujący następnie starannie wybiera i łączy gadżety, aby wykonać pożądane działania. Może to obejmować przygotowanie argumentów do wywołania funkcji, wywołanie funkcji (np. `system("/bin/sh")`) oraz obsługę wszelkich niezbędnych czynności porządkowych lub dodatkowych operacji.
+3. **Wykonanie Ładunku**: Gdy wrażliwa funkcja zwraca, zamiast wracać do legalnej lokalizacji, zaczyna wykonywać łańcuch gadżetów.
### Narzędzia
Zazwyczaj gadżety można znaleźć za pomocą [**ROPgadget**](https://github.com/JonathanSalwan/ROPgadget), [**ropper**](https://github.com/sashs/Ropper) lub bezpośrednio z **pwntools** ([ROP](https://docs.pwntools.com/en/stable/rop/rop.html)).
-## Przykład łańcucha ROP w x86
+## Przykład Łańcucha ROP w x86
-### **x86 (32-bit) Konwencje wywołań**
+### **x86 (32-bit) Konwencje Wywołań**
- **cdecl**: Wywołujący czyści stos. Argumenty funkcji są umieszczane na stosie w odwrotnej kolejności (od prawej do lewej). **Argumenty są umieszczane na stosie od prawej do lewej.**
- **stdcall**: Podobnie jak cdecl, ale wywoływana funkcja jest odpowiedzialna za czyszczenie stosu.
-### **Znajdowanie gadżetów**
+### **Znajdowanie Gadżetów**
Najpierw załóżmy, że zidentyfikowaliśmy niezbędne gadżety w binarnym pliku lub jego załadowanych bibliotekach. Gadżety, którymi jesteśmy zainteresowani, to:
@@ -36,8 +36,8 @@ Najpierw załóżmy, że zidentyfikowaliśmy niezbędne gadżety w binarnym plik
Używając **pwntools**, przygotowujemy stos do wykonania łańcucha ROP w następujący sposób, mając na celu wykonanie `system('/bin/sh')`, zwróć uwagę, jak łańcuch zaczyna się od:
-1. Instrukcji `ret` w celach wyrównania (opcjonalne)
-2. Adresu funkcji `system` (zakładając, że ASLR jest wyłączone i znana jest libc, więcej informacji w [**Ret2lib**](ret2lib/))
+1. Instrukcji `ret` w celach wyrównania (opcjonalnie)
+2. Adresu funkcji `system` (zakładając, że ASLR jest wyłączone i znana jest libc, więcej informacji w [**Ret2lib**](ret2lib/index.html))
3. Miejsca na adres powrotu z `system()`
4. Adresu ciągu `"/bin/sh"` (parametr dla funkcji system)
```python
@@ -77,16 +77,16 @@ p.interactive()
### **x64 (64-bit) konwencje wywołań**
-- Używa konwencji wywołań **System V AMD64 ABI** w systemach podobnych do Unix, gdzie **pierwsze sześć argumentów całkowitych lub wskaźnikowych jest przekazywanych w rejestrach `RDI`, `RSI`, `RDX`, `RCX`, `R8` i `R9`**. Dodatkowe argumenty są przekazywane na stosie. Wartość zwracana jest umieszczana w `RAX`.
+- Używa konwencji wywołań **System V AMD64 ABI** w systemach podobnych do Uniksa, gdzie **pierwsze sześć argumentów całkowitych lub wskaźnikowych jest przekazywanych w rejestrach `RDI`, `RSI`, `RDX`, `RCX`, `R8` i `R9`**. Dodatkowe argumenty są przekazywane na stosie. Wartość zwracana jest umieszczana w `RAX`.
- Konwencja wywołań **Windows x64** używa `RCX`, `RDX`, `R8` i `R9` dla pierwszych czterech argumentów całkowitych lub wskaźnikowych, a dodatkowe argumenty są przekazywane na stosie. Wartość zwracana jest umieszczana w `RAX`.
- **Rejestry**: Rejestry 64-bitowe obejmują `RAX`, `RBX`, `RCX`, `RDX`, `RSI`, `RDI`, `RBP`, `RSP` oraz `R8` do `R15`.
#### **Znajdowanie gadżetów**
-Dla naszych potrzeb skupimy się na gadżetach, które pozwolą nam ustawić rejestr **RDI** (aby przekazać ciąg **"/bin/sh"** jako argument do **system()**) i następnie wywołać funkcję **system()**. Załóżmy, że zidentyfikowaliśmy następujące gadżety:
+Dla naszych potrzeb skupmy się na gadżetach, które pozwolą nam ustawić rejestr **RDI** (aby przekazać ciąg **"/bin/sh"** jako argument do **system()**) i następnie wywołać funkcję **system()**. Zakładamy, że zidentyfikowaliśmy następujące gadżety:
- **pop rdi; ret**: Przenosi górną wartość stosu do **RDI** i następnie zwraca. Niezbędne do ustawienia naszego argumentu dla **system()**.
-- **ret**: Proste zwrócenie, przydatne do wyrównania stosu w niektórych scenariuszach.
+- **ret**: Proste wywołanie zwrotne, przydatne do wyrównania stosu w niektórych scenariuszach.
I znamy adres funkcji **system()**.
@@ -140,7 +140,7 @@ W tym przykładzie:
## Główna różnica między x86 a x64
> [!TIP]
-> Ponieważ **x64 używa rejestrów dla pierwszych kilku argumentów**, często wymaga mniej gadżetów niż x86 do prostych wywołań funkcji, ale znalezienie i połączenie odpowiednich gadżetów może być bardziej skomplikowane z powodu zwiększonej liczby rejestrów i większej przestrzeni adresowej. Zwiększona liczba rejestrów i większa przestrzeń adresowa w architekturze **x64** stwarzają zarówno możliwości, jak i wyzwania dla rozwoju exploitów, szczególnie w kontekście Programowania Opartego na Zwracaniu (ROP).
+> Ponieważ **x64 używa rejestrów dla pierwszych kilku argumentów**, często wymaga mniej gadżetów niż x86 do prostych wywołań funkcji, ale znalezienie i połączenie odpowiednich gadżetów może być bardziej skomplikowane z powodu zwiększonej liczby rejestrów i większej przestrzeni adresowej. Zwiększona liczba rejestrów i większa przestrzeń adresowa w architekturze **x64** stwarzają zarówno możliwości, jak i wyzwania dla rozwoju exploitów, szczególnie w kontekście Programowania Opartego na Powrocie (ROP).
## Przykład łańcucha ROP w ARM64
@@ -154,8 +154,8 @@ Sprawdź następującą stronę w celu uzyskania tych informacji:
## Ochrony przed ROP
-- [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **&** [**PIE**](../common-binary-protections-and-bypasses/pie/): Te zabezpieczenia utrudniają użycie ROP, ponieważ adresy gadżetów zmieniają się między wykonaniami.
-- [**Stack Canaries**](../common-binary-protections-and-bypasses/stack-canaries/): W przypadku BOF, konieczne jest ominięcie przechowywanych kanarków stosu, aby nadpisać wskaźniki powrotu i wykorzystać łańcuch ROP.
+- [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **&** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html): Te zabezpieczenia utrudniają użycie ROP, ponieważ adresy gadżetów zmieniają się między wykonaniami.
+- [**Stack Canaries**](../common-binary-protections-and-bypasses/stack-canaries/index.html): W przypadku BOF, konieczne jest ominięcie przechowywanych kanarków stosu, aby nadpisać wskaźniki powrotu i wykorzystać łańcuch ROP.
- **Brak Gadżetów**: Jeśli nie ma wystarczającej liczby gadżetów, nie będzie możliwe wygenerowanie łańcucha ROP.
## Techniki oparte na ROP
diff --git a/src/binary-exploitation/rop-return-oriented-programing/ret2csu.md b/src/binary-exploitation/rop-return-oriented-programing/ret2csu.md
index 588595b6a..108da57be 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/ret2csu.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/ret2csu.md
@@ -10,7 +10,7 @@
Gdy program korzysta z określonych bibliotek (takich jak libc), ma wbudowane funkcje do zarządzania tym, jak różne części programu komunikują się ze sobą. Wśród tych funkcji znajdują się ukryte skarby, które mogą działać jako nasze brakujące gadgets, szczególnie jedna o nazwie `__libc_csu_init`.
-### Magiczne gadgets w \_\_libc_csu_init
+### Magiczne Gadgets w \_\_libc_csu_init
W **`__libc_csu_init`** znajdują się dwie sekwencje instrukcji (gadgets), które warto wyróżnić:
@@ -27,8 +27,8 @@ ret;
To urządzenie pozwala nam kontrolować te rejestry, wypychając wartości ze stosu do nich.
2. Druga sekwencja wykorzystuje wartości, które ustawiliśmy, aby wykonać kilka rzeczy:
-- **Przenieś konkretne wartości do innych rejestrów**, przygotowując je do użycia jako parametry w funkcjach.
-- **Wykonaj wywołanie do lokalizacji** określonej przez dodanie wartości w r15 i rbx, a następnie pomnożenie rbx przez 8.
+- **Przenieść konkretne wartości do innych rejestrów**, przygotowując je do użycia jako parametry w funkcjach.
+- **Wykonać wywołanie do lokalizacji** określonej przez dodanie wartości w r15 i rbx, a następnie pomnożenie rbx przez 8.
```armasm
mov rdx, r15;
mov rsi, r14;
@@ -50,7 +50,7 @@ ret
Warunki będą następujące:
- `[r12 + rbx*8]` musi wskazywać na adres przechowujący wywoływalną funkcję (jeśli nie masz pomysłu i nie ma pie, możesz po prostu użyć funkcji `_init`):
-- Jeśli \_init znajduje się pod `0x400560`, użyj GEF, aby wyszukać wskaźnik w pamięci do niej i sprawić, aby `[r12 + rbx*8]` był adresem z wskaźnikiem do \_init:
+- Jeśli \_init znajduje się pod adresem `0x400560`, użyj GEF, aby wyszukać wskaźnik w pamięci do niego i sprawić, aby `[r12 + rbx*8]` był adresem z wskaźnikiem do \_init:
```bash
# Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
gef➤ search-pattern 0x400560
@@ -79,14 +79,14 @@ brop-blind-return-oriented-programming.md
### Używając wywołania
-Wyobraź sobie, że chcesz wykonać syscall lub wywołać funkcję, taką jak `write()`, ale potrzebujesz specyficznych wartości w rejestrach `rdx` i `rsi` jako parametrów. Zwykle szukałbyś gadżetów, które bezpośrednio ustawiają te rejestry, ale nie możesz znaleźć żadnych.
+Wyobraź sobie, że chcesz wykonać syscall lub wywołać funkcję taką jak `write()`, ale potrzebujesz specyficznych wartości w rejestrach `rdx` i `rsi` jako parametrów. Zwykle szukałbyś gadżetów, które bezpośrednio ustawiają te rejestry, ale nie możesz znaleźć żadnych.
-Tutaj wkracza **ret2csu**:
+Tutaj wchodzi w grę **ret2csu**:
-1. **Ustaw rejestry**: Użyj pierwszego magicznego gadżetu, aby zrzucić wartości ze stosu do rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx) i r15.
-2. **Użyj drugiego gadżetu**: Gdy te rejestry są ustawione, używasz drugiego gadżetu. To pozwala ci przenieść wybrane wartości do `rdx` i `rsi` (z r14 i r13, odpowiednio), przygotowując parametry do wywołania funkcji. Co więcej, kontrolując `r15` i `rbx`, możesz sprawić, że program wywoła funkcję znajdującą się pod adresem, który obliczasz i umieszczasz w `[r15 + rbx*8]`.
+1. **Ustaw rejestry**: Użyj pierwszego magicznego gadżetu, aby popchnąć wartości ze stosu do rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx) i r15.
+2. **Użyj drugiego gadżetu**: Gdy te rejestry są ustawione, używasz drugiego gadżetu. To pozwala ci przenieść wybrane wartości do `rdx` i `rsi` (z r14 i r13, odpowiednio), przygotowując parametry do wywołania funkcji. Co więcej, kontrolując `r15` i `rbx`, możesz sprawić, że program wywoła funkcję znajdującą się pod adresem, który obliczysz i umieścisz w `[r15 + rbx*8]`.
-Masz [**przykład używający tej techniki i wyjaśniający to tutaj**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), a oto ostateczny exploit, który został użyty:
+Masz [**przykład używający tej techniki i wyjaśniający to tutaj**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), a to jest ostateczny exploit, który wykorzystano:
```python
from pwn import *
@@ -111,7 +111,7 @@ p.sendline(p64(elf.sym['win'])) # send to gets() so it's written
print(p.recvline()) # should receive "Awesome work!"
```
> [!WARNING]
-> Zauważ, że poprzedni exploit nie ma na celu wykonania **`RCE`**, ma na celu jedynie wywołanie funkcji o nazwie **`win`** (biorąc adres `win` z stdin wywołując gets w łańcuchu ROP i przechowując go w r15) z trzecim argumentem o wartości `0xdeadbeefcafed00d`.
+> Zauważ, że poprzedni exploit nie jest przeznaczony do wykonania **`RCE`**, ma na celu jedynie wywołanie funkcji o nazwie **`win`** (biorąc adres `win` z stdin wywołując gets w łańcuchu ROP i przechowując go w r15) z trzecim argumentem o wartości `0xdeadbeefcafed00d`.
### Ominięcie wywołania i dotarcie do ret
@@ -165,8 +165,8 @@ payload += ret2win
target.sendline(payload)
target.interactive()
```
-### Dlaczego nie po prostu używać libc bezpośrednio?
+### Dlaczego nie używać bezpośrednio libc?
-Zazwyczaj te przypadki są również podatne na [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/), ale czasami musisz kontrolować więcej parametrów, niż można łatwo kontrolować za pomocą gadżetów, które znajdziesz bezpośrednio w libc. Na przykład, funkcja `write()` wymaga trzech parametrów, a **znalezienie gadżetów do ustawienia wszystkich tych parametrów bezpośrednio może być niemożliwe**.
+Zazwyczaj te przypadki są również podatne na [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/index.html), ale czasami musisz kontrolować więcej parametrów, niż można łatwo kontrolować za pomocą gadżetów, które znajdziesz bezpośrednio w libc. Na przykład, funkcja `write()` wymaga trzech parametrów, a **znalezienie gadżetów do ustawienia wszystkich tych parametrów bezpośrednio może być niemożliwe**.
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md b/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md
index c494c2b2a..6588138c7 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md
@@ -4,16 +4,16 @@
## Podstawowe informacje
-Jak wyjaśniono na stronie o [**GOT/PLT**](../arbitrary-write-2-exec/aw2exec-got-plt.md) i [**Relro**](../common-binary-protections-and-bypasses/relro.md), binaria bez Full Relro będą rozwiązywać symbole (takie jak adresy do zewnętrznych bibliotek) za pierwszym razem, gdy są używane. To rozwiązywanie odbywa się poprzez wywołanie funkcji **`_dl_runtime_resolve`**.
+Jak wyjaśniono na stronie o [**GOT/PLT**](../arbitrary-write-2-exec/aw2exec-got-plt.md) i [**Relro**](../common-binary-protections-and-bypasses/relro.md), binaria bez Full Relro będą rozwiązywać symbole (jak adresy do zewnętrznych bibliotek) za pierwszym razem, gdy są używane. To rozwiązywanie odbywa się poprzez wywołanie funkcji **`_dl_runtime_resolve`**.
Funkcja **`_dl_runtime_resolve`** pobiera ze stosu odniesienia do niektórych struktur, których potrzebuje, aby **rozwiązać** określony symbol.
-Dlatego możliwe jest **sfałszowanie wszystkich tych struktur**, aby dynamicznie powiązane rozwiązywanie żądanego symbolu (takiego jak funkcja **`system`**) i wywołanie go z skonfigurowanym parametrem (np. **`system('/bin/sh')`**).
+Dlatego możliwe jest **sfałszowanie wszystkich tych struktur**, aby dynamicznie powiązane rozwiązywanie żądanego symbolu (jak funkcja **`system`**) i wywołanie jej z skonfigurowanym parametrem (np. **`system('/bin/sh')`**).
-Zazwyczaj wszystkie te struktury są fałszowane poprzez stworzenie **początkowego łańcucha ROP, który wywołuje `read`** w pamięci zapisywalnej, następnie **struktury** i ciąg **`'/bin/sh'** są przekazywane, aby zostały zapisane przez `read` w znanej lokalizacji, a następnie łańcuch ROP kontynuuje, wywołując **`_dl_runtime_resolve`**, mając na celu **rozwiązanie adresu `system`** w fałszywych strukturach i **wywołanie tego adresu** z adresem do `$'/bin/sh'`.
+Zazwyczaj wszystkie te struktury są fałszowane poprzez stworzenie **początkowego łańcucha ROP, który wywołuje `read`** na zapisywalnej pamięci, następnie **struktury** i ciąg **`'/bin/sh'** są przekazywane, aby zostały zapisane przez `read` w znanej lokalizacji, a następnie łańcuch ROP kontynuuje, wywołując **`_dl_runtime_resolve`**, mając na celu **rozwiązanie adresu `system`** w fałszywych strukturach i **wywołanie tego adresu** z adresem do `$'/bin/sh'`.
> [!TIP]
-> Ta technika jest szczególnie przydatna, jeśli nie ma gadżetów syscall (aby używać technik takich jak [**ret2syscall**](rop-syscall-execv/) lub [SROP](srop-sigreturn-oriented-programming/)) i nie ma sposobów na wyciek adresów libc.
+> Ta technika jest szczególnie przydatna, jeśli nie ma gadżetów syscall (aby używać technik takich jak [**ret2syscall**](rop-syscall-execv/index.html) lub [SROP](srop-sigreturn-oriented-programming/index.html)) i nie ma sposobów na wyciek adresów libc.
Sprawdź ten film, aby uzyskać ładne wyjaśnienie tej techniki w drugiej połowie filmu:
@@ -29,7 +29,7 @@ Lub sprawdź te strony, aby uzyskać krok po kroku wyjaśnienie:
## Podsumowanie ataku
1. Napisz fałszywe struktury w jakimś miejscu
-2. Ustaw pierwszy argument system (`$rdi = &'/bin/sh'`)
+2. Ustaw pierwszy argument funkcji system (`$rdi = &'/bin/sh'`)
3. Ustaw na stosie adresy do struktur, aby wywołać **`_dl_runtime_resolve`**
4. **Wywołaj** `_dl_runtime_resolve`
5. **`system`** zostanie rozwiązany i wywołany z `'/bin/sh'` jako argument
diff --git a/src/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md b/src/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md
index cf05324ab..6504dff6c 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md
@@ -6,9 +6,9 @@
**Ponieważ ESP (wskaźnik stosu) zawsze wskazuje na szczyt stosu**, technika ta polega na zastąpieniu EIP (wskaźnik instrukcji) adresem instrukcji **`jmp esp`** lub **`call esp`**. Dzięki temu shellcode jest umieszczany tuż po nadpisanym EIP. Gdy instrukcja `ret` jest wykonywana, ESP wskazuje na następny adres, dokładnie tam, gdzie przechowywany jest shellcode.
-Jeśli **Randomizacja układu przestrzeni adresowej (ASLR)** nie jest włączona w systemie Windows lub Linux, możliwe jest użycie instrukcji `jmp esp` lub `call esp` znajdujących się w bibliotekach współdzielonych. Jednak przy aktywnym [**ASLR**](../common-binary-protections-and-bypasses/aslr/) może być konieczne poszukiwanie tych instrukcji w samym podatnym programie (i może być konieczne pokonanie [**PIE**](../common-binary-protections-and-bypasses/pie/)).
+Jeśli **Randomizacja układu przestrzeni adresowej (ASLR)** nie jest włączona w systemie Windows lub Linux, możliwe jest użycie instrukcji `jmp esp` lub `call esp` znajdujących się w bibliotekach współdzielonych. Jednak przy aktywnym [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) może być konieczne poszukiwanie tych instrukcji w samym podatnym programie (i może być konieczne pokonanie [**PIE**](../common-binary-protections-and-bypasses/pie/index.html)).
-Ponadto, możliwość umieszczenia shellcode **po uszkodzeniu EIP**, a nie w środku stosu, zapewnia, że wszelkie instrukcje `push` lub `pop` wykonywane podczas działania funkcji nie zakłócają shellcode. Taka interferencja mogłaby wystąpić, gdyby shellcode był umieszczony w środku stosu funkcji.
+Ponadto, możliwość umieszczenia shellcode **po uszkodzeniu EIP**, a nie w środku stosu, zapewnia, że wszelkie instrukcje `push` lub `pop` wykonywane podczas działania funkcji nie zakłócają shellcode. Tego rodzaju zakłócenia mogłyby wystąpić, gdyby shellcode był umieszczony w środku stosu funkcji.
### Brak miejsca
@@ -78,7 +78,7 @@ target.interactive()
```
## Ret2reg
-Podobnie, jeśli wiemy, że funkcja zwraca adres, w którym przechowywany jest shellcode, możemy wykorzystać instrukcje **`call eax`** lub **`jmp eax`** (znane jako technika **ret2eax**), oferując inny sposób na wykonanie naszego shellcode. Tak jak eax, **dowolny inny rejestr** zawierający interesujący adres może być użyty (**ret2reg**).
+Podobnie, jeśli wiemy, że funkcja zwraca adres, w którym przechowywany jest shellcode, możemy wykorzystać instrukcje **`call eax`** lub **`jmp eax`** (znane jako technika **ret2eax**), oferując inny sposób na wykonanie naszego shellcode. Tak jak eax, **dowolny inny rejestr** zawierający interesujący adres mógłby być użyty (**ret2reg**).
### Przykład
@@ -159,13 +159,13 @@ p.sendline(payload)
p.interactive()
```
> [!WARNING]
-> Jeśli zamiast `fgets` użyto by czegoś takiego jak **`read`**, możliwe byłoby obejście PIE również przez **tylko nadpisanie ostatnich 2 bajtów adresu powrotu**, aby wrócić do instrukcji `br x0;` bez potrzeby znajomości pełnego adresu.\
+> Jeśli zamiast `fgets` użyto by czegoś takiego jak **`read`**, możliwe byłoby obejście PIE również przez **przypadkowe nadpisanie ostatnich 2 bajtów adresu powrotu**, aby wrócić do instrukcji `br x0;` bez potrzeby znajomości pełnego adresu.\
> Z `fgets` to nie działa, ponieważ **dodaje bajt null (0x00) na końcu**.
## Ochrony
- [**NX**](../common-binary-protections-and-bypasses/no-exec-nx.md): Jeśli stos nie jest wykonywalny, to nie pomoże, ponieważ musimy umieścić shellcode na stosie i skoczyć, aby go wykonać.
-- [**ASLR**](../common-binary-protections-and-bypasses/aslr/) & [**PIE**](../common-binary-protections-and-bypasses/pie/): Mogą one utrudnić znalezienie instrukcji, do której można skoczyć do esp lub innego rejestru.
+- [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) & [**PIE**](../common-binary-protections-and-bypasses/pie/index.html): Mogą utrudnić znalezienie instrukcji, do której można skoczyć do esp lub innego rejestru.
## Odniesienia
diff --git a/src/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md b/src/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
index 2a5c82135..a868ba5c7 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
@@ -4,7 +4,7 @@
## 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 syscall `sys_execve` z pewnymi argumentami, aby wykonać `/bin/sh`. Technika ta jest zazwyczaj stosowana w binariach, które są kompilowane 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 syscall `sys_execve` z pewnymi argumentami, aby wykonać `/bin/sh`. Technika ta jest zazwyczaj stosowana w binariach skompilowanych statycznie, więc może być wiele gadżetów i instrukcji syscall.
Aby przygotować wywołanie dla **syscall**, potrzebna jest następująca konfiguracja:
@@ -16,7 +16,7 @@ Aby przygotować wywołanie dla **syscall**, potrzebna jest następująca konfig
Tak więc, zasadniczo trzeba napisać ciąg `/bin/sh` gdzieś, a następnie wykonać `syscall` (biorąc pod uwagę potrzebne wypełnienie do kontrolowania stosu). W tym celu potrzebujemy gadżetu, aby zapisać `/bin/sh` w znanym obszarze.
> [!TIP]
-> Innym interesującym syscall do wywołania jest **`mprotect`**, który pozwoliłby atakującemu na **zmodyfikowanie uprawnień strony w pamięci**. Może to być połączone z [**ret2shellcode**](../../stack-overflow/stack-shellcode/).
+> Innym interesującym syscall do wywołania jest **`mprotect`**, który pozwoliłby atakującemu na **zmodyfikowanie uprawnień strony w pamięci**. Można to połączyć z [**ret2shellcode**](../../stack-overflow/stack-shellcode/index.html).
## Gadżety rejestrów
@@ -45,14 +45,14 @@ Start End Offset Perm Path
```
### Zapisz ciąg w pamięci
-Następnie musisz znaleźć sposób na zapisanie dowolnej treści pod tym adresem.
+Następnie musisz znaleźć sposób na zapisanie dowolnej zawartości pod tym adresem.
```python
ROPgadget --binary speedrun-001 | grep " : mov qword ptr \["
mov qword ptr [rax], rdx ; ret #Write in the rax address the content of rdx
```
### Automatyzacja łańcucha ROP
-Poniższe polecenie tworzy pełny łańcuch `sys_execve` ROP dla statycznego binarnego pliku, gdy dostępne są gadżety write-what-where oraz instrukcje syscall:
+Poniższe polecenie tworzy pełny łańcuch ROP `sys_execve` dla statycznego binarnego pliku, gdy dostępne są gadżety write-what-where oraz instrukcje syscall:
```bash
ROPgadget --binary vuln --ropchain
```
diff --git a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
index 6c44cc7a7..43fb210b9 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
@@ -19,7 +19,7 @@ Zauważ, że byłby to **typ Ret2syscall**, który znacznie ułatwia kontrolowan
../rop-syscall-execv/
{{#endref}}
-Jeśli jesteś ciekawy, to jest to **struktura sigcontext** przechowywana na stosie, aby później odzyskać wartości (diagram z [**tutaj**](https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html)):
+Jeśli jesteś ciekawy, to jest to **struktura sigcontext** przechowywana na stosie w celu późniejszego odzyskania wartości (diagram z [**tutaj**](https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html)):
```
+--------------------+--------------------+
| rt_sigeturn() | uc_flags |
@@ -90,7 +90,7 @@ payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
-Sprawdź również [**eksploit stąd**](https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html), gdzie binarka już wywoływała `sigreturn`, więc nie ma potrzeby budowania tego z **ROP**:
+Sprawdź również [**eksploit stąd**](https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html), gdzie binarka już wywoływała `sigreturn`, więc nie ma potrzeby budować tego z **ROP**:
```python
from pwn import *
@@ -128,14 +128,14 @@ target.interactive()
- [https://youtu.be/ADULSwnQs-s?feature=shared](https://youtu.be/ADULSwnQs-s?feature=shared)
- [https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop)
- [https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html](https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html)
-- Binarne assembly, które pozwala na **zapis do stosu** i następnie wywołuje syscall **`sigreturn`**. Możliwe jest zapisanie na stosie [**ret2syscall**](../rop-syscall-execv/) za pomocą struktury **sigreturn** i odczytanie flagi, która znajduje się w pamięci binarnej.
+- Zestawienie w asemblerze, które pozwala na **zapis na stosie** i następnie wywołuje syscall **`sigreturn`**. Możliwe jest zapisanie na stosie [**ret2syscall**](../rop-syscall-execv/index.html) za pomocą struktury **sigreturn** i odczytanie flagi, która znajduje się w pamięci binarnej.
- [https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html](https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html)
-- Binarne assembly, które pozwala na **zapis do stosu** i następnie wywołuje syscall **`sigreturn`**. Możliwe jest zapisanie na stosie [**ret2syscall**](../rop-syscall-execv/) za pomocą struktury **sigreturn** (binarne zawiera ciąg `/bin/sh`).
+- Zestawienie w asemblerze, które pozwala na **zapis na stosie** i następnie wywołuje syscall **`sigreturn`**. Możliwe jest zapisanie na stosie [**ret2syscall**](../rop-syscall-execv/index.html) za pomocą struktury **sigreturn** (binarne zawiera ciąg `/bin/sh`).
- [https://guyinatuxedo.github.io/16-srop/inctf17_stupidrop/index.html](https://guyinatuxedo.github.io/16-srop/inctf17_stupidrop/index.html)
-- 64 bity, brak relro, brak canary, nx, brak pie. Prosty overflow bufora wykorzystujący funkcję `gets` z brakiem gadgetów, które wykonują [**ret2syscall**](../rop-syscall-execv/). Łańcuch ROP zapisuje `/bin/sh` w `.bss` wywołując ponownie gets, wykorzystuje funkcję **`alarm`** do ustawienia eax na `0xf`, aby wywołać **SROP** i uruchomić powłokę.
+- 64 bity, brak relro, brak canary, nx, brak pie. Prosty przepełnienie bufora wykorzystujące funkcję `gets` z brakiem gadżetów, które wykonują [**ret2syscall**](../rop-syscall-execv/index.html). Łańcuch ROP zapisuje `/bin/sh` w `.bss` wywołując ponownie gets, wykorzystuje funkcję **`alarm`** do ustawienia eax na `0xf`, aby wywołać **SROP** i uruchomić powłokę.
- [https://guyinatuxedo.github.io/16-srop/swamp19_syscaller/index.html](https://guyinatuxedo.github.io/16-srop/swamp19_syscaller/index.html)
-- Program assembly 64 bity, brak relro, brak canary, nx, brak pie. Przepływ pozwala na zapis do stosu, kontrolowanie kilku rejestrów i wywołanie syscall, a następnie wywołuje `exit`. Wybrany syscall to `sigreturn`, który ustawi rejestry i przeniesie `eip`, aby wywołać poprzednią instrukcję syscall i uruchomić `memprotect`, aby ustawić przestrzeń binarną na `rwx` i ustawić ESP w przestrzeni binarnej. Kontynuując przepływ, program ponownie wywoła read do ESP, ale w tym przypadku ESP będzie wskazywał na następną instrukcję, więc przekazanie shellcode'u zapisze go jako następną instrukcję i wykona go.
+- Program w asemblerze 64 bity, brak relro, brak canary, nx, brak pie. Przepływ pozwala na zapis na stosie, kontrolowanie kilku rejestrów i wywołanie syscall, a następnie wywołuje `exit`. Wybrany syscall to `sigreturn`, który ustawi rejestry i przeniesie `eip`, aby wywołać poprzednią instrukcję syscall i uruchomić `memprotect`, aby ustawić przestrzeń binarną na `rwx` i ustawić ESP w przestrzeni binarnej. Kontynuując przepływ, program ponownie wywoła read do ESP, ale w tym przypadku ESP będzie wskazywał na następną instrukcję, więc przekazanie shellcode'a zapisze go jako następną instrukcję i wykona go.
- [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection)
-- SROP jest używane do nadania uprawnień do wykonania (memprotect) w miejscu, gdzie umieszczono shellcode.
+- SROP jest używane do nadania uprawnień wykonawczych (memprotect) miejscu, w którym umieszczono shellcode.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/binary-exploitation/stack-overflow/README.md b/src/binary-exploitation/stack-overflow/README.md
index 540604172..9e3103212 100644
--- a/src/binary-exploitation/stack-overflow/README.md
+++ b/src/binary-exploitation/stack-overflow/README.md
@@ -2,15 +2,15 @@
{{#include ../../banners/hacktricks-training.md}}
-## Czym jest Stack Overflow
+## Co to jest Stack Overflow
-**Stack overflow** to luka, która występuje, gdy program zapisuje więcej danych na stosie, niż jest w stanie pomieścić. Te nadmiarowe dane **nadpiszą sąsiednią przestrzeń pamięci**, prowadząc do uszkodzenia ważnych danych, zakłócenia przepływu sterowania i potencjalnie do wykonania złośliwego kodu. Problem ten często pojawia się z powodu użycia niebezpiecznych funkcji, które nie wykonują sprawdzania granic na wejściu.
+**Stack overflow** to luka, która występuje, gdy program zapisuje więcej danych na stosie, niż jest przydzielone do przechowywania. Te nadmiarowe dane **nadpiszą sąsiednią przestrzeń pamięci**, prowadząc do uszkodzenia ważnych danych, zakłócenia przepływu sterowania i potencjalnie do wykonania złośliwego kodu. Problem ten często pojawia się z powodu użycia niebezpiecznych funkcji, które nie wykonują sprawdzania granic na wejściu.
-Głównym problemem tego nadpisania jest to, że **zapisany wskaźnik instrukcji (EIP/RIP)** oraz **zapisany wskaźnik bazowy (EBP/RBP)** do powrotu do poprzedniej funkcji są **przechowywane na stosie**. Dlatego atakujący będzie w stanie je nadpisać i **kontrolować przepływ wykonania programu**.
+Głównym problemem tego nadpisania jest to, że **zapisany wskaźnik instrukcji (EIP/RIP)** oraz **zapisany wskaźnik bazowy (EBP/RBP)** do powrotu do poprzedniej funkcji są **przechowywane na stosie**. Dlatego atakujący będzie w stanie nadpisać je i **kontrolować przepływ wykonania programu**.
-Luka ta zazwyczaj pojawia się, ponieważ funkcja **kopiuje na stos więcej bajtów niż ilość przydzielona dla niej**, co pozwala na nadpisanie innych części stosu.
+Luka ta zazwyczaj występuje, ponieważ funkcja **kopiuje na stos więcej bajtów niż przydzielona ilość**, 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 sposób podatny, jeśli określona długość jest większa niż przydzielona.
+Niektóre powszechne funkcje podatne na to to: **`strcpy`, `strcat`, `sprintf`, `gets`**... Ponadto funkcje takie jak **`fgets`**, **`read` i `memcpy`**, które przyjmują **argument długości**, mogą być używane w sposób podatny, jeśli określona długość jest większa niż przydzielona.
Na przykład, następujące funkcje mogą być podatne:
```c
@@ -21,13 +21,13 @@ gets(buffer); // This is where the vulnerability lies
printf("You entered: %s\n", buffer);
}
```
-### Znajdowanie przesunięć Stack Overflow
+### Znajdowanie przesunięć przepełnienia stosu
-Najczęstszym sposobem na znalezienie przesunięć stack overflow jest podanie bardzo dużego wejścia z `A`s (np. `python3 -c 'print("A"*1000)'`) i oczekiwanie na `Segmentation Fault`, co wskazuje, że **adres `0x41414141` próbował być dostępny**.
+Najczęstszym sposobem na znalezienie przepełnień stosu jest podanie bardzo dużego wejścia z `A`s (np. `python3 -c 'print("A"*1000)'`) i oczekiwanie na `Segmentation Fault`, co wskazuje, że **adres `0x41414141` próbował być dostępny**.
-Ponadto, gdy już znajdziesz, że istnieje luka w Stack Overflow, będziesz musiał znaleźć przesunięcie, aż będzie możliwe **nadpisanie adresu powrotu**, do tego zazwyczaj używa się **sekwencji De Bruijn.** Która dla danego alfabetu o rozmiarze _k_ i podsekwencji o długości _n_ jest **cykliczną sekwencją, w której każda możliwa podsekwencja o długości \_n**\_\*\* występuje dokładnie raz\*\* jako ciągła podsekwencja.
+Ponadto, gdy już znajdziesz, że istnieje luka w przepełnieniu stosu, będziesz musiał znaleźć przesunięcie, aż będzie możliwe **nadpisanie adresu powrotu**. W tym celu zazwyczaj używa się **sekwencji De Brujna**. Która dla danego alfabetu o rozmiarze _k_ i podsekwencji o długości _n_ jest **cykliczną sekwencją, w której każda możliwa podsekwencja o długości \_n**\_\*\* występuje dokładnie raz\*\* jako sąsiadująca podsekwencja.
-W ten sposób, zamiast ręcznie ustalać, które przesunięcie jest potrzebne do kontrolowania EIP, można użyć jako wypełnienia jednej z tych sekwencji, a następnie znaleźć przesunięcie bajtów, które zakończyły nadpisanie.
+W ten sposób, zamiast ręcznie ustalać, które przesunięcie jest potrzebne do kontrolowania EIP, można użyć jako wypełnienia jednej z tych sekwencji, a następnie znaleźć przesunięcie bajtów, które zakończyły nadpisanie.
Można użyć **pwntools** do tego:
```python
@@ -57,13 +57,13 @@ Jednak w innych scenariuszach może wystarczyć tylko **nadpisanie niektórych w
### Ret2win
-W tego typu wyzwaniach CTF, istnieje **funkcja** **wewnątrz** binarnego, która **nigdy nie jest wywoływana** i którą **musisz wywołać, aby wygrać**. W tych wyzwaniach musisz tylko znaleźć **offset do nadpisania adresu powrotu** i **znaleźć adres funkcji**, którą chcesz wywołać (zwykle [**ASLR**](../common-binary-protections-and-bypasses/aslr/) będzie wyłączony), aby po powrocie z funkcji podatnej, ukryta funkcja została wywołana:
+W tego typu wyzwaniach CTF, istnieje **funkcja** **wewnątrz** binarnego, która **nigdy nie jest wywoływana** i którą **musisz wywołać, aby wygrać**. W tych wyzwaniach musisz tylko znaleźć **offset do nadpisania adresu powrotu** i **znaleźć adres funkcji**, którą chcesz wywołać (zwykle [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) będzie wyłączony), aby po powrocie z podatnej funkcji, ukryta funkcja została wywołana:
{{#ref}}
ret2win/
{{#endref}}
-### Shellcode na stosie
+### Shellcode w stosie
W tym scenariuszu atakujący mógłby umieścić shellcode w stosie i nadużyć kontrolowanego EIP/RIP, aby skoczyć do shellcode i wykonać dowolny kod:
@@ -73,7 +73,7 @@ stack-shellcode/
### Techniki ROP i Ret2...
-Ta technika jest podstawowym frameworkiem do obejścia głównej ochrony poprzedniej techniki: **Brak wykonywalnego stosu (NX)**. Umożliwia to wykonanie kilku innych technik (ret2lib, ret2syscall...), które zakończą się wykonaniem dowolnych poleceń poprzez nadużycie istniejących instrukcji w binarnym:
+Ta technika jest podstawowym frameworkiem do obejścia głównej ochrony poprzedniej techniki: **Brak wykonywalnego stosu (NX)**. Umożliwia to wykonanie kilku innych technik (ret2lib, ret2syscall...), które kończą się wykonaniem dowolnych poleceń poprzez nadużycie istniejących instrukcji w binarnym:
{{#ref}}
../rop-return-oriented-programing/
@@ -89,7 +89,7 @@ Przepełnienie nie zawsze będzie miało miejsce w stosie, może również wyst
## Rodzaje ochrony
-Istnieje kilka ochron próbujących zapobiec wykorzystaniu podatności, sprawdź je w:
+Istnieje kilka zabezpieczeń próbujących zapobiec wykorzystaniu podatności, sprawdź je w:
{{#ref}}
../common-binary-protections-and-bypasses/
diff --git a/src/binary-exploitation/stack-overflow/ret2win/README.md b/src/binary-exploitation/stack-overflow/ret2win/README.md
index f22de18f4..8791a2f48 100644
--- a/src/binary-exploitation/stack-overflow/ret2win/README.md
+++ b/src/binary-exploitation/stack-overflow/ret2win/README.md
@@ -4,7 +4,7 @@
## Podstawowe informacje
-**Ret2win** to popularna kategoria wyzwań w zawodach **Capture The Flag (CTF)**, szczególnie w zadaniach związanych z **binary exploitation**. Celem jest wykorzystanie luki w danym binarnym pliku, aby wykonać określoną, niewywołaną funkcję w tym pliku, często nazwaną coś w stylu `win`, `flag` itp. Ta funkcja, po wykonaniu, zazwyczaj wyświetla flagę lub komunikat o sukcesie. Wyzwanie zazwyczaj polega na nadpisaniu **adresu powrotu** na stosie, aby przekierować przepływ wykonania do pożądanej funkcji. Oto bardziej szczegółowe wyjaśnienie z przykładami:
+**Ret2win** to popularna kategoria w zawodach **Capture The Flag (CTF)**, szczególnie w zadaniach związanych z **binary exploitation**. Celem jest wykorzystanie luki w danym binarnym pliku, aby wykonać określoną, niewywołaną funkcję w tym pliku, często nazwaną coś w stylu `win`, `flag` itp. Ta funkcja, po wykonaniu, zazwyczaj wyświetla flagę lub komunikat o sukcesie. Wyzwanie zazwyczaj polega na nadpisaniu **adresu powrotu** na stosie, aby przekierować przepływ wykonania do pożądanej funkcji. Oto bardziej szczegółowe wyjaśnienie z przykładami:
### Przykład C
@@ -37,9 +37,9 @@ gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
- `-no-pie`: Wyłącz Position Independent Executable, aby upewnić się, że adres funkcji `win` się nie zmienia.
- `-o vulnerable`: Nazwij plik wyjściowy `vulnerable`.
-### Python Exploit używając Pwntools
+### Python Exploit using Pwntools
-Do exploitacji użyjemy **pwntools**, potężnego frameworka CTF do pisania exploitów. Skrypt exploitowy stworzy ładunek, aby przepełnić bufor i nadpisać adres powrotu adresem funkcji `win`.
+Dla exploita użyjemy **pwntools**, potężnego frameworka CTF do pisania exploitów. Skrypt exploita stworzy ładunek, aby przepełnić bufor i nadpisać adres powrotu adresem funkcji `win`.
```python
from pwn import *
@@ -59,18 +59,18 @@ payload = b'A' * 68 + win_addr
p.sendline(payload)
p.interactive()
```
-Aby znaleźć adres funkcji `win`, możesz użyć **gdb**, **objdump** lub innego narzędzia, które pozwala na inspekcję plików binarnych. Na przykład, z `objdump` możesz użyć:
+Aby znaleźć adres funkcji `win`, możesz użyć **gdb**, **objdump** lub innego narzędzia, które pozwala na inspekcję plików binarnych. Na przykład, z `objdump`, możesz użyć:
```sh
objdump -d vulnerable | grep win
```
-To polecenie pokaże Ci kod asemblera funkcji `win`, w tym jej adres początkowy.
+To polecenie pokaże Ci asembler funkcji `win`, w tym jej adres początkowy.
Skrypt Pythona wysyła starannie skonstruowaną wiadomość, która, gdy jest przetwarzana przez `vulnerable_function`, przepełnia bufor i nadpisuje adres powrotu na stosie adresem `win`. Gdy `vulnerable_function` zwraca, zamiast wracać do `main` lub kończyć, skacze do `win`, a wiadomość jest drukowana.
## Ochrony
-- [**PIE**](../../common-binary-protections-and-bypasses/pie/) **powinno być wyłączone**, aby adres był wiarygodny w różnych wykonaniach, w przeciwnym razie adres, pod którym funkcja będzie przechowywana, nie zawsze będzie taki sam i będziesz potrzebować jakiegoś wycieku, aby ustalić, gdzie załadowana jest funkcja win. W niektórych przypadkach, gdy funkcja, która powoduje przepełnienie, to `read` lub podobna, możesz wykonać **Częściowe Nadpisanie** 1 lub 2 bajtów, aby zmienić adres powrotu na funkcję win. Z powodu działania ASLR, ostatnie trzy heksadecymalne nibble nie są losowe, więc istnieje **1/16 szansy** (1 nibble), aby uzyskać poprawny adres powrotu.
-- [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) powinny być również wyłączone, w przeciwnym razie skompromitowany adres powrotu EIP nigdy nie będzie śledzony.
+- [**PIE**](../../common-binary-protections-and-bypasses/pie/index.html) **powinno być wyłączone**, aby adres był wiarygodny w różnych wykonaniach, w przeciwnym razie adres, pod którym funkcja będzie przechowywana, nie zawsze będzie taki sam i będziesz potrzebować jakiegoś wycieku, aby dowiedzieć się, gdzie załadowana jest funkcja win. W niektórych przypadkach, gdy funkcją powodującą przepełnienie jest `read` lub podobna, możesz wykonać **Częściowe Nadpisanie** 1 lub 2 bajtów, aby zmienić adres powrotu na funkcję win. Z powodu działania ASLR, ostatnie trzy heksadecymalne nibble nie są losowe, więc istnieje **1/16 szansy** (1 nibble), aby uzyskać poprawny adres powrotu.
+- [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/index.html) również powinny być wyłączone, w przeciwnym razie skompromitowany adres powrotu EIP nigdy nie będzie śledzony.
## Inne przykłady i odniesienia
@@ -82,7 +82,7 @@ Skrypt Pythona wysyła starannie skonstruowaną wiadomość, która, gdy jest pr
- [https://guyinatuxedo.github.io/05-bof_callfunction/csaw18_getit/index.html](https://guyinatuxedo.github.io/05-bof_callfunction/csaw18_getit/index.html)
- 64 bity, bez 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, bez ASLR, podwójne małe przepełnienie, pierwsze przepełnia stos i zwiększa rozmiar drugiego przepełnienia
+- 32 bity, bez ASLR, podwójne małe przepełnienie, pierwsze przepełnienie stosu i powię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, bez canary, nx, bez pie, format string 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)
@@ -90,9 +90,9 @@ Skrypt Pythona wysyła starannie skonstruowaną wiadomość, która, gdy jest pr
- [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 (1Byte) do 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 tylko waliduje ostatni bajt liczby, aby sprawdzić rozmiar wejścia, dlatego możliwe jest dodanie dowolnej wielkości, o ile ostatni bajt mieści się w dozwolonym zakresie. Następnie wejście tworzy przepełnienie bufora wykorzystane z ret2win.
+- Program tylko waliduje ostatni bajt liczby, aby sprawdzić rozmiar wejścia, dlatego możliwe jest dodanie dowolnego rozmiaru, o ile ostatni bajt mieści się w dozwolonym zakresie. Następnie wejście tworzy 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, bez canary, nx, pie. Częściowe nadpisanie do wywołania funkcji win (ret2win)
+- 64 bity, relro, bez canary, nx, pie. Częściowe nadpisanie, aby wywołać funkcję win (ret2win)
- [https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/](https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/)
- arm64, PIE, daje wyciek PIE, funkcja win to tak naprawdę 2 funkcje, więc gadżet ROP, który wywołuje 2 funkcje
- [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/)
diff --git a/src/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md b/src/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
index 1468fd1ac..a51be17d7 100644
--- a/src/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
+++ b/src/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
@@ -4,7 +4,7 @@
## Podstawowe informacje
-Ta technika wykorzystuje zdolność do manipulacji **wskaźnikiem bazowym (EBP)** w celu połączenia wykonania wielu funkcji poprzez staranne użycie rejestru EBP oraz sekwencji instrukcji **`leave; ret`**.
+Ta technika wykorzystuje zdolność do manipulacji **wskaźnikiem bazowym (EBP)** w celu łączenia wykonania wielu funkcji poprzez staranne użycie rejestru EBP oraz sekwencji instrukcji **`leave; ret`**.
Przypominając, **`leave`** zasadniczo oznacza:
```
@@ -18,32 +18,32 @@ I jako że **EBP znajduje się na stosie** przed EIP, możliwe jest jego kontrol
Ta technika jest szczególnie przydatna, gdy możesz **zmienić rejestr EBP, ale nie masz bezpośredniego sposobu na zmianę rejestru EIP**. Wykorzystuje zachowanie funkcji po zakończeniu ich wykonywania.
-Jeśli podczas wykonywania `fvuln` uda ci się wstrzyknąć **fałszywy EBP** na stos, który wskazuje 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 ustawione na to skonstruowane miejsce, a następna operacja `pop` zmniejsza ESP o 4, **efektywnie wskazując na adres przechowywany przez atakującego.**\
+Jeśli podczas wykonywania `fvuln` uda ci się wstrzyknąć **fałszywy EBP** na stos, który wskazuje na obszar w pamięci, gdzie znajduje się adres twojego shellcode (plus 4 bajty, aby uwzględnić operację `pop`), możesz pośrednio kontrolować EIP. Gdy `fvuln` zwraca, ESP jest ustawione na to skonstruowane miejsce, a następna operacja `pop` zmniejsza ESP o 4, **efektywnie wskazując na adres przechowywany przez atakującego.**\
Zauważ, że **musisz znać 2 adresy**: Ten, na który ESP ma wskoczyć, gdzie będziesz musiał zapisać adres, na który wskazuje ESP.
#### Budowa Exploita
-Najpierw musisz znać **adres, w którym możesz zapisać dowolne dane/adresy**. ESP będzie wskazywać tutaj i **wykona pierwszy `ret`**.
+Najpierw musisz znać **adres, w którym możesz zapisać dowolne dane/adresy**. ESP będzie wskazywać tutaj i **wykona pierwsze `ret`**.
Następnie musisz znać adres używany przez `ret`, który **wykona dowolny kod**. Możesz użyć:
- Ważnego [**ONE_GADGET**](https://github.com/david942j/one_gadget) adresu.
- Adresu **`system()`**, po którym następują **4 bajty śmieci** i adres `"/bin/sh"` (x86 bits).
- Adresu gadżetu **`jump esp;`** ([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)), po którym następuje **shellcode** do wykonania.
-- Jakiegoś łańcucha [**ROP**](../rop-return-oriented-programing/)
+- Jakiegoś łańcucha [**ROP**](../rop-return-oriented-programing/index.html)
-Pamiętaj, że przed którymkolwiek z tych adresów w kontrolowanej części pamięci muszą być **`4` bajty** z powodu części **`pop`** instrukcji `leave`. Możliwe byłoby wykorzystanie tych 4B do ustawienia **drugiego fałszywego EBP** i kontynuowania kontrolowania wykonania.
+Pamiętaj, że przed którymkolwiek z tych adresów w kontrolowanej części pamięci muszą być **`4` bajty** z powodu części **`pop`** instrukcji `leave`. Możliwe byłoby wykorzystanie tych 4B do ustawienia **drugiego fałszywego EBP** i kontynuowania kontroli nad wykonaniem.
#### Exploit Off-By-One
-Istnieje specyficzna odmiana tej techniki znana jako "Off-By-One Exploit". Jest używana, gdy możesz **zmodyfikować tylko najmniej znaczący bajt EBP**. W takim przypadku lokalizacja pamięci przechowująca adres, do którego należy skoczyć z **`ret`**, musi dzielić pierwsze trzy bajty z EBP, co pozwala na podobną manipulację w bardziej ograniczonych warunkach.\
-Zazwyczaj modyfikowany jest bajt 0x00, aby skoczyć tak daleko, jak to możliwe.
+Istnieje specyficzna wariant tej techniki znana jako "Off-By-One Exploit". Jest używana, gdy możesz **zmodyfikować tylko najmniej znaczący bajt EBP**. W takim przypadku lokalizacja pamięci przechowująca adres, do którego należy skoczyć z **`ret`**, musi dzielić pierwsze trzy bajty z EBP, co pozwala na podobną manipulację w bardziej ograniczonych warunkach.\
+Zazwyczaj modyfikowany jest bajt 0x00, aby skoczyć jak najdalej.
Ponadto, powszechne jest używanie RET sled w stosie i umieszczanie prawdziwego łańcucha ROP na końcu, aby zwiększyć prawdopodobieństwo, że nowy ESP wskazuje wewnątrz RET SLED, a końcowy łańcuch ROP jest wykonywany.
### **Łańcuchowanie EBP**
-Dlatego umieszczając kontrolowany adres w wpisie `EBP` stosu i adres do `leave; ret` w `EIP`, możliwe jest **przesunięcie `ESP` do kontrolowanego adresu `EBP` ze stosu**.
+Dlatego umieszczając kontrolowany adres w wpisie `EBP` stosu i adres do `leave; ret` w `EIP`, możliwe jest **przeniesienie `ESP` do kontrolowanego adresu `EBP` ze stosu**.
Teraz **`ESP`** jest kontrolowane, wskazując na pożądany adres, a następna instrukcja do wykonania to `RET`. Aby to wykorzystać, można umieścić w kontrolowanym miejscu ESP to:
@@ -54,9 +54,9 @@ Teraz **`ESP`** jest kontrolowane, wskazując na pożądany adres, a następna i
W zasadzie w ten sposób można łączyć kilka fałszywych EBP, aby kontrolować przepływ programu.
-To jest jak [ret2lib](../rop-return-oriented-programing/ret2lib/), ale bardziej skomplikowane, bez oczywistych korzyści, ale może być interesujące w niektórych skrajnych przypadkach.
+To jest jak [ret2lib](../rop-return-oriented-programing/ret2lib/index.html), ale bardziej skomplikowane, bez oczywistych korzyści, ale może być interesujące w niektórych przypadkach brzegowych.
-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ć zwycięską funkcję. To jest końcowy ładunek z tej strony:
+Ponadto, oto [**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ć zwycięską funkcję. To jest końcowy ładunek z tej strony:
```python
from pwn import *
@@ -123,7 +123,7 @@ ret # return
### **`pop rsp`** gadget
-[**Na tej stronie**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp) znajdziesz przykład użycia tej techniki. W tym wyzwaniu konieczne było wywołanie funkcji z 2 konkretnymi argumentami, a tam był **gadget `pop rsp`** i był **leak ze stosu**:
+[**Na tej stronie**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp) znajdziesz przykład użycia tej techniki. W tym wyzwaniu konieczne było wywołanie funkcji z 2 konkretnymi argumentami, a tam był **`pop rsp` gadget** i występował **leak ze stosu**:
```python
# Code from https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp
# This version has added comments
@@ -188,13 +188,13 @@ 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, exploatacja 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 umożliwia leak dla stosu lub pie i WWW dla qword. Najpierw uzyskaj leak stosu i użyj WWW, aby wrócić i uzyskać leak 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, zapisuje się łańcuch ROP w .bss i kończy wywołując go, pivotując z RBP.
+- 64 bity, brak relro, canary, nx i pie. Program umożliwia wyciek dla stosu lub pie i WWW dla 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, zapisuje się łańcuch ROP w .bss i kończy wywołując go, pivotując z RBP.
## ARM64
-W ARM64, **prolog i epilog** funkcji **nie przechowują ani nie odzyskują rejestru SP** w stosie. Co więcej, instrukcja **`RET`** nie zwraca do adresu wskazywanego przez SP, ale **do adresu wewnątrz `x30`**.
+W ARM64, **prologi i epilogi** funkcji **nie przechowują i nie odzyskują rejestru SP** w stosie. Co więcej, instrukcja **`RET`** nie zwraca do adresu wskazywanego przez SP, ale **do adresu wewnątrz `x30`**.
-Dlatego, domyślnie, nadużywając epilogu, **nie będziesz w stanie kontrolować rejestru SP** przez nadpisanie danych w stosie. A nawet jeśli uda ci się kontrolować SP, nadal będziesz potrzebować sposobu na **kontrolowanie rejestru `x30`**.
+Dlatego, domyślnie, nadużywając epilogu, **nie będziesz w stanie kontrolować rejestru SP** przez nadpisanie danych wewnątrz stosu. A nawet jeśli uda ci się kontrolować SP, nadal potrzebujesz sposobu na **kontrolowanie rejestru `x30`**.
- prolog
@@ -213,7 +213,7 @@ ret
```
> [!OSTRZEŻENIE]
-> Sposobem na wykonanie czegoś podobnego do pivotowania stosu w ARM64 byłoby być w stanie **kontrolować `SP`** (poprzez kontrolowanie jakiegoś rejestru, którego wartość jest przekazywana do `SP` lub z jakiegoś powodu `SP` bierze swój adres ze stosu i mamy overflow) i następnie **nadużyć epilogu**, aby załadować rejestr **`x30`** z **kontrolowanego `SP`** i **`RET`** do niego.
+> Sposobem na wykonanie czegoś podobnego do pivotowania stosu w ARM64 byłoby być w stanie **kontrolować `SP`** (poprzez kontrolowanie jakiegoś rejestru, którego wartość jest przekazywana do `SP` lub ponieważ z jakiegoś powodu `SP` bierze swój adres ze stosu i mamy przepełnienie) i następnie **nadużyć epilogu**, aby załadować rejestr **`x30`** z **kontrolowanego `SP`** i **`RET`** do niego.
Również na następnej stronie możesz zobaczyć odpowiednik **Ret2esp w ARM64**:
diff --git a/src/binary-exploitation/stack-overflow/stack-shellcode/README.md b/src/binary-exploitation/stack-overflow/stack-shellcode/README.md
index af324961a..8b8056a22 100644
--- a/src/binary-exploitation/stack-overflow/stack-shellcode/README.md
+++ b/src/binary-exploitation/stack-overflow/stack-shellcode/README.md
@@ -33,7 +33,7 @@ Aby skompilować ten program, wyłączając różne zabezpieczenia (aby zasymulo
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
```
- `-fno-stack-protector`: Wyłącza ochronę stosu.
-- `-z execstack`: Umożliwia wykonanie stosu, co jest konieczne do uruchomienia shellcode przechowywanego na stosie.
+- `-z execstack`: Umożliwia wykonanie kodu na stosie, co jest konieczne do uruchomienia shellcode przechowywanego na stosie.
- `-no-pie`: Wyłącza Position Independent Executable, co ułatwia przewidywanie adresu pamięci, w którym będzie znajdować się nasz shellcode.
- `-m32`: Kompiluje program jako 32-bitowy plik wykonywalny, często używany dla uproszczenia w rozwoju exploitów.
@@ -68,12 +68,12 @@ p.interactive()
```
Ten skrypt konstruuje ładunek składający się z **NOP slide**, **shellcode** i następnie nadpisuje **EIP** adresem wskazującym na NOP slide, zapewniając, że shellcode zostanie wykonany.
-**NOP slide** (`asm('nop')`) jest używany, aby zwiększyć szansę, że wykonanie "zsunie się" do naszego shellcode niezależnie od dokładnego adresu. Dostosuj argument `p32()` do początkowego adresu twojego bufora plus offset, aby trafić w NOP slide.
+**NOP slide** (`asm('nop')`) jest używany do zwiększenia szansy, że wykonanie "zsunie się" do naszego shellcode niezależnie od dokładnego adresu. Dostosuj argument `p32()` do początkowego adresu twojego bufora plus offset, aby trafić w NOP slide.
## Ochrony
-- [**ASLR**](../../common-binary-protections-and-bypasses/aslr/) **powinno być wyłączone**, aby adres był wiarygodny w różnych wykonaniach, w przeciwnym razie adres, w którym funkcja będzie przechowywana, nie zawsze będzie taki sam i będziesz potrzebować jakiegoś wycieku, aby dowiedzieć się, gdzie załadowana jest funkcja win.
-- [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) również powinny być wyłączone, w przeciwnym razie skompromitowany adres zwrotny EIP nigdy nie będzie śledzony.
+- [**ASLR**](../../common-binary-protections-and-bypasses/aslr/index.html) **powinno być wyłączone**, aby adres był wiarygodny w różnych wykonaniach, w przeciwnym razie adres, w którym funkcja będzie przechowywana, nie będzie zawsze taki sam i będziesz potrzebować jakiegoś wycieku, aby dowiedzieć się, gdzie załadowana jest funkcja win.
+- [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/index.html) również powinny być wyłączone, w przeciwnym razie skompromitowany adres zwrotny EIP nigdy nie będzie śledzony.
- Ochrona **NX** (no-execute) [**stack**](../../common-binary-protections-and-bypasses/no-exec-nx.md) uniemożliwi wykonanie shellcode wewnątrz stosu, ponieważ ten obszar nie będzie wykonywalny.
## Inne przykłady i odniesienia
diff --git a/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md b/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
index 75c66dbeb..42478b48c 100644
--- a/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
+++ b/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
@@ -12,7 +12,7 @@ Najczęściej używane narzędzie w forensyce do ekstrakcji plików z obrazów t
### Binwalk
-**Binwalk** to narzędzie do analizy plików binarnych w celu znalezienia osadzonych treści. Można je zainstalować za pomocą `apt`, a jego źródło znajduje się na [GitHub](https://github.com/ReFirmLabs/binwalk).
+**Binwalk** to narzędzie do analizy plików binarnych w celu znalezienia osadzonej zawartości. Można je zainstalować za pomocą `apt`, a jego źródło znajduje się na [GitHub](https://github.com/ReFirmLabs/binwalk).
**Przydatne polecenia**:
```bash
@@ -23,7 +23,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
```
### Foremost
-Innym powszechnym narzędziem do znajdowania ukrytych plików jest **foremost**. Możesz znaleźć plik konfiguracyjny foremost w `/etc/foremost.conf`. Jeśli chcesz wyszukać tylko niektóre konkretne pliki, odkomentuj je. Jeśli nic nie odkomentujesz, foremost będzie szukać domyślnie skonfigurowanych typów plików.
+Innym powszechnym narzędziem do znajdowania ukrytych plików jest **foremost**. Możesz znaleźć plik konfiguracyjny foremost w `/etc/foremost.conf`. Jeśli chcesz wyszukać konkretne pliki, odkomentuj je. Jeśli nic nie odkomentujesz, foremost będzie szukać domyślnie skonfigurowanych typów plików.
```bash
sudo apt-get install foremost
foremost -v -i file.img -o output
@@ -44,11 +44,11 @@ To narzędzie może skanować obraz i **wyodrębniać pcaps** w nim, **informacj
```
bulk_extractor memory.img -o out_folder
```
-Przejdź przez **wszystkie informacje**, które narzędzie zebrało (hasła?), **analizuj** **pakiety** (przeczytaj [**analizę Pcaps**](../pcap-inspection/)), wyszukaj **dziwne domeny** (domeny związane z **złośliwym oprogramowaniem** lub **nieistniejącymi**).
+Przejrzyj **wszystkie informacje**, które narzędzie zgromadziło (hasła?), **analizuj** **pakiety** (przeczytaj [**analizę Pcaps**](../pcap-inspection/index.html)), wyszukaj **dziwne domeny** (domeny związane z **złośliwym oprogramowaniem** lub **nieistniejącymi**).
### PhotoRec
-Możesz go znaleźć w [https://www.cgsecurity.org/wiki/TestDisk_Download](https://www.cgsecurity.org/wiki/TestDisk_Download)
+Możesz go znaleźć pod adresem [https://www.cgsecurity.org/wiki/TestDisk_Download](https://www.cgsecurity.org/wiki/TestDisk_Download)
Dostępna jest wersja z interfejsem graficznym i wiersza poleceń. Możesz wybrać **typy plików**, które PhotoRec ma wyszukiwać.
@@ -56,20 +56,20 @@ Dostępna jest wersja z interfejsem graficznym i wiersza poleceń. Możesz wybra
### binvis
-Sprawdź [kod](https://code.google.com/archive/p/binvis/) i [stronę narzędzia](https://binvis.io/#/).
+Sprawdź [kod](https://code.google.com/archive/p/binvis/) oraz [stronę narzędzia](https://binvis.io/#/).
#### Cechy BinVis
- Wizualny i aktywny **podgląd struktury**
- Wiele wykresów dla różnych punktów skupienia
- Skupienie na częściach próbki
-- **Widzenie ciągów i zasobów** w plikach wykonywalnych PE lub ELF, np.
+- **Widzenie ciągów i zasobów**, w plikach PE lub ELF, np.
- Uzyskiwanie **wzorców** do kryptanalizy plików
- **Wykrywanie** algorytmów pakujących lub kodujących
- **Identyfikacja** steganografii na podstawie wzorców
-- **Wizualne** porównywanie binarne
+- **Wizualna** różnica binarna
-BinVis to świetny **punkt wyjścia, aby zapoznać się z nieznanym celem** w scenariuszu black-boxing.
+BinVis to świetny **punkt wyjścia, aby zapoznać się z nieznanym celem** w scenariuszu black-box.
## Specyficzne narzędzia do wydobywania danych
diff --git a/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md b/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md
index 53968d605..8b132e556 100644
--- a/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md
+++ b/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md
@@ -4,7 +4,7 @@
## Autopsy
-Najczęściej używane narzędzie w kryminalistyce do ekstrakcji plików z obrazów to [**Autopsy**](https://www.autopsy.com/download/). Pobierz je, zainstaluj i spraw, aby przetworzyło plik w celu znalezienia "ukrytych" plików. Zauważ, że Autopsy jest zaprojektowane do obsługi obrazów dysków i innych rodzajów obrazów, ale nie prostych plików.
+Najczęściej używane narzędzie w forensyce do ekstrakcji plików z obrazów to [**Autopsy**](https://www.autopsy.com/download/). Pobierz je, zainstaluj i spraw, aby przetworzyło plik w celu znalezienia "ukrytych" plików. Zauważ, że Autopsy jest zaprojektowane do obsługi obrazów dysków i innych rodzajów obrazów, ale nie prostych plików.
## Binwalk
@@ -18,7 +18,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
```
## Foremost
-Innym powszechnym narzędziem do znajdowania ukrytych plików jest **foremost**. Możesz znaleźć plik konfiguracyjny foremost w `/etc/foremost.conf`. Jeśli chcesz wyszukać tylko niektóre konkretne pliki, odkomentuj je. Jeśli nic nie odkomentujesz, foremost będzie szukać domyślnie skonfigurowanych typów plików.
+Innym powszechnym narzędziem do znajdowania ukrytych plików jest **foremost**. Możesz znaleźć plik konfiguracyjny foremost w `/etc/foremost.conf`. Jeśli chcesz wyszukać konkretne pliki, odkomentuj je. Jeśli nic nie odkomentujesz, foremost będzie szukać domyślnie skonfigurowanych typów plików.
```bash
sudo apt-get install foremost
foremost -v -i file.img -o output
@@ -26,7 +26,7 @@ foremost -v -i file.img -o output
```
## **Scalpel**
-**Scalpel** to kolejne narzędzie, które można wykorzystać do znajdowania i wyodrębniania **plików osadzonych w pliku**. W tym przypadku musisz odkomentować w pliku konfiguracyjnym \(_/etc/scalpel/scalpel.conf_\) typy plików, które chcesz, aby zostały wyodrębnione.
+**Scalpel** to kolejne narzędzie, które można wykorzystać do znajdowania i wyodrębniania **plików osadzonych w pliku**. W tym przypadku będziesz musiał odkomentować w pliku konfiguracyjnym \(_/etc/scalpel/scalpel.conf_\) typy plików, które chcesz, aby zostały wyodrębnione.
```bash
sudo apt-get install scalpel
scalpel file.img -o output
@@ -35,17 +35,17 @@ scalpel file.img -o output
To narzędzie znajduje się w Kali, ale możesz je znaleźć tutaj: [https://github.com/simsong/bulk_extractor](https://github.com/simsong/bulk_extractor)
-To narzędzie może skanować obraz i **wyodrębnić pcaps** w nim, **informacje o sieci (URL, domeny, IP, MAC, maile)** i więcej **plików**. Musisz tylko zrobić:
+To narzędzie może skanować obraz i **wyodrębniać pcaps** w nim, **informacje o sieci (URL, domeny, IP, MAC, maile)** i więcej **plików**. Musisz tylko zrobić:
```text
bulk_extractor memory.img -o out_folder
```
-Przejdź przez **wszystkie informacje**, które narzędzie zebrało \(hasła?\), **analizuj** **pakiety** \(przeczytaj [ **analizę Pcaps**](../pcap-inspection/)\), wyszukaj **dziwne domeny** \(domeny związane z **złośliwym oprogramowaniem** lub **nieistniejącymi**\).
+Przejdź przez **wszystkie informacje**, które narzędzie zgromadziło \(hasła?\), **analizuj** **pakiety** \(przeczytaj [**analizę Pcaps**](../pcap-inspection/index.html)\), wyszukaj **dziwne domeny** \(domeny związane z **złośliwym oprogramowaniem** lub **nieistniejącymi**\).
## PhotoRec
-Możesz go znaleźć w [https://www.cgsecurity.org/wiki/TestDisk_Download](https://www.cgsecurity.org/wiki/TestDisk_Download)
+Możesz go znaleźć pod adresem [https://www.cgsecurity.org/wiki/TestDisk_Download](https://www.cgsecurity.org/wiki/TestDisk_Download)
-Dostępna jest wersja z interfejsem graficznym i wiersza poleceń. Możesz wybrać **typy plików**, które PhotoRec ma wyszukiwać.
+Dostępna jest wersja z interfejsem graficznym i wersja wiersza poleceń. Możesz wybrać **typy plików**, które PhotoRec ma wyszukiwać.

@@ -59,7 +59,6 @@ Pobierz [tutaj](https://sourceforge.net/projects/findaes/).
# Narzędzia uzupełniające
-Możesz użyć [**viu** ](https://github.com/atanunq/viu), aby zobaczyć obrazy z terminala.
-Możesz użyć narzędzia wiersza poleceń Linux **pdftotext**, aby przekształcić plik pdf w tekst i go przeczytać.
+Możesz użyć [**viu** ](https://github.com/atanunq/viu), aby zobaczyć obrazy z terminala. Możesz użyć narzędzia wiersza poleceń Linux **pdftotext**, aby przekształcić plik pdf w tekst i go przeczytać.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md b/src/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
index 7bc381d0e..311d0d59d 100644
--- a/src/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
+++ b/src/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
@@ -2,19 +2,19 @@
{{#include ../../../banners/hacktricks-training.md}}
-## Narzędzia do Carvingu i Odzyskiwania
+## Carving & Recovery tools
Więcej narzędzi w [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
### Autopsy
-Najczęściej używane narzędzie w kryminalistyce do ekstrakcji plików z obrazów to [**Autopsy**](https://www.autopsy.com/download/). Pobierz je, zainstaluj i spraw, aby przetworzyło plik w celu znalezienia "ukrytych" plików. Zauważ, że Autopsy jest zaprojektowane do obsługi obrazów dysków i innych rodzajów obrazów, ale nie prostych plików.
+Najczęściej używane narzędzie w forensyce do ekstrakcji plików z obrazów to [**Autopsy**](https://www.autopsy.com/download/). Pobierz je, zainstaluj i spraw, aby przetworzyło plik w celu znalezienia "ukrytych" plików. Zauważ, że Autopsy jest zaprojektowane do obsługi obrazów dysków i innych rodzajów obrazów, ale nie prostych plików.
### Binwalk
**Binwalk** to narzędzie do analizy plików binarnych w celu znalezienia osadzonych treści. Można je zainstalować za pomocą `apt`, a jego źródło znajduje się na [GitHub](https://github.com/ReFirmLabs/binwalk).
-**Przydatne komendy**:
+**Przydatne polecenia**:
```bash
sudo apt install binwalk #Insllation
binwalk file #Displays the embedded data in the given file
@@ -44,13 +44,13 @@ To narzędzie może skanować obraz i **wyodrębniać pcaps** w nim, **informacj
```
bulk_extractor memory.img -o out_folder
```
-Przejdź przez **wszystkie informacje**, które narzędzie zebrało (hasła?), **analizuj** **pakiety** (przeczytaj [**analizę Pcaps**](../pcap-inspection/)), wyszukaj **dziwne domeny** (domeny związane z **złośliwym oprogramowaniem** lub **nieistniejącymi**).
+Przejrzyj **wszystkie informacje**, które narzędzie zgromadziło (hasła?), **analizuj** **pakiety** (przeczytaj [**analizę Pcaps**](../pcap-inspection/index.html)), wyszukaj **dziwne domeny** (domeny związane z **złośliwym oprogramowaniem** lub **nieistniejącymi**).
### PhotoRec
Możesz go znaleźć pod adresem [https://www.cgsecurity.org/wiki/TestDisk_Download](https://www.cgsecurity.org/wiki/TestDisk_Download)
-Dostępne są wersje z interfejsem graficznym i wiersza poleceń. Możesz wybrać **typy plików**, które PhotoRec ma wyszukiwać.
+Dostępna jest wersja z interfejsem graficznym i wiersza poleceń. Możesz wybrać **typy plików**, które PhotoRec ma wyszukiwać.
.png>)
@@ -67,7 +67,7 @@ Sprawdź [kod](https://code.google.com/archive/p/binvis/) oraz [stronę narzędz
- Uzyskiwanie **wzorców** do kryptanalizy plików
- **Wykrywanie** algorytmów pakujących lub kodujących
- **Identyfikacja** steganografii na podstawie wzorców
-- **Wizualna** różnica binarna
+- **Wizualne** porównywanie binarne
BinVis to świetny **punkt wyjścia, aby zapoznać się z nieznanym celem** w scenariuszu black-boxing.
diff --git a/src/generic-methodologies-and-resources/external-recon-methodology/README.md b/src/generic-methodologies-and-resources/external-recon-methodology/README.md
index cb9d2342e..3d6fa1b29 100644
--- a/src/generic-methodologies-and-resources/external-recon-methodology/README.md
+++ b/src/generic-methodologies-and-resources/external-recon-methodology/README.md
@@ -58,7 +58,7 @@ Możesz znaleźć IP i ASN domeny używając [http://ipv4info.com/](http://ipv4i
Na tym etapie znamy **wszystkie zasoby w zakresie**, więc jeśli masz na to pozwolenie, możesz uruchomić jakiś **skaner luk** (Nessus, OpenVAS) na wszystkich hostach.\
Możesz również przeprowadzić [**skanowanie portów**](../pentesting-network/index.html#discovering-hosts-from-the-outside) **lub użyć usług takich jak** shodan **aby znaleźć** otwarte porty **i w zależności od tego, co znajdziesz, powinieneś** zajrzeć do tej książki, aby dowiedzieć się, jak przeprowadzić pentesting różnych możliwych usług.\
-**Warto również wspomnieć, że możesz przygotować kilka** domyślnych nazw użytkowników **i** haseł **i spróbować** bruteforce'ować usługi za pomocą [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
+**Warto również wspomnieć, że możesz przygotować kilka** domyślnych nazw użytkowników **i** haseł **i spróbować** brute-force'ować usługi za pomocą [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
## Domeny
@@ -82,7 +82,7 @@ Możesz również użyć narzędzia online do uzyskania tych informacji: [http:/
### **Reverse Whois (loop)**
-W **whois** możesz znaleźć wiele interesujących **informacji**, takich jak **nazwa organizacji**, **adres**, **emaile**, numery telefonów... Ale co jest jeszcze bardziej interesujące, to to, że możesz znaleźć **więcej zasobów związanych z firmą**, jeśli wykonasz **odwrócone zapytania whois według dowolnego z tych pól** (na przykład inne rejestry whois, w których pojawia się ten sam email).\
+W **whois** możesz znaleźć wiele interesujących **informacji**, takich jak **nazwa organizacji**, **adres**, **emaile**, numery telefonów... Ale co jest jeszcze bardziej interesujące, to że możesz znaleźć **więcej zasobów związanych z firmą**, jeśli wykonasz **odwrócone zapytania whois według dowolnego z tych pól** (na przykład inne rejestry whois, w których pojawia się ten sam email).\
Możesz użyć narzędzi online, takich jak:
- [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Darmowe**
@@ -96,7 +96,7 @@ Możesz użyć narzędzi online, takich jak:
Możesz zautomatyzować to zadanie, używając [**DomLink** ](https://github.com/vysecurity/DomLink) (wymaga klucza API whoxy).\
Możesz również przeprowadzić automatyczne odkrywanie reverse whois za pomocą [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
-**Zauważ, że możesz użyć tej techniki, aby odkryć więcej nazw domen za każdym razem, gdy znajdziesz nową domenę.**
+**Zauważ, że możesz użyć tej techniki, aby odkrywać więcej nazw domen za każdym razem, gdy znajdziesz nową domenę.**
### **Trackers**
@@ -159,7 +159,7 @@ Możesz użyć strony internetowej takiej jak [https://dmarc.live/info/google.co
### **Pasywne przejęcie**
-Wygląda na to, że powszechne jest przypisywanie subdomen do adresów IP należących do dostawców chmury i w pewnym momencie **utrata tego adresu IP, ale zapomnienie o usunięciu rekordu DNS**. Dlatego wystarczy **uruchomić VM** w chmurze (takiej jak Digital Ocean), aby faktycznie **przejąć niektóre subdomeny**.
+Wygląda na to, że powszechne jest przypisywanie subdomen do adresów IP należących do dostawców chmury i w pewnym momencie **utrata tego adresu IP, ale zapomnienie o usunięciu rekordu DNS**. Dlatego, po prostu **uruchamiając VM** w chmurze (takiej jak Digital Ocean), faktycznie **przejmujesz niektóre subdomeny**.
[**Ten post**](https://kmsec.uk/blog/passive-takeover/) wyjaśnia historię na ten temat i proponuje skrypt, który **uruchamia VM w DigitalOcean**, **uzyskuje** **IPv4** nowej maszyny i **wyszukuje w Virustotal rekordy subdomen** wskazujące na nią.
@@ -181,7 +181,7 @@ Możesz uzyskać dostęp do **certyfikatu TLS** głównej strony internetowej, u
Sprawdź niektóre [przejęcia domen](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Może jakaś firma **używa jakiejś domeny**, ale **straciła jej własność**. Po prostu zarejestruj ją (jeśli jest wystarczająco tania) i daj znać firmie.
-Jeśli znajdziesz jakąkolwiek **domenę z adresem IP różnym** od tych, które już znalazłeś w odkrywaniu zasobów, powinieneś przeprowadzić **podstawowe skanowanie luk** (używając Nessus lub OpenVAS) oraz jakieś [**skanowanie portów**](../pentesting-network/index.html#discovering-hosts-from-the-outside) za pomocą **nmap/masscan/shodan**. W zależności od uruchomionych usług możesz znaleźć w **tej książce kilka sztuczek, aby je "zaatakować"**.\
+Jeśli znajdziesz jakąkolwiek **domenę z adresem IP różnym** od tych, które już znalazłeś w odkrywaniu zasobów, powinieneś przeprowadzić **podstawowe skanowanie luk** (używając Nessus lub OpenVAS) oraz jakieś [**skanowanie portów**](../pentesting-network/index.html#discovering-hosts-from-the-outside) za pomocą **nmap/masscan/shodan**. W zależności od tego, jakie usługi są uruchomione, możesz znaleźć w **tej książce kilka sztuczek, aby je "zaatakować"**.\
NAN;_Note, że czasami domena jest hostowana w IP, które nie jest kontrolowane przez klienta, więc nie jest w zakresie, bądź ostrożny._
## Subdomeny
@@ -191,7 +191,7 @@ Jeśli znajdziesz jakąkolwiek **domenę z adresem IP różnym** od tych, które
Czas znaleźć wszystkie możliwe subdomeny każdej znalezionej domeny.
> [!TIP]
-> Zauważ, że niektóre narzędzia i techniki do znajdowania domen mogą również pomóc w znajdowaniu subdomen.
+> Zauważ, że niektóre narzędzia i techniki do znajdowania domen mogą również pomóc w znajdowaniu subdomen
### **DNS**
@@ -365,7 +365,7 @@ Po znalezieniu subdomen za pomocą otwartych źródeł i brute-forcingu, możesz
```bash
cat subdomains.txt | dnsgen -
```
-- [**goaltdns**](https://github.com/subfinder/goaltdns): Dla podanych domen i subdomen generuje permutacje.
+- [**goaltdns**](https://github.com/subfinder/goaltdns): Podaj domeny i subdomeny, aby wygenerować permutacje.
- Możesz uzyskać permutacje goaltdns **wordlist** [**tutaj**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
```bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
@@ -375,7 +375,7 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
```
- [**altdns**](https://github.com/infosec-au/altdns): Oprócz generowania permutacji subdomen, może również próbować je rozwiązać (ale lepiej użyć wcześniej wspomnianych narzędzi).
-- Możesz uzyskać permutacje altdns **wordlist** w [**tutaj**](https://github.com/infosec-au/altdns/blob/master/words.txt).
+- Możesz uzyskać permutacje altdns **wordlist** [**tutaj**](https://github.com/infosec-au/altdns/blob/master/words.txt).
```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
```
@@ -446,17 +446,17 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http:
```
### **Brute Force Buckets**
-Podczas poszukiwania **subdomen** zwróć uwagę, czy wskazują one na jakikolwiek typ **bucket**, a w takim przypadku [**sprawdź uprawnienia**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
-Również, w tym momencie, gdy znasz już wszystkie domeny w zakresie, spróbuj [**brute force'ować możliwe nazwy bucketów i sprawdzić uprawnienia**](../../network-services-pentesting/pentesting-web/buckets/).
+Podczas poszukiwania **subdomen** zwróć uwagę, czy wskazują one na jakikolwiek typ **bucket**, a w takim przypadku [**sprawdź uprawnienia**](../../network-services-pentesting/pentesting-web/buckets/index.html)**.**\
+Również, w tym momencie, gdy będziesz znać wszystkie domeny w zakresie, spróbuj [**brute force'ować możliwe nazwy bucketów i sprawdzić uprawnienia**](../../network-services-pentesting/pentesting-web/buckets/index.html).
### **Monitorowanie**
-Możesz **monitorować**, czy **nowe subdomeny** danej domeny są tworzone, monitorując **logi przejrzystości certyfikatów** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
+Możesz **monitorować**, czy **nowe subdomeny** danej domeny są tworzone, monitorując **logi przejrzystości certyfikatów**, co robi [**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
### **Poszukiwanie luk**
Sprawdź możliwe [**przejęcia subdomen**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
-Jeśli **subdomena** wskazuje na jakiś **bucket S3**, [**sprawdź uprawnienia**](../../network-services-pentesting/pentesting-web/buckets/).
+Jeśli **subdomena** wskazuje na jakiś **bucket S3**, [**sprawdź uprawnienia**](../../network-services-pentesting/pentesting-web/buckets/index.html).
Jeśli znajdziesz jakąkolwiek **subdomenę z adresem IP różnym** od tych, które już znalazłeś w odkrywaniu zasobów, powinieneś przeprowadzić **podstawowe skanowanie luk** (używając Nessus lub OpenVAS) oraz jakieś [**skanowanie portów**](../pentesting-network/index.html#discovering-hosts-from-the-outside) za pomocą **nmap/masscan/shodan**. W zależności od uruchomionych usług możesz znaleźć w **tej książce kilka sztuczek, aby je "zaatakować"**.\
NAN;_Note, że czasami subdomena jest hostowana w IP, które nie jest kontrolowane przez klienta, więc nie jest w zakresie, bądź ostrożny._
@@ -476,7 +476,7 @@ Możesz również sprawdzić, które domeny wskazują na konkretny adres IP, uż
**Skanuj porty wszystkich IP, które nie należą do CDN** (ponieważ prawdopodobnie nie znajdziesz tam nic interesującego). W odkrytych usługach możesz **znaleźć luki**.
-**Znajdź** [**przewodnik**](../pentesting-network/) **na temat skanowania hostów.**
+**Znajdź** [**przewodnik**](../pentesting-network/index.html) **na temat skanowania hostów.**
## Polowanie na serwery WWW
@@ -487,7 +487,7 @@ W poprzednich krokach prawdopodobnie już przeprowadziłeś jakieś **recon IP i
Proszę zauważyć, że to będzie **ukierunkowane na odkrywanie aplikacji webowych**, więc powinieneś **przeprowadzić skanowanie luk** i **skanowanie portów** również (**jeśli dozwolone** przez zakres).
**Szybka metoda** na odkrycie **otwartych portów** związanych z **serwerami** WWW za pomocą [**masscan** można znaleźć tutaj](../pentesting-network/index.html#http-port-discovery).\
-Innym przyjaznym narzędziem do wyszukiwania serwerów WWW jest [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) oraz [**httpx**](https://github.com/projectdiscovery/httpx). Wystarczy, że przekażesz listę domen, a narzędzie spróbuje połączyć się z portem 80 (http) i 443 (https). Dodatkowo możesz wskazać, aby spróbować innych portów:
+Innym przyjaznym narzędziem do wyszukiwania serwerów WWW jest [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) i [**httpx**](https://github.com/projectdiscovery/httpx). Wystarczy przekazać listę domen, a narzędzie spróbuje połączyć się z portem 80 (http) i 443 (https). Dodatkowo możesz wskazać, aby spróbować innych portów:
```bash
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
@@ -522,7 +522,7 @@ Jeśli znajdziesz takie rzeczy jak **otwarte buckety lub wystawione funkcje chmu
## E-maile
-Mając **domeny** i **subdomeny** w zakresie, zasadniczo masz wszystko, co **potrzebujesz, aby zacząć szukać e-maili**. Oto **API** i **narzędzia**, które najlepiej działały dla mnie w znajdowaniu e-maili firmy:
+Z **domenami** i **subdomenami** w zakresie masz zasadniczo wszystko, co **potrzebujesz, aby zacząć szukać e-maili**. Oto **API** i **narzędzia**, które najlepiej działały dla mnie w znajdowaniu e-maili firmy:
- [**theHarvester**](https://github.com/laramies/theHarvester) - z API
- API [**https://hunter.io/**](https://hunter.io/) (wersja darmowa)
@@ -535,25 +535,25 @@ E-maile będą przydatne później do **brute-force'owania logowania do stron in
## Wycieki danych uwierzytelniających
-Mając **domeny**, **subdomeny** i **e-maile**, możesz zacząć szukać danych uwierzytelniających, które wyciekły w przeszłości i należą do tych e-maili:
+Z **domenami,** **subdomenami** i **e-mailami** możesz zacząć szukać danych uwierzytelniających, które wyciekły w przeszłości i należą do tych e-maili:
- [https://leak-lookup.com](https://leak-lookup.com/account/login)
- [https://www.dehashed.com/](https://www.dehashed.com/)
### **Szukając luk**
-Jeśli znajdziesz **ważne wyciekłe** dane uwierzytelniające, to bardzo łatwe zwycięstwo.
+Jeśli znajdziesz **ważne wyciekłe** dane uwierzytelniające, to jest to bardzo łatwe zwycięstwo.
-## Wycieki sekretów
+## Wyciek tajemnic
Wyciek danych uwierzytelniających jest związany z hackami firm, w których **wrażliwe informacje zostały wycieknięte i sprzedane**. Jednak firmy mogą być dotknięte **innymi wyciekami**, których informacje nie znajdują się w tych bazach danych:
### Wyciek z GitHub
-Dane uwierzytelniające i API mogą być wycieknięte w **publicznych repozytoriach** firmy lub użytkowników pracujących dla tej firmy na GitHubie.\
-Możesz użyć **narzędzia** [**Leakos**](https://github.com/carlospolop/Leakos), aby **pobrać** wszystkie **publiczne repozytoria** organizacji i jej **deweloperów** oraz automatycznie uruchomić [**gitleaks**](https://github.com/zricethezav/gitleaks) na nich.
+Dane uwierzytelniające i API mogą być wycieknięte w **publicznych repozytoriach** **firmy** lub **użytkowników** pracujących dla tej firmy na GitHubie.\
+Możesz użyć **narzędzia** [**Leakos**](https://github.com/carlospolop/Leakos), aby **pobierać** wszystkie **publiczne repozytoria** danej **organizacji** oraz jej **deweloperów** i automatycznie uruchomić [**gitleaks**](https://github.com/zricethezav/gitleaks) na nich.
-**Leakos** może być również używane do uruchamiania **gitleaks** przeciwko całemu **tekstowi** dostarczonemu **URL-om przekazanym** do niego, ponieważ czasami **strony internetowe również zawierają sekrety**.
+**Leakos** może być również używane do uruchamiania **gitleaks** na wszystkich **tekstach** dostarczonych **URL-ami** do niego, ponieważ czasami **strony internetowe również zawierają tajemnice**.
#### Dorki GitHub
@@ -576,11 +576,11 @@ _Uwaga, że narzędzia, które oczekują uruchomienia całej bazy danych za pomo
### **Szukając luk**
-Jeśli znajdziesz **ważne wyciekłe** dane uwierzytelniające lub tokeny API, to bardzo łatwe zwycięstwo.
+Jeśli znajdziesz **ważne wyciekłe** dane uwierzytelniające lub tokeny API, to jest to bardzo łatwe zwycięstwo.
## Publiczne luki w kodzie
-Jeśli odkryjesz, że firma ma **otwarty kod źródłowy**, możesz go **analizować** i szukać **luk** w nim.
+Jeśli odkryjesz, że firma ma **kod open-source**, możesz go **analizować** i szukać **luk** w nim.
**W zależności od języka** istnieją różne **narzędzia**, które możesz użyć:
@@ -592,15 +592,15 @@ Istnieją również darmowe usługi, które pozwalają na **skanowanie publiczny
- [**Snyk**](https://app.snyk.io/)
-## [**Metodologia Pentestingu Web**](../../network-services-pentesting/pentesting-web/)
+## [**Metodologia Pentestingu Web**](../../network-services-pentesting/pentesting-web/index.html)
-**Większość luk** znalezionych przez łowców błędów znajduje się w **aplikacjach internetowych**, więc w tym momencie chciałbym porozmawiać o **metodologii testowania aplikacji internetowych**, a możesz [**znaleźć te informacje tutaj**](../../network-services-pentesting/pentesting-web/).
+**Większość luk** znalezionych przez łowców błędów znajduje się w **aplikacjach internetowych**, więc w tym momencie chciałbym porozmawiać o **metodologii testowania aplikacji internetowych**, a możesz [**znaleźć te informacje tutaj**](../../network-services-pentesting/pentesting-web/index.html).
-Chcę również szczególnie wspomnieć o sekcji [**Narzędzia do automatycznego skanowania aplikacji webowych open source**](../../network-services-pentesting/pentesting-web/index.html#automatic-scanners), ponieważ, jeśli nie powinieneś oczekiwać, że znajdą ci bardzo wrażliwe luki, są przydatne do wdrażania ich w **workflow, aby uzyskać pewne początkowe informacje o sieci.**
+Chcę również szczególnie wspomnieć o sekcji [**Narzędzia do automatycznego skanowania open source**](../../network-services-pentesting/pentesting-web/index.html#automatic-scanners), ponieważ, jeśli nie powinieneś oczekiwać, że znajdą ci bardzo wrażliwe luki, są przydatne do wdrażania ich w **workflow, aby uzyskać pewne początkowe informacje o sieci.**
## Reasumpcja
-> Gratulacje! Na tym etapie już wykonałeś **wszystkie podstawowe enumeracje**. Tak, to podstawowe, ponieważ można wykonać znacznie więcej enumeracji (zobaczymy więcej sztuczek później).
+> Gratulacje! W tym momencie już wykonałeś **wszystkie podstawowe enumeracje**. Tak, to podstawowe, ponieważ można wykonać znacznie więcej enumeracji (zobaczymy więcej sztuczek później).
Więc już:
@@ -611,7 +611,7 @@ Więc już:
5. Znalazłeś wszystkie **adresy IP** (z i **nie z CDN**) w zakresie.
6. Znalazłeś wszystkie **serwery internetowe** i zrobiłeś **zrzut ekranu** z nich (czy coś dziwnego wartego głębszego spojrzenia?)
7. Znalazłeś wszystkie **potencjalne publiczne zasoby chmurowe** należące do firmy.
-8. **E-maile**, **wycieki danych uwierzytelniających** i **wycieki sekretów**, które mogą dać ci **duże zwycięstwo bardzo łatwo**.
+8. **E-maile**, **wycieki danych uwierzytelniających** i **wycieki tajemnic**, które mogą dać ci **duże zwycięstwo bardzo łatwo**.
9. **Pentesting wszystkich stron, które znalazłeś**
## **Pełne automatyczne narzędzia rekonesansowe**
diff --git a/src/generic-methodologies-and-resources/pentesting-methodology.md b/src/generic-methodologies-and-resources/pentesting-methodology.md
index f1f50ca4c..6bf8316dc 100644
--- a/src/generic-methodologies-and-resources/pentesting-methodology.md
+++ b/src/generic-methodologies-and-resources/pentesting-methodology.md
@@ -13,17 +13,17 @@ _Loga Hacktricks zaprojektowane przez_ [_@ppiernacho_](https://www.instagram.com
Czy masz **fizyczny dostęp** do maszyny, którą chcesz zaatakować? Powinieneś przeczytać kilka [**sztuczek dotyczących ataków fizycznych**](../hardware-physical-access/physical-attacks.md) oraz innych dotyczących [**ucieczki z aplikacji GUI**](../hardware-physical-access/escaping-from-gui-applications.md).
-### 1 - [Odkrywanie hostów w sieci](pentesting-network/index.html#discovering-hosts)/ [Odkrywanie zasobów firmy](external-recon-methodology/)
+### 1 - [Odkrywanie hostów w sieci](pentesting-network/index.html#discovering-hosts)/ [Odkrywanie zasobów firmy](external-recon-methodology/index.html)
-**W zależności** od tego, czy **test**, który przeprowadzasz, jest **testem wewnętrznym czy zewnętrznym**, możesz być zainteresowany znalezieniem **hostów w sieci firmy** (test wewnętrzny) lub **znalezieniem zasobów firmy w Internecie** (test zewnętrzny).
+**W zależności** od tego, czy **test**, który przeprowadzasz, jest **testem wewnętrznym czy zewnętrznym**, możesz być zainteresowany znalezieniem **hostów w sieci firmy** (test wewnętrzny) lub **znalezieniem zasobów firmy w internecie** (test zewnętrzny).
> [!NOTE]
> Zauważ, że jeśli przeprowadzasz test zewnętrzny, po uzyskaniu dostępu do wewnętrznej sieci firmy powinieneś ponownie rozpocząć ten przewodnik.
-### **2-** [**Zabawa z siecią**](pentesting-network/) **(Wewnętrzny)**
+### **2-** [**Zabawa z siecią**](pentesting-network/index.html) **(Wewnętrzny)**
**Ta sekcja dotyczy tylko testów wewnętrznych.**\
-Zanim zaatakujesz hosta, może wolisz **ukraść jakieś dane logowania** **z sieci** lub **podsłuchiwać** jakieś **dane**, aby pasywnie/aktywnie (MitM) dowiedzieć się, co możesz znaleźć w sieci. Możesz przeczytać [**Pentesting Network**](pentesting-network/index.html#sniffing).
+Zanim zaatakujesz hosta, może wolisz **ukraść jakieś dane logowania** **z sieci** lub **podsłuchiwać** jakieś **dane**, aby dowiedzieć się **pasywnie/aktywnie (MitM)**, co możesz znaleźć w sieci. Możesz przeczytać [**Pentesting Network**](pentesting-network/index.html#sniffing).
### 3- [Skanowanie portów - Odkrywanie usług](pentesting-network/index.html#scanning-hosts)
@@ -35,11 +35,11 @@ Gdy już wiesz, które usługi są uruchomione, a może ich wersje, musisz **szu
### **5-** Usługi Pentestingu
-Jeśli nie ma żadnego fajnego exploita dla żadnej uruchomionej usługi, powinieneś poszukać **częstych błędów konfiguracyjnych w każdej uruchomionej usłudze.**
+Jeśli nie ma żadnego fajnego exploita dla żadnej działającej usługi, powinieneś poszukać **częstych błędów konfiguracyjnych w każdej działającej usłudze.**
-**W tej książce znajdziesz przewodnik po pentestingu najczęstszych usług** (i innych, które nie są tak powszechne). Proszę, poszukaj w lewym indeksie sekcji _**PENTESTING**_ (usługi są uporządkowane według ich domyślnych portów).
+**W tej książce znajdziesz przewodnik po pentestowaniu najczęstszych usług** (i innych, które nie są tak powszechne)**. Proszę, poszukaj w lewym indeksie sekcji** _**PENTESTING**_ **(usługi są uporządkowane według ich domyślnych portów).**
-**Chcę szczególnie wspomnieć o części** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **(ponieważ jest najbardziej rozbudowana).**\
+**Chcę szczególnie wspomnieć o** [**Pentestingu Web**](../network-services-pentesting/pentesting-web/index.html) **(ponieważ jest to najbardziej rozbudowana część).**\
Również mały przewodnik na temat [**znajdowania znanych luk w oprogramowaniu**](../generic-hacking/search-exploits.md) można znaleźć tutaj.
**Jeśli twoja usługa nie znajduje się w indeksie, poszukaj w Google** innych samouczków i **daj mi znać, jeśli chcesz, żebym to dodał.** Jeśli **nie możesz nic znaleźć** w Google, przeprowadź **własny ślepy pentesting**, możesz zacząć od **połączenia się z usługą, fuzzowania jej i czytania odpowiedzi** (jeśli jakieś są).
@@ -52,46 +52,46 @@ Istnieje również kilka narzędzi, które mogą przeprowadzać **automatyczne o
W niektórych scenariuszach **Brute-Force** może być przydatny do **kompromitacji** **usługi**. [**Znajdź tutaj CheatSheet różnych usług do bruteforce**](../generic-hacking/brute-force.md)**.**
-### 6- [Phishing](phishing-methodology/)
+### 6- [Phishing](phishing-methodology/index.html)
-Jeśli w tym momencie nie znalazłeś żadnej interesującej luki, **możesz spróbować phishingu**, aby dostać się do sieci. Możesz przeczytać moją metodologię phishingu [tutaj](phishing-methodology/):
+Jeśli w tym momencie nie znalazłeś żadnej interesującej luki, **możesz spróbować phishingu**, aby dostać się do sieci. Możesz przeczytać moją metodologię phishingu [tutaj](phishing-methodology/index.html):
-### **7-** [**Uzyskiwanie powłoki**](../generic-hacking/reverse-shells/)
+### **7-** [**Uzyskiwanie powłoki**](../generic-hacking/reverse-shells/index.html)
-W jakiś sposób powinieneś znaleźć **sposób na wykonanie kodu** na ofierze. Następnie [lista możliwych narzędzi w systemie, które możesz użyć do uzyskania powłoki odwrotnej, byłaby bardzo przydatna](../generic-hacking/reverse-shells/).
+W jakiś sposób powinieneś znaleźć **jakąś metodę wykonania kodu** na ofierze. Następnie [lista możliwych narzędzi w systemie, które możesz użyć do uzyskania powłoki odwrotnej, byłaby bardzo przydatna](../generic-hacking/reverse-shells/index.html).
Szczególnie w systemie Windows możesz potrzebować pomocy, aby **unikać programów antywirusowych**: [**Sprawdź tę stronę**](../windows-hardening/av-bypass.md)**.**\\
### 8- Wewnątrz
-Jeśli masz problemy z powłoką, możesz tutaj znaleźć małą **kompilację najprzydatniejszych poleceń** dla pentesterów:
+Jeśli masz problemy z powłoką, możesz tutaj znaleźć małą **kompilację najbardziej przydatnych poleceń** dla pentesterów:
- [**Linux**](../linux-hardening/useful-linux-commands.md)
- [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
-- [**Windows (PS)**](../windows-hardening/basic-powershell-for-pentesters/)
+- [**Windows (PS)**](../windows-hardening/basic-powershell-for-pentesters/index.html)
### **9 -** [**Ekstrakcja**](../generic-hacking/exfiltration.md)
-Prawdopodobnie będziesz musiał **wyodrębnić jakieś dane z ofiary** lub nawet **wprowadzić coś** (jak skrypty do eskalacji uprawnień). **Tutaj masz** [**post o wspólnych narzędziach, które możesz użyć do tych celów**](../generic-hacking/exfiltration.md)**.**
+Prawdopodobnie będziesz musiał **wyciągnąć jakieś dane z ofiary** lub nawet **wprowadzić coś** (jak skrypty do eskalacji uprawnień). **Tutaj masz** [**post o wspólnych narzędziach, które możesz użyć do tych celów**](../generic-hacking/exfiltration.md)**.**
### **10- Eskalacja uprawnień**
-#### **10.1- Lokalne Privesc**
+#### **10.1- Lokalna eskalacja uprawnień**
-Jeśli **nie jesteś rootem/Administratorem** w systemie, powinieneś znaleźć sposób na **eskalację uprawnień.**\
-Tutaj znajdziesz **przewodnik po eskalacji uprawnień lokalnie w** [**Linuxie**](../linux-hardening/privilege-escalation/) **i w** [**Windowsie**](../windows-hardening/windows-local-privilege-escalation/)**.**\
+Jeśli nie jesteś **rootem/Administratorem** w systemie, powinieneś znaleźć sposób na **eskalację uprawnień.**\
+Tutaj znajdziesz **przewodnik po eskalacji uprawnień lokalnie w** [**Linuxie**](../linux-hardening/privilege-escalation/index.html) **i w** [**Windowsie**](../windows-hardening/windows-local-privilege-escalation/index.html)**.**\
Powinieneś również sprawdzić te strony dotyczące tego, jak działa **Windows**:
-- [**Uwierzytelnianie, dane logowania, uprawnienia tokenów i UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
-- Jak działa [**NTLM**](../windows-hardening/ntlm/)
+- [**Uwierzytelnianie, dane logowania, uprawnienia tokenów i UAC**](../windows-hardening/authentication-credentials-uac-and-efs/index.html)
+- Jak działa [**NTLM**](../windows-hardening/ntlm/index.html)
- Jak [**ukraść dane logowania**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) w Windowsie
-- Kilka sztuczek dotyczących [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
+- Kilka sztuczek dotyczących [_**Active Directory**_](../windows-hardening/active-directory-methodology/index.html)
-**Nie zapomnij sprawdzić najlepszych narzędzi do enumeracji lokalnych ścieżek eskalacji uprawnień w Windowsie i Linuxie:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
+**Nie zapomnij sprawdzić najlepszych narzędzi do enumeracji lokalnych ścieżek eskalacji uprawnień w Windows i Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
-#### **10.2- Domain Privesc**
+#### **10.2- Eskalacja uprawnień w domenie**
-Tutaj znajdziesz [**metodologię wyjaśniającą najczęstsze działania w celu enumeracji, eskalacji uprawnień i utrzymania się w Active Directory**](../windows-hardening/active-directory-methodology/). Nawet jeśli jest to tylko podsekcja sekcji, ten proces może być **ekstremalnie delikatny** w zadaniu Pentesting/Red Team.
+Tutaj znajdziesz [**metodologię wyjaśniającą najczęstsze działania w celu enumeracji, eskalacji uprawnień i utrzymania się w Active Directory**](../windows-hardening/active-directory-methodology/index.html). Nawet jeśli jest to tylko podsekcja sekcji, ten proces może być **ekstremalnie delikatny** w zadaniu Pentesting/Red Team.
### 11 - POST
@@ -105,26 +105,26 @@ Znajdź tutaj różne sposoby [**zrzucania haseł w Windowsie**](https://github.
**Użyj 2 lub 3 różnych typów mechanizmów utrzymywania, aby nie musieć ponownie eksploatować systemu.**\
**Tutaj znajdziesz kilka** [**sztuczek dotyczących utrzymywania w Active Directory**](../windows-hardening/active-directory-methodology/index.html#persistence)**.**
-TODO: Uzupełnij post dotyczący utrzymywania w Windowsie i Linuxie
+TODO: Uzupełnij post o utrzymywaniu w Windows i Linux
### 12 - Pivoting
-Dzięki **zebranym danym logowania** możesz uzyskać dostęp do innych maszyn, lub może musisz **odkryć i zeskanować nowe hosty** (rozpocznij metodologię pentestingu od nowa) w nowych sieciach, w których jest połączona twoja ofiara.\
+Dzięki **zebranym danym logowania** możesz uzyskać dostęp do innych maszyn, lub może musisz **odkryć i zeskanować nowe hosty** (rozpocznij metodologię pentestingu od nowa) w nowych sieciach, do których jest podłączona twoja ofiara.\
W takim przypadku tunelowanie może być konieczne. Tutaj możesz znaleźć [**post mówiący o tunelowaniu**](../generic-hacking/tunneling-and-port-forwarding.md).\
-Zdecydowanie powinieneś również sprawdzić post o [metodologii pentestingu Active Directory](../windows-hardening/active-directory-methodology/). Znajdziesz tam fajne sztuczki do poruszania się lateralnie, eskalacji uprawnień i zrzucania danych logowania.\
-Sprawdź również stronę o [**NTLM**](../windows-hardening/ntlm/), może być bardzo przydatna do pivotowania w środowiskach Windows..
+Zdecydowanie powinieneś również sprawdzić post o [metodologii pentestingu Active Directory](../windows-hardening/active-directory-methodology/index.html). Tam znajdziesz fajne sztuczki do poruszania się lateralnie, eskalacji uprawnień i zrzucania danych logowania.\
+Sprawdź również stronę o [**NTLM**](../windows-hardening/ntlm/index.html), może być bardzo przydatna do pivotingu w środowiskach Windows..
### WIĘCEJ
-#### [Aplikacje Android](../mobile-pentesting/android-app-pentesting/)
+#### [Aplikacje Android](../mobile-pentesting/android-app-pentesting/index.html)
#### **Eksploatacja**
-- [**Podstawowa eksploatacja Linuxa**](broken-reference/)
-- [**Podstawowa eksploatacja Windowsa**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
-- [**Podstawowe narzędzia eksploatacji**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/)
+- [**Podstawowa eksploatacja w Linuxie**](broken-reference/index.html)
+- [**Podstawowa eksploatacja w Windowsie**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
+- [**Podstawowe narzędzia eksploatacji**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/index.html)
-#### [**Podstawowy Python**](python/)
+#### [**Podstawowy Python**](python/index.html)
#### **Sztuczki kryptograficzne**
diff --git a/src/generic-methodologies-and-resources/python/README.md b/src/generic-methodologies-and-resources/python/README.md
index 0c1410bd3..bcc9a6f08 100644
--- a/src/generic-methodologies-and-resources/python/README.md
+++ b/src/generic-methodologies-and-resources/python/README.md
@@ -6,7 +6,7 @@
- [**Sztuczki hackingowe Pyscript**](pyscript.md)
- [**Deserializacje w Pythonie**](../../pentesting-web/deserialization/index.html#python)
-- [**Sztuczki do omijania piaskownic Pythona**](bypass-python-sandboxes/)
+- [**Sztuczki do omijania piaskownic Pythona**](bypass-python-sandboxes/index.html)
- [**Podstawowa składnia żądań webowych w Pythonie**](web-requests.md)
- [**Podstawowa składnia Pythona i biblioteki**](basic-python.md)
diff --git a/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md b/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md
index 8e3c1931f..334cb1ac6 100644
--- a/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md
+++ b/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md
@@ -13,7 +13,7 @@ Główna strona aplikacji Flask prawdopodobnie będzie miała globalny obiekt **
app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'
```
-W tym przypadku możliwe jest uzyskanie dostępu do tego obiektu, używając dowolnego gadżetu do **uzyskania dostępu do obiektów globalnych** z [**strony Bypass Python sandboxes**](bypass-python-sandboxes/).
+W tym przypadku możliwe jest uzyskanie dostępu do tego obiektu, używając dowolnego gadżetu do **uzyskiwania dostępu do obiektów globalnych** z [**strony Bypass Python sandboxes**](bypass-python-sandboxes/index.html).
W przypadku, gdy **vulnerability znajduje się w innym pliku python**, potrzebujesz gadżetu do przeszukiwania plików, aby dotrzeć do głównego, aby **uzyskać dostęp do obiektu globalnego `app.secret_key`**, aby zmienić klucz tajny Flask i móc [**eskalować uprawnienia** znając ten klucz](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign).
@@ -25,7 +25,7 @@ Użyj tego ładunku, aby **zmienić `app.secret_key`** (nazwa w twojej aplikacji
### Werkzeug - machine_id i node uuid
-[**Używając tych ładunków z tego opisu**](https://vozec.fr/writeups/tweedle-dum-dee/) będziesz mógł uzyskać dostęp do **machine_id** i **uuid** węzła, które są **głównymi sekretami**, których potrzebujesz, aby [**wygenerować pin Werkzeug**](../../network-services-pentesting/pentesting-web/werkzeug.md), którego możesz użyć do uzyskania dostępu do konsoli python w `/console`, jeśli **tryb debugowania jest włączony:**
+[**Używając tych ładunków z tego opisu**](https://vozec.fr/writeups/tweedle-dum-dee/) będziesz mógł uzyskać dostęp do **machine_id** i **uuid** węzła, które są **głównymi sekretami**, których potrzebujesz, aby [**wygenerować pin Werkzeug**](../../network-services-pentesting/pentesting-web/werkzeug.md), którego możesz użyć do uzyskania dostępu do konsoli pythona w `/console`, jeśli **tryb debugowania jest włączony:**
```python
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}
diff --git a/src/linux-hardening/linux-privilege-escalation-checklist.md b/src/linux-hardening/linux-privilege-escalation-checklist.md
index 2574a6b5e..0b9e6a0d5 100644
--- a/src/linux-hardening/linux-privilege-escalation-checklist.md
+++ b/src/linux-hardening/linux-privilege-escalation-checklist.md
@@ -7,13 +7,13 @@
### [Informacje o systemie](privilege-escalation/index.html#system-information)
- [ ] Uzyskaj **informacje o systemie operacyjnym**
-- [ ] Sprawdź [**ŚCIEŻKĘ**](privilege-escalation/index.html#path), czy jest jakaś **zapisywalna folder**?
+- [ ] Sprawdź [**PATH**](privilege-escalation/index.html#path), czy jest jakaś **zapisywalna folder**?
- [ ] Sprawdź [**zmienne środowiskowe**](privilege-escalation/index.html#env-info), czy są jakieś wrażliwe dane?
- [ ] Szukaj [**eksploitów jądra**](privilege-escalation/index.html#kernel-exploits) **używając skryptów** (DirtyCow?)
- [ ] **Sprawdź**, czy [**wersja sudo** jest podatna](privilege-escalation/index.html#sudo-version)
- [ ] [**Weryfikacja podpisu Dmesg** nie powiodła się](privilege-escalation/index.html#dmesg-signature-verification-failed)
-- [ ] Więcej enumeracji systemu ([data, statystyki systemu, informacje o CPU, drukarki](privilege-escalation/index.html#more-system-enumeration))
-- [ ] [Enumeruj więcej zabezpieczeń](privilege-escalation/index.html#enumerate-possible-defenses)
+- [ ] Więcej informacji o systemie ([data, statystyki systemu, informacje o CPU, drukarki](privilege-escalation/index.html#more-system-enumeration))
+- [ ] [Zenumeruj więcej zabezpieczeń](privilege-escalation/index.html#enumerate-possible-defenses)
### [Dyski](privilege-escalation/index.html#drives)
@@ -30,15 +30,15 @@
- [ ] Czy jakieś **nieznane oprogramowanie działa**?
- [ ] Czy jakieś oprogramowanie działa z **większymi uprawnieniami niż powinno**?
-- [ ] Szukaj **eksploitów działających procesów** (szczególnie wersji działającej).
-- [ ] Czy możesz **zmodyfikować binarny plik** jakiegoś działającego procesu?
+- [ ] Szukaj **eksploitów działających procesów** (szczególnie wersji, która działa).
+- [ ] Czy możesz **zmodyfikować binarny** plik jakiegoś działającego procesu?
- [ ] **Monitoruj procesy** i sprawdź, czy jakiś interesujący proces działa często.
-- [ ] Czy możesz **odczytać** jakąś interesującą **pamięć procesu** (gdzie mogą być zapisane hasła)?
+- [ ] Czy możesz **odczytać** pamięć **procesu** (gdzie mogą być zapisane hasła)?
### [Zadania zaplanowane/Cron?](privilege-escalation/index.html#scheduled-jobs)
-- [ ] Czy [**ŚCIEŻKA**](privilege-escalation/index.html#cron-path) jest modyfikowana przez jakiś cron i możesz w niej **zapisywać**?
-- [ ] Jakieś [**znaki wieloznaczne**](privilege-escalation/index.html#cron-using-a-script-with-a-wildcard-wildcard-injection) w zadaniu cron?
+- [ ] Czy [**PATH**](privilege-escalation/index.html#cron-path) jest modyfikowany przez jakiś cron i możesz w nim **zapisać**?
+- [ ] Jakieś [**wildcard**](privilege-escalation/index.html#cron-using-a-script-with-a-wildcard-wildcard-injection) w zadaniu cron?
- [ ] Jakiś [**modyfikowalny skrypt**](privilege-escalation/index.html#cron-script-overwriting-and-symlink) jest **wykonywany** lub znajduje się w **modyfikowalnym folderze**?
- [ ] Czy wykryłeś, że jakiś **skrypt** może być lub jest [**wykonywany** bardzo **często**](privilege-escalation/index.html#frequent-cron-jobs)? (co 1, 2 lub 5 minut)
@@ -46,7 +46,7 @@
- [ ] Jakikolwiek **zapisywalny plik .service**?
- [ ] Jakikolwiek **zapisywalny plik binarny** wykonywany przez **usługę**?
-- [ ] Jakikolwiek **zapisywalny folder w PATH systemd**?
+- [ ] Jakikolwiek **zapisywalny folder w systemd PATH**?
### [Timery](privilege-escalation/index.html#timers)
@@ -65,27 +65,27 @@
### [Sieć](privilege-escalation/index.html#network)
- [ ] Zenumeruj sieć, aby wiedzieć, gdzie jesteś
-- [ ] **Otwarte porty, do których nie mogłeś uzyskać dostępu przed** uzyskaniem powłoki wewnątrz maszyny?
+- [ ] **Otwarte porty, do których nie mogłeś uzyskać dostępu** przed uzyskaniem powłoki wewnątrz maszyny?
- [ ] Czy możesz **przechwytywać ruch** używając `tcpdump`?
### [Użytkownicy](privilege-escalation/index.html#users)
- [ ] Ogólna **enumeracja użytkowników/grup**
- [ ] Czy masz **bardzo duży UID**? Czy **maszyna** jest **podatna**?
-- [ ] Czy możesz [**eskalować uprawnienia dzięki grupie**](privilege-escalation/interesting-groups-linux-pe/), do której należysz?
+- [ ] Czy możesz [**eskalować uprawnienia dzięki grupie**](privilege-escalation/interesting-groups-linux-pe/index.html), do której należysz?
- [ ] **Dane z schowka**?
- [ ] Polityka haseł?
- [ ] Spróbuj **użyć** każdego **znanego hasła**, które odkryłeś wcześniej, aby zalogować się **z każdym** możliwym **użytkownikiem**. Spróbuj również zalogować się bez hasła.
-### [Zapisywalna ŚCIEŻKA](privilege-escalation/index.html#writable-path-abuses)
+### [Zapisywalny PATH](privilege-escalation/index.html#writable-path-abuses)
- [ ] Jeśli masz **uprawnienia do zapisu w jakimś folderze w PATH**, możesz być w stanie eskalować uprawnienia
-### [Polecenia SUDO i SUID](privilege-escalation/index.html#sudo-and-suid)
+### [Komendy SUDO i SUID](privilege-escalation/index.html#sudo-and-suid)
-- [ ] Czy możesz wykonać **jakiekolwiek polecenie z sudo**? Czy możesz użyć go do ODCZYTU, ZAPISU lub WYKONANIA czegokolwiek jako root? ([**GTFOBins**](https://gtfobins.github.io))
+- [ ] Czy możesz wykonać **jakąkolwiek komendę z sudo**? Czy możesz użyć tego do ODCZYTU, ZAPISU lub WYKONANIA czegokolwiek jako root? ([**GTFOBins**](https://gtfobins.github.io))
- [ ] Czy jakiś **eksploatowalny plik binarny SUID**? ([**GTFOBins**](https://gtfobins.github.io))
-- [ ] Czy [**polecenia sudo** są **ograniczone** przez **ścieżkę**? czy możesz **obejść** te ograniczenia](privilege-escalation/index.html#sudo-execution-bypassing-paths)?
+- [ ] Czy [**komendy sudo** są **ograniczone** przez **ścieżkę**? czy możesz **obejść** te ograniczenia](privilege-escalation/index.html#sudo-execution-bypassing-paths)?
- [ ] [**Sudo/SUID binarny bez wskazanej ścieżki**](privilege-escalation/index.html#sudo-command-suid-binary-without-command-path)?
- [ ] [**SUID binarny z określoną ścieżką**](privilege-escalation/index.html#suid-binary-with-command-path)? Obejście
- [ ] [**Vuln LD_PRELOAD**](privilege-escalation/index.html#ld_preload)
@@ -93,7 +93,7 @@
- [ ] [**Dostępne tokeny SUDO**](privilege-escalation/index.html#reusing-sudo-tokens)? [**Czy możesz stworzyć token SUDO**](privilege-escalation/index.html#var-run-sudo-ts-less-than-username-greater-than)?
- [ ] Czy możesz [**czytać lub modyfikować pliki sudoers**](privilege-escalation/index.html#etc-sudoers-etc-sudoers-d)?
- [ ] Czy możesz [**zmodyfikować /etc/ld.so.conf.d/**](privilege-escalation/index.html#etc-ld-so-conf-d)?
-- [ ] [**OpenBSD DOAS**](privilege-escalation/index.html#doas) polecenie
+- [ ] [**OpenBSD DOAS**](privilege-escalation/index.html#doas) komenda
### [Uprawnienia](privilege-escalation/index.html#capabilities)
@@ -115,8 +115,8 @@
### [Interesujące pliki](privilege-escalation/index.html#interesting-files)
-- [ ] **Pliki profilu** - Odczytaj wrażliwe dane? Zapisz do privesc?
-- [ ] **Pliki passwd/shadow** - Odczytaj wrażliwe dane? Zapisz do privesc?
+- [ ] **Pliki profilu** - Czytaj wrażliwe dane? Zapisz do privesc?
+- [ ] **Pliki passwd/shadow** - Czytaj wrażliwe dane? Zapisz do privesc?
- [ ] **Sprawdź powszechnie interesujące foldery** pod kątem wrażliwych danych
- [ ] **Dziwne lokalizacje/Pliki własnościowe**, do których możesz mieć dostęp lub zmieniać pliki wykonywalne
- [ ] **Zmodyfikowane** w ostatnich minutach
@@ -130,10 +130,10 @@
### [**Zapisywalne pliki**](privilege-escalation/index.html#writable-files)
-- [ ] **Modyfikuj bibliotekę Pythona** w celu wykonania dowolnych poleceń?
+- [ ] **Modyfikuj bibliotekę Pythona** aby wykonywać dowolne komendy?
- [ ] Czy możesz **modyfikować pliki dziennika**? **Eksploit Logtotten**
- [ ] Czy możesz **modyfikować /etc/sysconfig/network-scripts/**? Eksploit Centos/Redhat
-- [ ] Czy możesz [**zapisywać w plikach ini, int.d, systemd lub rc.d**](privilege-escalation/index.html#init-init-d-systemd-and-rc-d)?
+- [ ] Czy możesz [**zapisać w plikach ini, int.d, systemd lub rc.d**](privilege-escalation/index.html#init-init-d-systemd-and-rc-d)?
### [**Inne sztuczki**](privilege-escalation/index.html#other-tricks)
diff --git a/src/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md b/src/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md
index 7a4f4e214..6b15905a1 100644
--- a/src/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md
+++ b/src/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md
@@ -29,18 +29,18 @@ For help, see: https://nodejs.org/en/docs/inspector
```
Procesy oparte na **CEF** (**Chromium Embedded Framework**) muszą używać parametru: `--remote-debugging-port=9222`, aby otworzyć **debugger** (ochrony SSRF pozostają bardzo podobne). Jednak **zamiast** przyznawania sesji **debug** **NodeJS**, będą komunikować się z przeglądarką za pomocą [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/), co jest interfejsem do kontrolowania przeglądarki, ale nie ma bezpośredniego RCE.
-Kiedy uruchomisz debugowaną przeglądarkę, coś takiego się pojawi:
+Kiedy uruchomisz debugowaną przeglądarkę, pojawi się coś takiego:
```
DevTools listening on ws://127.0.0.1:9222/devtools/browser/7d7aa9d9-7c61-4114-b4c6-fcf5c35b4369
```
-### Przeglądarki, WebSockety i polityka tego samego pochodzenia
+### Browsers, WebSockets and same-origin policy
-Strony internetowe otwarte w przeglądarce mogą wysyłać żądania WebSocket i HTTP zgodnie z modelem bezpieczeństwa przeglądarki. **Początkowe połączenie HTTP** jest konieczne, aby **uzyskać unikalny identyfikator sesji debuggera**. **Polityka tego samego pochodzenia** **zapobiega** stronom internetowym w nawiązywaniu **tego połączenia HTTP**. Dla dodatkowego bezpieczeństwa przed [**atakami DNS rebinding**](https://en.wikipedia.org/wiki/DNS_rebinding)**,** Node.js weryfikuje, że **nagłówki 'Host'** dla połączenia albo określają **adres IP**, albo **`localhost`**, albo **`localhost6`** dokładnie.
+Strony internetowe otwarte w przeglądarce mogą wysyłać żądania WebSocket i HTTP zgodnie z modelem bezpieczeństwa przeglądarki. **Początkowe połączenie HTTP** jest konieczne, aby **uzyskać unikalny identyfikator sesji debuggera**. **Polityka same-origin** **zapobiega** stronom internetowym w nawiązywaniu **tego połączenia HTTP**. Dla dodatkowego bezpieczeństwa przed [**atakami DNS rebinding**](https://en.wikipedia.org/wiki/DNS_rebinding)**,** Node.js weryfikuje, że **nagłówki 'Host'** dla połączenia albo określają **adres IP**, albo **`localhost`**, albo **`localhost6`** dokładnie.
> [!NOTE]
-> Te **środki bezpieczeństwa zapobiegają wykorzystaniu inspektora** do uruchamiania kodu poprzez **wysłanie żądania HTTP** (co mogłoby być zrealizowane poprzez wykorzystanie luki SSRF).
+> Te **środki bezpieczeństwa zapobiegają wykorzystaniu inspektora** do uruchamiania kodu poprzez **wysłanie tylko żądania HTTP** (co mogłoby być zrealizowane poprzez wykorzystanie luki SSRF).
-### Uruchamianie inspektora w działających procesach
+### Starting inspector in running processes
Możesz wysłać **sygnał SIGUSR1** do działającego procesu nodejs, aby **uruchomić inspektora** na domyślnym porcie. Należy jednak pamiętać, że musisz mieć wystarczające uprawnienia, więc może to dać ci **uprzywilejowany dostęp do informacji wewnątrz procesu**, ale nie bezpośrednią eskalację uprawnień.
```bash
@@ -73,12 +73,12 @@ Narzędzie [**https://github.com/taviso/cefdebug**](https://github.com/taviso/ce
./cefdebug.exe --url ws://127.0.0.1:3585/5a9e3209-3983-41fa-b0ab-e739afc8628a --code "process.mainModule.require('child_process').exec('calc')"
```
> [!NOTE]
-> Zauważ, że **eksploity RCE NodeJS nie będą działać**, jeśli są połączone z przeglądarką za pomocą [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) (musisz sprawdzić API, aby znaleźć interesujące rzeczy do zrobienia z tym).
+> Zauważ, że **eksploity RCE w NodeJS nie będą działać**, jeśli są połączone z przeglądarką za pomocą [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) (musisz sprawdzić API, aby znaleźć interesujące rzeczy do zrobienia z tym).
## RCE w Debuggerze/Inspektorze NodeJS
> [!NOTE]
-> Jeśli przyszedłeś tutaj, szukając jak uzyskać [**RCE z XSS w Electron, sprawdź tę stronę.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
+> Jeśli przyszedłeś tutaj, szukając jak uzyskać [**RCE z XSS w Electron, sprawdź tę stronę.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/index.html)
Niektóre powszechne sposoby uzyskania **RCE**, gdy możesz **połączyć** się z **inspektorem** Node, to użycie czegoś takiego (wygląda na to, że **to nie zadziała w połączeniu z protokołem Chrome DevTools**):
```javascript
@@ -94,9 +94,9 @@ W tej sekcji po prostu wymienię interesujące rzeczy, które znalazłem, a któ
### Wstrzykiwanie parametrów za pomocą głębokich linków
-W [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) firma Rhino Security odkryła, że aplikacja oparta na CEF **zarejestrowała niestandardowy URI** w systemie (workspaces://), który odbierał pełny URI, a następnie **uruchamiał aplikację opartą na CEF** z konfiguracją, która była częściowo konstruowana z tego URI.
+W [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) firma Rhino Security odkryła, że aplikacja oparta na CEF **zarejestrowała niestandardowy URI** w systemie (workspaces://index.html), który odbierał pełny URI, a następnie **uruchamiał aplikację opartą na CEF** z konfiguracją, która była częściowo konstruowana z tego URI.
-Odkryto, że parametry URI były dekodowane URL i używane do uruchamiania podstawowej aplikacji CEF, co pozwalało użytkownikowi na **wstrzykiwanie** flagi **`--gpu-launcher`** w **wierszu poleceń** i wykonywanie dowolnych rzeczy.
+Odkryto, że parametry URI były dekodowane URL i używane do uruchamiania podstawowej aplikacji CEF, co pozwalało użytkownikowi **wstrzykiwać** flagę **`--gpu-launcher`** w **wierszu poleceń** i wykonywać dowolne rzeczy.
Więc, ładunek taki jak:
```
@@ -128,7 +128,7 @@ Zgodnie z tym postem: [https://medium.com/@knownsec404team/counter-webdriver-fro
W rzeczywistym środowisku i **po skompromitowaniu** komputera użytkownika, który używa przeglądarki opartej na Chrome/Chromium, możesz uruchomić proces Chrome z **włączonym debugowaniem i przekierować port debugowania**, aby uzyskać do niego dostęp. W ten sposób będziesz mógł **inspekcjonować wszystko, co ofiara robi w Chrome i kraść wrażliwe informacje**.
-Sposób na to w ukryciu to **zakończenie każdego procesu Chrome** i następnie wywołanie czegoś takiego jak
+Sposób na to, aby być niezauważonym, to **zakończyć każdy proces Chrome** i następnie wywołać coś takiego jak
```bash
Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session"
```
diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/README.md b/src/macos-hardening/macos-security-and-privilege-escalation/README.md
index 0d6e3aa1d..f3d339659 100644
--- a/src/macos-hardening/macos-security-and-privilege-escalation/README.md
+++ b/src/macos-hardening/macos-security-and-privilege-escalation/README.md
@@ -6,13 +6,13 @@
Jeśli nie znasz macOS, powinieneś zacząć od nauki podstaw macOS:
-- Specjalne **pliki i uprawnienia** macOS:
+- Specjalne pliki i **uprawnienia macOS:**
{{#ref}}
macos-files-folders-and-binaries/
{{#endref}}
-- Powszechni **użytkownicy** macOS
+- Typowi **użytkownicy macOS**
{{#ref}}
macos-users.md
@@ -30,14 +30,14 @@ macos-applefs.md
mac-os-architecture/
{{#endref}}
-- Powszechne **usługi i protokoły sieciowe** macOS
+- Typowe usługi i **protokoły sieciowe macOS**
{{#ref}}
macos-protocols.md
{{#endref}}
-- **Oprogramowanie open source** macOS: [https://opensource.apple.com/](https://opensource.apple.com/)
-- Aby pobrać `tar.gz`, zmień adres URL, na przykład [https://opensource.apple.com/**source**/dyld/](https://opensource.apple.com/source/dyld/) na [https://opensource.apple.com/**tarballs**/dyld/**dyld-852.2.tar.gz**](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz)
+- **Opensource** macOS: [https://opensource.apple.com/](https://opensource.apple.com/)
+- Aby pobrać `tar.gz`, zmień URL, taki jak [https://opensource.apple.com/**source**/dyld/](https://opensource.apple.com/source/dyld/) na [https://opensource.apple.com/**tarballs**/dyld/**dyld-852.2.tar.gz**](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz)
### MacOS MDM
@@ -71,7 +71,7 @@ Może to wystąpić w następujących sytuacjach:
- Plik użyty znajduje się w katalogu należącym do użytkownika (użytkownik mógłby utworzyć plik)
- Plik użyty znajduje się w katalogu należącym do roota, ale użytkownik ma do niego dostęp do zapisu z powodu grupy (użytkownik mógłby utworzyć plik)
-Możliwość **utworzenia pliku**, który będzie **używany przez roota**, pozwala użytkownikowi **wykorzystać jego zawartość** lub nawet utworzyć **symlinki/twarde linki**, aby wskazać go w inne miejsce.
+Możliwość **utworzenia pliku**, który będzie **używany przez roota**, pozwala użytkownikowi **wykorzystać jego zawartość** lub nawet utworzyć **symlinki/hardlinki**, aby wskazać go w inne miejsce.
W przypadku tego rodzaju luk nie zapomnij **sprawdzić podatnych instalatorów `.pkg`**:
@@ -81,7 +81,7 @@ macos-files-folders-and-binaries/macos-installers-abuse.md
### Obsługa rozszerzeń plików i schematów URL
-Dziwne aplikacje zarejestrowane przez rozszerzenia plików mogą być wykorzystywane, a różne aplikacje mogą być zarejestrowane do otwierania określonych protokołów
+Dziwne aplikacje zarejestrowane przez rozszerzenia plików mogą być nadużywane, a różne aplikacje mogą być zarejestrowane do otwierania konkretnych protokołów
{{#ref}}
macos-file-extension-apps.md
@@ -93,13 +93,13 @@ W macOS **aplikacje i pliki binarne mogą mieć uprawnienia** do dostępu do fol
Dlatego atakujący, który chce skutecznie skompromitować maszynę macOS, będzie musiał **eskalować swoje uprawnienia TCC** (lub nawet **obejść SIP**, w zależności od jego potrzeb).
-Te uprawnienia są zazwyczaj nadawane w formie **uprawnień**, z którymi aplikacja jest podpisana, lub aplikacja może poprosić o pewne dostępy, a po **zatwierdzeniu ich przez użytkownika** mogą być one znalezione w **bazach danych TCC**. Innym sposobem, w jaki proces może uzyskać te uprawnienia, jest bycie **dzieckiem procesu** z tymi **uprawnieniami**, ponieważ są one zazwyczaj **dziedziczone**.
+Te uprawnienia są zazwyczaj przyznawane w formie **uprawnień**, z którymi aplikacja jest podpisana, lub aplikacja może poprosić o pewne dostępy, a po **zatwierdzeniu ich przez użytkownika** mogą być one znalezione w **bazach danych TCC**. Innym sposobem, w jaki proces może uzyskać te uprawnienia, jest bycie **dzieckiem procesu** z tymi **uprawnieniami**, ponieważ są one zazwyczaj **dziedziczone**.
-Śledź te linki, aby znaleźć różne sposoby [**eskalacji uprawnień w TCC**](macos-security-protections/macos-tcc/index.html#tcc-privesc-and-bypasses), aby [**obejść TCC**](macos-security-protections/macos-tcc/macos-tcc-bypasses/) i jak w przeszłości [**SIP został obejrzany**](macos-security-protections/macos-sip.md#sip-bypasses).
+Śledź te linki, aby znaleźć różne sposoby [**eskalacji uprawnień w TCC**](macos-security-protections/macos-tcc/index.html#tcc-privesc-and-bypasses), aby [**obejść TCC**](macos-security-protections/macos-tcc/macos-tcc-bypasses/index.html) i jak w przeszłości [**SIP został obejrzany**](macos-security-protections/macos-sip.md#sip-bypasses).
## macOS Traditional Privilege Escalation
-Oczywiście z perspektywy zespołu red team również powinieneś być zainteresowany eskalacją do roota. Sprawdź następujący post, aby uzyskać kilka wskazówek:
+Oczywiście z perspektywy red teamu powinieneś być również zainteresowany eskalacją do roota. Sprawdź następujący post, aby uzyskać kilka wskazówek:
{{#ref}}
macos-privilege-escalation.md
diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md
index 04f4d4c1b..d52af3f00 100644
--- a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md
+++ b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md
@@ -5,7 +5,7 @@
> [!WARNING]
> Zauważ, że uprawnienia zaczynające się od **`com.apple`** nie są dostępne dla osób trzecich, tylko Apple może je przyznać.
-## Wysokie
+## Wysoki
### `com.apple.rootless.install.heritable`
@@ -17,19 +17,19 @@ Uprawnienie **`com.apple.rootless.install`** pozwala na **obejście SIP**. Spraw
### **`com.apple.system-task-ports` (wcześniej nazywane `task_for_pid-allow`)**
-To uprawnienie pozwala uzyskać **port zadania dla dowolnego** procesu, z wyjątkiem jądra. Sprawdź [**to dla więcej informacji**](../macos-proces-abuse/macos-ipc-inter-process-communication/).
+To uprawnienie pozwala uzyskać **port zadania dla dowolnego** procesu, z wyjątkiem jądra. Sprawdź [**to dla więcej informacji**](../macos-proces-abuse/macos-ipc-inter-process-communication/index.html).
### `com.apple.security.get-task-allow`
-To uprawnienie pozwala innym procesom z uprawnieniem **`com.apple.security.cs.debugger`** uzyskać port zadania procesu uruchomionego przez binarny plik z tym uprawnieniem i **wstrzyknąć kod**. Sprawdź [**to dla więcej informacji**](../macos-proces-abuse/macos-ipc-inter-process-communication/).
+To uprawnienie pozwala innym procesom z uprawnieniem **`com.apple.security.cs.debugger`** uzyskać port zadania procesu uruchomionego przez binarny plik z tym uprawnieniem i **wstrzyknąć kod**. Sprawdź [**to dla więcej informacji**](../macos-proces-abuse/macos-ipc-inter-process-communication/index.html).
### `com.apple.security.cs.debugger`
-Aplikacje z uprawnieniem narzędzia debugowania mogą wywołać `task_for_pid()`, aby uzyskać ważny port zadania dla aplikacji niesigned i aplikacji osób trzecich z uprawnieniem `Get Task Allow` ustawionym na `true`. Jednak nawet z uprawnieniem narzędzia debugowania, debugger **nie może uzyskać portów zadań** procesów, które **nie mają uprawnienia `Get Task Allow`**, a które są zatem chronione przez System Integrity Protection. Sprawdź [**to dla więcej informacji**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_debugger).
+Aplikacje z uprawnieniem narzędzia debugowania mogą wywołać `task_for_pid()`, aby uzyskać ważny port zadania dla niepodpisanych i aplikacji osób trzecich z uprawnieniem `Get Task Allow` ustawionym na `true`. Jednak nawet z uprawnieniem narzędzia debugowania, debugger **nie może uzyskać portów zadań** procesów, które **nie mają uprawnienia `Get Task Allow`**, a które są zatem chronione przez System Integrity Protection. Sprawdź [**to dla więcej informacji**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_debugger).
### `com.apple.security.cs.disable-library-validation`
-To uprawnienie pozwala na **ładowanie frameworków, wtyczek lub bibliotek bez bycia podpisanym przez Apple lub podpisanym tym samym identyfikatorem zespołu** co główny plik wykonywalny, więc atakujący mógłby nadużyć ładowania dowolnej biblioteki, aby wstrzyknąć kod. Sprawdź [**to dla więcej informacji**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-library-validation).
+To uprawnienie pozwala na **ładowanie frameworków, wtyczek lub bibliotek bez bycia podpisanym przez Apple lub podpisanym tym samym identyfikatorem zespołu** co główny plik wykonywalny, więc atakujący mógłby wykorzystać ładowanie dowolnej biblioteki do wstrzyknięcia kodu. Sprawdź [**to dla więcej informacji**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-library-validation).
### `com.apple.private.security.clear-library-validation`
@@ -58,7 +58,7 @@ Uprawnienie **`com.apple.private.icloud-account-access`** umożliwia komunikacj
**iMovie** i **Garageband** miały to uprawnienie.
-Aby uzyskać więcej **informacji** na temat exploita do **uzyskania tokenów icloud** z tego uprawnienia, sprawdź wykład: [**#OBTS v5.0: "Co się dzieje na twoim Macu, zostaje na iCloud Apple?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0)
+Aby uzyskać więcej **informacji** na temat exploita do **uzyskania tokenów icloud** z tego uprawnienia, sprawdź wykład: [**#OBTS v5.0: "Co się dzieje na twoim Macu, zostaje w iCloud Apple?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0)
### `com.apple.private.tcc.manager.check-by-audit-token`
@@ -74,7 +74,7 @@ TODO: W [**tym raporcie**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-U
### `keychain-access-groups`
-To uprawnienie listuje **grupy keychain**, do których aplikacja ma dostęp:
+To uprawnienie wymienia grupy **keychain**, do których aplikacja ma dostęp:
```xml
keychain-access-groups
@@ -87,7 +87,7 @@ To uprawnienie listuje **grupy keychain**, do których aplikacja ma dostęp:
```
### **`kTCCServiceSystemPolicyAllFiles`**
-Daje **Pełny dostęp do dysku**, jedno z najwyższych uprawnień TCC, jakie można mieć.
+Daje **pełny dostęp do dysku**, jedno z najwyższych uprawnień TCC, jakie można mieć.
### **`kTCCServiceAppleEvents`**
@@ -97,7 +97,7 @@ Na przykład, zmuszając je do proszenia użytkownika o hasło:
```bash
osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'
```
-Lub sprawić, by wykonywały **dowolne działania**.
+Or making them perform **arbitrary actions**.
### **`kTCCServiceEndpointSecurityClient`**
@@ -109,17 +109,17 @@ Pozwala na **zmianę** atrybutu **`NFSHomeDirectory`** użytkownika, co zmienia
### **`kTCCServiceSystemPolicyAppBundles`**
-Pozwala na modyfikację plików wewnątrz pakietu aplikacji (wewnątrz app.app), co jest **domyślnie zabronione**.
+Pozwala na modyfikację plików wewnątrz pakietów aplikacji (wewnątrz app.app), co jest **domyślnie zabronione**.
-Można sprawdzić, kto ma ten dostęp w _Ustawieniach systemowych_ > _Prywatność i bezpieczeństwo_ > _Zarządzanie aplikacjami._
+Można sprawdzić, kto ma ten dostęp w _Ustawienia systemowe_ > _Prywatność i bezpieczeństwo_ > _Zarządzanie aplikacjami._
### `kTCCServiceAccessibility`
Proces będzie mógł **nadużywać funkcji dostępności macOS**, co oznacza, że na przykład będzie mógł naciskać klawisze. MOŻE poprosić o dostęp do kontrolowania aplikacji, takiej jak Finder, i zatwierdzić okno dialogowe z tym uprawnieniem.
-## Średni
+## Medium
### `com.apple.security.cs.allow-jit`
@@ -127,7 +127,7 @@ To uprawnienie pozwala na **tworzenie pamięci, która jest zapisywalna i wykony
### `com.apple.security.cs.allow-unsigned-executable-memory`
-To uprawnienie pozwala na **nadpisywanie lub patchowanie kodu C**, używanie długo przestarzałej **`NSCreateObjectFileImageFromMemory`** (co jest zasadniczo niebezpieczne) lub korzystanie z frameworka **DVDPlayback**. Sprawdź [**to dla więcej informacji**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-unsigned-executable-memory).
+To uprawnienie pozwala na **nadpisywanie lub patchowanie kodu C**, użycie długo nieaktualizowanej **`NSCreateObjectFileImageFromMemory`** (co jest zasadniczo niebezpieczne), lub użycie frameworka **DVDPlayback**. Sprawdź [**to dla więcej informacji**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-unsigned-executable-memory).
> [!CAUTION]
> Włączenie tego uprawnienia naraża Twoją aplikację na powszechne luki w kodzie języków, które nie są bezpieczne w pamięci. Starannie rozważ, czy Twoja aplikacja potrzebuje tego wyjątku.
@@ -161,3 +161,5 @@ Zezwól procesowi na **poproszenie o wszystkie uprawnienia TCC**.
### **`kTCCServicePostEvent`**
{{#include ../../../banners/hacktricks-training.md}}
+
+
diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md
index b712c5e1c..17cd88b84 100644
--- a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md
+++ b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md
@@ -16,15 +16,15 @@ Uprawnienia w **katalogu**:
**Jak nadpisać plik/folder należący do roota**, ale:
-- Jeden rodzic **właściciel katalogu** w ścieżce to użytkownik
-- Jeden rodzic **właściciel katalogu** w ścieżce to **grupa użytkowników** z **dostępem do zapisu**
+- Jeden właściciel **katalogu nadrzędnego** w ścieżce to użytkownik
+- Jeden właściciel **katalogu nadrzędnego** w ścieżce to **grupa użytkowników** z **dostępem do zapisu**
- Grupa użytkowników ma **dostęp do zapisu** do **pliku**
-Przy dowolnej z powyższych kombinacji, atakujący mógłby **wstrzyknąć** **link symboliczny/twardy** do oczekiwanej ścieżki, aby uzyskać uprzywilejowany, dowolny zapis.
+Przy dowolnej z powyższych kombinacji, atakujący mógłby **wstrzyknąć** **link symboliczny/twardy** w oczekiwanej ścieżce, aby uzyskać uprzywilejowany, dowolny zapis.
### Folder root R+X Specjalny przypadek
-Jeśli w **katalogu** znajdują się pliki, do których **tylko root ma dostęp R+X**, to **nie są one dostępne dla nikogo innego**. Tak więc luka pozwalająca na **przeniesienie pliku czytanego przez użytkownika**, który nie może być odczytany z powodu tej **ograniczenia**, z tego folderu **do innego**, mogłaby być wykorzystana do odczytu tych plików.
+Jeśli w **katalogu** znajdują się pliki, do których **tylko root ma dostęp R+X**, to **nie są one dostępne dla nikogo innego**. Tak więc luka pozwalająca na **przeniesienie pliku, który jest czytelny dla użytkownika**, który nie może być odczytany z powodu tej **ograniczenia**, z tego folderu **do innego**, mogłaby być wykorzystana do odczytu tych plików.
Przykład w: [https://theevilbit.github.io/posts/exploiting_directory_permissions_on_macos/#nix-directory-permissions](https://theevilbit.github.io/posts/exploiting_directory_permissions_on_macos/#nix-directory-permissions)
@@ -32,13 +32,13 @@ Przykład w: [https://theevilbit.github.io/posts/exploiting_directory_permission
### Umożliwiony plik/folder
-Jeśli uprzywilejowany proces zapisuje dane w **pliku**, który mógłby być **kontrolowany** przez **użytkownika o niższych uprawnieniach**, lub który mógłby być **wcześniej utworzony** przez użytkownika o niższych uprawnieniach. Użytkownik mógłby po prostu **wskazać go na inny plik** za pomocą linku symbolicznego lub twardego, a uprzywilejowany proces zapisze w tym pliku.
+Jeśli uprzywilejowany proces zapisuje dane w **pliku**, który może być **kontrolowany** przez **użytkownika o niższych uprawnieniach**, lub który mógł być **wcześniej utworzony** przez użytkownika o niższych uprawnieniach. Użytkownik mógłby po prostu **wskazać go na inny plik** za pomocą linku symbolicznego lub twardego, a uprzywilejowany proces zapisze w tym pliku.
Sprawdź w innych sekcjach, gdzie atakujący mógłby **wykorzystać dowolny zapis do eskalacji uprawnień**.
### Otwórz `O_NOFOLLOW`
-Flaga `O_NOFOLLOW` używana przez funkcję `open` nie będzie podążać za linkiem symbolicznym w ostatnim komponencie ścieżki, ale będzie podążać za resztą ścieżki. Prawidłowy sposób na zapobieganie podążaniu za linkami symbolicznymi w ścieżce to użycie flagi `O_NOFOLLOW_ANY`.
+Flaga `O_NOFOLLOW` używana przez funkcję `open` nie będzie podążać za linkiem symbolicznym w ostatnim komponencie ścieżki, ale podąży za resztą ścieżki. Prawidłowy sposób zapobiegania podążaniu za linkami symbolicznymi w ścieżce to użycie flagi `O_NOFOLLOW_ANY`.
## .fileloc
@@ -60,9 +60,9 @@ Przykład:
### Wycieki FD (bez `O_CLOEXEC`)
-Jeśli wywołanie `open` nie ma flagi `O_CLOEXEC`, deskryptor pliku zostanie odziedziczony przez proces potomny. Tak więc, jeśli proces z uprawnieniami otworzy plik z uprawnieniami i wykona proces kontrolowany przez atakującego, atakujący **odziedziczy FD do uprzywilejowanego pliku**.
+Jeśli wywołanie `open` nie ma flagi `O_CLOEXEC`, deskryptor pliku zostanie odziedziczony przez proces potomny. Tak więc, jeśli proces z uprawnieniami otworzy plik z uprawnieniami i wykona proces kontrolowany przez atakującego, atakujący **odziedziczy FD nad plikiem z uprawnieniami**.
-Jeśli możesz sprawić, aby **proces otworzył plik lub folder z wysokimi uprawnieniami**, możesz nadużyć **`crontab`**, aby otworzyć plik w `/etc/sudoers.d` z **`EDITOR=exploit.py`**, dzięki czemu `exploit.py` uzyska FD do pliku w `/etc/sudoers` i go nadużyje.
+Jeśli możesz sprawić, by **proces otworzył plik lub folder z wysokimi uprawnieniami**, możesz nadużyć **`crontab`**, aby otworzyć plik w `/etc/sudoers.d` z **`EDITOR=exploit.py`**, tak aby `exploit.py` uzyskał FD do pliku wewnątrz `/etc/sudoers` i go nadużył.
Na przykład: [https://youtu.be/f1HA5QhLQ7Y?t=21098](https://youtu.be/f1HA5QhLQ7Y?t=21098), kod: https://github.com/gergelykalman/CVE-2023-32428-a-macOS-LPE-via-MallocStackLogging
@@ -156,7 +156,7 @@ macos-xattr-acls-extra-stuff.md
### Ominięcie kontroli binarnych platform
-Niektóre kontrole bezpieczeństwa sprawdzają, czy binarny plik jest **binarnym plikiem platformy**, na przykład, aby umożliwić połączenie z usługą XPC. Jednak, jak pokazano w omijaniu w https://jhftss.github.io/A-New-Era-of-macOS-Sandbox-Escapes/, możliwe jest ominięcie tej kontroli poprzez uzyskanie binarnego pliku platformy (takiego jak /bin/ls) i wstrzyknięcie exploita za pomocą dyld, używając zmiennej środowiskowej `DYLD_INSERT_LIBRARIES`.
+Niektóre kontrole bezpieczeństwa sprawdzają, czy binarny plik jest **binarnym plikiem platformy**, na przykład, aby umożliwić połączenie z usługą XPC. Jednak, jak pokazano w omijaniu w https://jhftss.github.io/A-New-Era-of-macOS-Sandbox-Escapes/, możliwe jest ominięcie tej kontroli, uzyskując binarny plik platformy (tak jak /bin/ls) i wstrzykując exploit za pomocą dyld, używając zmiennej środowiskowej `DYLD_INSERT_LIBRARIES`.
### Ominięcie flag `CS_REQUIRE_LV` i `CS_FORCED_LV`
@@ -173,9 +173,9 @@ csops(pid, 9, &status, 4); // CS_OPS_SET_STATUS
status = SecTaskGetCodeSignStatus(SecTaskCreateFromSelf(0));
NSLog(@"=====Inject successfully into %d(%@), csflags=0x%x", pid, exePath, status);
```
-## Ominięcie podpisów kodu
+## Bypass Code Signatures
-Bundles zawierają plik **`_CodeSignature/CodeResources`**, który zawiera **hash** każdego pojedynczego **pliku** w **bundle**. Należy zauważyć, że hash CodeResources jest również **osadzony w wykonywalnym**, więc nie możemy tego zepsuć.
+Bundles zawierają plik **`_CodeSignature/CodeResources`**, który zawiera **hash** każdego pojedynczego **pliku** w **bundlu**. Należy zauważyć, że hash CodeResources jest również **osadzony w pliku wykonywalnym**, więc nie możemy tego zepsuć.
Jednak istnieją pewne pliki, których podpis nie będzie sprawdzany, mają one klucz omit w plist, takie jak:
```xml
@@ -195,7 +195,7 @@ Jednak istnieją pewne pliki, których podpis nie będzie sprawdzany, mają one
rules2
...
-^(.*/)?\.DS_Store$
+^(.*/index.html)?\.DS_Store$omit
@@ -227,7 +227,7 @@ openssl dgst -binary -sha1 /System/Cryptexes/App/System/Applications/Safari.app/
```
## Montowanie dmg
-Użytkownik może zamontować niestandardowy dmg utworzony nawet na istniejących folderach. W ten sposób można stworzyć niestandardowy pakiet dmg z niestandardową zawartością:
+Użytkownik może zamontować niestandardowy dmg utworzony nawet na istniejących folderach. W ten sposób można utworzyć niestandardowy pakiet dmg z niestandardową zawartością:
```bash
# Create the volume
hdiutil create /private/tmp/tmp.dmg -size 2m -ov -volname CustomVolName -fs APFS 1>/dev/null
@@ -248,7 +248,7 @@ hdiutil detach /private/tmp/mnt 1>/dev/null
# You can also create a dmg from an app using:
hdiutil create -srcfolder justsome.app justsome.dmg
```
-Zwykle macOS montuje dysk, komunikując się z usługą Mach `com.apple.DiskArbitration.diskarbitrationd` (dostarczaną przez `/usr/libexec/diskarbitrationd`). Jeśli dodasz parametr `-d` do pliku plist LaunchDaemons i uruchomisz ponownie, będzie przechowywać logi w `/var/log/diskarbitrationd.log`.\
+Zwykle macOS montuje dysk, komunikując się z usługą Mach `com.apple.DiskArbitrarion.diskarbitrariond` (dostarczaną przez `/usr/libexec/diskarbitrationd`). Jeśli dodasz parametr `-d` do pliku plist LaunchDaemons i uruchomisz ponownie, będzie przechowywać logi w `/var/log/diskarbitrationd.log`.\
Jednak możliwe jest użycie narzędzi takich jak `hdik` i `hdiutil`, aby komunikować się bezpośrednio z kextem `com.apple.driver.DiskImages`.
## Dowolne zapisy
@@ -261,7 +261,7 @@ Możesz **sfałszować** wykonanie tego skryptu za pomocą: **`sudo periodic dai
### Demony
-Napisz dowolny **LaunchDaemon** jak **`/Library/LaunchDaemons/xyz.hacktricks.privesc.plist`** z plist wykonującym dowolny skrypt, taki jak:
+Napisz dowolny **LaunchDaemon** jak **`/Library/LaunchDaemons/xyz.hacktricks.privesc.plist`** z plikiem plist wykonującym dowolny skrypt jak:
```xml
@@ -278,15 +278,15 @@ Napisz dowolny **LaunchDaemon** jak **`/Library/LaunchDaemons/xyz.hacktricks.pri
```
-Just generate the script `/Applications/Scripts/privesc.sh` with the **komendy** you would like to run as root.
+Just generate the script `/Applications/Scripts/privesc.sh` with the **commands** you would like to run as root.
### Sudoers File
-If you have **dowolny zapis**, you could create a file inside the folder **`/etc/sudoers.d/`** granting yourself **sudo** privileges.
+If you have **arbitrary write**, you could create a file inside the folder **`/etc/sudoers.d/`** granting yourself **sudo** privileges.
### PATH files
-The file **`/etc/paths`** is one of the main places that populates the PATH env variable. You must be root to overwrite it, but if a script from **privileged process** is executing some **komenda without the full path**, you might be able to **przejąć** it modifying this file.
+The file **`/etc/paths`** is one of the main places that populates the PATH env variable. You must be root to overwrite it, but if a script from **privileged process** is executing some **command without the full path**, you might be able to **hijack** it modifying this file.
You can also write files in **`/etc/paths.d`** to load new folders into the `PATH` env variable.
@@ -308,11 +308,11 @@ Następnie, zmodyfikuj plik `/etc/cups/cups-files.conf`, ponownie wskazując `Lo
### Sandbox Escape
-Możliwe jest ucieczka z sandboxa macOS za pomocą FS arbitrary write. Dla niektórych przykładów sprawdź stronę [macOS Auto Start](../../../../macos-auto-start-locations.md), ale powszechnym przypadkiem jest zapisanie pliku preferencji Terminala w `~/Library/Preferences/com.apple.Terminal.plist`, który wykonuje polecenie przy starcie i wywołuje je za pomocą `open`.
+Możliwe jest wydostanie się z sandboxa macOS za pomocą FS arbitrary write. Dla niektórych przykładów sprawdź stronę [macOS Auto Start](../../../../macos-auto-start-locations.md), ale powszechnym przypadkiem jest zapisanie pliku preferencji Terminala w `~/Library/Preferences/com.apple.Terminal.plist`, który wykonuje polecenie przy starcie i wywołuje je za pomocą `open`.
-## Generowanie plików do zapisu jako inni użytkownicy
+## Generate writable files as other users
-To wygeneruje plik, który należy do roota, a który jest zapisywalny przeze mnie ([**code from here**](https://github.com/gergelykalman/brew-lpe-via-periodic/blob/main/brew_lpe.sh)). To może również działać jako privesc:
+To wygeneruje plik, który należy do roota, a który jest zapisywalny przez mnie ([**code from here**](https://github.com/gergelykalman/brew-lpe-via-periodic/blob/main/brew_lpe.sh)). To może również działać jako privesc:
```bash
DIRNAME=/usr/local/etc/periodic/daily
@@ -324,9 +324,9 @@ MallocStackLogging=1 MallocStackLoggingDirectory=$DIRNAME MallocStackLoggingDont
FILENAME=$(ls "$DIRNAME")
echo $FILENAME
```
-## Pamięć współdzielona POSIX
+## POSIX Shared Memory
-**Pamięć współdzielona POSIX** pozwala procesom w systemach operacyjnych zgodnych z POSIX na dostęp do wspólnej przestrzeni pamięci, co ułatwia szybszą komunikację w porównaniu do innych metod komunikacji międzyprocesowej. Polega to na tworzeniu lub otwieraniu obiektu pamięci współdzielonej za pomocą `shm_open()`, ustawianiu jego rozmiaru za pomocą `ftruncate()` oraz mapowaniu go do przestrzeni adresowej procesu za pomocą `mmap()`. Procesy mogą następnie bezpośrednio odczytywać i zapisywać do tej przestrzeni pamięci. Aby zarządzać równoczesnym dostępem i zapobiegać uszkodzeniu danych, często stosuje się mechanizmy synchronizacji, takie jak mutexy lub semafory. Na koniec procesy odmapowują i zamykają pamięć współdzieloną za pomocą `munmap()` i `close()`, a opcjonalnie usuwają obiekt pamięci za pomocą `shm_unlink()`. Ten system jest szczególnie skuteczny w przypadku efektywnej, szybkiej IPC w środowiskach, w których wiele procesów musi szybko uzyskiwać dostęp do wspólnych danych.
+**Pamięć współdzielona POSIX** pozwala procesom w systemach operacyjnych zgodnych z POSIX na dostęp do wspólnego obszaru pamięci, co ułatwia szybszą komunikację w porównaniu do innych metod komunikacji międzyprocesowej. Polega to na tworzeniu lub otwieraniu obiektu pamięci współdzielonej za pomocą `shm_open()`, ustawianiu jego rozmiaru za pomocą `ftruncate()`, a następnie mapowaniu go do przestrzeni adresowej procesu za pomocą `mmap()`. Procesy mogą następnie bezpośrednio odczytywać i zapisywać do tego obszaru pamięci. Aby zarządzać równoczesnym dostępem i zapobiegać uszkodzeniu danych, często stosuje się mechanizmy synchronizacji, takie jak mutexy lub semafory. Na koniec procesy odmapowują i zamykają pamięć współdzieloną za pomocą `munmap()` i `close()`, a opcjonalnie usuwają obiekt pamięci za pomocą `shm_unlink()`. Ten system jest szczególnie skuteczny w przypadku efektywnej, szybkiej IPC w środowiskach, w których wiele procesów musi szybko uzyskiwać dostęp do wspólnych danych.
@@ -422,13 +422,13 @@ return 0;
## macOS Guarded Descriptors
-**macOSCguarded descriptors** to funkcja zabezpieczeń wprowadzona w macOS, mająca na celu zwiększenie bezpieczeństwa i niezawodności **operacji na deskryptorach plików** w aplikacjach użytkownika. Te zabezpieczone deskryptory umożliwiają powiązanie określonych ograniczeń lub "zabezpieczeń" z deskryptorami plików, które są egzekwowane przez jądro.
+**macOSCguarded descriptors** to funkcja zabezpieczeń wprowadzona w macOS, mająca na celu zwiększenie bezpieczeństwa i niezawodności **operacji na deskryptorach plików** w aplikacjach użytkownika. Te zabezpieczone deskryptory umożliwiają przypisanie określonych ograniczeń lub "strażników" do deskryptorów plików, które są egzekwowane przez jądro.
Funkcja ta jest szczególnie przydatna w zapobieganiu pewnym klasom luk w zabezpieczeniach, takim jak **nieautoryzowany dostęp do plików** lub **warunki wyścigu**. Te luki występują, gdy na przykład wątek uzyskuje dostęp do opisu pliku, dając **innemu podatnemu wątkowi dostęp do niego** lub gdy deskryptor pliku jest **dziedziczony** przez podatny proces potomny. Niektóre funkcje związane z tą funkcjonalnością to:
-- `guarded_open_np`: Otwiera FD z zabezpieczeniem
+- `guarded_open_np`: Otwiera FD z ochroną
- `guarded_close_np`: Zamyka go
-- `change_fdguard_np`: Zmienia flagi zabezpieczeń na deskryptorze (nawet usuwając ochronę)
+- `change_fdguard_np`: Zmienia flagi ochrony na deskryptorze (nawet usuwając ochronę)
## References
diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md
index 5231e31a0..fa918c0c9 100644
--- a/src/mobile-pentesting/android-app-pentesting/README.md
+++ b/src/mobile-pentesting/android-app-pentesting/README.md
@@ -13,14 +13,14 @@ android-applications-basics.md
## ADB (Android Debug Bridge)
To główne narzędzie, którego potrzebujesz, aby połączyć się z urządzeniem z Androidem (emulowanym lub fizycznym).\
-**ADB** umożliwia kontrolowanie urządzeń zarówno przez **USB**, jak i **sieć** z komputera. To narzędzie pozwala na **kopiowanie** plików w obie strony, **instalację** i **odinstalację** aplikacji, **wykonywanie** poleceń powłoki, **tworzenie kopii zapasowych** danych, **odczytywanie** logów, wśród innych funkcji.
+**ADB** umożliwia kontrolowanie urządzeń zarówno przez **USB**, jak i **sieć** z komputera. To narzędzie pozwala na **kopiowanie** plików w obie strony, **instalację** i **odinstalowanie** aplikacji, **wykonywanie** poleceń powłoki, **tworzenie kopii zapasowych** danych, **odczytywanie** logów, wśród innych funkcji.
Zobacz poniższą listę [**Poleceń ADB**](adb-commands.md), aby dowiedzieć się, jak używać adb.
## Smali
Czasami interesujące jest **modyfikowanie kodu aplikacji**, aby uzyskać dostęp do **ukrytych informacji** (może dobrze obfuskowanych haseł lub flag). Wtedy może być interesujące dekompilowanie apk, modyfikowanie kodu i ponowne kompilowanie go.\
-[**W tym samouczku** możesz **nauczyć się, jak dekompilować APK, modyfikować kod Smali i ponownie kompilować APK** z nową funkcjonalnością](smali-changes.md). Może to być bardzo przydatne jako **alternatywa dla kilku testów podczas analizy dynamicznej**, które będą przedstawione. Dlatego **zawsze miej na uwadze tę możliwość**.
+[**W tym samouczku** możesz **dowiedzieć się, jak dekompilować APK, modyfikować kod Smali i ponownie kompilować APK** z nową funkcjonalnością](smali-changes.md). Może to być bardzo przydatne jako **alternatywa dla kilku testów podczas analizy dynamicznej**, które będą przedstawione. Dlatego **zawsze miej na uwadze tę możliwość**.
## Inne interesujące triki
@@ -52,7 +52,7 @@ Proszę, [**przeczytaj tutaj, aby znaleźć informacje o różnych dostępnych d
### Szukanie interesujących informacji
-Samo spojrzenie na **ciągi** w APK pozwala na wyszukiwanie **haseł**, **URL** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **kluczy** **api**, **szyfrowania**, **uuid bluetooth**, **tokenów** i wszystkiego, co może być interesujące... szukaj nawet **tylnych drzwi** do wykonania kodu lub tylnych drzwi autoryzacyjnych (twardo zakodowane dane logowania administratora do aplikacji).
+Samo spojrzenie na **ciągi** APK pozwala na wyszukiwanie **haseł**, **URL** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **kluczy** **api**, **szyfrowania**, **uuid bluetooth**, **tokenów** i wszystkiego, co może być interesujące... szukaj nawet **tylnych drzwi** do wykonania kodu lub tylnych drzwi autoryzacyjnych (twardo zakodowane dane logowania administratora do aplikacji).
**Firebase**
@@ -68,7 +68,7 @@ Zwróć szczególną uwagę na **adresy URL Firebase** i sprawdź, czy są źle
- **Ustawienia kopii zapasowej**: Atrybut `android:allowBackup="false"` powinien być wyraźnie ustawiony dla aplikacji zajmujących się wrażliwymi informacjami, aby zapobiec nieautoryzowanym kopiom zapasowym danych za pomocą adb, szczególnie gdy debugowanie USB jest włączone.
- **Bezpieczeństwo sieci**: Niestandardowe konfiguracje bezpieczeństwa sieci (`android:networkSecurityConfig="@xml/network_security_config"`) w _res/xml/_ mogą określać szczegóły bezpieczeństwa, takie jak przypinanie certyfikatów i ustawienia ruchu HTTP. Przykładem jest zezwolenie na ruch HTTP dla określonych domen.
- **Eksportowane aktywności i usługi**: Identyfikacja eksportowanych aktywności i usług w manifeście może uwydatnić komponenty, które mogą być nadużywane. Dalsza analiza podczas testowania dynamicznego może ujawnić, jak wykorzystać te komponenty.
-- **Dostawcy treści i FileProviders**: Ujawnieni dostawcy treści mogą umożliwić nieautoryzowany dostęp lub modyfikację danych. Konfiguracja FileProviders powinna być również dokładnie sprawdzona.
+- **Dostawcy treści i FileProviders**: Odkryte dostawcy treści mogą umożliwić nieautoryzowany dostęp lub modyfikację danych. Konfiguracja FileProviders powinna być również dokładnie sprawdzona.
- **Odbiorniki rozgłoszeniowe i schematy URL**: Te komponenty mogą być wykorzystywane do eksploatacji, z szczególną uwagą na to, jak zarządzane są schematy URL w kontekście luk wejściowych.
- **Wersje SDK**: Atrybuty `minSdkVersion`, `targetSDKVersion` i `maxSdkVersion` wskazują obsługiwane wersje Androida, podkreślając znaczenie nieobsługiwania przestarzałych, podatnych wersji Androida z powodów bezpieczeństwa.
@@ -77,9 +77,9 @@ Z pliku **strings.xml** można odkryć wrażliwe informacje, takie jak klucze AP
### Tapjacking
**Tapjacking** to atak, w którym **złośliwa** **aplikacja** jest uruchamiana i **pozycjonuje się na wierzchu aplikacji ofiary**. Gdy widocznie zasłania aplikację ofiary, jej interfejs użytkownika jest zaprojektowany w taki sposób, aby oszukać użytkownika do interakcji z nią, podczas gdy przekazuje interakcję do aplikacji ofiary.\
-W efekcie, **oślepia użytkownika, nie pozwalając mu wiedzieć, że faktycznie wykonuje działania w aplikacji ofiary**.
+W efekcie, **oślepia użytkownika, aby nie wiedział, że faktycznie wykonuje akcje w aplikacji ofiary**.
-Znajdź więcej informacji w:
+Więcej informacji znajdziesz w:
{{#ref}}
tapjacking.md
@@ -99,12 +99,12 @@ android-task-hijacking.md
**Przechowywanie wewnętrzne**
-W Androidzie pliki **przechowywane** w **przechowywaniu wewnętrznym** są **zaplanowane** do **dostępu** wyłącznie przez **aplikację**, która je **utworzyła**. Ten środek bezpieczeństwa jest **egzekwowany** przez system operacyjny Android i jest zazwyczaj wystarczający dla potrzeb bezpieczeństwa większości aplikacji. Jednak deweloperzy czasami wykorzystują tryby takie jak `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE`, aby **pozwolić** na **dzielenie się** plikami między różnymi aplikacjami. Niemniej jednak, te tryby **nie ograniczają dostępu** do tych plików przez inne aplikacje, w tym potencjalnie złośliwe.
+W Androidzie pliki **przechowywane** w **przechowywaniu wewnętrznym** są **zaplanowane** do **dostępu** wyłącznie przez **aplikację**, która je **utworzyła**. Ten środek bezpieczeństwa jest **egzekwowany** przez system operacyjny Android i jest zazwyczaj wystarczający dla potrzeb bezpieczeństwa większości aplikacji. Jednak deweloperzy czasami wykorzystują tryby takie jak `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE`, aby **zezwolić** na **dzielenie się** plikami między różnymi aplikacjami. Niemniej jednak, te tryby **nie ograniczają dostępu** do tych plików przez inne aplikacje, w tym potencjalnie złośliwe.
1. **Analiza statyczna:**
-- **Upewnij się**, że użycie `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE` jest **dokładnie sprawdzane**. Te tryby **mogą potencjalnie ujawniać** pliki **niezamierzonym lub nieautoryzowanym dostępem**.
+- **Upewnij się**, że użycie `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE` jest **starannie analizowane**. Te tryby **mogą potencjalnie ujawniać** pliki **niezamierzonym lub nieautoryzowanym dostępem**.
2. **Analiza dynamiczna:**
-- **Zweryfikuj** **uprawnienia** ustawione na plikach utworzonych przez aplikację. Szczególnie **sprawdź**, czy jakiekolwiek pliki są **ustawione na bycie czytelnymi lub zapisywalnymi na całym świecie**. Może to stanowić istotne ryzyko bezpieczeństwa, ponieważ pozwoliłoby to **jakiejkolwiek aplikacji** zainstalowanej na urządzeniu, niezależnie od jej pochodzenia lub zamiaru, na **odczyt lub modyfikację** tych plików.
+- **Zweryfikuj** **uprawnienia** ustawione na plikach utworzonych przez aplikację. Szczególnie **sprawdź**, czy jakiekolwiek pliki są **ustawione na bycie czytelnymi lub zapisywalnymi na całym świecie**. Może to stanowić istotne ryzyko bezpieczeństwa, ponieważ pozwoli **jakiejkolwiek aplikacji** zainstalowanej na urządzeniu, niezależnie od jej pochodzenia czy zamiaru, na **odczyt lub modyfikację** tych plików.
**Przechowywanie zewnętrzne**
@@ -123,7 +123,7 @@ Podczas pracy z plikami na **przechowywaniu zewnętrznym**, takim jak karty SD,
Zewnętrzne przechowywanie można **uzyskać** w `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
> [!NOTE]
-> Począwszy od Androida 4.4 (**API 17**), karta SD ma strukturę katalogów, która **ogranicza dostęp aplikacji do katalogu, który jest specjalnie przeznaczony dla tej aplikacji**. Zapobiega to złośliwej aplikacji uzyskiwaniu dostępu do plików innej aplikacji w trybie odczytu lub zapisu.
+> Począwszy od Androida 4.4 (**API 17**), karta SD ma strukturę katalogów, która **ogranicza dostęp aplikacji do katalogu, który jest specjalnie przeznaczony dla tej aplikacji**. To zapobiega złośliwej aplikacji uzyskiwaniu dostępu do plików innej aplikacji.
**Wrażliwe dane przechowywane w postaci niezaszyfrowanej**
@@ -149,7 +149,7 @@ Niektórzy deweloperzy zapisują wrażliwe dane w lokalnej pamięci i szyfrują
**Użycie niebezpiecznych i/lub przestarzałych algorytmów**
-Deweloperzy nie powinni używać **przestarzałych algorytmów** do przeprowadzania **sprawdzania** **autoryzacji**, **przechowywania** lub **wysyłania** danych. Niektóre z tych algorytmów to: RC4, MD4, MD5, SHA1... Jeśli **hashe** są używane do przechowywania haseł, powinny być używane hashe odporne na brute-force z solą.
+Deweloperzy nie powinni używać **przestarzałych algorytmów** do przeprowadzania **sprawdzania** autoryzacji, **przechowywania** lub **wysyłania** danych. Niektóre z tych algorytmów to: RC4, MD4, MD5, SHA1... Jeśli **hashe** są używane do przechowywania haseł, powinny być używane hashe odporne na brute-force z solą.
### Inne kontrole
@@ -241,13 +241,13 @@ avd-android-virtual-device.md
- [**Nox**](https://es.bignox.com) (Darmowy, ale nie obsługuje Frida ani Drozer).
> [!NOTE]
-> Podczas tworzenia nowego emulatora na dowolnej platformie pamiętaj, że im większy ekran, tym wolniej będzie działał emulator. Wybierz małe ekrany, jeśli to możliwe.
+> Podczas tworzenia nowego emulatora na jakiejkolwiek platformie pamiętaj, że im większy ekran, tym wolniej będzie działał emulator. Wybierz małe ekrany, jeśli to możliwe.
-Aby **zainstalować usługi Google** (jak AppStore) w Genymotion, musisz kliknąć na czerwony oznaczony przycisk na poniższym obrazie:
+Aby **zainstalować usługi Google** (jak AppStore) w Genymotion, musisz kliknąć na czerwony zaznaczony przycisk na poniższym obrazku:
.png>)
-Zauważ również, że w **konfiguracji Android VM w Genymotion** możesz wybrać **tryb sieci mostkowej** (to będzie przydatne, jeśli będziesz łączyć się z Android VM z innej VM z narzędziami).
+Zauważ również, że w **konfiguracji Android VM w Genymotion** możesz wybrać **tryb sieciowy Bridge** (to będzie przydatne, jeśli będziesz łączyć się z Android VM z innej VM z narzędziami).
#### Użyj fizycznego urządzenia
@@ -269,12 +269,12 @@ Musisz aktywować opcje **debugowania**, a byłoby dobrze, gdybyś mógł je **z
Deweloperzy powinni być ostrożni w ujawnianiu **informacji debugowania** publicznie, ponieważ może to prowadzić do wycieków wrażliwych danych. Narzędzia [**pidcat**](https://github.com/JakeWharton/pidcat) i `adb logcat` są zalecane do monitorowania logów aplikacji w celu identyfikacji i ochrony wrażliwych informacji. **Pidcat** jest preferowane ze względu na łatwość użycia i czytelność.
> [!WARNING]
-> Zauważ, że od **nowszych niż Android 4.0**, **aplikacje mogą uzyskiwać dostęp tylko do swoich własnych logów**. Tak więc aplikacje nie mogą uzyskiwać dostępu do logów innych aplikacji.\
+> Zauważ, że od **nowszych niż Android 4.0**, **aplikacje mogą uzyskiwać dostęp tylko do swoich własnych logów**. Więc aplikacje nie mogą uzyskiwać dostępu do logów innych aplikacji.\
> Tak czy inaczej, nadal zaleca się **nie logować wrażliwych informacji**.
**Bufor kopiowania/wklejania**
-Oparty na **schowku** framework Androida umożliwia funkcjonalność kopiowania i wklejania w aplikacjach, ale stwarza ryzyko, ponieważ **inne aplikacje** mogą **uzyskiwać dostęp** do schowka, potencjalnie ujawniając wrażliwe dane. Ważne jest, aby **wyłączyć funkcje kopiowania/wklejania** dla wrażliwych sekcji aplikacji, takich jak dane karty kredytowej, aby zapobiec wyciekom danych.
+Oparty na **schowku** framework Androida umożliwia funkcjonalność kopiuj-wklej w aplikacjach, ale stwarza ryzyko, ponieważ **inne aplikacje** mogą **uzyskiwać dostęp** do schowka, potencjalnie ujawniając wrażliwe dane. Ważne jest, aby **wyłączyć funkcje kopiowania/wklejania** dla wrażliwych sekcji aplikacji, takich jak dane karty kredytowej, aby zapobiec wyciekom danych.
**Logi awarii**
@@ -320,7 +320,7 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
```
**UWAGA**: MobSF wykryje jako złośliwe użycie _**singleTask/singleInstance**_ jako `android:launchMode` w aktywności, ale z powodu [tego](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), najwyraźniej jest to niebezpieczne tylko w starych wersjach (wersje API < 21).
-> [!NOTE]
+> [!UWAGA]
> Zauważ, że obejście autoryzacji nie zawsze jest luką, zależy to od tego, jak działa obejście i jakie informacje są ujawniane.
**Wycieki wrażliwych informacji**
@@ -343,7 +343,7 @@ Dostawcy treści są zasadniczo używani do **dzielenia się danymi**. Jeśli ap
[**Przeczytaj to, jeśli chcesz odświeżyć, czym jest usługa.**](android-applications-basics.md#services)\
Pamiętaj, że działania usługi zaczynają się w metodzie `onStartCommand`.
-Usługa to zasadniczo coś, co **może odbierać dane**, **przetwarzać** je i **zwracać** (lub nie) odpowiedź. Jeśli aplikacja eksportuje jakieś usługi, powinieneś **sprawdzić** **kod**, aby zrozumieć, co robi, i **testować** ją **dynamicznie** w celu wyodrębnienia poufnych informacji, omijania środków autoryzacji...\
+Usługa to zasadniczo coś, co **może odbierać dane**, **przetwarzać** je i **zwracać** (lub nie) odpowiedź. Jeśli aplikacja eksportuje jakieś usługi, powinieneś **sprawdzić** **kod**, aby zrozumieć, co robi, i **testować** ją **dynamicznie**, aby wyodrębnić poufne informacje, omijając środki autoryzacji...\
[**Dowiedz się, jak wykorzystywać usługi za pomocą Drozer.**](drozer-tutorial/index.html#services)
### **Wykorzystywanie odbiorników rozgłoszeniowych**
@@ -381,17 +381,17 @@ Za każdym razem, gdy znajdziesz deep link, sprawdź, czy **nie odbiera wrażliw
**Parametry w ścieżce**
Musisz również sprawdzić, czy jakikolwiek deep link używa parametru wewnątrz ścieżki URL, takiego jak: `https://api.example.com/v1/users/{username}`, w takim przypadku możesz wymusić przejście przez ścieżkę, uzyskując dostęp do czegoś takiego jak: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
-Zauważ, że jeśli znajdziesz poprawne punkty końcowe w aplikacji, możesz być w stanie spowodować **Open Redirect** (jeśli część ścieżki jest używana jako nazwa domeny), **przejęcie konta** (jeśli możesz zmodyfikować szczegóły użytkowników bez tokena CSRF, a podatny punkt końcowy używał poprawnej metody) i inne podatności. Więcej [informacji na ten temat tutaj](http://dphoeniixx.com/2020/12/13-2/).
+Zauważ, że jeśli znajdziesz poprawne punkty końcowe w aplikacji, możesz być w stanie spowodować **Open Redirect** (jeśli część ścieżki jest używana jako nazwa domeny), **przejęcie konta** (jeśli możesz zmodyfikować dane użytkowników bez tokena CSRF, a podatny punkt końcowy używał poprawnej metody) i inne podatności. Więcej [informacji na ten temat tutaj](http://dphoeniixx.com/2020/12/13-2/).
**Więcej przykładów**
-Ciekawy raport o bug bounty [tutaj](https://hackerone.com/reports/855618) dotyczący linków (_/.well-known/assetlinks.json_).
+Ciekawe zgłoszenie bug bounty [tutaj](https://hackerone.com/reports/855618) dotyczące linków (_/.well-known/assetlinks.json_).
### Inspekcja i weryfikacja warstwy transportowej
- **Certyfikaty nie zawsze są odpowiednio sprawdzane** przez aplikacje Android. Często te aplikacje ignorują ostrzeżenia i akceptują certyfikaty samopodpisane lub, w niektórych przypadkach, wracają do używania połączeń HTTP.
-- **Negocjacje podczas handshake SSL/TLS są czasami słabe**, stosując niebezpieczne zestawy szyfrów. Ta podatność sprawia, że połączenie jest podatne na ataki typu man-in-the-middle (MITM), umożliwiając atakującym odszyfrowanie danych.
-- **Wycieki prywatnych informacji** są ryzykiem, gdy aplikacje uwierzytelniają się za pomocą bezpiecznych kanałów, ale następnie komunikują się przez kanały niezabezpieczone w innych transakcjach. Takie podejście nie chroni wrażliwych danych, takich jak ciasteczka sesyjne czy szczegóły użytkowników, przed przechwyceniem przez złośliwe podmioty.
+- **Negocjacje podczas handshake SSL/TLS są czasami słabe**, stosując niebezpieczne zestawy szyfrów. Ta podatność sprawia, że połączenie jest podatne na ataki typu man-in-the-middle (MITM), co pozwala atakującym na odszyfrowanie danych.
+- **Wycieki prywatnych informacji** są ryzykiem, gdy aplikacje uwierzytelniają się za pomocą bezpiecznych kanałów, ale następnie komunikują się przez kanały niezabezpieczone w innych transakcjach. Takie podejście nie chroni wrażliwych danych, takich jak ciasteczka sesyjne czy dane użytkowników, przed przechwyceniem przez złośliwe podmioty.
#### Weryfikacja certyfikatu
@@ -403,7 +403,7 @@ SSL Pinning to środek bezpieczeństwa, w którym aplikacja weryfikuje certyfika
#### Inspekcja ruchu
-Aby zainstalować ruch HTTP, konieczne jest **zainstalowanie certyfikatu narzędzia proxy** (np. Burp). Bez zainstalowania tego certyfikatu zaszyfrowany ruch może nie być widoczny przez proxy. Aby uzyskać instrukcje dotyczące instalacji niestandardowego certyfikatu CA, [**kliknij tutaj**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
+Aby zainstalować ruch HTTP, konieczne jest **zainstalowanie certyfikatu narzędzia proxy** (np. Burp). Bez zainstalowania tego certyfikatu, zaszyfrowany ruch może nie być widoczny przez proxy. Aby uzyskać instrukcje dotyczące instalacji niestandardowego certyfikatu CA, [**kliknij tutaj**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
Aplikacje celujące w **API Level 24 i wyżej** wymagają modyfikacji konfiguracji bezpieczeństwa sieci, aby zaakceptować certyfikat CA proxy. Ten krok jest kluczowy do inspekcji zaszyfrowanego ruchu. Aby uzyskać instrukcje dotyczące modyfikacji konfiguracji bezpieczeństwa sieci, [**odwołaj się do tego samouczka**](make-apk-accept-ca-certificate.md).
@@ -412,14 +412,14 @@ Aplikacje celujące w **API Level 24 i wyżej** wymagają modyfikacji konfigurac
Gdy SSL Pinning jest wdrożone, konieczne staje się jego obejście, aby zainspirować ruch HTTPS. Istnieje kilka metod w tym celu:
- Automatycznie **zmodyfikuj** **apk**, aby **obejść** SSLPinning za pomocą [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Największą zaletą tej opcji jest to, że nie będziesz potrzebować roota, aby obejść SSL Pinning, ale będziesz musiał usunąć aplikację i zainstalować nową, co nie zawsze działa.
-- Możesz użyć **Frida** (omówione poniżej), aby obejść tę ochronę. Oto przewodnik dotyczący używania Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
+- Możesz użyć **Frida** (omówione poniżej), aby obejść tę ochronę. Oto przewodnik, jak używać Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
- Możesz także spróbować **automatycznie obejść SSL Pinning** za pomocą [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
- Możesz również spróbować **automatycznie obejść SSL Pinning** za pomocą **analizy dynamicznej MobSF** (wyjaśnionej poniżej)
- Jeśli nadal uważasz, że istnieje jakiś ruch, którego nie przechwytujesz, możesz spróbować **przekierować ruch do burp za pomocą iptables**. Przeczytaj ten blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
#### Szukanie powszechnych podatności w sieci
-Ważne jest również, aby szukać powszechnych podatności w aplikacji. Szczegółowe informacje na temat identyfikacji i łagodzenia tych podatności wykraczają poza zakres tego podsumowania, ale są szeroko omówione w innych miejscach.
+Ważne jest również, aby szukać powszechnych podatności w sieci w aplikacji. Szczegółowe informacje na temat identyfikacji i łagodzenia tych podatności wykraczają poza zakres tego podsumowania, ale są szeroko omówione w innych miejscach.
### Frida
@@ -427,7 +427,7 @@ Ważne jest również, aby szukać powszechnych podatności w aplikacji. Szczeg
**Możesz uzyskać dostęp do działającej aplikacji i podłączyć metody w czasie rzeczywistym, aby zmienić zachowanie, zmienić wartości, wyodrębnić wartości, uruchomić inny kod...**\
Jeśli chcesz przeprowadzić pentesting aplikacji Android, musisz wiedzieć, jak używać Frida.
-- Naucz się, jak używać Frida: [**Samouczek Frida**](frida-tutorial/)
+- Naucz się, jak używać Frida: [**Samouczek Frida**](frida-tutorial/index.html)
- Nieco "GUI" do działań z Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
- Ojection jest świetne do automatyzacji użycia Frida: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
- Możesz znaleźć kilka niesamowitych skryptów Frida tutaj: [**https://codeshare.frida.re/**](https://codeshare.frida.re)
@@ -468,13 +468,13 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ` `VT_UPLOAD = TRUE`). Możesz również ustawić `VT_UPLOAD` na `False`, wtedy **hash** zostanie **przesłany** zamiast pliku.
@@ -534,11 +534,11 @@ MobSF pozwala również na **diff/Compare** analizy oraz integrację z **VirusTo
- Przechwytywać **ruch HTTPS**
- Używać **Frida** do uzyskiwania **informacji w czasie rzeczywistym**
-Od wersji Android **> 5**, automatycznie **uruchomi Frida** i ustawi globalne ustawienia **proxy** do **przechwytywania** ruchu. Będzie przechwytywać ruch tylko z testowanej aplikacji.
+Od wersji Android **> 5**, **automatycznie uruchomi Frida** i ustawi globalne ustawienia **proxy** do **przechwytywania** ruchu. Będzie przechwytywać ruch tylko z testowanej aplikacji.
**Frida**
-Domyślnie użyje również niektórych skryptów Frida do **obejścia SSL pinning**, **wykrywania root** i **wykrywania debuggera** oraz do **monitorowania interesujących API**.\
+Domyślnie będzie również używać niektórych skryptów Frida do **obejścia SSL pinning**, **wykrywania root** i **wykrywania debuggera** oraz do **monitorowania interesujących API**.\
MobSF może również **wywoływać eksportowane aktywności**, robić **zrzuty ekranu** z nich i **zapisywać** je do raportu.
Aby **rozpocząć** testowanie dynamiczne, naciśnij zielony przycisk: "**Start Instrumentation**". Naciśnij "**Frida Live Logs**", aby zobaczyć logi generowane przez skrypty Frida i "**Live API Monitor**", aby zobaczyć wszystkie wywołania do podłączonych metod, przekazywane argumenty i zwracane wartości (to pojawi się po naciśnięciu "Start Instrumentation").\
@@ -550,12 +550,12 @@ Ponadto masz kilka dodatkowych funkcji Frida:
- **Enumerate Loaded Classes**: Wydrukuje wszystkie załadowane klasy
- **Capture Strings**: Wydrukuje wszystkie przechwycone ciągi podczas korzystania z aplikacji (bardzo hałaśliwe)
-- **Capture String Comparisons**: Może być bardzo przydatne. **Pokaże 2 porównywane ciągi** i czy wynik był prawdziwy czy fałszywy.
+- **Capture String Comparisons**: Może być bardzo przydatne. Pokaże **2 porównywane ciągi** i czy wynik był prawdziwy czy fałszywy.
- **Enumerate Class Methods**: Podaj nazwę klasy (np. "java.io.File") i wydrukuje wszystkie metody klasy.
- **Search Class Pattern**: Wyszukaj klasy według wzoru
- **Trace Class Methods**: **Śledź** **całą klasę** (zobacz wejścia i wyjścia wszystkich metod klasy). Pamiętaj, że domyślnie MobSF śledzi kilka interesujących metod API Androida.
-Gdy wybierzesz moduł pomocniczy, który chcesz użyć, musisz nacisnąć "**Start Intrumentation**" i zobaczysz wszystkie wyniki w "**Frida Live Logs**".
+Gdy wybierzesz dodatkowy moduł, który chcesz użyć, musisz nacisnąć "**Start Intrumentation**" i zobaczysz wszystkie wyniki w "**Frida Live Logs**".
**Shell**
@@ -570,10 +570,10 @@ receivers
```
**Narzędzia HTTP**
-Gdy ruch http jest przechwytywany, możesz zobaczyć brzydki widok przechwyconego ruchu na "**HTTP(S) Traffic**" na dole lub ładniejszy widok w "**Start HTTPTools**" na zielonym przycisku. Z drugiej opcji możesz **wysłać** **przechwycone żądania** do **proxy** takich jak Burp lub Owasp ZAP.\
+Gdy ruch http jest przechwytywany, możesz zobaczyć brzydki widok przechwyconego ruchu na "**HTTP(S) Traffic**" na dole lub ładniejszy widok w zielonym przycisku "**Start HTTPTools**". Z drugiej opcji możesz **wysłać** **przechwycone żądania** do **proxy** takich jak Burp lub Owasp ZAP.\
Aby to zrobić, _włącz Burp -->_ _wyłącz Intercept --> w MobSB HTTPTools wybierz żądanie_ --> naciśnij "**Send to Fuzzer**" --> _wybierz adres proxy_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)).
-Po zakończeniu analizy dynamicznej z MobSF możesz nacisnąć "**Start Web API Fuzzer**", aby **fuzzować żądania http** i szukać luk.
+Po zakończeniu analizy dynamicznej z MobSF możesz nacisnąć "**Start Web API Fuzzer**", aby **fuzzować żądania http** i szukać podatności.
> [!NOTE]
> Po przeprowadzeniu analizy dynamicznej z MobSF ustawienia proxy mogą być źle skonfigurowane i nie będziesz w stanie ich naprawić z GUI. Możesz naprawić ustawienia proxy, wykonując:
@@ -595,7 +595,7 @@ To **świetne narzędzie do przeprowadzania analizy statycznej z GUI**
### [Qark](https://github.com/linkedin/qark)
-To narzędzie jest zaprojektowane do wyszukiwania kilku **związanych z bezpieczeństwem luk w aplikacjach Android**, zarówno w **kodzie źródłowym**, jak i **spakowanych APK**. Narzędzie jest również **zdolne do tworzenia "Proof-of-Concept" wdrażalnego APK** oraz **komend ADB**, aby wykorzystać niektóre z wykrytych luk (ujawnione aktywności, intencje, tapjacking...). Podobnie jak w przypadku Drozer, nie ma potrzeby rootowania urządzenia testowego.
+To narzędzie jest zaprojektowane do wyszukiwania kilku **związanych z bezpieczeństwem podatności aplikacji Android**, zarówno w **kodzie źródłowym**, jak i **spakowanych APK**. Narzędzie jest również **zdolne do tworzenia "Proof-of-Concept" wdrażalnego APK** oraz **komend ADB**, aby wykorzystać niektóre z wykrytych podatności (ujawnione aktywności, intencje, tapjacking...). Podobnie jak w przypadku Drozer, nie ma potrzeby rootowania urządzenia testowego.
```bash
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
@@ -617,7 +617,7 @@ reverse-apk relative/path/to/APP.apk
SUPER to aplikacja działająca w wierszu poleceń, która może być używana w systemach Windows, MacOS X i Linux, analizująca pliki _.apk_ w poszukiwaniu luk. Robi to, dekompresując APK i stosując szereg reguł w celu wykrycia tych luk.
-Wszystkie reguły są zdefiniowane w pliku `rules.json`, a każda firma lub tester może stworzyć własne reguły, aby analizować to, czego potrzebują.
+Wszystkie reguły są zgrupowane w pliku `rules.json`, a każda firma lub tester może stworzyć własne reguły, aby analizować to, czego potrzebują.
Pobierz najnowsze pliki binarne z [strony pobierania](https://superanalyzer.rocks/download.html)
```
@@ -627,7 +627,7 @@ super-analyzer {apk_file}
.png>)
-StaCoAn to **narzędzie wieloplatformowe**, które wspomaga programistów, łowców błędów i etycznych hakerów w przeprowadzaniu [analizy statycznej kodu](https://en.wikipedia.org/wiki/Static_program_analysis) aplikacji mobilnych.
+StaCoAn to **narzędzie wieloplatformowe**, które pomaga deweloperom, łowcom błędów i etycznym hakerom w przeprowadzaniu [analizy statycznej kodu](https://en.wikipedia.org/wiki/Static_program_analysis) aplikacji mobilnych.
Koncepcja polega na tym, że przeciągasz i upuszczasz plik swojej aplikacji mobilnej (plik .apk lub .ipa) na aplikację StaCoAn, a ona wygeneruje dla Ciebie wizualny i przenośny raport. Możesz dostosować ustawienia i listy słów, aby uzyskać spersonalizowane doświadczenie.
@@ -657,7 +657,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
.png>)
-**MARA** to **M**obile **A**pplication **R**everse engineering i **A**naliza Framework. Jest to narzędzie, które łączy powszechnie używane narzędzia do inżynierii wstecznej i analizy aplikacji mobilnych, aby wspierać testowanie aplikacji mobilnych w kontekście zagrożeń bezpieczeństwa OWASP. Jego celem jest ułatwienie tego zadania i uczynienie go bardziej przyjaznym dla deweloperów aplikacji mobilnych i specjalistów ds. bezpieczeństwa.
+**MARA** to **M**obile **A**pplication **R**everse engineering i **A**naliza Framework. Jest to narzędzie, które łączy powszechnie używane narzędzia do inżynierii wstecznej i analizy aplikacji mobilnych, aby wspierać testowanie aplikacji mobilnych w kontekście zagrożeń bezpieczeństwa OWASP. Jego celem jest ułatwienie tego zadania i uczynienie go bardziej przyjaznym dla deweloperów aplikacji mobilnych oraz specjalistów ds. bezpieczeństwa.
Może:
@@ -678,7 +678,7 @@ Zauważ, że w zależności od usługi i konfiguracji, której używasz do obfus
### [ProGuard]()
-Z [Wikipedia](): **ProGuard** to narzędzie wiersza poleceń typu open source, które zmniejsza, optymalizuje i obfuskowało kod Java. Potrafi optymalizować bajty kodu oraz wykrywać i usuwać nieużywane instrukcje. ProGuard jest oprogramowaniem darmowym i jest dystrybuowane na licencji GNU General Public License, wersja 2.
+Z [Wikipedia](): **ProGuard** to narzędzie open source wiersza poleceń, które zmniejsza, optymalizuje i obfuskowało kod Java. Potrafi optymalizować bajty kodu oraz wykrywać i usuwać nieużywane instrukcje. ProGuard jest oprogramowaniem darmowym i jest dystrybuowane na licencji GNU General Public License, wersja 2.
ProGuard jest dystrybuowane jako część Android SDK i działa podczas budowania aplikacji w trybie release.
@@ -702,15 +702,15 @@ Możesz przesłać obfuskowane APK na ich platformę.
### [Deobfuscate android App](https://github.com/In3tinct/deobfuscate-android-app)
-To narzędzie LLM do znajdowania potencjalnych luk w zabezpieczeniach w aplikacjach androidowych i deobfuskacji kodu aplikacji androidowej. Używa publicznego API Gemini od Google'a.
+To narzędzie LLM do znajdowania potencjalnych luk w zabezpieczeniach w aplikacjach androidowych i deobfuskacji kodu aplikacji androidowych. Używa publicznego API Gemini od Google'a.
### [Simplify](https://github.com/CalebFenton/simplify)
-To **ogólny deobfuskator androidowy.** Simplify **wirtualnie wykonuje aplikację**, aby zrozumieć jej zachowanie, a następnie **stara się zoptymalizować kod**, aby działał identycznie, ale był łatwiejszy do zrozumienia dla człowieka. Każdy typ optymalizacji jest prosty i ogólny, więc nie ma znaczenia, jaki konkretny typ obfuskacji jest używany.
+To **ogólny deobfuskator androidowy.** Simplify **wirtualnie wykonuje aplikację**, aby zrozumieć jej zachowanie, a następnie **próbuje zoptymalizować kod**, aby działał identycznie, ale był łatwiejszy do zrozumienia dla człowieka. Każdy typ optymalizacji jest prosty i ogólny, więc nie ma znaczenia, jaki konkretny typ obfuskacji jest używany.
### [APKiD](https://github.com/rednaga/APKiD)
-APKiD dostarcza informacji o **tym, jak APK zostało stworzone**. Identyfikuje wiele **kompilatorów**, **packerów**, **obfuskatorów** i innych dziwnych rzeczy. To [_PEiD_](https://www.aldeid.com/wiki/PEiD) dla Androida.
+APKiD dostarcza informacji o **tym, jak stworzono APK**. Identyfikuje wiele **kompilatorów**, **packerów**, **obfuskatorów** i innych dziwnych rzeczy. To [_PEiD_](https://www.aldeid.com/wiki/PEiD) dla Androida.
### Manual
@@ -720,7 +720,7 @@ APKiD dostarcza informacji o **tym, jak APK zostało stworzone**. Identyfikuje w
### [Androl4b](https://github.com/sh4hin/Androl4b)
-AndroL4b to wirtualna maszyna bezpieczeństwa Androida oparta na ubuntu-mate, która zawiera zbiór najnowszych frameworków, tutoriali i laboratoriów od różnych geeków i badaczy bezpieczeństwa do inżynierii wstecznej i analizy złośliwego oprogramowania.
+AndroL4b to wirtualna maszyna bezpieczeństwa Androida oparta na ubuntu-mate, zawierająca zbiór najnowszych frameworków, tutoriali i laboratoriów od różnych geeków i badaczy bezpieczeństwa do inżynierii wstecznej i analizy złośliwego oprogramowania.
## References
diff --git a/src/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md b/src/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md
index 0a2f11193..a78053e75 100644
--- a/src/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md
+++ b/src/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md
@@ -1,12 +1,12 @@
-# iOS Podstawowe Operacje Testowe
+# iOS Basic Testing Operations
{{#include ../../banners/hacktricks-training.md}}
-## **Podsumowanie Identyfikacji i Dostępu do Urządzeń iOS**
+## **Podsumowanie identyfikacji i dostępu do urządzeń iOS**
-### **Identyfikacja UDID Urządzenia iOS**
+### **Identyfikacja UDID urządzenia iOS**
-Aby unikalnie zidentyfikować urządzenie iOS, używa się 40-cyfrowej sekwencji znanej jako UDID. W macOS Catalina lub nowszym można to znaleźć w aplikacji **Finder**, ponieważ iTunes nie jest już obecny. Urządzenie, po podłączeniu przez USB i wybraniu w Finderze, ujawnia swój UDID wraz z innymi informacjami po kliknięciu w szczegóły pod jego nazwą.
+Aby unikalnie zidentyfikować urządzenie iOS, używa się 40-cyfrowej sekwencji znanej jako UDID. W systemie macOS Catalina lub nowszym można to znaleźć w aplikacji **Finder**, ponieważ iTunes nie jest już obecny. Urządzenie, po podłączeniu przez USB i wybraniu w Finderze, ujawnia swój UDID wraz z innymi informacjami, gdy kliknie się na szczegóły pod jego nazwą.
Dla wersji macOS przed Catalina, iTunes ułatwia odkrycie UDID. Szczegółowe instrukcje można znaleźć [tutaj](http://www.iclarified.com/52179/how-to-find-your-iphones-udid).
@@ -25,7 +25,7 @@ $ idevice_id -l
```bash
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
```
-- **Wykorzystanie `instruments` do wylistowania urządzeń:**
+- **Używanie `instruments` do wylistowania urządzeń:**
```bash
$ instruments -s devices
```
@@ -103,9 +103,9 @@ Zastąp zaszyfrowaną sekcję w oryginalnym pliku binarnym aplikacji zdekodowany
```bash
dd bs=1 seek= conv=notrunc if=dump.bin of=Original_App
```
-**Finalizacja deszyfrowania:** Zmodyfikuj metadane binariów, aby wskazać na brak szyfrowania, używając narzędzi takich jak **MachOView**, ustawiając `cryptid` na 0.
+**Finalizing Decryption:** Zmodyfikuj metadane binariów, aby wskazać na brak szyfrowania, używając narzędzi takich jak **MachOView**, ustawiając `cryptid` na 0.
-### **Deszyfrowanie (Automatycznie)**
+### **Decryption (Automatically)**
#### **frida-ios-dump**
@@ -132,21 +132,21 @@ flexdump dump Twitter.app
```
#### **bagbak**
-[**bagbak**](https://github.com/ChiChou/bagbak), inne narzędzie oparte na Frida, wymaga zrootowanego urządzenia do deszyfrowania aplikacji:
+[**bagbak**](https://github.com/ChiChou/bagbak), inne narzędzie oparte na Frida, wymaga urządzenia z jailbreakiem do deszyfrowania aplikacji:
```bash
bagbak --raw Chrome
```
#### **r2flutch**
-**r2flutch**, wykorzystując zarówno radare, jak i frida, służy do deszyfrowania aplikacji i zrzucania ich. Więcej informacji można znaleźć na jego [**stronie GitHub**](https://github.com/as0ler/r2flutch).
+**r2flutch**, wykorzystujący zarówno radare, jak i frida, służy do deszyfrowania aplikacji i zrzucania ich. Więcej informacji można znaleźć na jego [**stronie GitHub**](https://github.com/as0ler/r2flutch).
-### **Instalacja aplikacji**
+### **Instalowanie aplikacji**
-**Sideloading** odnosi się do instalacji aplikacji poza oficjalnym App Store. Proces ten jest obsługiwany przez **installd daemon** i wymaga, aby aplikacje były podpisane certyfikatem wydanym przez Apple. Urządzenia z jailbreakiem mogą to obejść za pomocą **AppSync**, co umożliwia instalację fałszywie podpisanych pakietów IPA.
+**Sideloading** odnosi się do instalowania aplikacji poza oficjalnym App Store. Proces ten jest obsługiwany przez **installd daemon** i wymaga, aby aplikacje były podpisane certyfikatem wydanym przez Apple. Urządzenia z jailbreakiem mogą to obejść za pomocą **AppSync**, co umożliwia instalację fałszywie podpisanych pakietów IPA.
#### **Narzędzia do Sideloadingu**
-- **Cydia Impactor**: Narzędzie do podpisywania i instalowania plików IPA na iOS oraz plików APK na Androida. Przewodniki i rozwiązywanie problemów można znaleźć na [yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
+- **Cydia Impactor**: Narzędzie do podpisywania i instalowania plików IPA na iOS oraz plików APK na Androidzie. Przewodniki i rozwiązywanie problemów można znaleźć na [yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
- **libimobiledevice**: Biblioteka dla systemów Linux i macOS do komunikacji z urządzeniami iOS. Komendy instalacyjne i przykłady użycia dla ideviceinstaller są dostarczane w celu instalacji aplikacji przez USB.
@@ -160,11 +160,11 @@ bagbak --raw Chrome
Aby zainstalować aplikacje specyficzne dla iPada na urządzeniach iPhone lub iPod touch, wartość **UIDeviceFamily** w pliku **Info.plist** musi zostać zmieniona na **1**. Ta modyfikacja wymaga jednak ponownego podpisania pliku IPA z powodu kontroli walidacji podpisu.
-**Uwaga**: Ta metoda może nie zadziałać, jeśli aplikacja wymaga funkcji zarezerwowanych dla nowszych modeli iPada, podczas gdy używa się starszego iPhone'a lub iPoda touch.
+**Uwaga**: Ta metoda może nie zadziałać, jeśli aplikacja wymaga funkcji zarezerwowanych dla nowszych modeli iPadów podczas używania starszego iPhone'a lub iPod touch.
## References
-- [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](ttps://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
+- [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](ttps://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/index.html)
- [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/)
- [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/)
- [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/)
diff --git a/src/network-services-pentesting/pentesting-kerberos-88/README.md b/src/network-services-pentesting/pentesting-kerberos-88/README.md
index 031a38d30..10d5ba420 100644
--- a/src/network-services-pentesting/pentesting-kerberos-88/README.md
+++ b/src/network-services-pentesting/pentesting-kerberos-88/README.md
@@ -8,14 +8,14 @@
W środowiskach takich jak **Active Directory**, **Kerberos** odgrywa kluczową rolę w ustalaniu tożsamości użytkowników poprzez weryfikację ich tajnych haseł. Proces ten zapewnia, że tożsamość każdego użytkownika jest potwierdzana przed interakcją z zasobami sieciowymi. Jednak **Kerberos** nie rozszerza swojej funkcjonalności na ocenę lub egzekwowanie uprawnień, jakie użytkownik ma do konkretnych zasobów lub usług. Zamiast tego zapewnia bezpieczny sposób autoryzacji użytkowników, co jest kluczowym pierwszym krokiem w procesie bezpieczeństwa.
-Po autoryzacji przez **Kerberos**, proces podejmowania decyzji dotyczących dostępu do zasobów jest delegowany do poszczególnych usług w sieci. Usługi te są następnie odpowiedzialne za ocenę praw i uprawnień uwierzytelnionego użytkownika, na podstawie informacji dostarczonych przez **Kerberos** o uprawnieniach użytkownika. Taki projekt pozwala na rozdzielenie zadań między autoryzację tożsamości użytkowników a zarządzanie ich prawami dostępu, co umożliwia bardziej elastyczne i bezpieczne podejście do zarządzania zasobami w rozproszonych sieciach.
+Po autoryzacji przez **Kerberos**, proces podejmowania decyzji dotyczących dostępu do zasobów jest delegowany do poszczególnych usług w sieci. Usługi te są następnie odpowiedzialne za ocenę praw i uprawnień uwierzytelnionego użytkownika, na podstawie informacji dostarczonych przez **Kerberos** o przywilejach użytkownika. Taki projekt pozwala na rozdzielenie zadań między autoryzację tożsamości użytkowników a zarządzanie ich prawami dostępu, co umożliwia bardziej elastyczne i bezpieczne podejście do zarządzania zasobami w rozproszonych sieciach.
**Domyślny port:** 88/tcp/udp
```
PORT STATE SERVICE
88/tcp open kerberos-sec
```
-### **Aby nauczyć się, jak nadużywać Kerberos, powinieneś przeczytać post o** [**Active Directory**](../../windows-hardening/active-directory-methodology/)**.**
+### **Aby nauczyć się, jak nadużywać Kerberos, powinieneś przeczytać post o** [**Active Directory**](../../windows-hardening/active-directory-methodology/index.html)**.**
## Więcej
@@ -25,7 +25,7 @@ PORT STATE SERVICE
### MS14-068
-Wada MS14-068 pozwala atakującemu na manipulację tokenem logowania Kerberos legalnego użytkownika, aby fałszywie rościć sobie wyższe uprawnienia, takie jak bycie administratorem domeny. To fałszywe roszczenie jest błędnie weryfikowane przez kontroler domeny, co umożliwia nieautoryzowany dostęp do zasobów sieciowych w całym lesie Active Directory.
+Wada MS14-068 pozwala atakującemu na manipulację tokenem logowania Kerberos legalnego użytkownika, aby fałszywie twierdzić o podwyższonych uprawnieniach, takich jak bycie administratorem domeny. To fałszywe roszczenie jest błędnie weryfikowane przez kontroler domeny, co umożliwia nieautoryzowany dostęp do zasobów sieciowych w całym lesie Active Directory.
{{#ref}}
https://adsecurity.org/?p=541
diff --git a/src/network-services-pentesting/pentesting-web/403-and-401-bypasses.md b/src/network-services-pentesting/pentesting-web/403-and-401-bypasses.md
index b1fa8182b..b14f27e8a 100644
--- a/src/network-services-pentesting/pentesting-web/403-and-401-bypasses.md
+++ b/src/network-services-pentesting/pentesting-web/403-and-401-bypasses.md
@@ -8,11 +8,11 @@ Spróbuj użyć **różnych metod** do uzyskania dostępu do pliku: `GET, HEAD,
- Sprawdź nagłówki odpowiedzi, może pojawią się jakieś informacje. Na przykład, **odpowiedź 200** na **HEAD** z `Content-Length: 55` oznacza, że **metoda HEAD może uzyskać dostęp do informacji**. Ale nadal musisz znaleźć sposób na wyeksportowanie tych informacji.
- Użycie nagłówka HTTP, takiego jak `X-HTTP-Method-Override: PUT`, może nadpisać używaną metodę.
-- Użyj **metody `TRACE`** i jeśli masz dużo szczęścia, może w odpowiedzi zobaczysz również **nagłówki dodane przez pośrednie serwery proxy**, które mogą być przydatne.
+- Użyj **metody `TRACE`** i jeśli będziesz miał dużo szczęścia, może w odpowiedzi zobaczysz również **nagłówki dodane przez pośrednie serwery proxy**, które mogą być przydatne.
## Fuzzing nagłówków HTTP
-- **Zmień nagłówek Host** na dowolną wartość ([to zadziałało tutaj](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31))
+- **Zmień nagłówek Host** na jakąś dowolną wartość ([to zadziałało tutaj](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31))
- Spróbuj [**użyć innych User Agents**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt) do uzyskania dostępu do zasobu.
- **Fuzzing nagłówków HTTP**: Spróbuj użyć nagłówków HTTP Proxy, podstawowej autoryzacji HTTP i NTLM brute-force (tylko z kilkoma kombinacjami) oraz innych technik. W tym celu stworzyłem narzędzie [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass).
@@ -35,17 +35,17 @@ Jeśli **ścieżka jest chroniona**, możesz spróbować obejść ochronę ście
- `X-Original-URL: /admin/console`
- `X-Rewrite-URL: /admin/console`
-- Jeśli strona jest **za proxy**, może to proxy uniemożliwiać dostęp do prywatnych informacji. Spróbuj wykorzystać [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/) **lub** [**nagłówki hop-by-hop**](../../pentesting-web/abusing-hop-by-hop-headers.md)**.**
+- Jeśli strona jest **za proxy**, może to proxy uniemożliwiać dostęp do prywatnych informacji. Spróbuj wykorzystać [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/index.html) **lub** [**nagłówki hop-by-hop**](../../pentesting-web/abusing-hop-by-hop-headers.md)**.**
- Fuzz [**specjalne nagłówki HTTP**](special-http-headers.md), szukając różnych odpowiedzi.
-- **Fuzzing specjalnych nagłówków HTTP** podczas fuzzing **metod HTTP**.
-- **Usuń nagłówek Host** i być może będziesz w stanie obejść ochronę.
+- **Fuzzing specjalnych nagłówków HTTP** podczas fuzzingu **metod HTTP**.
+- **Usuń nagłówek Host** i może uda ci się obejść ochronę.
-## **Fuzzing ścieżek**
+## Fuzzing **ścieżki**
Jeśli _/path_ jest zablokowane:
- Spróbuj użyć _**/**_**%2e/path \_(jeśli dostęp jest zablokowany przez proxy, to może obejść ochronę). Spróbuj także**\_\*\* /%252e\*\*/path (podwójne kodowanie URL)
-- Spróbuj **obejścia Unicode**: _/**%ef%bc%8f**path_ (zakodowane znaki URL są jak "/"), więc po ponownym zakodowaniu będzie to _//path_ i być może już obejdziesz sprawdzanie nazwy _/path_
+- Spróbuj **obejścia Unicode**: _/**%ef%bc%8f**path_ (zakodowane znaki URL są jak "/"), więc po ponownym zakodowaniu będzie to _//path_ i może już udało ci się obejść sprawdzanie nazwy _/path_
- **Inne obejścia ścieżek**:
- site.com/secret –> HTTP 403 Forbidden
- site.com/SECRET –> HTTP 200 OK
diff --git a/src/network-services-pentesting/pentesting-web/README.md b/src/network-services-pentesting/pentesting-web/README.md
index 02f6d7b78..800668dae 100644
--- a/src/network-services-pentesting/pentesting-web/README.md
+++ b/src/network-services-pentesting/pentesting-web/README.md
@@ -25,28 +25,28 @@ web-api-pentesting.md
## Methodology summary
-> W tej metodologii zakładamy, że będziesz atakować domenę (lub subdomenę) i tylko to. Dlatego powinieneś zastosować tę metodologię do każdej odkrytej domeny, subdomeny lub adresu IP z nieokreślonym serwerem webowym w zakresie.
+> W tej metodologii zakładamy, że zamierzasz zaatakować domenę (lub subdomenę) i tylko to. Dlatego powinieneś zastosować tę metodologię do każdej odkrytej domeny, subdomeny lub adresu IP z nieokreślonym serwerem webowym w zakresie.
- [ ] Zacznij od **identyfikacji** **technologii** używanych przez serwer webowy. Szukaj **sztuczek**, które warto mieć na uwadze podczas reszty testu, jeśli uda ci się pomyślnie zidentyfikować technologię.
-- [ ] Czy istnieje jakakolwiek **znana podatność** wersji technologii?
+- [ ] Czy istnieje jakakolwiek **znana luka** w wersji technologii?
- [ ] Używasz jakiejś **znanej technologii**? Jakieś **przydatne sztuczki** do wydobycia większej ilości informacji?
- [ ] Czy jest jakiś **specjalistyczny skaner** do uruchomienia (jak wpscan)?
- [ ] Uruchom **skanery ogólnego przeznaczenia**. Nigdy nie wiesz, czy znajdą coś interesującego.
- [ ] Zacznij od **wstępnych kontroli**: **robots**, **sitemap**, **błąd 404** i **skanowanie SSL/TLS** (jeśli HTTPS).
- [ ] Zacznij **spiderować** stronę internetową: Czas na **znalezienie** wszystkich możliwych **plików, folderów** i **parametrów używanych.** Sprawdź również **specjalne znaleziska**.
-- [ ] _Zauważ, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-forcingu lub spiderowania, powinien być spiderowany._
+- [ ] _Zauważ, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-forcingu lub spiderowania, powinien być on spiderowany._
- [ ] **Brute-Forcing katalogów**: Spróbuj przeprowadzić brute force na wszystkich odkrytych folderach w poszukiwaniu nowych **plików** i **katalogów**.
-- [ ] _Zauważ, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-forcingu lub spiderowania, powinien być Brute-Forced._
+- [ ] _Zauważ, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-forcingu lub spiderowania, powinien być on Brute-Forced._
- [ ] **Sprawdzanie kopii zapasowych**: Sprawdź, czy możesz znaleźć **kopie zapasowe** **odkrytych plików**, dodając powszechne rozszerzenia kopii zapasowych.
- [ ] **Brute-Force parametrów**: Spróbuj **znaleźć ukryte parametry**.
-- [ ] Gdy już **zidentyfikujesz** wszystkie możliwe **punkty końcowe** akceptujące **wejście użytkownika**, sprawdź wszelkiego rodzaju **podatności** związane z tym.
+- [ ] Gdy już **zidentyfikujesz** wszystkie możliwe **punkty końcowe** akceptujące **dane wejściowe użytkownika**, sprawdź wszelkiego rodzaju **luki** związane z tym.
- [ ] [Postępuj zgodnie z tą listą kontrolną](../../pentesting-web/web-vulnerabilities-methodology.md)
## Server Version (Vulnerable?)
### Identify
-Sprawdź, czy istnieją **znane podatności** dla wersji serwera **uruchomionej**.\
+Sprawdź, czy istnieją **znane luki** w wersji serwera **działającego**.\
**Nagłówki HTTP i ciasteczka odpowiedzi** mogą być bardzo przydatne do **identyfikacji** **technologii** i/lub **wersji** używanej. **Skanowanie Nmap** może zidentyfikować wersję serwera, ale mogą być również przydatne narzędzia [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)lub [**https://builtwith.com/**](https://builtwith.com)**:**
```bash
whatweb -a 1 #Stealthy
@@ -54,7 +54,7 @@ whatweb -a 3 #Aggresive
webtech -u
webanalyze -host https://google.com -crawl 2
```
-Szukaj **w** [**vulnerabilities of the web application** **version**](../../generic-hacking/search-exploits.md)
+Search **for** [**vulnerabilities of the web application** **version**](../../generic-hacking/search-exploits.md)
### **Sprawdź, czy istnieje jakiś WAF**
@@ -69,9 +69,9 @@ Kilka **sztuczek** do **znajdowania luk** w różnych znanych **technologiach**:
- [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
- [**Apache**](apache.md)
- [**Artifactory**](artifactory-hacking-guide.md)
-- [**Buckets**](buckets/)
+- [**Buckets**](buckets/index.html)
- [**CGI**](cgi.md)
-- [**Drupal**](drupal/)
+- [**Drupal**](drupal/index.html)
- [**Flask**](flask.md)
- [**Git**](git.md)
- [**Golang**](golang.md)
@@ -86,19 +86,19 @@ Kilka **sztuczek** do **znajdowania luk** w różnych znanych **technologiach**:
- [**Laravel**](laravel.md)
- [**Moodle**](moodle.md)
- [**Nginx**](nginx.md)
-- [**PHP (php ma wiele interesujących sztuczek, które mogą być wykorzystane)**](php-tricks-esp/)
+- [**PHP (php ma wiele interesujących sztuczek, które mogą być wykorzystane)**](php-tricks-esp/index.html)
- [**Python**](python.md)
- [**Spring Actuators**](spring-actuators.md)
- [**Symphony**](symphony.md)
-- [**Tomcat**](tomcat/)
+- [**Tomcat**](tomcat/index.html)
- [**VMWare**](vmware-esx-vcenter....md)
- [**Web API Pentesting**](web-api-pentesting.md)
- [**WebDav**](put-method-webdav.md)
- [**Werkzeug**](werkzeug.md)
- [**Wordpress**](wordpress.md)
-- [**Electron Desktop (XSS do RCE)**](electron-desktop-apps/)
+- [**Electron Desktop (XSS do RCE)**](electron-desktop-apps/index.html)
-_Weź pod uwagę, że **ta sama domena** może używać **różnych technologii** na różnych **portach**, **folderach** i **subdomenach**._\
+_Pamiętaj, że **ta sama domena** może używać **różnych technologii** na różnych **portach**, **folderach** i **subdomenach**._\
Jeśli aplikacja webowa korzysta z jakiejkolwiek znanej **technologii/platformy wymienionej wcześniej** lub **jakiejkolwiek innej**, nie zapomnij **poszukać w Internecie** nowych sztuczek (i daj mi znać!).
### Przegląd kodu źródłowego
@@ -134,18 +134,18 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
Jeśli używany jest CMS, nie zapomnij **uruchomić skanera**, 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/), **Joomla**, **vBulletin** strony internetowe pod kątem problemów z bezpieczeństwem. (GUI)\
-[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/)**, PrestaShop, Opencart**\
-**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/) **lub** [**(M)oodle**](moodle.md)\
-[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
+[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\
+[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** strony internetowe pod kątem problemów z bezpieczeństwem. (GUI)\
+[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/index.html)**, PrestaShop, Opencart**\
+**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **lub** [**(M)oodle**](moodle.md)\
+[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/index.html)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
```bash
cmsmap [-f W] -F -d
wpscan --force update -e --url
joomscan --ec -u
joomlavs.rb #https://github.com/rastating/joomlavs
```
-> W tym momencie powinieneś już mieć pewne informacje o serwerze WWW używanym przez klienta (jeśli jakiekolwiek dane są podane) oraz kilka sztuczek, które warto mieć na uwadze podczas testu. Jeśli masz szczęście, być może znalazłeś nawet CMS i uruchomiłeś jakiś skaner.
+> W tym momencie powinieneś już mieć pewne informacje o serwerze WWW używanym przez klienta (jeśli podano jakieś dane) oraz kilka sztuczek, które warto mieć na uwadze podczas testu. Jeśli masz szczęście, być może znalazłeś nawet CMS i uruchomiłeś jakiś skaner.
## Krok po kroku Odkrywanie Aplikacji Webowej
@@ -160,7 +160,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
- /crossdomain.xml
- /clientaccesspolicy.xml
- /.well-known/
-- Sprawdź również komentarze na głównych i pobocznych stronach.
+- Sprawdź również komentarze na stronach głównych i podrzędnych.
**Wymuszanie błędów**
@@ -168,7 +168,7 @@ Serwery WWW mogą **zachowywać się nieprzewidywalnie**, gdy wysyłane są do n
- Uzyskaj dostęp do **fałszywych stron** jak /whatever_fake.php (.aspx,.html,.itd)
- **Dodaj "\[]", "]]" i "\[\["** w **wartościach cookie** i **wartościach parametrów**, aby stworzyć błędy
-- Generuj błąd, podając dane jako **`/~randomthing/%s`** na **końcu** **URL**
+- Generuj błąd, podając dane wejściowe jako **`/~randomthing/%s`** na **końcu** **URL**
- Spróbuj **różnych metod HTTP** jak PATCH, DEBUG lub błędnych jak FAKE
#### **Sprawdź, czy możesz przesyłać pliki (**[**PUT verb, WebDav**](put-method-webdav.md)**)**
@@ -176,14 +176,14 @@ Serwery WWW mogą **zachowywać się nieprzewidywalnie**, gdy wysyłane są do n
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:
- **Brute Force** poświadczeń
-- **Przesyłać pliki** za pomocą WebDav do **pozostałych** **znalezionych folderów** w obrębie strony internetowej. Możesz mieć uprawnienia do przesyłania plików w innych folderach.
+- **Przesyłać pliki** za pomocą WebDav do **pozostałych** **znalezionych folderów** na stronie internetowej. Możesz mieć uprawnienia do przesyłania plików w innych folderach.
### **Luki w SSL/TLS**
- Jeśli aplikacja **nie wymusza użycia HTTPS** w żadnej części, to jest **vulnerable to MitM**
- Jeśli aplikacja **wysyła wrażliwe dane (hasła) używając HTTP**. To jest poważna luka.
-Użyj [**testssl.sh**](https://github.com/drwetter/testssl.sh), aby sprawdzić **luki** (w programach Bug Bounty prawdopodobnie tego rodzaju luki nie będą akceptowane) i użyj [**a2sv**](https://github.com/hahwul/a2sv), aby ponownie sprawdzić luki:
+Użyj [**testssl.sh**](https://github.com/drwetter/testssl.sh) do sprawdzenia **luk** (w programach Bug Bounty prawdopodobnie tego rodzaju luki nie będą akceptowane) i użyj [**a2sv**](https://github.com/hahwul/a2sv) do ponownego sprawdzenia luk:
```bash
./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also
@@ -199,10 +199,10 @@ Informacje o lukach SSL/TLS:
### Spidering
-Uruchom jakiś rodzaj **spidera** w sieci. Celem spidera jest **znalezienie jak największej liczby ścieżek** z testowanej aplikacji. Dlatego należy wykorzystać przeszukiwanie sieci i źródła zewnętrzne, aby znaleźć jak najwięcej ważnych ścieżek.
+Uruchom jakiś rodzaj **spidera** w sieci. Celem spidera jest **znalezienie jak największej liczby ścieżek** z testowanej aplikacji. Dlatego należy wykorzystać przeszukiwanie sieci i zewnętrzne źródła, aby znaleźć jak najwięcej ważnych ścieżek.
-- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder w plikach JS i źródłach zewnętrznych (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
-- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, z LinkFinder dla plików JS i Archive.org jako źródło zewnętrzne.
+- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, 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): HML spider, z LinkFinder dla plików JS i Archive.org jako zewnętrzne źródło.
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, wskazuje również "soczyste pliki".
- [**evine** ](https://github.com/saeeddhqan/evine)(go): Interaktywny CLI HTML spider. Również przeszukuje Archive.org.
- [**meg**](https://github.com/tomnomnom/meg) (go): To narzędzie nie jest spiderem, ale może być przydatne. Możesz po prostu wskazać plik z hostami i plik ze ścieżkami, a meg pobierze każdą ścieżkę na każdym hoście i zapisze odpowiedź.
@@ -212,31 +212,31 @@ Uruchom jakiś rodzaj **spidera** w sieci. Celem spidera jest **znalezienie jak
- [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider z możliwościami renderowania JS.
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, z możliwościami beautify JS, zdolny do wyszukiwania nowych ścieżek w plikach JS. Warto również rzucić okiem na [JSScanner](https://github.com/dark-warlord14/JSScanner), który jest wrapperem LinkFinder.
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Do wyodrębniania punktów końcowych zarówno w źródle HTML, jak i w osadzonych plikach javascript. Przydatne dla łowców błędów, zespołów red, ninja infosec.
-- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Skrypt w pythonie 2.7 używający Tornado i JSBeautifier do parsowania względnych adresów URL z plików JavaScript. Przydatne do łatwego odkrywania żądań AJAX. Wygląda na to, że nie jest utrzymywany.
+- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Skrypt w Pythonie 2.7 używający Tornado i JSBeautifier do parsowania względnych adresów URL z plików JavaScript. Przydatne do łatwego odkrywania żądań AJAX. Wygląda na to, że nie jest utrzymywany.
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Dany plik (HTML) wyodrębni z niego adresy URL, używając sprytnych wyrażeń regularnych do znajdowania i wyodrębniania względnych adresów URL z brzydkich (minifikowanych) plików.
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, kilka narzędzi): Zbieraj interesujące informacje z plików JS, używając kilku narzędzi.
- [**subjs**](https://github.com/lc/subjs) (go): Znajdź pliki JS.
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Załaduj stronę w bezgłowym przeglądarku i wydrukuj wszystkie załadowane adresy URL.
- [**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, podając URL .js.map, zwróci ci zbeatyfikowany kod JS.
+- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Narzędzie, które, podając URL .js.map, uzyska zbeatyfikowany kod JS.
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): To narzędzie służy do odkrywania punktów końcowych dla danego 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): Przeszukuj (nawet wypełniając formularze) i znajdź wrażliwe informacje, używając specyficznych wyrażeń regex.
+- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Przeszukuj (nawet wypełniając formularze) i znajdź wrażliwe informacje, używając specyficznych wyrażeń regularnych.
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite to zaawansowany wielofunkcyjny GUI web security Crawler/Spider zaprojektowany dla profesjonalistów w dziedzinie cyberbezpieczeństwa.
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): 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.
- [**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 stworzenia niestandardowej listy słów do fuzzingu i enumeracji.
- [**katana**](https://github.com/projectdiscovery/katana) (go): Świetne narzędzie do tego.
-- [**Crawley**](https://github.com/s0rg/crawley) (go): Wydrukuj każdy link, który uda mu się znaleźć.
+- [**Crawley**](https://github.com/s0rg/crawley) (go): Wydrukuj każdy link, który uda się znaleźć.
-### Brute Force katalogów i plików
+### Brute Force directories and files
-Rozpocznij **brute-forcing** od folderu głównego i upewnij się, że brute-forcesz **wszystkie** **znalezione katalogi** przy użyciu **tej metody** oraz wszystkich katalogów **odkrytych** przez **Spidering** (możesz to robić **rekursywnie** i dodając na początku używanej listy słów nazwy znalezionych katalogów).\
+Rozpocznij **brute-forcing** od folderu głównego i upewnij się, że brute-forcesz **wszystkie** **znalezione** **katalogi** przy użyciu **tej metody** oraz wszystkich katalogów **odkrytych** przez **Spidering** (możesz to robić brute-forcing **rekursywnie** i dodając na początku używanej listy słów nazwy znalezionych katalogów).\
Narzędzia:
-- **Dirb** / **Dirbuster** - Wbudowane w Kali, **stare** (i **wolne**), ale funkcjonalne. Umożliwia auto-podpisane certyfikaty i przeszukiwanie rekursywne. Zbyt wolne w porównaniu do innych opcji.
-- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Nie pozwala na auto-podpisane certyfikaty, ale** umożliwia przeszukiwanie rekursywne.
-- [**Gobuster**](https://github.com/OJ/gobuster) (go): Umożliwia auto-podpisane certyfikaty, **nie ma** **przeszukiwania** **rekursywnego**.
+- **Dirb** / **Dirbuster** - Wbudowane w Kali, **stare** (i **wolne**) ale funkcjonalne. Pozwala na auto-podpisane certyfikaty i przeszukiwanie rekursywne. Zbyt wolne w porównaniu do innych opcji.
+- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Nie pozwala na auto-podpisane certyfikaty, ale** pozwala na przeszukiwanie rekursywne.
+- [**Gobuster**](https://github.com/OJ/gobuster) (go): Pozwala na auto-podpisane certyfikaty, **nie ma** **przeszukiwania** **rekursywnego**.
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Szybki, wspiera przeszukiwanie rekursywne.**
- [**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,7 +264,7 @@ Narzędzia:
- _/usr/share/wordlists/dirb/big.txt_
- _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
-_Uwaga, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-forcingu lub spideringu, powinien być Brute-Forced._
+_Note, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-forcingu lub spideringu, powinien być on Brute-Forced._
### Co sprawdzić w każdym znalezionym pliku
@@ -276,10 +276,10 @@ _Uwaga, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-fo
- _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 wszystkich plików, możesz znaleźć **dane uwierzytelniające** lub **ukrytą funkcjonalność**.
-- Jeśli grasz w **CTF**, "powszechnym" trikiem jest **ukrycie** **informacji** w komentarzach po **prawej** stronie **strony** (używając **setek** **spacji**, aby nie widzieć danych, jeśli otworzysz kod źródłowy w przeglądarce). Inną możliwością jest 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 używać 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**]()**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird).
+- Jeśli grasz w **CTF**, "powszechnym" trikiem jest **ukrywanie** **informacji** w komentarzach po **prawej** stronie **strony** (używając **setek** **spacji**, aby nie widzieć danych, jeśli otworzysz kod źródłowy w przeglądarce). Inną możliwością jest użycie **wielu 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 używać 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**]()**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
- Klucze API Google: Jeśli znajdziesz jakikolwiek klucz API wyglądający jak **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik, możesz użyć projektu [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner), aby sprawdzić, do jakich API klucz ma dostęp.
-- **S3 Buckets**: Podczas spideringu sprawdź, czy jakikolwiek **subdomen** lub jakikolwiek **link** jest związany z jakimś **S3 bucket**. W takim przypadku, [**sprawdź** **uprawnienia** bucketu](buckets/).
+- **S3 Buckets**: Podczas spideringu sprawdź, czy jakikolwiek **subdomen** lub jakikolwiek **link** jest związany z jakimś **S3 bucket**. W takim przypadku, [**sprawdź** **uprawnienia** bucketu](buckets/index.html).
### Specjalne znaleziska
@@ -289,18 +289,18 @@ _Uwaga, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-fo
- Szukaj **linków** do innych plików w **plikach CSS**.
- [Jeśli znajdziesz plik _**.git**_, można wyodrębnić pewne informacje](git.md).
-- Jeśli znajdziesz _**.env**_, można znaleźć takie informacje jak klucze API, hasła do baz danych i inne informacje.
-- Jeśli znajdziesz **punkty końcowe API**, [powinieneś je również przetestować](web-api-pentesting.md). To nie są pliki, ale prawdopodobnie "wyglądają jak" one.
-- **Pliki JS**: W sekcji spideringu wspomniano o kilku narzędziach, które mogą wyodrębnić ścieżki z plików JS. Również, warto **monitorować każdy znaleziony plik JS**, ponieważ w niektórych przypadkach zmiana może wskazywać, że potencjalna luka została wprowadzona w kodzie. Możesz użyć na przykład [**JSMon**](https://github.com/robre/jsmon)**.**
+- Jeśli znajdziesz _**.env**_, można znaleźć informacje takie jak klucze API, hasła do baz danych i inne informacje.
+- Jeśli znajdziesz **punkty końcowe API**, [powinieneś je również przetestować](web-api-pentesting.md). To nie są pliki, ale prawdopodobnie "wyglądają" jak one.
+- **Pliki JS**: W sekcji spideringu wspomniano o kilku narzędziach, które mogą wyodrębniać ścieżki z plików JS. Również, warto **monitorować każdy znaleziony plik JS**, ponieważ w niektórych przypadkach zmiana może wskazywać, że potencjalna luka została wprowadzona w kodzie. Możesz użyć na przykład [**JSMon**](https://github.com/robre/jsmon)**.**
- Powinieneś również sprawdzić odkryte pliki JS za pomocą [**RetireJS**](https://github.com/retirejs/retire.js/) lub [**JSHole**](https://github.com/callforpapers-source/jshole), aby sprawdzić, czy są podatne.
-- **Deobfuscator i Unpacker JavaScript:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator).
-- **Beautifier JavaScript:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org).
-- **Deobfuskacja JsFuck** (javascript z znakami:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)).
+- **Deobfuscator i Unpacker JavaScript:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
+- **Beautifier JavaScript:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
+- **Deobfuskacja JsFuck** (javascript z znakami:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
- W wielu przypadkach będziesz musiał **zrozumieć wyrażenia regularne** używane. To będzie przydatne: [https://regex101.com/](https://regex101.com) lub [https://pythonium.net/regex](https://pythonium.net/regex).
-- 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ść.
+- Możesz również **monitorować pliki, w których wykryto formularze**, ponieważ zmiana parametru lub pojawienie się nowego formularza może wskazywać na potencjalnie nową podatną funkcjonalność.
-**403 Forbidden/Basic Authentication/401 Unauthorized (obejście)**
+**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
{{#ref}}
403-and-401-bypasses.md
@@ -308,17 +308,17 @@ _Uwaga, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-fo
**502 Proxy Error**
-Jeśli jakakolwiek strona **odpowiada** tym **kodem**, prawdopodobnie jest to **źle skonfigurowany proxy**. **Jeśli wyślesz żądanie HTTP jak: `GET https://google.com HTTP/1.1`** (z nagłówkiem hosta i innymi typowymi 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 proxy**. **Jeśli wyślesz żądanie HTTP takie jak: `GET https://google.com HTTP/1.1`** (z nagłówkiem hosta i innymi typowymi nagłówkami), **proxy** spróbuje **uzyskać dostęp** do _**google.com**_ **i znajdziesz** SSRF.
-**NTLM Authentication - Ujawnienie informacji**
+**NTLM Authentication - Info disclosure**
-Jeśli działający serwer prosi o uwierzytelnienie jest **Windows** lub znajdziesz logowanie proszące o twoje **dane uwierzytelniające** (i pytające o **nazwa domeny**), możesz wywołać **ujawnienie informacji**.\
+Jeśli działający serwer prosi o uwierzytelnienie i jest **Windows** lub znajdziesz logowanie proszące o twoje **dane uwierzytelniające** (i pytające o **nazwa domeny**), możesz wywołać **ujawnienie informacji**.\
**Wyślij** **nagłówek**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` i z powodu tego, jak działa **uwierzytelnianie NTLM**, serwer odpowie wewnętrznymi informacjami (wersja IIS, wersja Windows...) w nagłówku "WWW-Authenticate".\
Możesz **zautomatyzować** to, używając **pluginu nmap** "_http-ntlm-info.nse_".
**HTTP Redirect (CTF)**
-Możliwe jest **umieszczenie treści** wewnątrz **przekierowania**. Ta treść **nie będzie widoczna dla użytkownika** (ponieważ przeglądarka wykona przekierowanie), ale coś może być **ukryte** w tym miejscu.
+Możliwe jest **umieszczenie treści** wewnątrz **przekierowania**. Ta treść **nie będzie widoczna dla użytkownika** (ponieważ przeglądarka wykona przekierowanie), ale coś może być **ukryte** w tym.
### Sprawdzanie luk w sieci
@@ -328,7 +328,7 @@ Teraz, gdy przeprowadzono kompleksową enumerację aplikacji webowej, czas spraw
../../pentesting-web/web-vulnerabilities-methodology.md
{{#endref}}
-Więcej informacji o lukach w sieci znajdziesz na:
+Więcej informacji o lukach w sieci znajdziesz w:
- [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)
diff --git a/src/network-services-pentesting/pentesting-web/flask.md b/src/network-services-pentesting/pentesting-web/flask.md
index 888f29505..eafb87792 100644
--- a/src/network-services-pentesting/pentesting-web/flask.md
+++ b/src/network-services-pentesting/pentesting-web/flask.md
@@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
-**Prawdopodobnie, jeśli bierzesz udział w CTF, aplikacja Flask będzie związana z** [**SSTI**](../../pentesting-web/ssti-server-side-template-injection/)**.**
+**Prawdopodobnie, jeśli bierzesz udział w CTF, aplikacja Flask będzie związana z** [**SSTI**](../../pentesting-web/ssti-server-side-template-injection/index.html)**.**
## Cookies
@@ -48,7 +48,7 @@ flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy
```
### **RIPsession**
-Narzędzie wiersza poleceń do brutalnego łamania stron internetowych za pomocą ciasteczek stworzonych przy użyciu flask-unsign.
+Narzędzie wiersza poleceń do atakowania siłowego stron internetowych za pomocą ciasteczek stworzonych przy użyciu flask-unsign.
{{#ref}}
https://github.com/Tagvi/ripsession
@@ -58,7 +58,7 @@ ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s p
```
### SQLi w ciasteczku sesyjnym Flask z SQLmap
-[**Ten przykład**](../../pentesting-web/sql-injection/sqlmap/index.html#eval) wykorzystuje opcję sqlmap `eval`, aby **automatycznie podpisywać ładunki sqlmap** dla Flask, używając znanego sekretu.
+[**Ten przykład**](../../pentesting-web/sql-injection/sqlmap/index.html#eval) używa opcji sqlmap `eval`, aby **automatycznie podpisywać ładunki sqlmap** dla Flask przy użyciu znanego sekretu.
## Proxy Flask do SSRF
diff --git a/src/network-services-pentesting/pentesting-web/graphql.md b/src/network-services-pentesting/pentesting-web/graphql.md
index 27657fa04..e1b498378 100644
--- a/src/network-services-pentesting/pentesting-web/graphql.md
+++ b/src/network-services-pentesting/pentesting-web/graphql.md
@@ -23,11 +23,11 @@ Aby zidentyfikować wystawione instancje GraphQL, zaleca się uwzględnienie kon
- `/graphql/api`
- `/graphql/graphql`
-Identyfikacja otwartych instancji GraphQL pozwala na zbadanie wspieranych zapytań. To jest kluczowe dla zrozumienia danych dostępnych przez punkt końcowy. System introspekcji GraphQL ułatwia to, szczegółowo opisując zapytania, które wspiera schemat. Aby uzyskać więcej informacji na ten temat, zapoznaj się z dokumentacją GraphQL na temat introspekcji: [**GraphQL: język zapytań dla API.**](https://graphql.org/learn/introspection/)
+Identyfikacja otwartych instancji GraphQL umożliwia badanie wspieranych zapytań. To jest kluczowe dla zrozumienia danych dostępnych przez punkt końcowy. System introspekcji GraphQL ułatwia to, szczegółowo opisując zapytania, które wspiera schemat. Aby uzyskać więcej informacji na ten temat, zapoznaj się z dokumentacją GraphQL na temat introspekcji: [**GraphQL: język zapytań dla API.**](https://graphql.org/learn/introspection/)
-### Odcisk
+### Odcisk palca
-Narzędzie [**graphw00f**](https://github.com/dolevf/graphw00f) jest w stanie wykryć, który silnik GraphQL jest używany na serwerze, a następnie wydrukować przydatne informacje dla audytora bezpieczeństwa.
+Narzędzie [**graphw00f**](https://github.com/dolevf/graphw00f) jest w stanie wykryć, który silnik GraphQL jest używany na serwerze, a następnie drukuje przydatne informacje dla audytora bezpieczeństwa.
#### Zapytania uniwersalne
@@ -41,7 +41,7 @@ Graphql zazwyczaj obsługuje **GET**, **POST** (x-www-form-urlencoded) i **POST*
#### Introspekcja
-Aby użyć introspekcji do odkrycia informacji o schemacie, zapytaj pole `__schema`. To pole jest dostępne w typie głównym wszystkich zapytań.
+Aby użyć introspekcji do odkrywania informacji o schemacie, zapytaj pole `__schema`. To pole jest dostępne w typie głównym wszystkich zapytań.
```bash
query={__schema{types{name,fields{name}}}}
```
@@ -57,7 +57,7 @@ Za pomocą tego zapytania możesz wyodrębnić wszystkie typy, ich pola i argume
**Błędy**
-Interesujące jest, aby wiedzieć, czy **błędy** będą **pokazywane**, ponieważ przyczynią się do użytecznych **informacji.**
+Interesujące jest, czy **błędy** będą **pokazywane**, ponieważ przyczynią się do użytecznych **informacji.**
```
?query={__schema}
?query={}
@@ -170,7 +170,7 @@ Jeśli introspekcja jest włączona, możesz użyć [**GraphQL Voyager**](https:
### Zapytania
-Teraz, gdy wiemy, jakie informacje są zapisane w bazie danych, spróbujmy **wyodrębnić kilka wartości**.
+Teraz, gdy wiemy, jaki rodzaj informacji jest zapisany w bazie danych, spróbujmy **wyodrębnić kilka wartości**.
W introspekcji możesz znaleźć **który obiekt możesz bezpośrednio zapytać** (ponieważ nie możesz zapytać obiektu tylko dlatego, że istnieje). Na poniższym obrazku możesz zobaczyć, że "_queryType_" nazywa się "_Query_", a jednym z pól obiektu "_Query_" jest "_flags_", które jest również typem obiektu. Dlatego możesz zapytać obiekt flagi.
@@ -192,7 +192,7 @@ Możesz po prostu zapytać o to za pomocą:
```javascript
query = { hiddenFlags }
```
-W innym przykładzie, gdzie znajdowały się 2 obiekty wewnątrz obiektu typu "_Query_": "_user_" i "_users_".\
+W innym przykładzie, gdzie były 2 obiekty wewnątrz obiektu typu "_Query_": "_user_" i "_users_".\
Jeśli te obiekty nie potrzebują żadnych argumentów do wyszukiwania, można **pobierać wszystkie informacje z nich** po prostu **prosząc** o dane, które chcesz. W tym przykładzie z Internetu można wyodrębnić zapisane nazwy użytkowników i hasła:
.png>)
@@ -206,7 +206,7 @@ Tak czy inaczej, już to wiedzieliśmy, w sekcji [Basic Enumeration](graphql.md#
Jeśli przeczytasz obrazek dostarczony, gdy uruchomiłem to zapytanie, zobaczysz, że "_**user**_" miał **arg** "_**uid**_" typu _Int_.
-Więc, wykonując lekką _**uid**_ bruteforce, odkryłem, że w _**uid**=**1**_ odzyskano nazwę użytkownika i hasło:\
+Więc, wykonując lekką _**uid**_ bruteforce, odkryłem, że dla _**uid**=**1**_ pobrano nazwę użytkownika i hasło:\
`query={user(uid:1){user,password}}`
.png>)
@@ -225,7 +225,7 @@ Jeśli możesz wyszukiwać według typu ciągu, jak: `query={theusers(descriptio
W tej konfiguracji, **baza danych** zawiera **osoby** i **filmy**. **Osoby** są identyfikowane przez swój **email** i **imię**; **filmy** przez swoją **nazwę** i **ocenę**. **Osoby** mogą być przyjaciółmi i również mieć filmy, co wskazuje na relacje w bazie danych.
-Możesz **wyszukiwać** osoby **po** **nazwie** i uzyskać ich emaile:
+Możesz **wyszukiwać** osoby **po** **imieniu** i uzyskać ich emaile:
```javascript
{
searchPerson(name: "John Doe") {
@@ -233,7 +233,7 @@ email
}
}
```
-Możesz **szukać** osób **po** **nazwie** i uzyskać ich **subskrybowane** **filmy**:
+Możesz **wyszukiwać** osoby **po** **nazwie** i uzyskać ich **subskrybowane** **filmy**:
```javascript
{
searchPerson(name: "John Doe") {
@@ -285,11 +285,11 @@ name
**Mutacje są używane do wprowadzania zmian po stronie serwera.**
-W **introspekcji** można znaleźć **zadeklarowane** **mutacje**. Na poniższym obrazku "_MutationType_" nazywa się "_Mutation_" a obiekt "_Mutation_" zawiera nazwy mutacji (jak "_addPerson_" w tym przypadku):
+W **introspekcji** można znaleźć **zadeklarowane** **mutacje**. Na poniższym obrazku "_MutationType_" nazywa się "_Mutation_", a obiekt "_Mutation_" zawiera nazwy mutacji (jak "_addPerson_" w tym przypadku):
.png>)
-W tej konfiguracji **baza danych** zawiera **osoby** i **filmy**. **Osoby** są identyfikowane po swoim **emailu** i **imieniu**; **filmy** po swoim **tytule** i **ocenie**. **Osoby** mogą być przyjaciółmi i również mieć filmy, co wskazuje na relacje w bazie danych.
+W tej konfiguracji **baza danych** zawiera **osoby** i **filmy**. **Osoby** są identyfikowane po swoim **emailu** i **imieniu**; **filmy** po swoim **tytule** i **ocenie**. **Osoby** mogą być przyjaciółmi i również posiadać filmy, co wskazuje na relacje w bazie danych.
Mutacja do **tworzenia nowych** filmów w bazie danych może wyglądać jak poniższa (w tym przykładzie mutacja nazywa się `addMovie`):
```javascript
@@ -332,20 +332,20 @@ releaseYear
}
}
```
-### Przeciążenie dyrektywy
+### Przeciążanie dyrektyw
-Jak wyjaśniono w [**jednej z luk opisanych w tym raporcie**](https://www.landh.tech/blog/20240304-google-hack-50000/), przeciążenie dyrektywy polega na wywołaniu dyrektywy nawet miliony razy, aby zmusić serwer do marnowania operacji, aż będzie możliwe przeprowadzenie DoS.
+Jak wyjaśniono w [**jednej z luk opisanych w tym raporcie**](https://www.landh.tech/blog/20240304-google-hack-50000/), przeciążanie dyrektyw polega na wywoływaniu dyrektywy nawet miliony razy, aby zmusić serwer do marnowania operacji, aż będzie możliwe przeprowadzenie ataku DoS.
### Grupowanie brute-force w 1 żądaniu API
Te informacje zostały zaczerpnięte z [https://lab.wallarm.com/graphql-batching-attack/](https://lab.wallarm.com/graphql-batching-attack/).\
-Uwierzytelnianie przez API GraphQL z **jednoczesnym wysyłaniem wielu zapytań z różnymi poświadczeniami** w celu ich sprawdzenia. To klasyczny atak brute force, ale teraz możliwe jest wysłanie więcej niż jednej pary login/hasło w jednym żądaniu HTTP dzięki funkcji grupowania GraphQL. To podejście oszukuje zewnętrzne aplikacje monitorujące stawki, sprawiając, że myślą, iż wszystko jest w porządku i nie ma bota próbującego zgadnąć hasła.
+Uwierzytelnianie przez API GraphQL z **jednoczesnym wysyłaniem wielu zapytań z różnymi poświadczeniami** w celu ich sprawdzenia. To klasyczny atak brute force, ale teraz możliwe jest wysłanie więcej niż jednej pary login/hasło w jednym żądaniu HTTP dzięki funkcji grupowania GraphQL. To podejście oszukuje zewnętrzne aplikacje monitorujące stawki, sprawiając, że myślą, że wszystko jest w porządku i nie ma bota próbującego zgadnąć hasła.
Poniżej znajduje się najprostsza demonstracja żądania uwierzytelnienia aplikacji, z **3 różnymi parami email/hasło jednocześnie**. Oczywiście możliwe jest wysłanie tysięcy w jednym żądaniu w ten sam sposób:
.png>)
-Jak widać na zrzucie ekranu odpowiedzi, pierwsze i trzecie żądania zwróciły _null_ i odzwierciedliły odpowiednie informacje w sekcji _error_. **Drugie mutacja miała poprawne dane uwierzytelniające** i odpowiedź zawiera poprawny token sesji uwierzytelniającej.
+Jak widać na zrzucie ekranu odpowiedzi, pierwsze i trzecie żądania zwróciły _null_ i odzwierciedliły odpowiednie informacje w sekcji _error_. **Drugie mutacja miała poprawne dane uwierzytelniające** i odpowiedź zawierała poprawny token sesji uwierzytelniającej.
 (1).png>)
@@ -371,7 +371,7 @@ Jeśli niepowodzenie, rozważ alternatywne metody żądań, takie jak **żądani
### Spróbuj WebSocketów
-Jak wspomniano w [**tej prezentacji**](https://www.youtube.com/watch?v=tIo_t5uUK50), sprawdź, czy możliwe jest połączenie z graphQL za pomocą WebSocketów, ponieważ może to pozwolić na ominięcie potencjalnego WAF i sprawić, że komunikacja WebSocket ujawni schemat graphQL:
+Jak wspomniano w [**tej prezentacji**](https://www.youtube.com/watch?v=tIo_t5uUK50), sprawdź, czy możliwe jest połączenie z graphQL za pomocą WebSocketów, ponieważ może to pozwolić na ominięcie potencjalnego WAF i sprawić, że komunikacja WebSocket będzie ujawniać schemat graphQL:
```javascript
ws = new WebSocket("wss://target/graphql", "graphql-ws")
ws.onopen = function start(event) {
@@ -395,9 +395,9 @@ payload: GQL_CALL,
ws.send(JSON.stringify(graphqlMsg))
}
```
-### **Odkrywanie Ujawnionych Struktur GraphQL**
+### **Odkrywanie Odkrytych Struktur GraphQL**
-Gdy introspekcja jest wyłączona, badanie kodu źródłowego strony internetowej w poszukiwaniu wstępnie załadowanych zapytań w bibliotekach JavaScript jest przydatną strategią. Te zapytania można znaleźć, korzystając z zakładki `Sources` w narzędziach deweloperskich, co daje wgląd w schemat API i ujawnia potencjalnie **ujawnione wrażliwe zapytania**. Polecenia do wyszukiwania w narzędziach deweloperskich to:
+Gdy introspekcja jest wyłączona, badanie kodu źródłowego strony internetowej w poszukiwaniu wstępnie załadowanych zapytań w bibliotekach JavaScript jest przydatną strategią. Te zapytania można znaleźć, korzystając z zakładki `Sources` w narzędziach deweloperskich, co daje wgląd w schemat API i ujawnia potencjalnie **odkryte wrażliwe zapytania**. Polecenia do wyszukiwania w narzędziach deweloperskich to:
```javascript
Inspect/Sources/"Search all files"
file:* mutation
@@ -427,13 +427,13 @@ Należy jednak zauważyć, że nowa domyślna wartość ciasteczka flagi `samesi
Należy pamiętać, że zazwyczaj możliwe jest również wysłanie **żądania** **zapytania** jako **żądania GET**, a token CSRF może nie być weryfikowany w żądaniu GET.
-Ponadto, wykorzystując atak [**XS-Search**](../../pentesting-web/xs-search/), może być możliwe wyeksfiltrowanie treści z punktu końcowego GraphQL, wykorzystując dane uwierzytelniające użytkownika.
+Ponadto, wykorzystując atak [**XS-Search**](../../pentesting-web/xs-search/index.html), może być możliwe wyeksfiltrowanie treści z punktu końcowego GraphQL, wykorzystując dane uwierzytelniające użytkownika.
Aby uzyskać więcej informacji, **sprawdź** [**oryginalny post tutaj**](https://blog.doyensec.com/2021/05/20/graphql-csrf.html).
## Przechwytywanie WebSocket między witrynami w GraphQL
-Podobnie jak w przypadku podatności CRSF, wykorzystując GraphQL, możliwe jest również przeprowadzenie **przechwytywania WebSocket między witrynami, aby wykorzystać uwierzytelnienie w GraphQL z niechronionymi ciasteczkami** i zmusić użytkownika do wykonania nieoczekiwanych działań w GraphQL.
+Podobnie jak w przypadku podatności CRSF wykorzystujących GraphQL, możliwe jest również przeprowadzenie **przechwytywania WebSocket między witrynami, aby wykorzystać uwierzytelnienie w GraphQL z niechronionymi ciasteczkami** i zmusić użytkownika do wykonania nieoczekiwanych działań w GraphQL.
Aby uzyskać więcej informacji, sprawdź:
@@ -445,7 +445,7 @@ Aby uzyskać więcej informacji, sprawdź:
Wiele funkcji GraphQL zdefiniowanych na punkcie końcowym może sprawdzać tylko uwierzytelnienie żądającego, ale nie autoryzację.
-Modyfikacja zmiennych wejściowych zapytania może prowadzić do ujawnienia wrażliwych danych konta [leak](https://hackerone.com/reports/792927).
+Modyfikacja zmiennych wejściowych zapytania może prowadzić do ujawnienia wrażliwych szczegółów konta [leak](https://hackerone.com/reports/792927).
Mutacja może nawet prowadzić do przejęcia konta, próbując zmodyfikować dane innego konta.
```javascript
@@ -459,15 +459,15 @@ Mutacja może nawet prowadzić do przejęcia konta, próbując zmodyfikować dan
[Łączenie zapytań](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln) może obejść słaby system autoryzacji.
-W poniższym przykładzie widać, że operacja to "forgotPassword" i powinna ona wykonywać tylko zapytanie forgotPassword z nią związane. Można to obejść, dodając zapytanie na końcu, w tym przypadku dodajemy "register" oraz zmienną użytkownika, aby system zarejestrował się jako nowy użytkownik.
+W poniższym przykładzie widać, że operacja to "forgotPassword" i że powinna ona wykonywać tylko zapytanie forgotPassword związane z nią. Można to obejść, dodając zapytanie na końcu, w tym przypadku dodajemy "register" oraz zmienną użytkownika, aby system zarejestrował się jako nowy użytkownik.
## Ominięcie limitów szybkości za pomocą aliasów w GraphQL
-W GraphQL aliasy to potężna funkcja, która pozwala na **jawne nazywanie właściwości** podczas składania żądania API. Ta możliwość jest szczególnie przydatna do pobierania **wielu instancji tego samego typu** obiektu w jednym żądaniu. Aliasów można używać, aby obejść ograniczenie, które uniemożliwia obiektom GraphQL posiadanie wielu właściwości o tej samej nazwie.
+W GraphQL aliasy to potężna funkcja, która pozwala na **jawne nazywanie właściwości** podczas składania żądania API. Ta możliwość jest szczególnie przydatna do pobierania **wielu instancji tego samego typu** obiektu w jednym żądaniu. Aliasów można używać, aby przezwyciężyć ograniczenie, które uniemożliwia obiektom GraphQL posiadanie wielu właściwości o tej samej nazwie.
-Aby dokładniej zrozumieć aliasy GraphQL, zaleca się następujące źródło: [Aliases](https://portswigger.net/web-security/graphql/what-is-graphql#aliases).
+Aby uzyskać szczegółowe zrozumienie aliasów GraphQL, zaleca się następujące źródło: [Aliases](https://portswigger.net/web-security/graphql/what-is-graphql#aliases).
Chociaż głównym celem aliasów jest zmniejszenie potrzeby wielu wywołań API, zidentyfikowano niezamierzony przypadek użycia, w którym aliasy mogą być wykorzystywane do przeprowadzania ataków brute force na punkt końcowy GraphQL. Jest to możliwe, ponieważ niektóre punkty końcowe są chronione przez ograniczniki szybkości zaprojektowane w celu powstrzymania ataków brute force poprzez ograniczenie **liczby żądań HTTP**. Jednak te ograniczniki szybkości mogą nie uwzględniać liczby operacji w każdym żądaniu. Biorąc pod uwagę, że aliasy pozwalają na dołączenie wielu zapytań w jednym żądaniu HTTP, mogą one obejść takie środki ograniczające.
@@ -490,7 +490,7 @@ valid
### Przeciążenie aliasów
-**Przeciążenie aliasów** to luka w GraphQL, w której atakujący przeciążają zapytanie wieloma aliasami dla tego samego pola, co powoduje, że resolver backendu wykonuje to pole wielokrotnie. Może to przytłoczyć zasoby serwera, prowadząc do **Denial of Service (DoS)**. Na przykład, w poniższym zapytaniu to samo pole (`expensiveField`) jest żądane 1,000 razy przy użyciu aliasów, zmuszając backend do obliczenia go 1,000 razy, co potencjalnie wyczerpuje CPU lub pamięć:
+**Przeciążenie aliasów** to luka w GraphQL, w której atakujący przeciążają zapytanie wieloma aliasami dla tego samego pola, co powoduje, że resolver backendu wykonuje to pole wielokrotnie. Może to przytłoczyć zasoby serwera, prowadząc do **Denial of Service (DoS)**. Na przykład, w poniższym zapytaniu to samo pole (`expensiveField`) jest żądane 1,000 razy przy użyciu aliasów, zmuszając backend do obliczenia go 1,000 razy, co potencjalnie może wyczerpać CPU lub pamięć:
```graphql
# Test provided by https://github.com/dolevf/graphql-cop
curl -X POST -H "Content-Type: application/json" \
@@ -509,7 +509,7 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" \
-d '[{"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}, {"query": "query cop { __typename }"}]' \
'https://example.com/graphql'
```
-W tym przykładzie 10 różnych zapytań jest grupowanych w jednym żądaniu, zmuszając serwer do jednoczesnego wykonania wszystkich z nich. Jeśli zostanie to wykorzystane z większym rozmiarem partii lub kosztownymi obliczeniowo zapytaniami, może to przeciążyć serwer.
+W tym przykładzie 10 różnych zapytań jest grupowanych w jednym żądaniu, zmuszając serwer do jednoczesnego wykonania ich wszystkich. Jeśli zostanie to wykorzystane z większym rozmiarem partii lub kosztownymi obliczeniowo zapytaniami, może to przeciążyć serwer.
### **Wrażliwość na Przeciążenie Dyrektyw**
@@ -539,7 +539,7 @@ A następnie **użyj niektórych z niestandardowych**.
### **Wrażliwość na duplikację pól**
-**Duplikacja pól** to wrażliwość, w której serwer GraphQL zezwala na zapytania z tym samym polem powtarzanym nadmiernie. Zmusza to serwer do wielokrotnego rozwiązywania pola dla każdej instancji, co zużywa znaczące zasoby (CPU, pamięć i wywołania bazy danych). Atakujący może stworzyć zapytania z setkami lub tysiącami powtarzających się pól, powodując wysokie obciążenie i potencjalnie prowadząc do **Denial of Service (DoS)**.
+**Duplikacja pól** to wrażliwość, w której serwer GraphQL zezwala na zapytania z tym samym polem powtarzanym nadmiernie. Zmusza to serwer do wielokrotnego rozwiązywania pola dla każdej instancji, co zużywa znaczące zasoby (CPU, pamięć i wywołania bazy danych). Atakujący może stworzyć zapytania z setkami lub tysiącami powtarzających się pól, powodując duże obciążenie i potencjalnie prowadząc do **odmowy usługi (DoS)**.
```bash
# Test provided by https://github.com/dolevf/graphql-cop
curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/json" \
@@ -550,7 +550,7 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/jso
### Skanery podatności
-- [https://github.com/dolevf/graphql-cop](https://github.com/dolevf/graphql-cop): Testuje powszechne błędy konfiguracji punktów końcowych GraphQL
+- [https://github.com/dolevf/graphql-cop](https://github.com/dolevf/graphql-cop): Testuje powszechne błędy w konfiguracji punktów końcowych GraphQL
- [https://github.com/assetnote/batchql](https://github.com/assetnote/batchql): Skrypt audytujący bezpieczeństwo GraphQL z naciskiem na wykonywanie zbiorczych zapytań i mutacji GraphQL.
- [https://github.com/dolevf/graphw00f](https://github.com/dolevf/graphw00f): Identyfikuje używaną wersję GraphQL
- [https://github.com/gsmith257-cyber/GraphCrawler](https://github.com/gsmith257-cyber/GraphCrawler): Zestaw narzędzi, który można wykorzystać do pobierania schematów i wyszukiwania danych wrażliwych, testowania autoryzacji, ataków brute force na schematy oraz znajdowania ścieżek do danego typu.
diff --git a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md
index 7a50167ab..1f1cc52ec 100644
--- a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md
+++ b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md
@@ -3,11 +3,11 @@
{{#include ../../../banners/hacktricks-training.md}}
-## Cookies common location:
+## Cookies wspólna lokalizacja:
-To jest również ważne dla ciasteczek phpMyAdmin.
+To również dotyczy ciasteczek phpMyAdmin.
-Cookies:
+Ciasteczka:
```
PHPSESSID
phpMyAdmin
@@ -42,7 +42,7 @@ Więcej informacji w [https://medium.com/swlh/php-type-juggling-vulnerabilities-
### **in_array()**
-**Typ Juggling** wpływa również na funkcję `in_array()` domyślnie (musisz ustawić trzeci argument na true, aby dokonać ścisłego porównania):
+**Typ Juggling** również wpływa na funkcję `in_array()` domyślnie (musisz ustawić trzeci argument na true, aby dokonać ścisłego porównania):
```php
$values = array("apple","orange","pear","grape");
var_dump(in_array(0, $values));
@@ -73,7 +73,7 @@ Nawet jeśli `===` jest **używane**, mogą wystąpić błędy, które sprawiaj
#### Ominięcie nowej linii
-Jednakże, podczas delimitacji początku regexp, `preg_match()` **sprawdza tylko pierwszą linię danych wejściowych użytkownika**, więc jeśli w jakiś sposób możesz **wysłać** dane wejściowe w **kilku liniach**, możesz być w stanie obejść to sprawdzenie. Przykład:
+Jednakże, przy delimitacji początku regexp, `preg_match()` **sprawdza tylko pierwszą linię danych wejściowych użytkownika**, więc jeśli w jakiś sposób możesz **wysłać** dane wejściowe w **kilku liniach**, możesz być w stanie obejść tę kontrolę. Przykład:
```php
$myinput="aaaaaaa
11111111"; //Notice the new line
@@ -112,9 +112,9 @@ Sztuczka z: [https://simones-organization-4.gitbook.io/hackbook-of-a-hacker/ctf-
Krótko mówiąc, problem występuje, ponieważ funkcje `preg_*` w PHP opierają się na [bibliotece PCRE](http://www.pcre.org/). W PCRE niektóre wyrażenia regularne są dopasowywane przy użyciu wielu wywołań rekurencyjnych, co zużywa dużo miejsca na stosie. Można ustawić limit na liczbę dozwolonych rekurencji, ale w PHP ten limit [domyślnie wynosi 100.000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit), co przekracza pojemność stosu.
[Ten wątek na Stackoverflow](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error) również został podlinkowany w poście, w którym bardziej szczegółowo omawiano ten problem. Nasze zadanie było teraz jasne:\
-**Wysłać dane wejściowe, które spowodują, że regex wykona 100_000+ rekurencji, powodując SIGSEGV, co sprawi, że funkcja `preg_match()` zwróci `false`, a aplikacja pomyśli, że nasze dane wejściowe nie są złośliwe, zaskakując na końcu ładunku czymś w rodzaju `{system()}` w celu uzyskania SSTI --> RCE --> flagi :)**.
+**Wysłać dane wejściowe, które spowodują, że regex wykona 100_000+ rekurencji, powodując SIGSEGV, co sprawi, że funkcja `preg_match()` zwróci `false`, a aplikacja pomyśli, że nasze dane wejściowe nie są złośliwe, zaskakując na końcu ładunku czymś w stylu `{system()}` w celu uzyskania SSTI --> RCE --> flagi :)**.
-Cóż, w terminach regex, tak naprawdę nie wykonujemy 100k "rekurencji", ale zamiast tego liczymy "kroki cofania", które, jak stwierdza [dokumentacja PHP](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit), domyślnie wynosi 1_000_000 (1M) w zmiennej `pcre.backtrack_limit`.\
+Cóż, w terminach regex, tak naprawdę nie wykonujemy 100k "rekurencji", ale zamiast tego liczymy "kroki cofania", co, jak stwierdza [dokumentacja PHP](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit), domyślnie wynosi 1_000_000 (1M) w zmiennej `pcre.backtrack_limit`.\
Aby to osiągnąć, `'X'*500_001` spowoduje 1 milion kroków cofania (500k do przodu i 500k do tyłu):
```python
payload = f"@dimariasimone on{'X'*500_001} {{system('id')}}"
@@ -153,14 +153,14 @@ Sprawdź:
## Więcej sztuczek
- **register_globals**: W **PHP < 4.1.1.1** lub w przypadku błędnej konfiguracji, **register_globals** może być aktywne (lub ich zachowanie jest naśladowane). Oznacza to, że w zmiennych globalnych takich jak $\_GET, jeśli mają wartość np. $\_GET\["param"]="1234", możesz uzyskać do nich dostęp przez **$param. Dlatego, wysyłając parametry HTTP, możesz nadpisać zmienne\*\* używane w kodzie.
-- **Ciasteczka PHPSESSION tej samej domeny są przechowywane w tym samym miejscu**, dlatego jeśli w obrębie domeny **używane są różne ciasteczka w różnych ścieżkach**, możesz sprawić, że ścieżka **uzyska dostęp do ciasteczka innej ścieżki**, ustawiając wartość ciasteczka innej ścieżki.\
+- **Ciasteczka PHPSESSION tego samego domeny są przechowywane w tym samym miejscu**, dlatego jeśli w obrębie domeny **używane są różne ciasteczka w różnych ścieżkach**, możesz sprawić, że ścieżka **uzyska dostęp do ciasteczka innej ścieżki**, ustawiając wartość ciasteczka innej ścieżki.\
W ten sposób, jeśli **obie ścieżki uzyskują dostęp do zmiennej o tej samej nazwie**, możesz sprawić, że **wartość tej zmiennej w path1 będzie miała zastosowanie w path2**. A następnie path2 uzna zmienne path1 za ważne (nadając ciasteczku nazwę, która odpowiada jej w path2).
- Kiedy masz **nazwy użytkowników** użytkowników maszyny. Sprawdź adres: **/\~\**, aby zobaczyć, czy katalogi php są aktywowane.
-- [**LFI i RCE przy użyciu wrapperów php**](../../../pentesting-web/file-inclusion/)
+- [**LFI i RCE przy użyciu wrapperów php**](../../../pentesting-web/file-inclusion/index.html)
### password_hash/password_verify
-Funkcje te są zazwyczaj używane w PHP do **generowania hashy z haseł** oraz do **sprawdzania**, czy hasło jest poprawne w porównaniu z hashem.\
+Funkcje te są zazwyczaj używane w PHP do **generowania hashy z haseł** i do **sprawdzania**, czy hasło jest poprawne w porównaniu z hashem.\
Obsługiwane algorytmy to: `PASSWORD_DEFAULT` i `PASSWORD_BCRYPT` (zaczyna się od `$2y$`). Zauważ, że **PASSWORD_DEFAULT często jest tym samym co PASSWORD_BCRYPT.** A obecnie, **PASSWORD_BCRYPT** ma **ograniczenie rozmiaru wejścia do 72 bajtów**. Dlatego, gdy próbujesz zhashować coś większego niż 72 bajty za pomocą tego algorytmu, tylko pierwsze 72B zostanie użyte:
```php
$cont=71; echo password_verify(str_repeat("a",$cont), password_hash(str_repeat("a",$cont)."b", PASSW
@@ -183,8 +183,8 @@ if (isset($_GET["xss"])) echo $_GET["xss"];
```
#### Wypełnianie ciała przed ustawieniem nagłówków
-Jeśli **strona PHP wyświetla błędy i zwraca niektóre dane wprowadzone przez użytkownika**, użytkownik może sprawić, że serwer PHP zwróci **treść wystarczająco długą**, aby podczas próby **dodania nagłówków** do odpowiedzi serwer zgłosił błąd.\
-W następującym scenariuszu **atakujący spowodował, że serwer zgłosił kilka dużych błędów**, a jak widać na ekranie, gdy PHP próbowało **zmodyfikować informacje o nagłówkach, nie mogło** (więc na przykład nagłówek CSP nie został wysłany do użytkownika):
+Jeśli **strona PHP wyświetla błędy i zwraca niektóre dane wprowadzone przez użytkownika**, użytkownik może sprawić, że serwer PHP wydrukuje **treść wystarczająco długą**, aby podczas próby **dodania nagłówków** do odpowiedzi serwer zgłosił błąd.\
+W następującym scenariuszu **atakujący spowodował, że serwer zgłosił kilka dużych błędów**, a jak widać na ekranie, gdy PHP próbowało **zmodyfikować informacje o nagłówkach, nie mogło** (na przykład nagłówek CSP nie został wysłany do użytkownika):
.png>)
@@ -202,7 +202,7 @@ php-ssrf.md
NAN;**\`ls\`;**\
**shell_exec("ls");**
-[Sprawdź to dla bardziej przydatnych funkcji PHP](php-useful-functions-disable_functions-open_basedir-bypass/)
+[Sprawdź to dla bardziej przydatnych funkcji PHP](php-useful-functions-disable_functions-open_basedir-bypass/index.html)
### **RCE za pomocą** **preg_replace()**
```php
@@ -210,7 +210,7 @@ preg_replace(pattern,replace,base)
preg_replace("/a/e","phpinfo()","whatever")
```
Aby wykonać kod w argumencie "replace", potrzebne jest przynajmniej jedno dopasowanie.\
-Ta opcja preg_replace jest **przestarzała od PHP 5.5.0.**
+Ta opcja preg_replace została **wycofana od PHP 5.5.0.**
### **RCE za pomocą Eval()**
```
@@ -220,9 +220,9 @@ Ta opcja preg_replace jest **przestarzała od PHP 5.5.0.**
'.phpinfo().'
```
-### **RCE poprzez Assert()**
+### **RCE via Assert()**
-Ta funkcja w php pozwala na **wykonanie kodu zapisanego w ciągu** w celu **zwrócenia true lub false** (a w zależności od tego zmienić wykonanie). Zazwyczaj zmienna użytkownika będzie wstawiana w środek ciągu. Na przykład:\
+Ta funkcja w php pozwala na **wykonanie kodu zapisanego w ciągu** w celu **zwrócenia true lub false** (a w zależności od tego zmienić wykonanie). Zwykle zmienna użytkownika będzie wstawiana w środek ciągu. Na przykład:\
`assert("strpos($_GET['page']),'..') === false")` --> W tym przypadku, aby uzyskać **RCE**, możesz zrobić:
```
?page=a','NeVeR') === false and system('ls') and strpos('a
@@ -272,9 +272,9 @@ Różne powłoki .htaccess można znaleźć [tutaj](https://github.com/wireghoul
### RCE przez zmienne środowiskowe
-Jeśli znajdziesz lukę, która pozwala na **modyfikację zmiennych środowiskowych w PHP** (i inną, aby przesyłać pliki, chociaż z większym badaniem może to być możliwe do obejścia), możesz wykorzystać to zachowanie, aby uzyskać **RCE**.
+Jeśli znajdziesz lukę, która pozwala na **modyfikację zmiennych środowiskowych w PHP** (i inną, aby przesyłać pliki, chociaż z większym badaniem może to być możliwe do obejścia), możesz nadużyć tego zachowania, aby uzyskać **RCE**.
-- [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/index.html#ld_preload-and-ld_library_path): Ta zmienna środowiskowa pozwala na ładowanie dowolnych bibliotek podczas wykonywania innych binarnych plików (chociaż w tym przypadku może to nie działać).
+- [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/index.html#ld_preload-and-ld_library_path): Ta zmienna środowiskowa pozwala na ładowanie dowolnych bibliotek podczas wykonywania innych binarnych (chociaż w tym przypadku może to nie działać).
- **`PHPRC`** : Instrukcja dla PHP, **gdzie znaleźć plik konfiguracyjny**, zazwyczaj nazywany `php.ini`. Jeśli możesz przesłać własny plik konfiguracyjny, użyj `PHPRC`, aby wskazać PHP na niego. Dodaj wpis **`auto_prepend_file`**, określający drugi przesłany plik. Ten drugi plik zawiera normalny **kod PHP, który jest następnie wykonywany** przez środowisko PHP przed jakimkolwiek innym kodem.
1. Prześlij plik PHP zawierający nasz shellcode
2. Prześlij drugi plik, zawierający dyrektywę **`auto_prepend_file`**, instruującą preprocesor PHP do wykonania pliku, który przesłaliśmy w kroku 1
@@ -349,9 +349,9 @@ echo "${Da}"; //Drums
echo "$x ${$x}"; //Da Drums
echo "$x ${Da}"; //Da Drums
```
-## RCE nadużywając nowego $\_GET\["a"]\($\_GET\["b"])
+## RCE wykorzystując nowe $\_GET\["a"]\($\_GET\["b")
-Jeśli na stronie możesz **utworzyć nowy obiekt dowolnej klasy**, możesz być w stanie uzyskać RCE, sprawdź następującą stronę, aby dowiedzieć się jak:
+Jeśli na stronie możesz **utworzyć nowy obiekt dowolnej klasy**, możesz uzyskać RCE, sprawdź następującą stronę, aby dowiedzieć się jak:
{{#ref}}
php-rce-abusing-object-creation-new-usd_get-a-usd_get-b.md
@@ -374,7 +374,7 @@ $_($___); #If ¢___ not needed then $_($__), show_source(.passwd)
```
### XOR łatwy kod powłoki
-Zgodnie z [**tym opisem** ](https://mgp25.com/ctf/Web-challenge/)możliwe jest wygenerowanie łatwego kodu powłoki w ten sposób:
+Zgodnie z [**tym opisem** ](https://mgp25.com/ctf/Web-challenge/) możliwe jest wygenerowanie łatwego kodu powłoki w ten sposób:
```php
$_="`{{{"^"?<>/"; // $_ = '_GET';
${$_}[_](${$_}[__]); // $_GET[_]($_GET[__]);
diff --git a/src/pentesting-web/browser-extension-pentesting-methodology/README.md b/src/pentesting-web/browser-extension-pentesting-methodology/README.md
index 501714ebe..bb667b013 100644
--- a/src/pentesting-web/browser-extension-pentesting-methodology/README.md
+++ b/src/pentesting-web/browser-extension-pentesting-methodology/README.md
@@ -20,22 +20,22 @@ Każdy skrypt treści ma bezpośredni dostęp do DOM **jednej strony internetowe
Rdzeń rozszerzenia zawiera większość uprawnień/dostępu rozszerzenia, ale rdzeń rozszerzenia może wchodzić w interakcje z treścią internetową tylko za pośrednictwem [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) i skryptów treści. Ponadto rdzeń rozszerzenia nie ma bezpośredniego dostępu do maszyny gospodarza.
-### **Natychmiastowy Binar**
+### **Natychmiastowy Plik Binarny**
-Rozszerzenie pozwala na natychmiastowy binar, który może **uzyskać dostęp do maszyny gospodarza z pełnymi uprawnieniami użytkownika.** Natychmiastowy binar wchodzi w interakcje z rdzeniem rozszerzenia za pośrednictwem standardowego interfejsu programowania aplikacji Netscape Plugin ([NPAPI](https://en.wikipedia.org/wiki/NPAPI)), używanego przez Flash i inne wtyczki przeglądarki.
+Rozszerzenie pozwala na natywny plik binarny, który może **uzyskać dostęp do maszyny gospodarza z pełnymi uprawnieniami użytkownika.** Natywny plik binarny wchodzi w interakcje z rdzeniem rozszerzenia za pośrednictwem standardowego interfejsu programowania aplikacji Netscape Plugin ([NPAPI](https://en.wikipedia.org/wiki/NPAPI)), używanego przez Flash i inne wtyczki przeglądarki.
### Granice
> [!CAUTION]
-> Aby uzyskać pełne uprawnienia użytkownika, atakujący musi przekonać rozszerzenie do przekazania złośliwych danych wejściowych ze skryptu treści do rdzenia rozszerzenia i z rdzenia rozszerzenia do natychmiastowego binaru.
+> Aby uzyskać pełne uprawnienia użytkownika, atakujący musi przekonać rozszerzenie do przekazania złośliwych danych wejściowych ze skryptu treści do rdzenia rozszerzenia i z rdzenia rozszerzenia do natywnego pliku binarnego.
-Każdy komponent rozszerzenia jest oddzielony od siebie przez **silne granice ochronne**. Każdy komponent działa w **osobnym procesie systemu operacyjnego**. Skrypty treści i rdzenie rozszerzeń działają w **procesach piaskownicy**, niedostępnych dla większości usług systemu operacyjnego.
+Każdy komponent rozszerzenia jest oddzielony od siebie przez **silne granice ochronne**. Każdy komponent działa w **oddzielnym procesie systemu operacyjnego**. Skrypty treści i rdzenie rozszerzeń działają w **procesach piaskownicy**, niedostępnych dla większości usług systemu operacyjnego.
-Co więcej, skrypty treści są oddzielone od swoich powiązanych stron internetowych przez **działanie w osobnym stosie JavaScript**. Skrypt treści i strona internetowa mają **dostęp do tego samego podstawowego DOM**, ale obie **nigdy nie wymieniają wskaźników JavaScript**, co zapobiega wyciekowi funkcjonalności JavaScript.
+Co więcej, skrypty treści są oddzielone od swoich powiązanych stron internetowych przez **działanie w oddzielnym stosie JavaScript**. Skrypt treści i strona internetowa mają **dostęp do tego samego podstawowego DOM**, ale obie **nigdy nie wymieniają wskaźników JavaScript**, co zapobiega wyciekowi funkcjonalności JavaScript.
## **`manifest.json`**
-Rozszerzenie Chrome to po prostu folder ZIP z [.crx file extension](https://www.lifewire.com/crx-file-2620391). Rdzeń rozszerzenia to plik **`manifest.json`** w katalogu głównym folderu, który określa układ, uprawnienia i inne opcje konfiguracyjne.
+Rozszerzenie Chrome to po prostu folder ZIP z rozszerzeniem [.crx](https://www.lifewire.com/crx-file-2620391). Rdzeń rozszerzenia to plik **`manifest.json`** w katalogu głównym folderu, który określa układ, uprawnienia i inne opcje konfiguracyjne.
Przykład:
```json
@@ -61,7 +61,7 @@ Przykład:
```
### `content_scripts`
-Skrypty zawartości są **ładowane** za każdym razem, gdy użytkownik **nawiguje do pasującej strony**, w naszym przypadku każda strona pasująca do wyrażenia **`https://example.com/*`** i niepasująca do wyrażenia regularnego **`*://*/*/business*`**. Wykonują się **jak własne skrypty strony** i mają dowolny dostęp do [Modelu Obiektów Dokumentu (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model).
+Skrypty zawartości są **ładowane** za każdym razem, gdy użytkownik **nawiguje do pasującej strony**, w naszym przypadku każda strona pasująca do wyrażenia **`https://example.com/*`** i niepasująca do wyrażenia regex **`*://*/*/business*`**. Wykonują się **jak własne skrypty strony** i mają dowolny dostęp do [Modelu Obiektowego Dokumentu (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model).
```json
"content_scripts": [
{
@@ -208,7 +208,7 @@ js: ["contentScript.js"],
```
### `background`
-Wiadomości wysyłane przez skrypty zawartości są odbierane przez **background page**, która odgrywa centralną rolę w koordynowaniu komponentów rozszerzenia. Należy zauważyć, że background page utrzymuje się przez cały czas trwania rozszerzenia, działając dyskretnie bez bezpośredniej interakcji użytkownika. Posiada własny Model Obiektów Dokumentu (DOM), co umożliwia złożone interakcje i zarządzanie stanem.
+Wiadomości wysyłane przez skrypty zawartości są odbierane przez **background page**, która odgrywa centralną rolę w koordynowaniu komponentów rozszerzenia. Należy zauważyć, że background page utrzymuje się przez cały czas życia rozszerzenia, działając dyskretnie bez bezpośredniej interakcji użytkownika. Posiada własny Model Obiektów Dokumentu (DOM), co umożliwia złożone interakcje i zarządzanie stanem.
**Kluczowe punkty**:
@@ -229,7 +229,7 @@ chrome.tabs.create({ url: "https://example.net/explanation" })
```
Używa [runtime.onMessage API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage) do nasłuchiwania wiadomości. Gdy otrzymana zostanie wiadomość `"explain"`, używa [tabs API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) do otwarcia strony w nowej karcie.
-Aby debugować skrypt w tle, możesz przejść do **szczegółów rozszerzenia i sprawdzić serwis worker**, co otworzy narzędzia deweloperskie z skryptem w tle:
+Aby debugować skrypt w tle, możesz przejść do **szczegółów rozszerzenia i zbadać serwis worker,** co otworzy narzędzia deweloperskie z skryptem w tle:
@@ -237,22 +237,22 @@ Aby debugować skrypt w tle, możesz przejść do **szczegółów rozszerzenia i
Rozszerzenia przeglądarki mogą zawierać różne rodzaje stron:
-- **Strony akcji** są wyświetlane w **rozwijanym menu, gdy kliknięta jest ikona rozszerzenia**.
-- Strony, które rozszerzenie **załaduje w nowej karcie**.
+- **Strony akcji** są wyświetlane w **rozwijanym menu, gdy kliknięta jest ikona rozszerzenia.**
+- Strony, które rozszerzenie **załaduje w nowej karcie.**
- **Strony opcji**: Ta strona wyświetla się na górze rozszerzenia po kliknięciu. W poprzednim manifeście w moim przypadku mogłem uzyskać dostęp do tej strony w `chrome://extensions/?options=fadlhnelkbeojnebcbkacjilhnbjfjca` lub klikając:
Zauważ, że te strony nie są trwałe jak strony w tle, ponieważ ładują dynamicznie treści w zależności od potrzeb. Mimo to, dzielą pewne możliwości z stroną w tle:
-- **Komunikacja z skryptami treści:** Podobnie jak strona w tle, te strony mogą otrzymywać wiadomości od skryptów treści, co ułatwia interakcję w ramach rozszerzenia.
+- **Komunikacja z skryptami treści:** Podobnie jak strona w tle, te strony mogą odbierać wiadomości od skryptów treści, ułatwiając interakcję w ramach rozszerzenia.
- **Dostęp do specyficznych API rozszerzenia:** Te strony mają pełny dostęp do specyficznych API rozszerzenia, w zależności od uprawnień zdefiniowanych dla rozszerzenia.
### `permissions` & `host_permissions`
-**`permissions`** i **`host_permissions`** to wpisy z `manifest.json`, które wskazują **jakie uprawnienia** ma rozszerzenie przeglądarki (przechowywanie, lokalizacja...) oraz **na jakich stronach internetowych**.
+**`permissions`** i **`host_permissions`** to wpisy z `manifest.json`, które wskazują **jakie uprawnienia** ma rozszerzenie przeglądarki (przechowywanie, lokalizacja...) oraz **na jakich stronach internetowych.**
-Ponieważ rozszerzenia przeglądarki mogą być tak **uprzywilejowane**, złośliwe lub skompromitowane mogłyby umożliwić atakującemu **różne sposoby kradzieży wrażliwych informacji i szpiegowania użytkownika**.
+Ponieważ rozszerzenia przeglądarki mogą być tak **uprzywilejowane**, złośliwe lub skompromitowane mogłyby umożliwić atakującemu **różne sposoby kradzieży wrażliwych informacji i szpiegowania użytkownika.**
Sprawdź, jak te ustawienia działają i jak mogą być nadużywane w:
@@ -262,7 +262,7 @@ browext-permissions-and-host_permissions.md
### `content_security_policy`
-**Polityka bezpieczeństwa treści** może być również zadeklarowana w `manifest.json`. Jeśli jest zdefiniowana, może być **wrażliwa**.
+**Polityka bezpieczeństwa treści** może być również zadeklarowana wewnątrz `manifest.json`. Jeśli jest zdefiniowana, może być **wrażliwa**.
Domyślne ustawienie dla stron rozszerzeń przeglądarki jest dość restrykcyjne:
```bash
@@ -305,9 +305,9 @@ W publicznych rozszerzeniach **identyfikator rozszerzenia jest dostępny**:
Jednakże, jeśli parametr `manifest.json` **`use_dynamic_url`** jest używany, ten **identyfikator może być dynamiczny**.
> [!TIP]
-> Zauważ, że nawet jeśli strona jest tutaj wymieniona, może być **chroniona przed ClickJacking** dzięki **Polityce Bezpieczeństwa Treści**. Dlatego musisz to również sprawdzić (sekcja frame-ancestors), zanim potwierdzisz, że atak ClickJacking jest możliwy.
+> Zauważ, że nawet jeśli strona jest tutaj wymieniona, może być **chroniona przed ClickJacking** dzięki **Polityce Bezpieczeństwa Treści**. Dlatego musisz również to sprawdzić (sekcja frame-ancestors) przed potwierdzeniem, że atak ClickJacking jest możliwy.
-Możliwość dostępu do tych stron sprawia, że są one **potencjalnie podatne na ClickJacking**:
+Dopuszczenie dostępu do tych stron sprawia, że są one **potencjalnie podatne na ClickJacking**:
{{#ref}}
browext-clickjacking.md
@@ -327,7 +327,7 @@ Zgodnie z [**dokumentacją**](https://developer.chrome.com/docs/extensions/refer
- Jeśli klucz **`externally_connectable`** **nie** jest zadeklarowany w manifeście Twojego rozszerzenia lub jest zadeklarowany jako **`"ids": ["*"]`**, **wszystkie rozszerzenia mogą się łączyć, ale żadne strony internetowe nie mogą się łączyć**.
- Jeśli **określone identyfikatory są podane**, jak w `"ids": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]`, **tylko te aplikacje** mogą się łączyć.
-- Jeśli **określone dopasowania** są podane, te aplikacje internetowe będą mogły się łączyć:
+- Jeśli **dopasowania** są określone, te aplikacje internetowe będą mogły się łączyć:
```json
"matches": [
"https://*.google.com/*",
@@ -342,7 +342,7 @@ Im **mniej rozszerzeń i adresów URL** wskazanych tutaj, tym **mniejsza powierz
>
> Dlatego jest to **bardzo potężne obejście**.
>
-> Co więcej, jeśli klient zainstaluje złośliwe rozszerzenie, nawet jeśli nie jest ono dozwolone do komunikacji z wrażliwym rozszerzeniem, może wstrzyknąć **dane XSS w dozwolonej stronie internetowej** lub nadużyć API **`WebRequest`** lub **`DeclarativeNetRequest`**, aby manipulować żądaniami na docelowej domenie, zmieniając żądanie strony dla **pliku JavaScript**. (Zauważ, że CSP na docelowej stronie może zapobiec tym atakom). Ten pomysł pochodzi [**z tego opisu**](https://www.darkrelay.com/post/opera-zero-day-rce-vulnerability).
+> Co więcej, jeśli klient zainstaluje złośliwe rozszerzenie, nawet jeśli nie jest dozwolone do komunikacji z wrażliwym rozszerzeniem, może wstrzyknąć **dane XSS w dozwolonej stronie internetowej** lub nadużyć API **`WebRequest`** lub **`DeclarativeNetRequest`**, aby manipulować żądaniami na docelowej domenie, zmieniając żądanie strony dla **pliku JavaScript**. (Zauważ, że CSP na docelowej stronie może zapobiec tym atakom). Ten pomysł pochodzi [**z tego opisu**](https://www.darkrelay.com/post/opera-zero-day-rce-vulnerability).
## Podsumowanie komunikacji
@@ -354,7 +354,7 @@ Aby komunikować się między skryptem treści a stroną internetową, zazwyczaj
Zazwyczaj funkcja **`chrome.runtime.sendMessage`** jest używana do wysyłania wiadomości wewnątrz rozszerzenia (zazwyczaj obsługiwana przez skrypt `background`), a aby ją odebrać i obsłużyć, deklarowany jest nasłuchiwacz wywołujący **`chrome.runtime.onMessage.addListener`**.
-Możliwe jest również użycie **`chrome.runtime.connect()`** do nawiązania trwałego połączenia zamiast wysyłania pojedynczych wiadomości; można go użyć do **wysyłania** i **odbierania** **wiadomości**, jak w poniższym przykładzie:
+Możliwe jest również użycie **`chrome.runtime.connect()`**, aby mieć stałe połączenie zamiast wysyłania pojedynczych wiadomości, można go użyć do **wysyłania** i **odbierania** **wiadomości**, jak w poniższym przykładzie:
@@ -397,7 +397,7 @@ Możliwe jest również wysyłanie wiadomości z skryptu w tle do skryptu treśc
```javascript
chrome.runtime.sendMessage(extensionId, ...
```
-Gdzie to konieczne, aby wspomnieć o **identyfikatorze rozszerzenia**.
+Gdzie należy wspomnieć o **identyfikatorze rozszerzenia**.
### Native Messaging
@@ -413,7 +413,7 @@ console.log("Received " + response)
```
## Web **↔︎** Komunikacja Skryptów Treści
-Środowiska, w których działają **skrypty treści**, oraz miejsca, w których istnieją strony hosta, są **oddzielone** od siebie, zapewniając **izolację**. Pomimo tej izolacji, obie strony mają możliwość interakcji z **Modelem Obiektów Dokumentu (DOM)** strony, wspólnym zasobem. Aby strona hosta mogła nawiązać komunikację z **skryptem treści** lub pośrednio z rozszerzeniem za pośrednictwem skryptu treści, konieczne jest wykorzystanie **DOM**, który jest dostępny dla obu stron jako kanał komunikacyjny.
+Środowiska, w których działają **skrypty treści**, oraz gdzie istnieją strony hosta, są **oddzielone** od siebie, zapewniając **izolację**. Pomimo tej izolacji, obie strony mają możliwość interakcji z **Modelem Obiektów Dokumentu (DOM)** strony, wspólnym zasobem. Aby strona hosta mogła nawiązać komunikację z **skryptem treści**, lub pośrednio z rozszerzeniem przez skrypt treści, konieczne jest wykorzystanie **DOM**, który jest dostępny dla obu stron jako kanał komunikacyjny.
### Wiadomości Post
```javascript:content-script.js
@@ -454,9 +454,9 @@ Bezpieczna komunikacja Post Message powinna sprawdzać autentyczność otrzymane
- **`event.isTrusted`**: To jest True tylko wtedy, gdy zdarzenie zostało wywołane przez akcję użytkownika
- Skrypt treści może oczekiwać wiadomości tylko wtedy, gdy użytkownik wykona jakąś akcję
-- **domena źródłowa**: może oczekiwać wiadomości tylko z dozwolonej listy domen.
+- **origin domain**: może oczekiwać wiadomości tylko z dozwolonej listy domen.
- Jeśli używana jest wyrażenie regularne, należy być bardzo ostrożnym
-- **Źródło**: `received_message.source !== window` może być użyte do sprawdzenia, czy wiadomość była **z tego samego okna**, w którym skrypt treści nasłuchuje.
+- **Source**: `received_message.source !== window` może być użyte do sprawdzenia, czy wiadomość była **z tej samej okna**, w którym skrypt treści nasłuchuje.
Poprzednie kontrole, nawet jeśli są przeprowadzane, mogą być podatne, więc sprawdź na następującej stronie **potencjalne obejścia Post Message**:
@@ -466,7 +466,7 @@ Poprzednie kontrole, nawet jeśli są przeprowadzane, mogą być podatne, więc
### Iframe
-Innym możliwym sposobem komunikacji mogą być **adresy URL Iframe**, przykład można znaleźć w:
+Innym możliwym sposobem komunikacji mogą być **Iframe URLs**, przykład można znaleźć w:
{{#ref}}
browext-xss-example.md
@@ -474,9 +474,9 @@ browext-xss-example.md
### DOM
-To nie jest "dokładnie" sposób komunikacji, ale **sieć i skrypt treści będą miały dostęp do DOM sieci**. Więc, jeśli **skrypt treści** odczytuje jakieś informacje z niego, **ufając DOM sieci**, sieć mogłaby **zmodyfikować te dane** (ponieważ sieć nie powinna być ufana, lub ponieważ sieć jest podatna na XSS) i **skompromentować skrypt treści**.
+To nie jest "dokładnie" sposób komunikacji, ale **sieć i skrypt treści będą miały dostęp do DOM sieci**. Więc, jeśli **skrypt treści** odczytuje jakieś informacje z niego, **ufając DOM sieci**, sieć może **zmodyfikować te dane** (ponieważ sieć nie powinna być ufana, lub ponieważ sieć jest podatna na XSS) i **kompromitować skrypt treści**.
-Możesz również znaleźć przykład **XSS opartego na DOM, aby skompromitować rozszerzenie przeglądarki** w:
+Możesz również znaleźć przykład **XSS oparty na DOM, aby skompromitować rozszerzenie przeglądarki** w:
{{#ref}}
browext-xss-example.md
@@ -523,7 +523,7 @@ if (request.greeting === "hello") sendResponse({ farewell: "goodbye" })
```
W podanym przykładzie, **`sendResponse()`** został wykonany w sposób synchroniczny. Aby zmodyfikować obsługę zdarzenia `onMessage` na asynchroniczne wykonanie `sendResponse()`, konieczne jest dodanie `return true;`.
-Ważnym zagadnieniem jest to, że w scenariuszach, w których wiele stron jest ustawionych na odbieranie zdarzeń `onMessage`, **pierwsza strona, która wykona `sendResponse()`** dla konkretnego zdarzenia, będzie jedyną, która skutecznie dostarczy odpowiedź. Jakiekolwiek kolejne odpowiedzi na to samo zdarzenie nie będą brane pod uwagę.
+Ważnym zagadnieniem jest to, że w scenariuszach, w których wiele stron ma odbierać zdarzenia `onMessage`, **pierwsza strona, która wykona `sendResponse()`** dla konkretnego zdarzenia, będzie jedyną, która skutecznie dostarczy odpowiedź. Jakiekolwiek kolejne odpowiedzi na to samo zdarzenie nie będą brane pod uwagę.
Podczas tworzenia nowych rozszerzeń, preferencje powinny być skierowane ku obietnicom zamiast do callbacków. Jeśli chodzi o użycie callbacków, funkcja `sendResponse()` jest uznawana za ważną tylko wtedy, gdy jest wykonywana bezpośrednio w kontekście synchronicznym lub jeśli obsługa zdarzenia wskazuje na operację asynchroniczną, zwracając `true`. Jeśli żaden z handlerów nie zwróci `true` lub jeśli funkcja `sendResponse()` zostanie usunięta z pamięci (zbieranie śmieci), callback związany z funkcją `sendMessage()` zostanie wywołany domyślnie.
@@ -558,7 +558,7 @@ console.log("Received " + response)
```
W [**tym wpisie na blogu**](https://spaceraccoon.dev/universal-code-execution-browser-extensions/) zaproponowano podatny wzór wykorzystujący natywne wiadomości:
-1. Rozszerzenie przeglądarki ma wzór z użyciem symbolu wieloznacznego dla skryptu treści.
+1. Rozszerzenie przeglądarki ma wzór wildcard dla skryptu treści.
2. Skrypt treści przesyła wiadomości `postMessage` do skryptu w tle za pomocą `sendMessage`.
3. Skrypt w tle przesyła wiadomość do aplikacji natywnej za pomocą `sendNativeMessage`.
4. Aplikacja natywna niebezpiecznie obsługuje wiadomość, co prowadzi do wykonania kodu.
@@ -567,7 +567,7 @@ A w jego wnętrzu wyjaśniono przykład **przechodzenia z dowolnej strony do RCE
## Wrażliwe informacje w pamięci/kodzie/clipboard
-Jeśli Rozszerzenie Przeglądarki przechowuje **wrażliwe informacje w swojej pamięci**, mogą one być **zrzucane** (szczególnie na maszynach z systemem Windows) i **wyszukiwane** w celu uzyskania tych informacji.
+Jeśli Rozszerzenie Przeglądarki przechowuje **wrażliwe informacje w swojej pamięci**, mogą one być **zrzucane** (szczególnie na maszynach z systemem Windows) i **wyszukiwane** w tych informacjach.
Dlatego pamięć Rozszerzenia Przeglądarki **nie powinna być uważana za bezpieczną**, a **wrażliwe informacje**, takie jak dane logowania czy frazy mnemoniczne, **nie powinny być przechowywane**.
@@ -575,7 +575,7 @@ Oczywiście, **nie umieszczaj wrażliwych informacji w kodzie**, ponieważ będ
Aby zrzucić pamięć z przeglądarki, możesz **zrzucić pamięć procesu** lub przejść do **ustawień** rozszerzenia przeglądarki, klikając **`Inspect pop-up`** -> W sekcji **`Memory`** -> **`Take a snapshot`** i **`CTRL+F`**, aby wyszukać w zrzucie wrażliwe informacje.
-Ponadto, bardzo wrażliwe informacje, takie jak klucze mnemoniczne czy hasła, **nie powinny być kopiowane do schowka** (lub przynajmniej powinny być usuwane ze schowka w ciągu kilku sekund), ponieważ wtedy procesy monitorujące schowek będą mogły je uzyskać.
+Ponadto, bardzo wrażliwe informacje, takie jak klucze mnemoniczne czy hasła, **nie powinny mieć możliwości kopiowania do schowka** (lub przynajmniej powinny być usuwane ze schowka w ciągu kilku sekund), ponieważ wtedy procesy monitorujące schowek będą mogły je zdobyć.
## Ładowanie rozszerzenia w przeglądarce
@@ -629,9 +629,9 @@ Przejdź do Chrome Web Store i pobierz rozszerzenie. Plik będzie miał rozszerz
Otwórz Chrome i przejdź do `chrome://extensions/`. Włącz "Tryb dewelopera" w prawym górnym rogu. Kliknij "Załaduj rozpakowane rozszerzenie...". Przejdź do katalogu swojego rozszerzenia. To nie pobiera kodu źródłowego, ale jest przydatne do przeglądania i modyfikowania kodu już pobranego lub opracowanego rozszerzenia.
-## Zbiór manifestów rozszerzeń Chrome
+## Zbiór danych manifestu rozszerzenia Chrome
-Aby spróbować zidentyfikować podatne rozszerzenia przeglądarki, możesz użyć [https://github.com/palant/chrome-extension-manifests-dataset](https://github.com/palant/chrome-extension-manifests-dataset) i sprawdzić ich pliki manifestów pod kątem potencjalnie podatnych oznak. Na przykład, aby sprawdzić rozszerzenia z więcej niż 25000 użytkowników, `content_scripts` i uprawnienie `nativeMessaing`:
+Aby spróbować zidentyfikować podatne rozszerzenia przeglądarki, możesz użyć [https://github.com/palant/chrome-extension-manifests-dataset](https://github.com/palant/chrome-extension-manifests-dataset) i sprawdzić ich pliki manifestu pod kątem potencjalnie podatnych oznak. Na przykład, aby sprawdzić rozszerzenia z więcej niż 25000 użytkowników, `content_scripts` i uprawnienie `nativeMessaing`:
```bash
# Query example from https://spaceraccoon.dev/universal-code-execution-browser-extensions/
node query.js -f "metadata.user_count > 250000" "manifest.content_scripts?.length > 0 && manifest.permissions?.includes('nativeMessaging')"
@@ -648,9 +648,9 @@ Chociaż rozszerzenia przeglądarki mają **ograniczoną powierzchnię ataku**,
- [ ] **Ogranicz** tak bardzo, jak to możliwe **`web_accessible_resources`**, nawet puste, jeśli to możliwe.
- [ ] Jeśli **`web_accessible_resources`** nie jest puste, sprawdź [**ClickJacking**](browext-clickjacking.md)
- [ ] Jeśli jakakolwiek **komunikacja** zachodzi z **rozszerzenia** do **strony internetowej**, [**sprawdź XSS**](browext-xss-example.md) **luki** spowodowane w komunikacji.
-- [ ] Jeśli używane są Post Messages, sprawdź [**luki w Post Message**](../postmessage-vulnerabilities/)**.**
-- [ ] Jeśli **Content Script ma dostęp do szczegółów DOM**, sprawdź, czy **nie wprowadza XSS**, jeśli zostanie **zmodyfikowany** przez stronę internetową.
-- [ ] Zwróć szczególną uwagę, jeśli ta komunikacja jest również zaangażowana w **komunikację Content Script -> skrypt w tle**
+- [ ] Jeśli używane są Post Messages, sprawdź [**luki w Post Message**](../postmessage-vulnerabilities/index.html)**.**
+- [ ] Jeśli **Content Script ma dostęp do szczegółów DOM**, sprawdź, czy **nie wprowadza XSS**, jeśli zostanie **zmodyfikowany** przez sieć
+- [ ] Zwróć szczególną uwagę, jeśli ta komunikacja jest również zaangażowana w **komunikację Content Script -> Background script**
- [ ] Jeśli skrypt w tle komunikuje się za pomocą **native messaging**, sprawdź, czy komunikacja jest bezpieczna i oczyszczona
- [ ] **Wrażliwe informacje nie powinny być przechowywane** wewnątrz kodu rozszerzenia przeglądarki
- [ ] **Wrażliwe informacje nie powinny być przechowywane** wewnątrz pamięci rozszerzenia przeglądarki
@@ -658,20 +658,20 @@ Chociaż rozszerzenia przeglądarki mają **ograniczoną powierzchnię ataku**,
## Ryzyka związane z rozszerzeniem przeglądarki
-- Aplikacja [https://crxaminer.tech/](https://crxaminer.tech/) analizuje dane, takie jak uprawnienia, o które prosi rozszerzenie przeglądarki, aby określić poziom ryzyka korzystania z rozszerzenia przeglądarki.
+- Aplikacja [https://crxaminer.tech/](https://crxaminer.tech/) analizuje dane, takie jak uprawnienia, które żąda rozszerzenie przeglądarki, aby określić poziom ryzyka korzystania z rozszerzenia przeglądarki.
## Narzędzia
### [**Tarnish**](https://thehackerblog.com/tarnish/)
- Pobiera dowolne rozszerzenie Chrome z podanego linku do sklepu Chrome.
-- [**manifest.json**](https://developer.chrome.com/extensions/manifest) **viewer**: po prostu wyświetla wersję manifestu rozszerzenia w formacie JSON.
+- [**manifest.json**](https://developer.chrome.com/extensions/manifest) **viewer**: po prostu wyświetla wersję JSON rozszerzenia.
- **Analiza odcisków palców**: Wykrywanie [web_accessible_resources](https://developer.chrome.com/extensions/manifest/web_accessible_resources) i automatyczne generowanie JavaScript do odcisków palców rozszerzenia Chrome.
- **Potencjalna analiza Clickjacking**: Wykrywanie stron HTML rozszerzenia z ustawionym dyrektywą [web_accessible_resources](https://developer.chrome.com/extensions/manifest/web_accessible_resources). Mogą być potencjalnie podatne na clickjacking w zależności od celu stron.
- **Viewer ostrzeżeń o uprawnieniach**: który pokazuje listę wszystkich ostrzeżeń o uprawnieniach Chrome, które będą wyświetlane po próbie zainstalowania rozszerzenia przez użytkownika.
- **Niebezpieczna funkcja**: pokazuje lokalizację niebezpiecznych funkcji, które mogą być potencjalnie wykorzystywane przez atakującego (np. funkcje takie jak innerHTML, chrome.tabs.executeScript).
- **Punkty wejścia**: pokazuje, gdzie rozszerzenie przyjmuje dane wejściowe od użytkownika/zewnętrzne. To jest przydatne do zrozumienia powierzchni rozszerzenia i szukania potencjalnych punktów do wysyłania złośliwie skonstruowanych danych do rozszerzenia.
-- Zarówno skanery Niebezpiecznych Funkcji, jak i Punktów Wejścia mają następujące elementy dla swoich wygenerowanych alertów:
+- Zarówno skanery Niebezpiecznych Funkcji, jak i Punktów Wejścia mają następujące dla swoich wygenerowanych alertów:
- Odpowiedni fragment kodu i linia, która spowodowała alert.
- Opis problemu.
- Przycisk „Zobacz plik”, aby zobaczyć pełny plik źródłowy zawierający kod.
@@ -680,16 +680,16 @@ Chociaż rozszerzenia przeglądarki mają **ograniczoną powierzchnię ataku**,
- Typ pliku, taki jak skrypt strony w tle, skrypt treści, akcja przeglądarki itp.
- Jeśli podatna linia znajduje się w pliku JavaScript, ścieżki wszystkich stron, na których jest zawarta, a także typ tych stron oraz status [web_accessible_resource](https://developer.chrome.com/extensions/manifest/web_accessible_resources).
- **Analizator polityki bezpieczeństwa treści (CSP) i sprawdzacz obejść**: Wskaże słabości w CSP twojego rozszerzenia i również oświetli wszelkie potencjalne sposoby obejścia twojego CSP z powodu białych list CDN itp.
-- **Znane podatne biblioteki**: Używa [Retire.js](https://retirejs.github.io/retire.js/), aby sprawdzić, czy używane są znane podatne biblioteki JavaScript.
+- **Znane podatne biblioteki**: Używa [Retire.js](https://retirejs.github.io/retire.js/) do sprawdzenia użycia znanych podatnych bibliotek JavaScript.
- Pobierz rozszerzenie i sformatowane wersje.
- Pobierz oryginalne rozszerzenie.
-- Pobierz wersję rozszerzenia w formacie beautified (automatycznie sformatowany HTML i JavaScript).
+- Pobierz piękniejszą wersję rozszerzenia (automatycznie sformatowany HTML i JavaScript).
- Automatyczne buforowanie wyników skanowania, uruchomienie skanowania rozszerzenia zajmie sporo czasu przy pierwszym uruchomieniu. Jednak przy drugim uruchomieniu, zakładając, że rozszerzenie nie zostało zaktualizowane, będzie prawie natychmiastowe dzięki buforowanym wynikom.
- Linkowalne adresy URL raportów, łatwo linkuj kogoś do raportu rozszerzenia wygenerowanego przez tarnish.
### [Neto](https://github.com/elevenpaths/neto)
-Projekt Neto to pakiet Pythona 3 stworzony do analizy i odkrywania ukrytych funkcji wtyczek i rozszerzeń przeglądarki dla znanych przeglądarek, takich jak Firefox i Chrome. Automatyzuje proces rozpakowywania spakowanych plików, aby wydobyć te funkcje z odpowiednich zasobów w rozszerzeniu, takich jak `manifest.json`, foldery lokalizacyjne lub pliki źródłowe JavaScript i HTML.
+Projekt Neto to pakiet Pythona 3 stworzony do analizy i odkrywania ukrytych funkcji wtyczek i rozszerzeń przeglądarek dla znanych przeglądarek, takich jak Firefox i Chrome. Automatyzuje proces rozpakowywania spakowanych plików, aby wydobyć te funkcje z odpowiednich zasobów w rozszerzeniu, takich jak `manifest.json`, foldery lokalizacyjne lub pliki źródłowe JavaScript i HTML.
## Odniesienia
diff --git a/src/pentesting-web/client-side-template-injection-csti.md b/src/pentesting-web/client-side-template-injection-csti.md
index 708a06155..595404f2a 100644
--- a/src/pentesting-web/client-side-template-injection-csti.md
+++ b/src/pentesting-web/client-side-template-injection-csti.md
@@ -4,13 +4,13 @@
## Podsumowanie
-Jest to podobne do [**Wstrzykiwania szablonów po stronie serwera**](ssti-server-side-template-injection/), ale w **kliencie**. **SSTI** może pozwolić na **wykonywanie kodu** na zdalnym serwerze, **CSTI** może pozwolić na **wykonywanie dowolnego kodu JavaScript** w przeglądarce ofiary.
+Jest to jak [**Wstrzykiwanie szablonów po stronie serwera**](ssti-server-side-template-injection/index.html), ale w **kliencie**. **SSTI** może pozwolić na **wykonywanie kodu** na zdalnym serwerze, **CSTI** może pozwolić na **wykonywanie dowolnego kodu JavaScript** w przeglądarce ofiary.
-**Testowanie** tej podatności jest bardzo **podobne** do przypadku **SSTI**, interpreter oczekuje **szablonu** i go wykona. Na przykład, z ładunkiem takim jak `{{ 7-7 }}`, jeśli aplikacja jest **podatna**, zobaczysz `0`, a jeśli nie, zobaczysz oryginalny: `{{ 7-7 }}`
+**Testowanie** tej podatności jest bardzo **podobne** do przypadku **SSTI**, interpreter oczekuje **szablonu** i go wykona. Na przykład, przy ładunku takim jak `{{ 7-7 }}`, jeśli aplikacja jest **podatna**, zobaczysz `0`, a jeśli nie, zobaczysz oryginalny: `{{ 7-7 }}`
## AngularJS
-AngularJS to powszechnie używany framework JavaScript, który interaguje z HTML za pomocą atrybutów znanych jako dyrektywy, z których jedną jest **`ng-app`**. Ta dyrektywa pozwala AngularJS na przetwarzanie treści HTML, umożliwiając wykonywanie wyrażeń JavaScript wewnątrz podwójnych klamr.
+AngularJS to powszechnie używany framework JavaScript, który interaguje z HTML za pomocą atrybutów znanych jako dyrektywy, z których jedną jest **`ng-app`**. Ta dyrektywa pozwala AngularJS przetwarzać zawartość HTML, umożliwiając wykonywanie wyrażeń JavaScript wewnątrz podwójnych klamr.
W scenariuszach, w których dane wejściowe użytkownika są dynamicznie wstawiane do ciała HTML oznaczonego `ng-app`, możliwe jest wykonywanie dowolnego kodu JavaScript. Można to osiągnąć, wykorzystując składnię AngularJS w danych wejściowych. Poniżej znajdują się przykłady ilustrujące, jak można wykonać kod JavaScript:
```javascript
@@ -21,13 +21,13 @@ W scenariuszach, w których dane wejściowe użytkownika są dynamicznie wstawia
```
-Możesz znaleźć bardzo **podstawowy przykład online** tej podatności w **AngularJS** w [http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) oraz w [**Burp Suite Academy**](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression)
+Możesz znaleźć bardzo **podstawowy przykład online** tej podatności w **AngularJS** pod adresem [http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) oraz w [**Burp Suite Academy**](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression)
> [!CAUTION] > [**Angular 1.6 usunął piaskownicę**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html), więc od tej wersji ładunek taki jak `{{constructor.constructor('alert(1)')()}}` lub `` powinien działać.
## VueJS
-Możesz znaleźć **podatną implementację Vue** w [https://vue-client-side-template-injection-example.azu.now.sh/](https://vue-client-side-template-injection-example.azu.now.sh)\
+Możesz znaleźć **podatną implementację Vue** pod adresem [https://vue-client-side-template-injection-example.azu.now.sh/](https://vue-client-side-template-injection-example.azu.now.sh)\
Działający ładunek: [`https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%`]()
A **kod źródłowy** podatnego przykładu tutaj: [https://github.com/azu/vue-client-side-template-injection-example](https://github.com/azu/vue-client-side-template-injection-example)
@@ -52,8 +52,6 @@ Credit: [Mario Heiderich](https://twitter.com/cure53berlin)
**Sprawdź więcej ładunków VUE w** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected)
## Mavo
-
-Payload:
```
[7*7]
[(1,alert)(1)]
diff --git a/src/pentesting-web/content-security-policy-csp-bypass/README.md b/src/pentesting-web/content-security-policy-csp-bypass/README.md
index 45572f158..1fd92fde2 100644
--- a/src/pentesting-web/content-security-policy-csp-bypass/README.md
+++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md
@@ -1,10 +1,10 @@
-# Obejście Polityki Bezpieczeństwa Treści (CSP)
+# Content Security Policy (CSP) Bypass
{{#include ../../banners/hacktricks-training.md}}
-## Czym jest CSP
+## Co to jest CSP
-Polityka Bezpieczeństwa Treści (CSP) jest uznawana za technologię przeglądarki, głównie mającą na celu **ochronę przed atakami takimi jak cross-site scripting (XSS)**. Działa poprzez definiowanie i szczegółowe określenie ścieżek i źródeł, z których zasoby mogą być bezpiecznie ładowane przez przeglądarkę. Te zasoby obejmują szereg elementów, takich jak obrazy, ramki i JavaScript. Na przykład, polityka może zezwalać na ładowanie i wykonywanie zasobów z tej samej domeny (self), w tym zasobów inline oraz wykonywanie kodu w postaci stringów za pomocą funkcji takich jak `eval`, `setTimeout` lub `setInterval`.
+Content Security Policy (CSP) jest uznawana za technologię przeglądarki, głównie mającą na celu **ochronę przed atakami takimi jak cross-site scripting (XSS)**. Działa poprzez definiowanie i szczegółowe określenie ścieżek i źródeł, z których zasoby mogą być bezpiecznie ładowane przez przeglądarkę. Te zasoby obejmują szereg elementów, takich jak obrazy, ramki i JavaScript. Na przykład, polityka może zezwalać na ładowanie i wykonywanie zasobów z tej samej domeny (self), w tym zasobów inline oraz wykonywanie kodu w postaci stringów za pomocą funkcji takich jak `eval`, `setTimeout` lub `setInterval`.
Wdrożenie CSP odbywa się poprzez **nagłówki odpowiedzi** lub poprzez włączenie **elementów meta do strony HTML**. Zgodnie z tą polityką, przeglądarki proaktywnie egzekwują te postanowienia i natychmiast blokują wszelkie wykryte naruszenia.
@@ -18,14 +18,14 @@ Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com;
```
### Nagłówki
-CSP może być egzekwowany lub monitorowany za pomocą tych nagłówków:
+CSP może być egzekwowane lub monitorowane za pomocą tych nagłówków:
- `Content-Security-Policy`: Egzekwuje CSP; przeglądarka blokuje wszelkie naruszenia.
-- `Content-Security-Policy-Report-Only`: Używany do monitorowania; raportuje naruszenia bez ich blokowania. Idealny do testowania w środowiskach przedprodukcyjnych.
+- `Content-Security-Policy-Report-Only`: Używane do monitorowania; raportuje naruszenia bez ich blokowania. Idealne do testowania w środowiskach przedprodukcyjnych.
### Definiowanie zasobów
-CSP ogranicza źródła ładowania zarówno aktywnej, jak i pasywnej treści, kontrolując aspekty takie jak wykonywanie JavaScriptu w linii i użycie `eval()`. Przykładowa polityka to:
+CSP ogranicza źródła ładowania zarówno aktywnej, jak i pasywnej treści, kontrolując aspekty takie jak wykonanie JavaScript w linii i użycie `eval()`. Przykładowa polityka to:
```bash
default-src 'none';
img-src 'self';
@@ -44,33 +44,33 @@ object-src 'none';
- **child-src**: Określa dozwolone zasoby dla pracowników sieciowych i zawartości osadzonych ramek.
- **connect-src**: Ogranicza adresy URL, które mogą być ładowane za pomocą interfejsów takich jak fetch, WebSocket, XMLHttpRequest.
- **frame-src**: Ogranicza adresy URL dla ramek.
-- **frame-ancestors**: Określa, które źródła mogą osadzać bieżącą stronę, stosowane do elementów takich jak ``, `