AWS - S3 Unauthenticated Enum
Bacs publics S3
Un bac est considéré comme "public" si n'importe quel utilisateur peut lister le contenu du bac, et "privé" si le contenu du bac ne peut être listé ou écrit que par certains utilisateurs.
Les entreprises peuvent avoir des permissions de bac mal configurées donnant accès soit à tout ou à tout le monde authentifié dans AWS dans n'importe quel compte (donc à n'importe qui). Notez que même avec de telles mauvaises configurations, certaines actions pourraient ne pas pouvoir être effectuées car les bacs pourraient avoir leurs propres listes de contrôle d'accès (ACL).
Apprenez-en davantage sur la mauvaise configuration AWS-S3 ici : http://flaws.cloud et http://flaws2.cloud/
Recherche de bacs AWS
Différentes méthodes pour trouver quand une page web utilise AWS pour stocker des ressources :
Énumération & OSINT :
Utilisation du plugin de navigateur wappalyzer
En utilisant burp (spidering le web) ou en naviguant manuellement sur la page, toutes les ressources chargées seront enregistrées dans l'historique.
Vérifiez les ressources dans des domaines comme :
Vérifiez les CNAMES car
resources.domain.com
pourrait avoir le CNAMEbucket.s3.amazonaws.com
Consultez https://buckets.grayhatwarfare.com, un site web avec des bacs ouverts déjà découverts.
Le nom du bac et le nom de domaine du bac doivent être les mêmes.
flaws.cloud est à l'IP 52.92.181.107 et si vous y allez, il vous redirige vers https://aws.amazon.com/s3/. De plus,
dig -x 52.92.181.107
donnes3-website-us-west-2.amazonaws.com
.Pour vérifier s'il s'agit d'un bac, vous pouvez également visiter https://flaws.cloud.s3.amazonaws.com/.
Brute-Force
Vous pouvez trouver des bacs en forcant le nom lié à l'entreprise que vous testez :
https://github.com/jordanpotti/AWSBucketDump (Contient une liste avec des noms de bacs potentiels)
Butin des seaux S3
Pour les seaux S3 ouverts, BucketLoot peut automatiquement rechercher des informations intéressantes.
Trouver la région
Vous pouvez trouver toutes les régions prises en charge par AWS dans https://docs.aws.amazon.com/general/latest/gr/s3.html
Par DNS
Vous pouvez obtenir la région d'un seau avec un dig
et nslookup
en effectuant une requête DNS de l'IP découverte:
Vérifiez que le domaine résolu contient le mot "website".
Vous pouvez accéder au site web statique en allant sur : flaws.cloud.s3-website-us-west-2.amazonaws.com
ou vous pouvez accéder au bucket en visitant : flaws.cloud.s3-us-west-2.amazonaws.com
En essayant
Si vous essayez d'accéder à un bucket, mais dans le nom de domaine vous spécifiez une autre région (par exemple le bucket est dans bucket.s3.amazonaws.com
mais vous essayez d'accéder à bucket.s3-website-us-west-2.amazonaws.com
, alors vous serez redirigé vers l'emplacement correct :
Énumération du bucket
Pour tester l'ouverture du bucket, un utilisateur peut simplement entrer l'URL dans son navigateur web. Un bucket privé répondra par "Accès refusé". Un bucket public listera les premiers 1 000 objets qui ont été stockés.
Ouvert à tous :
Privé :
Vous pouvez également vérifier cela avec la CLI :
Si le bucket n'a pas de nom de domaine, lors de la tentative d'énumération, ne mettre que le nom du bucket et non le domaine complet d'AWSs3. Exemple : s3://<NOMDUBUCKET>
Modèle d'URL publique
Obtenir l'identifiant du compte à partir du Bucket public
Il est possible de déterminer un compte AWS en exploitant la nouvelle clé de condition de politique S3:ResourceAccount. Cette condition restreint l'accès en fonction du Bucket S3 dans lequel se trouve un compte (d'autres politiques basées sur les comptes restreignent en fonction du compte dans lequel se trouve le principal demandeur). Et comme la politique peut contenir des jokers, il est possible de trouver le numéro de compte un chiffre à la fois.
Cet outil automatise le processus :
Cette technique fonctionne également avec les URL de la passerelle API, les URL de Lambda, les ensembles de données Data Exchange et même pour obtenir la valeur des tags (si vous connaissez la clé du tag). Vous pouvez trouver plus d'informations dans la recherche originale et l'outil conditional-love pour automatiser cette exploitation.
Références
Dernière mise à jour