Taken
Prenez le contrôle de sous-domaines en utilisant des adresses IP élastiques AWS dans le vide et obtenez une POC fonctionnelle pour la prise de contrôle de sous-domaines.
Ce que vous pouvez faire avec la prise de contrôle de sous-domaine :
- Vol de cookies, si les cookies sont définis avec l'attribut de domaine pointant vers le sous-domaine piraté.
- Requêtes CORS, si Access-Control-Allow-Origin est défini sur le sous-domaine piraté.
- Redirection OAuth pour obtenir un code d'autorisation, si le sous-domaine piraté est dans la liste blanche.
- Politiques CSP pour XSS, si la politique CSP autorise ce sous-domaine.
- ClickJacking, si X-Frame-Options autorise ce sous-domaine.
- Emails usurpés, si l'enregistrement SPF autorise ce sous-domaine.
L'idée d'automatisation est la suivante :
- Obtenir des sous-domaines.
- Effectuer des recherches inversées pour ne conserver que les adresses IP AWS.
- Redémarrer l'instance EC2 chaque minute et l'IP publique change à chaque redémarrage. Faites correspondre avec votre liste existante d'IP de sous-domaines et vous obtenez une POC de prise de contrôle de sous-domaine fonctionnelle.
- Notifier par email dès que vous prenez le contrôle d'un sous-domaine.
Citation
Veuillez citer, si vous utilisez ce logiciel dans vos articles de recherche, articles, etc.
@software{Agrawal_Taken_AWS_Subdomain_2020,
author = {Agrawal, Vaibhav},
month = oct,
title = {{Taken: AWS Subdomain TakeOver at Scale}},
url = {https://github.com/In3tinct/Taken},
version = {1.0},
year = {2020}
}
Prérequis
- Compte AWS
- Connaissance de Linux et du script Bash
Technologie/cadre utilisé
Construit avec
Fonctionnalités
- Rassembler les sous-domaines et effectuer une recherche inversée pour ne cibler que les IP AWS.
- Faire tourner les IP en redémarrant l'instance EC2 jusqu'à ce qu'elle corresponde à l'une des IP de la liste.
- Lorsqu'une correspondance est trouvée, cette IP/hôte est ajoutée dans un fichier de liste blanche, afin qu'elle ne soit plus réaffectée, et une notification par email est envoyée.
Étapes détaillées pour l'utilisation
- Créez une instance t2.medium (machine d'attaque), gratuite 24h/24 et 7j/7.
- Créez 5 à 10 instances de type t3a.nano, probablement les moins chères (plus le nombre est élevé, meilleures sont les chances mais plus les coûts sont élevés – environ 60 $/mois pour 10 machines) dans une ou plusieurs régions, cela prend 5 minutes, avec un groupe de sécurité ouvert uniquement à votre IP publique.
- Créez des clés API AWS pour arrêter/démarrer les instances.
- Connectez-vous en SSH à votre machine d'attaque.
- Installez l'utilitaire de notification par email SSMTP.
https://www.digitalocean.com/community/questions/how-to-send-emails-from-a-bash-script-using-ssmtp
- Installez les outils subfinder et sublist3r.py pour collecter les sous-domaines. (Ou tout autre outil de votre choix, mais il faudra alors l'ajouter au script de collecte de sous-domaines.)
Suivez les étapes pour les configurer :
https://github.com/aboul3la/Sublist3r
https://github.com/projectdiscovery/subfinder
- Clonez le dépôt Taken et ouvrez une session screen pour exécuter le script de collecte de sous-domaines.
Si vous ne savez pas utiliser une session screen : https://linuxize.com/post/how-to-use-linux-screen/
- Créez un fichier texte avec tous les domaines que vous souhaitez cibler, sauvegardez-le sous le nom "alldomains" dans le même répertoire, puis exécutez le script de collecte de sous-domaines. Ce script utilise subfinder et sublist3r.py. Il générera une liste de tous les sous-domaines pour un ou plusieurs domaines au format "sous-domaine:IP" sur chaque ligne. Cette liste sera ensuite utilisée pour la correspondance et la notification.
- Ouvrez une autre session screen et exportez les identifiants AWS dans cette session.
Exportation des clés AWS.
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE La clé d'accès pour votre compte AWS.
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY La clé d'accès secrète pour votre compte AWS.
Exécutez le script de prise de contrôle dans une session screen différente. Vous pouvez également l'exécuter pour chaque région dans une session screen différente (voir la capture d'écran ci-dessous).
– Chaque région AWS possède des sous-réseaux IP différents. Pour cibler des entreprises situées aux États-Unis, il y a de fortes chances qu'elles fonctionnent dans l'une des régions américaines, mais elles peuvent également avoir des actifs dans d'autres régions comme l'Irlande, Francfort, etc. Ainsi, au lieu d'exécuter 10 actifs dans une seule région, essayez d'en exécuter 5 dans la région où se trouve le siège de l'entreprise et les 5 autres dans différentes régions.
Exemple de session screen -
Notification par email -

Vous avez pris le contrôle d'un sous-domaine, que faire ensuite ? -
Connectez-vous en SSH à cet hôte, créez un fichier HTML simple et démarrez un serveur Python, vous avez une POC fonctionnelle.
(Je prévois d'automatiser cela également dans la prochaine version.)
Exécution en masse
J'ai parcouru tous les programmes publics de HackerOne et Bugcrowd ainsi que les 500 premières entreprises SaaS de Forbes/SaaS, collecté leurs sous-domaines et commencé à cibler.
En 24 heures, j'ai pu prendre le contrôle de 3 sous-domaines. Instances en cours d'exécution : 10 au total dans 3 régions différentes. Le taux de réussite dépend fortement du nombre d'instances en cours d'exécution.
Avec le script, vous changez environ 1440 IP en 24 heures, ce qui ferait environ 14400 IP avec 10 instances en 24 heures.
Références
Outils utilisés pour collecter les sous-domaines.
https://github.com/projectdiscovery/subfinder
https://github.com/aboul3la/Sublist3r
Contribuer
- Signaler des bugs.
- Suggestions d'amélioration.
- Suggestions pour des extensions futures.
Extensions futures
- Création d'instances EC2 en utilisant le même script.
- Ajout du déploiement automatique du service HTTP à l'aide d'AWS Beanstalk.
Licence
GNUV3 © [In3tinct]