
Un framework per attacchi di DNS rebinding.
Aggiornamenti recenti:
NUOVO (2025-11-25): Il rilascio di Chrome 142 ha aggiunto Local Network Access (LNA), che impedisce le tecniche di attacco DNS rebinding implementate in Singularity. Il ramo LNA-from-Non-Secure-Contexts di Singularity of Origin implementa il supporto per Trial for Local Network Access from Non-Secure Contexts. Questo consente temporaneamente l'accesso alle risorse sulle reti locali da contesti non sicuri, permettendoti così di sperimentare con attacchi DNS rebinding un po' più a lungo (fino al 18 maggio 2026) quando usi Chrome.
NUOVO (2025-05-19): Il nostro sito demo, rebind.it, è stato aggiornato per supportare IPv6 (commit 3c5ee9a). Questo è un cambiamento di rottura per le query manuali (al di fuori dell'interfaccia Singularity Manager) perché il formato della query DNS è stato modificato. Fare riferimento a How to Create Manual DNS Requests to Singularity of Origin per istruzioni dettagliate. Inoltre, aggiungiamo periodicamente nuovi payload di attacco; assicurati di darci un'occhiata.
(2023-04-27) Dai un'occhiata al nostro post sul blog che documenta lo stato del DNS rebinding per aprile 2023. Descriviamo Local Network Access, una nuova bozza di specifica W3C attualmente implementata in alcuni browser che mira a prevenire il DNS rebinding, e mostriamo due modi per bypassare queste restrizioni. Discutiamo anche gli effetti della mitigazione della fuga di indirizzi IP WebRTC e del DNS Bit 0x20 sugli attacchi DNS rebinding.
(2020-03-30) Nuovo post sul blog che indaga sull'impatto del DoH sugli attacchi DNS rebinding. TL;DR: DoH (DNS over HTTPS) non ha alcun effetto sugli attacchi di rebinding e le protezioni pubblicizzate dai fornitori possono essere bypassate.
Dai un'occhiata al nostro video DEF CON 27 e alla presentazione BSidesLV su State of DNS Rebinding: Attack & Prevention Techniques and the Singularity of Origin.
Singularity of Origin è uno strumento per eseguire attacchi DNS rebinding.
Include i componenti necessari per effettuare il rebinding dell'indirizzo IP del nome DNS del server di attacco all'indirizzo IP della macchina target e per servire payload di attacco per sfruttare software vulnerabili sulla macchina target.
Include anche payload di esempio per sfruttare diverse versioni di software vulnerabile, dalla semplice cattura di una home page all'esecuzione remota di codice. Mira a fornire un framework per facilitare lo sfruttamento di software vulnerabili ad attacchi DNS rebinding e per aumentare la consapevolezza su come funzionano e come proteggersi da essi.
La documentazione dettagliata è disponibile nelle pagine wiki.



Per configurare Singularity è necessario un nome di dominio DNS dove si possono modificare i propri record DNS e un server Linux per eseguirlo. Consultare la pagina wiki setup singularity per istruzioni dettagliate.
La documentazione è nelle pagine wiki. Ecco alcuni punti di partenza:
Un'istanza di test è disponibile per scopi dimostrativi all'indirizzo http://rebind.it:8080/manager.html.
Singularity è stato testato per funzionare con i seguenti browser in condizioni ottimali in meno di 3 secondi:
Singularity supporta i seguenti payload di attacco:
simple-fetch-get.js): Questo payload di esempio effettua una richiesta GET alla directory radice ('/') e mostra la risposta del server utilizzando l'API fetch. L'obiettivo di questo payload è fungere da richiesta di esempio per rendere il più semplice possibile ulteriori contributi.exposed-chrome-devtools.js): Questo payload dimostra una vulnerabilità di esecuzione remota di codice (RCE) in Microsoft VS Code risolta nella versione 1.19.3. Questo payload può essere adattato per sfruttare qualsiasi software che espone Chrome Dev Tools su localhost.etcd.js): Questo payload recupera le chiavi e i valori dal key-value store etcd.pyethapp.js): Sfrutta l'implementazione Python del client Ethereum Pyethapp per ottenere l'elenco degli indirizzi eth posseduti e recuperare il saldo del primo indirizzo eth.rails-console-rce.js): Esegue un attacco di esecuzione remota di codice (RCE) sulla Rails Web Console.| Browser | Sistema Operativo | Tempo di Sfruttamento | Strategia di Rebinding | Intervallo di Fetch | Specifica del Target |
|---|
Multiple answers (fast) | |||||
Multiple answers (fast) | |||||
| Firefox | Windows 10 | ~3s | Multiple answers (fast) | 1s | 127.0.0.1 |
| Chromium | Ubuntu | ~3s | Multiple answers (fast) | 1s | 0.0.0.0 |
| Firefox | Ubuntu | ~3s | Multiple answers (fast) | 1s | 0.0.0.0 |
| Chrome | macOS | ~3s | Multiple answers (fast) | 1s | 0.0.0.0 |
| Firefox | macOS | ~3s | Multiple answers (fast) | 1s | 0.0.0.0 |
| Safari | macOS | ~3s | Multiple answers (fast) | 1s | 0.0.0.0 |
aws-metadata-exfil.js): Forza un browser headless a esfiltrare i metadati AWS, incluse le chiavi private, verso un host specificato. Controlla il contenuto del payload per ulteriori dettagli su come configurare l'attacco.duplicati-rce.js): Questo payload sfrutta il client di backup Duplicati ed esegue un attacco di esecuzione remota di codice (RCE). Affinché l'attacco funzioni, il parametro targetURL nel file payload-duplicati-rce.html deve essere aggiornato per puntare a un backup Duplicati valido contenente il payload RCE effettivo, uno script shell.webpdb.js): Un payload RCE generico per sfruttare PDB, un debugger Python esposto tramite websocket.hook-and-control.js): Dirotta i browser target e li utilizza per accedere a risorse inaccessibili dal proprio browser o da altri client HTTP. È possibile recuperare l'elenco dei browser dirottati sul sottodominio "soohooked" dell'host del manager Singularity sulla porta 3129 per impostazione predefinita, ad esempio http://soohooked.rebinder.your.domain:3129/. Per autenticarsi, inviare il valore segreto stampato nella console dal server Singularity all'avvio.jenkins-script-console.js): Questo payload sfrutta la Jenkins Script Console e mostra le credenziali memorizzate.docker-api.js): Questo payload sfrutta la Docker API e mostra il file /etc/shadow dell'host Docker.ollama-exfil.js): Esfiltra file da host che eseguono Ollama, un sistema open-source per eseguire e gestire modelli di linguaggio di grandi dimensioni (LLM). Vedi il post del blog.html/payloads).