
Uno strumento di enumerazione veloce per blob di archiviazione Azure esposti pubblicamente.
Goblob è uno strumento di enumerazione leggero e veloce progettato per aiutare nella scoperta di informazioni sensibili esposte pubblicamente nei blob di Azure, che può essere utile per vari scopi di ricerca come valutazioni delle vulnerabilità, test di penetrazione e ricognizione.
Attenzione. Goblob creerà goroutine individuali per ogni nome di contenitore da verificare in ogni account di archiviazione, limitato solo dal numero massimo di goroutine concorrenti specificato nel flag -goroutines. Questa implementazione può esaurire rapidamente la larghezza di banda nella maggior parte dei casi con la wordlist predefinita, o potenzialmente costarti molto denaro se stai utilizzando lo strumento in un ambiente cloud. Assicurati di capire cosa stai facendo prima di eseguire lo strumento.
go install github.com/Macmod/goblob@latest
Per utilizzare goblob esegui semplicemente il seguente comando:
$ ./goblob <storageaccountname>
Dove <storageaccountname> è l'account di archiviazione di destinazione su cui enumerare gli URL pubblici di Azure Blob Storage.
Puoi anche specificare un elenco di nomi di account di archiviazione da verificare:
$ ./goblob -accounts accounts.txt
Per impostazione predefinita, lo strumento utilizzerà un elenco di nomi di contenitori comuni di Azure Blob Storage per costruire potenziali URL. Tuttavia, puoi anche specificare un elenco personalizzato di nomi di contenitori utilizzando l'opzione -containers. Ad esempio:
$ ./goblob -accounts accounts.txt -containers wordlists/goblob-folder-names.txt
Lo strumento supporta anche l'output dei risultati in un file utilizzando l'opzione -output:
$ ./goblob -accounts accounts.txt -containers wordlists/goblob-folder-names.txt -output results.txt
Se vuoi fornire account da testare tramite stdin puoi anche omettere del tutto -accounts (o il nome dell'account):
$ cat accounts.txt | ./goblob
Goblob include wordlist di base che possono essere utilizzate con l'opzione -containers:
Goblob fornisce diversi flag che possono essere regolati per migliorare il processo di enumerazione:
-goroutines=N - Numero massimo di goroutine concorrenti consentito (predefinito: 5000).-blobs=true - Riporta l'URL di ogni blob invece dell'URL dei contenitori (predefinito: false).-verbose=N - Imposta il livello di verbosità (predefinito: 1, min: 0, max: 3).-maxpages=N - Massimo di pagine di contenitori da attraversare cercando blob (predefinito: 20, imposta -1 per disabilitare il limite o 0 per evitare del tutto di elencare i blob e verificare solo se il contenitore è pubblico).-timeout=N - Timeout per le richieste HTTP (secondi, predefinito: 90)Ad esempio, se vuoi solo trovare contenitori esposti pubblicamente utilizzando grandi elenchi di account di archiviazione e nomi di contenitori, dovresti usare -maxpages=0 per evitare che le goroutine paginino i risultati. Quindi esegui di nuovo lo strumento sul set di risultati trovati con -blobs=true e -maxpages=-1 per ottenere effettivamente gli URL dei blob.
Se, d'altra parte, vuoi testare una piccola lista di nomi di contenitori molto popolari contro un grande insieme di account di archiviazione, potresti provare -invertsearch=true con -maxpages=0, per vedere gli account pubblici per ogni nome di contenitore invece dei nomi di contenitore per ogni account di archiviazione.
Potresti anche provare a modificare -goroutines, -timeout, -maxidleconns, -maxidleconnsperhost, -maxconnsperhost e -skipssl per utilizzare al meglio la tua larghezza di banda e trovare risultati più velocemente.
Sperimenta con i flag per trovare ciò che funziona meglio per te ;-)
I contributi sono benvenuti aprendo un issue o inviando una pull request.
Una visualizzazione interessante dei nomi di contenitori popolari trovati nei miei esperimenti con lo strumento:

Se vuoi saperne di più sui miei esperimenti e sull'argomento in generale, dai un'occhiata al mio articolo:
La Licenza MIT (MIT)
Copyright (c) 2023 Artur Henrique Marzano Gonzaga
Con la presente viene concessa, gratuitamente, a qualsiasi persona che ottiene una copia di questo software e dei file di documentazione associati (il "Software"), l'autorizzazione a gestire il Software senza restrizioni, inclusi, senza limitazione, i diritti di utilizzare, copiare, modificare, unire, pubblicare, distribuire, concedere in sottolicenza e/o vendere copie del Software, e di consentire alle persone a cui il Software è fornito di fare ciò, alle seguenti condizioni:
Il suddetto avviso di copyright e questo avviso di permesso devono essere inclusi in tutte le copie o parti sostanziali del Software.
IL SOFTWARE VIENE FORNITO "COSÌ COM'È", SENZA GARANZIA DI ALCUN TIPO, ESPRESSA O IMPLICITA, INCLUSE MA NON LIMITATE ALLE GARANZIE DI COMMERCIABILITÀ, IDONEITÀ PER UN PARTICOLARE SCOPO E NON VIOLAZIONE. IN NESSUN CASO GLI AUTORI O I TITOLARI DEL COPYRIGHT SARANNO RESPONSABILI PER QUALSIASI RECLAMO, DANNO O ALTRA RESPONSABILITÀ, SIA IN UN'AZIONE CONTRATTUALE, ILLECITO O ALTRIMENTI, DERIVANTE DA, O IN CONNESSIONE CON IL SOFTWARE O L'USO O ALTRI RAPPORTI NEL SOFTWARE.
-maxidleconns=N - Parametro di trasporto MaxIdleConns per il client HTTP (predefinito: 100)-maxidleconnsperhost=N - Parametro di trasporto MaxIdleConnsPerHost per il client HTTP (predefinito: 10)-maxconnsperhost=N - Parametro di trasporto MaxConnsPerHost per il client HTTP (predefinito: 0)-skipssl=true - Salta la verifica SSL (predefinito: false)-invertsearch=true - Enumera gli account per ogni contenitore invece dei contenitori per ogni account (predefinito: false)