
Ein schnelles Tool zur Aufzählung öffentlich zugänglicher Azure Storage Blobs.
Goblob ist ein leichtgewichtiges und schnelles Aufzählungstool, das entwickelt wurde, um die Entdeckung sensibler Informationen zu unterstützen, die öffentlich in Azure-Blobs zugänglich sind. Es kann für verschiedene Forschungszwecke nützlich sein, wie z. B. Schwachstellenbewertungen, Penetrationstests und Reconnaissance.
Warnung. Goblob startet für jeden Containernamen, der in jedem Speicherkonto überprüft werden soll, individuelle Goroutinen, die nur durch die maximale Anzahl gleichzeitiger Goroutinen im Flag -goroutines begrenzt sind. Diese Implementierung kann in den meisten Fällen mit der Standard-Wortliste sehr schnell die Bandbreite erschöpfen oder Ihnen potenziell viel Geld kosten, wenn Sie das Tool in einer Cloud-Umgebung nutzen. Stellen Sie sicher, dass Sie verstehen, was Sie tun, bevor Sie das Tool ausführen.
go install github.com/Macmod/goblob@latest
Um goblob zu verwenden, führen Sie einfach den folgenden Befehl aus:
$ ./goblob <storageaccountname>
Wobei <storageaccountname> das Zielspeicherkonto ist, dessen öffentliche Azure-Blob-Speicher-URLs aufgezählt werden sollen.
Sie können auch eine Liste von Speicherkontonamen zur Überprüfung angeben:
$ ./goblob -accounts accounts.txt
Standardmäßig verwendet das Tool eine Liste gängiger Azure-Blob-Speicher-Containernamen, um potenzielle URLs zu erstellen. Sie können jedoch auch eine benutzerdefinierte Liste von Containernamen mit der Option -containers angeben. Zum Beispiel:
$ ./goblob -accounts accounts.txt -containers wordlists/goblob-folder-names.txt
Das Tool unterstützt auch die Ausgabe der Ergebnisse in eine Datei mit der Option -output:
$ ./goblob -accounts accounts.txt -containers wordlists/goblob-folder-names.txt -output results.txt
Wenn Sie Konten über stdin testen möchten, können Sie -accounts (oder den Kontonamen) auch ganz weglassen:
$ cat accounts.txt | ./goblob
Goblob enthält grundlegende Wortlisten, die mit der Option -containers verwendet werden können:
Goblob bietet mehrere Flags, die angepasst werden können, um den Aufzählungsprozess zu verbessern:
-goroutines=N – Maximale Anzahl gleichzeitiger Goroutinen (Standard: 5000).-blobs=true – Gibt die URL jedes Blobs anstelle der URLs der Container aus (Standard: false).-verbose=N – Legt die Ausführlichkeitsstufe fest (Standard: 1, min: 0, max: 3).-maxpages=N – Maximale Anzahl von Containerseiten, die nach Blobs durchsucht werden (Standard: 20, setzen Sie -1 um das Limit aufzuheben oder 0, um Blobs gar nicht aufzulisten und nur zu prüfen, ob der Container öffentlich ist).-timeout=N – Timeout für HTTP-Anfragen (Sekunden, Standard: 90).Wenn Sie zum Beispiel nur öffentlich zugängliche Container mit großen Listen von Speicherkonten und Containernamen finden möchten, sollten Sie -maxpages=0 verwenden, um zu verhindern, dass die Goroutinen die Ergebnisse paginieren. Führen Sie es dann erneut auf den gefundenen Ergebnissen mit -blobs=true und -maxpages=-1 aus, um tatsächlich die URLs der Blobs zu erhalten.
Wenn Sie hingegen eine kleine Liste sehr verbreiteter Containernamen gegen eine große Anzahl von Speicherkonten testen möchten, könnten Sie -invertsearch=true mit -maxpages=0 versuchen, um die öffentlichen Konten für jeden Containernamen zu sehen, anstatt die Containernamen für jedes Speicherkonto.
Sie könnten auch versuchen, -goroutines, -timeout, -maxidleconns, -maxidleconnsperhost, -maxconnsperhost und -skipssl zu ändern, um Ihre Bandbreite optimal zu nutzen und Ergebnisse schneller zu finden.
Experimentieren Sie mit den Flags, um herauszufinden, was für Sie am besten funktioniert ;-)
Beiträge sind willkommen durch Eröffnen eines Issues oder Einreichen eines Pull Requests.
Eine interessante Visualisierung beliebter Containernamen aus meinen Experimenten mit dem Tool:

Wenn Sie mehr über meine Experimente und das Thema im Allgemeinen erfahren möchten, werfen Sie einen Blick auf meinen Artikel:
Die MIT-Lizenz (MIT)
Copyright (c) 2023 Artur Henrique Marzano Gonzaga
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die "Software") erhält, kostenlos die Erlaubnis erteilt, die Software ohne Einschränkung zu nutzen, einschließlich und ohne Einschränkung der Rechte zur Verwendung, Vervielfältigung, Änderung, Zusammenführung, Veröffentlichung, Weiterverteilung, Unterlizenzierung und/oder zum Verkauf von Kopien der Software, und Personen, denen die Software zur Verfügung gestellt wird, diese Rechte zu gewähren, vorbehaltlich der folgenden Bedingungen:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD "WIE BESEHEN" ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHT-INHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE VERPFLICHTUNGEN, OB AUS VERTRAG, UNERLAUBTER HANDLUNG ODER ANDERWEITIG, DIE AUS ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN GESCHÄFTEN MIT DER SOFTWARE ENTSTEHEN.
-maxidleconns=N – MaxIdleConns-Transportparameter für den HTTP-Client (Standard: 100).-maxidleconnsperhost=N – MaxIdleConnsPerHost-Transportparameter für den HTTP-Client (Standard: 10).-maxconnsperhost=N – MaxConnsPerHost-Transportparameter für den HTTP-Client (Standard: 0).-skipssl=true – SSL-Überprüfung überspringen (Standard: false).-invertsearch=true – Zählt Konten für jeden Container aufstatt Container für jedes Konto (Standard: false).