Taken
Esegui il takeover di sottodomini utilizzando IP elastici dangling di AWS e ottieni un POC funzionante per il Subdomain Takeover.
Cosa puoi fare con il Subdomain Takeover -
- Furto di cookie, se i cookie sono impostati con l'attributo domain impostato sul sottodominio dirottato.
- Richiesta CORS, se Access-Control-Allow-Origin è impostato sul sottodominio dirottato.
- Reindirizzamento OAuth per ottenere il codice di autorizzazione, se il sottodominio dirottato è nella whitelist.
- Politiche CSP per XSS, se la politica CSP include nella whitelist questo sottodominio.
- ClickJacking, se X-Frame-Options include nella whitelist questo sottodominio.
- Spoofing delle email, se il record SPF include nella whitelist questo sottodominio.
L'idea di automazione è la seguente
- Ottieni i sottodomini.
- Esegui reverse lookup per salvare solo gli IP AWS.
- Riavvia l'istanza EC2 ogni minuto e l'IP pubblico viene ruotato a ogni riavvio. Abbinalo alla tua lista esistente di IP dei sottodomini e avrai un POC di subdomain takeover funzionante.
- Notifica via email non appena effettui il takeover di un sottodominio
Citazione
Si prega di citare, se si utilizza questo software in articoli di ricerca, pubblicazioni, ecc.
@software{Agrawal_Taken_AWS_Subdomain_2020,
author = {Agrawal, Vaibhav},
month = oct,
title = {{Taken: AWS Subdomain TakeOver at Scale}},
url = {https://github.com/In3tinct/Taken},
version = {1.0},
year = {2020}
}
Prerequisiti
- Account AWS
- Conoscenza di Linux e Bash script
Tecnologia/framework utilizzati
Realizzato con
Caratteristiche
- Raccogli sottodomini ed esegui reverse lookup per bersagliare solo IP AWS.
- Ruota gli IP riavviando l'istanza EC2 finché non corrisponde a uno degli IP nella lista.
- In caso di corrispondenza, quell'IP/host viene aggiunto a un file whitelist, così non viene più ruotato e viene inviata una notifica email.
Passaggi dettagliati per l'uso
- Crea un'istanza t2.medium (macchina di attacco), gratuita 24 ore su 24, 365 giorni l'anno.
- Crea 5-10 istanze con tipo di istanza t3a.nano, probabilmente il costo più basso (più alto è il numero, migliori sono le possibilità ma maggiori sono i costi, circa $60/mese per 10 macchine) in una o più regioni, ci vogliono 5 minuti, imposta il Security Group aperto solo al tuo IP pubblico.
- Crea chiavi API AWS per fermare/avviare le istanze.
- Connettiti via SSH alla tua macchina di attacco.
- Installa l'utility di notifica email SSMTP.
https://www.digitalocean.com/community/questions/how-to-send-emails-from-a-bash-script-using-ssmtp
- Installa gli strumenti subfinder e sublist3r.py per la raccolta dei sottodomini. (O qualsiasi altro strumento che desideri, ma dovrai aggiungerli nello script di raccolta sottodomini)
Segui i passaggi per configurarli
https://github.com/aboul3la/Sublist3r
https://github.com/projectdiscovery/subfinder
- Clona il repository Taken e apri una sessione screen per eseguire lo script subdomain-collection.
Se non sai come usare una sessione screen - https://linuxize.com/post/how-to-use-linux-screen/
- Crea un file di testo con tutti i domini che vuoi bersagliare, salvalo come "alldomains" nella stessa directory e poi esegui lo script subdomain-collection. Questo script utilizza subfinder e sublist3r.py. Genererà una lista di tutti i sottodomini per uno o più domini nel formato "subdomain:IP" su ogni riga. Che verrà poi utilizzata per il matching e la notifica.
- Apri un'altra sessione screen ed esporta le credenziali AWS in quella sessione.
Esportazione delle chiavi AWS.
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE La chiave di accesso per il tuo account AWS.
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY La chiave segreta di accesso per il tuo account AWS.
Esegui lo script di takeover in una sessione screen diversa. Puoi anche eseguirlo per ogni regione in sessioni screen diverse (controlla lo screenshot qui sotto).
- Ogni regione AWS ha subnet IP associate diverse. Per bersagliare aziende con sede negli Stati Uniti, ci sono alte probabilità che stiano operando in una qualsiasi delle regioni US, ma potrebbero anche avere asset in altre regioni come Irlanda, Francoforte, ecc. Quindi invece di eseguire 10 asset in una regione, prova a eseguire 5 asset nella regione in cui ha sede l'azienda e gli altri 5 in regioni diverse.
Esempio di sessione screen -
Notifica email -

Took over a subdomain what next -
Connettiti via SSH a quell'host, crea un semplice file HTML e avvia un server Python e avrai un POC funzionante.
(Ho intenzione di automatizzare anche questo nella prossima versione)
Esecuzione in massa
Ho effettuato scraping di tutti i programmi pubblici su HackerOne e Bugcrowd e delle top 500 aziende SaaS Forbes/SaaS, ho raccolto i loro sottodomini e ho iniziato a colpire. Entro 24 ore sono riuscito a prendere il controllo di 3 sottodomini. Istanze in esecuzione totali 10 in 3 regioni diverse. Il tasso di successo dipende molto dal numero di istanze in esecuzione. Poiché con lo script si cambiano circa 1440 IP in 24 ore, ciò corrisponde a circa 14400 IP con 10 istanze in 24 ore.
Riferimenti
Strumenti utilizzati per raccogliere i sottodomini.
https://github.com/projectdiscovery/subfinder
https://github.com/aboul3la/Sublist3r
Contribuisci
- Segnala bug.
- Suggerimenti per miglioramenti.
- Suggerimenti per estensioni future.
Estensioni future
- Creazione di istanze EC2 utilizzando lo stesso script.
- Aggiunta del deploy automatico del servizio HTTP usando AWS Beanstalk.
Licenza
GNUV3 © [In3tinct]