
Una herramienta para identificar dominios de CloudFront mal configurados
CloudFrunt es una herramienta para identificar dominios de CloudFront mal configurados.
CloudFront es una Red de Entrega de Contenido (CDN) proporcionada por Amazon Web Services (AWS). Los usuarios de CloudFront crean "distribuciones" que sirven contenido desde fuentes específicas (un bucket de S3, por ejemplo).
Cada distribución de CloudFront tiene un endpoint único para que los usuarios apunten sus registros DNS (ej. d111111abcdef8.cloudfront.net). Todos los dominios que utilizan una distribución específica deben estar listados en el campo "Nombres de Dominio Alternativos (CNAMEs)" en las opciones de dicha distribución.
Cuando un endpoint de CloudFront recibe una solicitud, NO sirve automáticamente contenido de la distribución correspondiente. En su lugar, CloudFront utiliza el encabezado HOST de la solicitud para determinar qué distribución utilizar. Esto significa dos cosas:
Si el encabezado HOST no coincide con una entrada en el campo "Nombres de Dominio Alternativos (CNAMEs)" de la distribución prevista, la solicitud fallará.
Cualquier otra distribución que contenga el dominio específico en el encabezado HOST recibirá la solicitud y responderá normalmente.
Esto es lo que permite que los dominios sean secuestrados. Hay muchos casos en los que un usuario de CloudFront no lista todos los dominios necesarios que podrían recibirse en el encabezado HOST. Por ejemplo:
Esto significa que el endpoint único que CloudFront vincula a una única distribución es efectivamente irrelevante. Una solicitud a un subdominio específico de CloudFront no está limitada a la distribución con la que está asociado.
ESTE SOFTWARE ES PROPORCIONADO POR EL AUTOR "TAL CUAL" Y SE RECHAZA CUALQUIER GARANTÍA EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO LIMITADO A, LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD E IDONEIDAD PARA UN PROPÓSITO PARTICULAR. EN NINGÚN CASO EL AUTOR SERÁ RESPONSABLE POR CUALQUIER DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, EJEMPLAR O CONSECUENTE (INCLUYENDO, PERO NO LIMITADO A, LA ADQUISICIÓN DE BIENES O SERVICIOS SUSTITUTOS; PÉRDIDA DE USO, DATOS O BENEFICIOS; O INTERRUPCIÓN DEL NEGOCIO) YA SEA POR CUALQUIER CAUSA Y BAJO CUALQUIER TEORÍA DE RESPONSABILIDAD, YA SEA POR CONTRATO, RESPONSABILIDAD ESTRICTA O AGRAVIO (INCLUYENDO NEGLIGENCIA O DE OTRO MODO) QUE SURJA DE CUALQUIER FORMA DEL USO DE ESTE SOFTWARE, INCLUSO SI SE ADVIERTE DE LA POSIBILIDAD DE DICHOS DAÑOS.
$ git clone --recursive https://github.com/MindPointGroup/cloudfrunt
$ pip install -r requirements.txt
CloudFrunt espera que el script dnsrecon esté clonado en un subdirectorio llamado dnsrecon.
cloudfrunt.py [-h] [-l TARGET_FILE] [-d DOMAINS] [-o ORIGIN] [-i ORIGIN_ID] [-s] [-N]
-h, --help Show this message and exit
-s, --save Save the results to results.txt
-N, --no-dns Do not use dnsrecon to expand scope
-l, --target-file TARGET_FILE File containing a list of domains (one per line)
-d, --domains DOMAINS Comma-separated list of domains to scan
-o, --origin ORIGIN Add vulnerable domains to new distributions with this origin
-i, --origin-id ORIGIN_ID The origin ID to use with new distributions
$ python cloudfrunt.py -o cloudfrunt.com.s3-website-us-east-1.amazonaws.com -i S3-cloudfrunt -l list.txt
CloudFrunt v1.0.4
[+] Enumerating DNS entries for google.com
[-] No issues found for google.com
[+] Enumerating DNS entries for disloops.com
[+] Found CloudFront domain --> cdn.disloops.com
[+] Found CloudFront domain --> test.disloops.com
[-] Potentially misconfigured CloudFront domains:
[#] --> test.disloops.com
[+] Created new CloudFront distribution EXBC12DE3F45G
[+] Added test.disloops.com to CloudFront distribution EXBC12DE3F45G