AWS - S3 Unauthenticated Enum
Bucket Pubblici di S3
Un bucket è considerato "pubblico" se qualsiasi utente può elencare i contenuti del bucket, e "privato" se i contenuti del bucket possono essere elencati o scritti solo da determinati utenti.
Le aziende potrebbero avere permessi dei bucket configurati in modo errato dando accesso a tutto o a tutti gli utenti autenticati in AWS in qualsiasi account (quindi a chiunque). Nota che anche con tali configurazioni errate alcune azioni potrebbero non essere eseguibili poiché i bucket potrebbero avere le proprie liste di controllo degli accessi (ACL).
Scopri di più sulle errate configurazioni di AWS-S3 qui: http://flaws.cloud e http://flaws2.cloud/
Trovare i Bucket AWS
Metodi diversi per trovare quando una pagina web sta utilizzando AWS per memorizzare alcune risorse:
Enumerazione & OSINT:
Utilizzando il plugin del browser wappalyzer
Utilizzando burp (spidering del web) o navigando manualmente attraverso la pagina tutti i risorse caricati verranno salvati nella Cronologia.
Controlla le risorse nei domini come:
Controlla i CNAMES poiché
resources.domain.com
potrebbe avere il CNAMEbucket.s3.amazonaws.com
Controlla https://buckets.grayhatwarfare.com, un sito web con già bucket aperti scoperti.
Il nome del bucket e il nome di dominio del bucket devono essere gli stessi.
flaws.cloud è in IP 52.92.181.107 e se vai lì ti reindirizza a https://aws.amazon.com/s3/. Inoltre,
dig -x 52.92.181.107
restituisces3-website-us-west-2.amazonaws.com
.Per verificare che sia un bucket puoi anche visitare https://flaws.cloud.s3.amazonaws.com/.
Brute-Force
Puoi trovare i bucket forzando il nome relativo all'azienda che stai testando:
https://github.com/jordanpotti/AWSBucketDump (Contiene un elenco con potenziali nomi di bucket)
Saccheggia i Bucket S3
Dati i bucket S3 aperti, BucketLoot può automaticamente cercare informazioni interessanti.
Trova la Regione
Puoi trovare tutte le regioni supportate da AWS su https://docs.aws.amazon.com/general/latest/gr/s3.html
Tramite DNS
Puoi ottenere la regione di un bucket con un dig
e nslookup
facendo una richiesta DNS dell'IP scoperto:
Verifica che il dominio risolto contenga la parola "sito web".
Puoi accedere al sito web statico andando su: flaws.cloud.s3-website-us-west-2.amazonaws.com
oppure puoi accedere al bucket visitando: flaws.cloud.s3-us-west-2.amazonaws.com
Provando
Se provi ad accedere a un bucket, ma nel nome di dominio specificato indichi un'altra regione (ad esempio il bucket è in bucket.s3.amazonaws.com
ma provi ad accedere a bucket.s3-website-us-west-2.amazonaws.com
), verrai indirizzato alla posizione corretta:
Enumerazione del bucket
Per testare l'apertura del bucket, un utente può semplicemente inserire l'URL nel proprio browser web. Un bucket privato risponderà con "Accesso negato". Un bucket pubblico elencherà i primi 1.000 oggetti memorizzati.
Aperto a tutti:
Privato:
Puoi anche verificare ciò con la cli:
Se il bucket non ha un nome di dominio, quando si cerca di enumerarlo, inserire solo il nome del bucket e non l'intero dominio AWSs3. Esempio: s3://<NOME_BUCKET>
Modello di URL pubblico
Ottenere l'ID dell'account da Bucket pubblici
È possibile determinare un account AWS sfruttando il nuovo S3:ResourceAccount
Policy Condition Key. Questa condizione limita l'accesso in base al bucket S3 in cui si trova un account (altri criteri basati sull'account del principale richiedente limitano in base all'account in cui si trova).
E poiché la policy può contenere caratteri jolly, è possibile trovare il numero dell'account solo un numero alla volta.
Questo strumento automatizza il processo:
Questo metodo funziona anche con gli URL del Gateway API, gli URL delle Lambda, i set di dati di Data Exchange e persino per ottenere il valore dei tag (se si conosce la chiave del tag). Puoi trovare ulteriori informazioni nella ricerca originale e nello strumento conditional-love per automatizzare questa vulnerabilità.
Riferimenti
Last updated