
Ein Tool zur Identifizierung falsch konfigurierter CloudFront-Domains
CloudFrunt ist ein Werkzeug zur Identifizierung falsch konfigurierter CloudFront-Domänen.
CloudFront ist ein Content Delivery Network (CDN), das von Amazon Web Services (AWS) bereitgestellt wird. CloudFront-Benutzer erstellen "Distributionen", die Inhalte von bestimmten Quellen (z. B. einem S3-Bucket) bereitstellen.
Jede CloudFront-Distribution hat einen eindeutigen Endpunkt, auf den Benutzer ihre DNS-Einträge verweisen können (z. B. d111111abcdef8.cloudfront.net). Alle Domänen, die eine bestimmte Distribution verwenden, müssen im Feld "Alternate Domain Names (CNAMEs)" in den Optionen dieser Distribution aufgeführt sein.
Wenn ein CloudFront-Endpunkt eine Anfrage erhält, stellt er NICHT automatisch Inhalte von der entsprechenden Distribution bereit. Stattdessen verwendet CloudFront den HOST-Header der Anfrage, um zu bestimmen, welche Distribution verwendet werden soll. Das bedeutet zwei Dinge:
Wenn der HOST-Header nicht mit einem Eintrag im Feld "Alternate Domain Names (CNAMEs)" der vorgesehenen Distribution übereinstimmt, schlägt die Anfrage fehl.
Jede andere Distribution, die die spezifische Domäne im HOST-Header enthält, empfängt die Anfrage und antwortet normal darauf.
Das ermöglicht das Hijacking der Domänen. Es gibt viele Fälle, in denen ein CloudFront-Benutzer es versäumt, alle notwendigen Domänen aufzulisten, die im HOST-Header empfangen werden könnten. Zum Beispiel:
Das bedeutet, dass der eindeutige Endpunkt, den CloudFront an eine einzelne Distribution bindet, im Grunde bedeutungslos ist. Eine Anfrage an eine bestimmte CloudFront-Subdomain ist nicht auf die Distribution beschränkt, mit der sie verknüpft ist.
DIESE SOFTWARE WIRD VOM AUTOR "WIE BESEHEN" BEREITGESTELLT, UND JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNGEN, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF, DIE STILLSCHWEIGENDEN GEWÄHRLEISTUNGEN DER MARKTGÄNGIGKEIT UND DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK, WERDEN ABGELEHNT. IN KEINEM FALL HAFTET DER AUTOR FÜR DIREKTE, INDIREKTE, BEILÄUFIG ENTSTANDENE, SPEZIELLE, EXEMPLARISCHE ODER FOLGESCHÄDEN (EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF, BESCHAFFUNG VON ERSATZWAREN ODER -DIENSTLEISTUNGEN; NUTZUNGSAUSFALL, DATENVERLUST ODER GEWINNVERLUST; ODER GESCHÄFTSUNTERBRECHUNG), WIE AUCH IMMER VERURSACHT UND UNTER JEGLICHER HAFTUNGSTHEORIE, OB AUFGRUND VON VERTRAG, VERSCHULDENSUNABHÄNGIGER HAFTUNG ODER UNERLAUBTER HANDLUNG (EINSCHLIESSLICH FAHRLÄSSIGKEIT ODER ANDERWEITIG), DIE AUS DER NUTZUNG DIESER SOFTWARE ENTSTEHEN, SELBST WENN AUF DIE MÖGLICHKEIT SOLCHER SCHÄDEN HINGEWIESEN WURDE.
$ git clone --recursive https://github.com/MindPointGroup/cloudfrunt
$ pip install -r requirements.txt
CloudFrunt erwartet, dass das dnsrecon-Skript in ein Unterverzeichnis namens dnsrecon geklont wird.
cloudfrunt.py [-h] [-l TARGET_FILE] [-d DOMAINS] [-o ORIGIN] [-i ORIGIN_ID] [-s] [-N]
-h, --help Diese Nachricht anzeigen und beenden
-s, --save Ergebnisse in results.txt speichern
-N, --no-dns Kein dnsrecon verwenden, um den Umfang zu erweitern
-l, --target-file TARGET_FILE Datei mit einer Liste von Domänen (eine pro Zeile)
-d, --domains DOMAINS Kommagetrennte Liste der zu scanenden Domänen
-o, --origin ORIGIN Gefährdete Domänen zu neuen Distributionen mit diesem Ursprung hinzufügen
-i, --origin-id ORIGIN_ID Die Ursprungs-ID, die mit neuen Distributionen verwendet werden soll
$ python cloudfrunt.py -o cloudfrunt.com.s3-website-us-east-1.amazonaws.com -i S3-cloudfrunt -l list.txt
CloudFrunt v1.0.4
[+] Enumerating DNS entries for google.com
[-] No issues found for google.com
[+] Enumerating DNS entries for disloops.com
[+] Found CloudFront domain --> cdn.disloops.com
[+] Found CloudFront domain --> test.disloops.com
[-] Potentially misconfigured CloudFront domains:
[#] --> test.disloops.com
[+] Created new CloudFront distribution EXBC12DE3F45G
[+] Added test.disloops.com to CloudFront distribution EXBC12DE3F45G