hacktricks/src/pentesting-web/domain-subdomain-takeover.md

99 lines
8.2 KiB
Markdown

# Domain/Subdomain takeover
{{#include ../banners/hacktricks-training.md}}
## Domain takeover
Se scopri un dominio (domain.tld) che è **utilizzato da qualche servizio all'interno dell'ambito** ma che la **società** ha **perso** la **proprietà**, puoi provare a **registrarlo** (se abbastanza economico) e far sapere alla società. Se questo dominio sta ricevendo alcune **informazioni sensibili** come un cookie di sessione tramite **GET** parametro o nell'intestazione **Referer**, questa è sicuramente una **vulnerabilità**.
### Subdomain takeover
Un sottodominio della società punta a un **servizio di terze parti con un nome non registrato**. Se puoi **creare** un **account** in questo **servizio di terze parti** e **registrare** il **nome** in uso, puoi eseguire il takeover del sottodominio.
Ci sono diversi strumenti con dizionari per controllare possibili takeover:
- [https://github.com/EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz)
- [https://github.com/blacklanternsecurity/bbot](https://github.com/blacklanternsecurity/bbot)
- [https://github.com/punk-security/dnsReaper](https://github.com/punk-security/dnsReaper)
- [https://github.com/haccer/subjack](https://github.com/haccer/subjack)
- [https://github.com/anshumanbh/tko-sub](https://github.com/anshumanbh/tko-subs)
- [https://github.com/ArifulProtik/sub-domain-takeover](https://github.com/ArifulProtik/sub-domain-takeover)
- [https://github.com/SaadAhmedx/Subdomain-Takeover](https://github.com/SaadAhmedx/Subdomain-Takeover)
- [https://github.com/Ice3man543/SubOver](https://github.com/Ice3man543/SubOver)
- [https://github.com/antichown/subdomain-takeover](https://github.com/antichown/subdomain-takeover)
- [https://github.com/musana/mx-takeover](https://github.com/musana/mx-takeover)
- [https://github.com/PentestPad/subzy](https://github.com/PentestPad/subzy)
- [https://github.com/Stratus-Security/Subdominator](https://github.com/Stratus-Security/Subdominator)
- [https://github.com/NImaism/takeit](https://github.com/NImaism/takeit)
### Subdomain Takeover Generation via DNS Wildcard
Quando viene utilizzato un wildcard DNS in un dominio, qualsiasi sottodominio richiesto di quel dominio che non ha un indirizzo diverso esplicitamente sarà **risolto alle stesse informazioni**. Questo potrebbe essere un indirizzo IP A, un CNAME...
Ad esempio, se `*.testing.com` è wildcard a `1.1.1.1`. Allora, `not-existent.testing.com` punterà a `1.1.1.1`.
Tuttavia, se invece di puntare a un indirizzo IP, l'amministratore di sistema lo punta a un **servizio di terze parti tramite CNAME**, come un **sottodominio GitHub** per esempio (`sohomdatta1.github.io`). Un attaccante potrebbe **creare la propria pagina di terze parti** (in GitHub in questo caso) e dire che `something.testing.com` punta lì. Perché, il **CNAME wildcard** consentirà all'attaccante di **generare sottodomini arbitrari per il dominio della vittima che puntano alle sue pagine**.
Puoi trovare un esempio di questa vulnerabilità nel write-up CTF: [https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api)
## Exploiting a subdomain takeover
Il takeover del sottodominio è essenzialmente uno spoofing DNS per un dominio specifico su Internet, consentendo agli attaccanti di impostare record A per un dominio, portando i browser a visualizzare contenuti dal server dell'attaccante. Questa **trasparenza** nei browser rende i domini vulnerabili al phishing. Gli attaccanti possono impiegare [_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting) o [_Doppelganger domains_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) per questo scopo. Sono particolarmente vulnerabili i domini in cui l'URL in un'email di phishing appare legittimo, ingannando gli utenti e eludendo i filtri antispam a causa della fiducia intrinseca del dominio.
Controlla questo [post per ulteriori dettagli](https://0xpatrik.com/subdomain-takeover/)
### **SSL Certificates**
I certificati SSL, se generati dagli attaccanti tramite servizi come [_Let's Encrypt_](https://letsencrypt.org/), aggiungono legittimità a questi domini falsi, rendendo gli attacchi di phishing più convincenti.
### **Cookie Security and Browser Transparency**
La trasparenza del browser si estende anche alla sicurezza dei cookie, governata da politiche come la [Same-origin policy](https://en.wikipedia.org/wiki/Same-origin_policy). I cookie, spesso utilizzati per gestire sessioni e memorizzare token di accesso, possono essere sfruttati attraverso il takeover del sottodominio. Gli attaccanti possono **raccogliere cookie di sessione** semplicemente indirizzando gli utenti a un sottodominio compromesso, mettendo a rischio i dati e la privacy degli utenti.
### CORS Bypass
Potrebbe essere possibile che ogni sottodominio sia autorizzato ad accedere alle risorse CORS dal dominio principale o da altri sottodomini. Questo potrebbe essere sfruttato da un attaccante per **accedere a informazioni sensibili** abusando delle richieste CORS.
### CSRF - Same-Site Cookies bypass
Potrebbe essere possibile che il sottodominio sia autorizzato a inviare cookie al dominio o ad altri sottodomini, cosa che è stata impedita dall'attributo `Same-Site` dei cookie. Tuttavia, nota che i token anti-CSRF impediranno comunque questo attacco se sono implementati correttamente.
### OAuth tokens redirect
Potrebbe essere possibile che il sottodominio compromesso sia autorizzato a essere utilizzato nell'URL `redirect_uri` di un flusso OAuth. Questo potrebbe essere sfruttato da un attaccante per **rubare il token OAuth**.
### CSP Bypass
Potrebbe essere possibile che il sottodominio compromesso (o ogni sottodominio) sia autorizzato a essere utilizzato, ad esempio, per il `script-src` del CSP. Questo potrebbe essere sfruttato da un attaccante per **iniettare script dannosi** e abusare di potenziali vulnerabilità XSS.
### **Emails and Subdomain Takeover**
Un altro aspetto del takeover del sottodominio coinvolge i servizi email. Gli attaccanti possono manipolare i **record MX** per ricevere o inviare email da un sottodominio legittimo, aumentando l'efficacia degli attacchi di phishing.
### **Higher Order Risks**
Ulteriori rischi includono il **takeover dei record NS**. Se un attaccante guadagna il controllo su un record NS di un dominio, può potenzialmente indirizzare una parte del traffico a un server sotto il proprio controllo. Questo rischio è amplificato se l'attaccante imposta un alto **TTL (Time to Live)** per i record DNS, prolungando la durata dell'attacco.
### CNAME Record Vulnerability
Gli attaccanti potrebbero sfruttare record CNAME non reclamati che puntano a servizi esterni che non sono più utilizzati o sono stati dismessi. Questo consente loro di creare una pagina sotto il dominio fidato, facilitando ulteriormente il phishing o la distribuzione di malware.
### **Mitigation Strategies**
Le strategie di mitigazione includono:
1. **Rimuovere i record DNS vulnerabili** - Questo è efficace se il sottodominio non è più necessario.
2. **Rivendicare il nome di dominio** - Registrare la risorsa con il rispettivo fornitore di cloud o riacquistare un dominio scaduto.
3. **Monitoraggio regolare per vulnerabilità** - Strumenti come [aquatone](https://github.com/michenriksen/aquatone) possono aiutare a identificare domini suscettibili. Le organizzazioni dovrebbero anche rivedere i loro processi di gestione dell'infrastruttura, assicurandosi che la creazione di record DNS sia l'ultimo passo nella creazione delle risorse e il primo passo nella distruzione delle risorse.
Per i fornitori di cloud, verificare la proprietà del dominio è cruciale per prevenire takeover di sottodomini. Alcuni, come [GitLab](https://about.gitlab.com/2018/02/05/gitlab-pages-custom-domain-validation/), hanno riconosciuto questo problema e implementato meccanismi di verifica del dominio.
## References
- [https://0xpatrik.com/subdomain-takeover/](https://0xpatrik.com/subdomain-takeover/)
- [https://www.stratussecurity.com/post/subdomain-takeover-guide](https://www.stratussecurity.com/post/subdomain-takeover-guide)
- [https://www.hackerone.com/blog/guide-subdomain-takeovers-20](https://www.hackerone.com/blog/guide-subdomain-takeovers-20)
{{#include ../banners/hacktricks-training.md}}