
Un outil d'énumération rapide pour les blobs de stockage Azure exposés publiquement.
Goblob est un outil d'énumération léger et rapide conçu pour faciliter la découverte d'informations sensibles exposées publiquement dans les blobs Azure, ce qui peut être utile à diverses fins de recherche telles que les évaluations de vulnérabilités, les tests d'intrusion et la reconnaissance.
Avertissement. Goblob émettra des goroutines individuelles pour chaque nom de conteneur à vérifier dans chaque compte de stockage, limité uniquement par le nombre maximal de goroutines concurrentes spécifié dans le flag -goroutines. Cette implémentation peut épuiser la bande passante assez rapidement dans la plupart des cas avec la wordlist par défaut, ou potentiellement vous coûter beaucoup d'argent si vous utilisez l'outil dans un environnement cloud. Assurez-vous de comprendre ce que vous faites avant d'exécuter l'outil.
go install github.com/Macmod/goblob@latest
Pour utiliser goblob, exécutez simplement la commande suivante :
$ ./goblob <storageaccountname>
Où <storageaccountname> est le compte de stockage cible dont vous souhaitez énumérer les URLs publiques de blobs Azure.
Vous pouvez également spécifier une liste de noms de comptes de stockage à vérifier :
$ ./goblob -accounts accounts.txt
Par défaut, l'outil utilise une liste de noms de conteneurs courants d'Azure Blob Storage pour construire des URLs potentielles. Cependant, vous pouvez également spécifier une liste personnalisée de noms de conteneurs à l'aide de l'option -containers. Par exemple :
$ ./goblob -accounts accounts.txt -containers wordlists/goblob-folder-names.txt
L'outil prend également en charge l'écriture des résultats dans un fichier à l'aide de l'option -output :
$ ./goblob -accounts accounts.txt -containers wordlists/goblob-folder-names.txt -output results.txt
Si vous souhaitez fournir des comptes à tester via stdin, vous pouvez également omettre complètement -accounts (ou le nom du compte) :
$ cat accounts.txt | ./goblob
Goblob est livré avec des wordlists de base qui peuvent être utilisées avec l'option -containers :
Goblob fournit plusieurs flags qui peuvent être ajustés pour améliorer le processus d'énumération :
-goroutines=N - Nombre maximal de goroutines concurrentes autorisées (par défaut : 5000).-blobs=true - Signaler l'URL de chaque blob au lieu de l'URL des conteneurs (par défaut : false).-verbose=N - Définir le niveau de verbosité (par défaut : 1, min : 0, max : 3).-maxpages=N - Nombre maximum de pages de conteneurs à parcourir à la recherche de blobs (par défaut : 20, réglez à -1 pour désactiver la limite ou à 0 pour éviter de lister les blobs et simplement vérifier si le conteneur est public).-timeout=N - Délai d'attente pour les requêtes HTTP (secondes, par défaut : ).Par exemple, si vous souhaitez simplement trouver des conteneurs exposés publiquement en utilisant de grandes listes de comptes de stockage et de noms de conteneurs, vous devez utiliser -maxpages=0 pour empêcher les goroutines de paginer les résultats. Exécutez-le ensuite à nouveau sur l'ensemble des résultats trouvés avec -blobs=true et -maxpages=-1 pour obtenir réellement les URLs des blobs.
Si, au contraire, vous souhaitez tester une petite liste de noms de conteneurs très courants par rapport à un grand ensemble de comptes de stockage, vous pouvez essayer -invertsearch=true avec -maxpages=0, afin de voir les comptes publics pour chaque nom de conteneur au lieu des noms de conteneurs pour chaque compte de stockage.
Vous pouvez également essayer de modifier -goroutines, -timeout, -maxidleconns, -maxidleconnsperhost, -maxconnsperhost et -skipssl afin d'utiliser au mieux votre bande passante et de trouver des résultats plus rapidement.
Expérimentez avec les flags pour trouver ce qui fonctionne le mieux pour vous ;-)
Les contributions sont les bienvenues en ouvrant une issue ou en soumettant une pull request.
Une visualisation intéressante des noms de conteneurs populaires trouvés dans mes expériences avec l'outil :

Si vous voulez en savoir plus sur mes expériences et le sujet en général, jetez un œil à mon article :
Licence MIT (MIT)
Copyright (c) 2023 Artur Henrique Marzano Gonzaga
L'autorisation est accordée, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le "Logiciel"), de traiter le Logiciel sans restriction, y compris, sans limitation, les droits d'utiliser, de copier, de modifier, de fusionner, de publier, de distribuer, de sous-licencier et/ou de vendre des copies du Logiciel, et de permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de copyright ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du Logiciel.
LE LOGICIEL EST FOURNI "EN L'ÉTAT", SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON. EN AUCUN CAS, LES AUTEURS OU TITULAIRES DU COPYRIGHT NE POURRONT ÊTRE TENUS RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.
90-maxidleconns=N - Paramètre de transport MaxIdleConns pour le client HTTP (par défaut : 100).-maxidleconnsperhost=N - Paramètre de transport MaxIdleConnsPerHost pour le client HTTP (par défaut : 10).-maxconnsperhost=N - Paramètre de transport MaxConnsPerHost pour le client HTTP (par défaut : 0).-skipssl=true - Ignorer la vérification SSL (par défaut : false).-invertsearch=true - Énumérer les comptes pour chaque conteneur au lieu des conteneurs pour chaque compte (par défaut : false).