Taken
Übernehmen Sie Subdomains mithilfe von AWS-hängenden elastischen IPs und erhalten Sie einen funktionierenden POC für Subdomain-Übernahme.
Was Sie mit Subdomain-Übernahme alles machen können -
- Cookies stehlen, falls Cookies mit dem Domain-Attribut auf die gehackte Subdomain gesetzt sind.
- CORS-Anfragen, falls Access-Control-Allow-Origin auf die gehackte Subdomain gesetzt ist.
- OAuth-Weiterleitung, um Autorisierungscodes zu erhalten, falls die gehackte Subdomain auf die Whitelist gesetzt ist.
- CSP-Richtlinien für XSS, falls die CSP-Richtlinie diese Subdomain whitelistet.
- ClickJacking, falls X-Frame-Options diese Subdomain whitelistet.
- E-Mail-Spoofing, falls der SPF-Eintrag diese Subdomain whitelistet.
Die Automatisierungsidee ist wie folgt
- Subdomains sammeln.
- Reverse-Lookups durchführen, um nur AWS-IPs zu speichern.
- EC2-Instanz jede Minute neu starten, die öffentliche IP wird bei jedem Neustart rotiert. Vergleichen Sie sie mit Ihrer vorhandenen Liste von Subdomain-IPs und Sie haben einen funktionierenden Subdomain-Übernahme-POC.
- Per E-Mail benachrichtigen, sobald Sie eine Subdomain übernommen haben.
Zitierung
Bitte zitieren, wenn Sie diese Software in Ihren Forschungspapieren, Artikeln usw. verwenden.
@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}
}
Voraussetzungen
- AWS-Konto
- Kenntnisse in Linux und Bash-Scripting
Verwendete Technologien/Frameworks
Erstellt mit
Funktionen
- Subdomains sammeln und Reverse-Lookup durchführen, um nur AWS-IPs zu targetieren.
- IPs rotieren, indem EC2-Instanzen neu gestartet werden, bis eine IP aus der Liste gefunden wird.
- Bei einer Übereinstimmung wird diese IP/dieser Host in eine Whitelist-Datei aufgenommen, damit sie nicht erneut rotiert wird, und es wird eine E-Mail-Benachrichtigung gesendet.
Detaillierte Schritte zur Verwendung
- Erstellen Sie eine Instanz t2.medium (Angriffsmaschine), kostenlos 24*365.
- Erstellen Sie 5-10 Instanzen mit Instanztyp t3a.nano, wahrscheinlich die günstigsten (je höher die Anzahl, desto besser die Chancen, aber höhere Kosten, ca. 60 $/Monat für 10 Maschinen) in einer oder mehreren Regionen, dauert 5 Min., Sicherheitsgruppe nur auf Ihre öffentliche IP geöffnet.
- Erstellen Sie AWS-API-Schlüssel zum Stoppen/Starten von Instanzen.
- SSH zu Ihrer Angriffsmaschine.
- Installieren Sie das E-Mail-Benachrichtigungs-Tool SSMTP.
https://www.digitalocean.com/community/questions/how-to-send-emails-from-a-bash-script-using-ssmtp
- Installieren Sie die Tools subfinder und sublist3r.py zum Sammeln von Subdomains. (Oder andere Tools Ihrer Wahl, aber dann müssen Sie sie im Subdomain-Sammelskript hinzufügen.)
Folgen Sie den Schritten zur Einrichtung
https://github.com/aboul3la/Sublist3r
https://github.com/projectdiscovery/subfinder
- Klonen Sie das Taken-Repo und öffnen Sie eine Screen-Sitzung, um das Subdomain-Sammelskript auszuführen.
Wenn Sie nicht wissen, wie man Screen-Sitzungen verwendet - https://linuxize.com/post/how-to-use-linux-screen/
- Erstellen Sie eine Textdatei mit allen Domains, die Sie targetieren möchten, speichern Sie sie als "alldomains" im selben Verzeichnis und führen Sie dann das Subdomain-Sammelskript aus. Dieses Skript verwendet subfinder und sublist3r.py. Es generiert eine Liste aller Subdomains für eine oder mehrere Domains im Format "subdomain:IP" pro Zeile. Diese wird später zum Abgleich und zur Benachrichtigung verwendet.
- Öffnen Sie eine weitere Screen-Sitzung und exportieren Sie die AWS-Anmeldeinformationen in dieser Sitzung.
Exportieren der AWS-Schlüssel.
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE Der Zugriffsschlüssel für Ihr AWS-Konto.
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Der geheime Zugriffsschlüssel für Ihr AWS-Konto.
Führen Sie das Übernahmeskript in einer anderen Screen-Sitzung aus. Sie können es auch für jede Region in einer separaten Screen-Sitzung ausführen (siehe Screenshot unten).
- Jede Region in AWS hat unterschiedliche IP-Subnetze. Um Unternehmen in den USA zu targetieren, ist es wahrscheinlich, dass sie in einer der US-Regionen laufen, aber möglicherweise auch Assets in anderen Regionen wie Irland, Frankfurt usw. haben. Statt also 10 Assets in einer Region laufen zu lassen, versuchen Sie, 5 Assets in der Region zu betreiben, in der das Unternehmen seinen Hauptsitz hat, und die anderen 5 in verschiedenen Regionen.
Screenshot Beispiel -
E-Mail-Benachrichtigung -

Subdomain übernommen – was nun? -
SSH zu diesem Host, erstellen Sie eine einfache HTML-Datei und starten Sie einen Python-Server, und Sie haben einen laufenden POC.
(Ich plane, dies ebenfalls in der nächsten Version zu automatisieren)
Massenausführung
Ich habe alle öffentlichen Programme bei HackerOne und Bugcrowd sowie die Top-500-SaaS-Unternehmen von Forbes/SaaS durchsucht, ihre Subdomains gesammelt und begonnen, sie anzugreifen.
Innerhalb von 24 Stunden konnte ich 3 Subdomains übernehmen. Insgesamt 10 laufende Instanzen in 3 verschiedenen Regionen. Der Erfolg hängt stark von der Anzahl der laufenden Instanzen ab.
Da Sie mit dem Skript etwa 1440 IPs in 24 Stunden ändern, wären das mit 10 Instanzen etwa 14.400 IPs in 24 Stunden.
Referenzen
Verwendete Tools zum Sammeln von Subdomains.
https://github.com/projectdiscovery/subfinder
https://github.com/aboul3la/Sublist3r
Mitwirken
- Fehler melden.
- Verbesserungsvorschläge.
- Vorschläge für zukünftige Erweiterungen.
Zukünftige Erweiterungen
- Erstellen von EC2-Instanzen mit demselben Skript.
- Hinzufügen der automatischen Bereitstellung von HTTP-Diensten mit AWS Beanstalk.
Lizenz
GNUV3 © [In3tinct]