
Инструмент для выявления неправильно настроенных доменов CloudFront
CloudFrunt — это инструмент для выявления неверно настроенных доменов CloudFront.
CloudFront — это сеть доставки контента (CDN), предоставляемая Amazon Web Services (AWS). Пользователи CloudFront создают «распределения», которые обслуживают контент из определённых источников (например, корзины S3).
Каждое распределение CloudFront имеет уникальную конечную точку, на которую пользователи направляют свои DNS-записи (например, d111111abcdef8.cloudfront.net). Все домены, использующие конкретное распределение, должны быть перечислены в поле «Alternate Domain Names (CNAMEs)» в настройках этого распределения.
Когда конечная точка CloudFront получает запрос, она НЕ автоматически обслуживает контент из соответствующего распределения. Вместо этого CloudFront использует заголовок HOST запроса для определения того, какое распределение использовать. Это означает две вещи:
Если заголовок HOST не соответствует записи в поле «Alternate Domain Names (CNAMEs)» предполагаемого распределения, запрос завершится неудачей.
Любое другое распределение, содержащее конкретный домен в заголовке HOST, получит запрос и ответит на него в обычном режиме.
Именно это позволяет захватывать домены. Существует множество случаев, когда пользователь CloudFront не перечисляет все необходимые домены, которые могут быть получены в заголовке HOST. Например:
Это означает, что уникальная конечная точка, которую CloudFront привязывает к одному распределению, фактически бессмысленна. Запрос к одному конкретному поддомену CloudFront не ограничивается тем распределением, с которым он связан.
ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ АВТОРОМ «КАК ЕСТЬ» И ЛЮБЫЕ ЯВНЫЕ ИЛИ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПОДРАЗУМЕВАЕМЫМИ ГАРАНТИЯМИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ, ОТРИЦАЮТСЯ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОР НЕ НЕСЁТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЙ ПРЯМОЙ, КОСВЕННЫЙ, СЛУЧАЙНЫЙ, ОСОБЫЙ, ШТРАФНОЙ ИЛИ ПОСЛЕДУЮЩИЙ УЩЕРБ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ЗАМЕНУ ТОВАРОВ ИЛИ УСЛУГ; ПОТЕРЮ ДАННЫХ, ПРИБЫЛИ ИЛИ ПРЕРЫВАНИЕ БИЗНЕСА), КАК БЫ ОН НИ БЫЛ ВЫЗВАН И НА ЛЮБОЙ ОСНОВЕ ОТВЕТСТВЕННОСТИ, БУДЬ ТО ДОГОВОРНАЯ, ГРАЖДАНСКО-ПРАВОВАЯ ИЛИ ДЕЛИКТНАЯ (ВКЛЮЧАЯ ХАЛАТНОСТЬ ИЛИ ИНОЕ), ВОЗНИКШИЙ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ДАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ АВТОР БЫЛ ПРЕДУПРЕЖДЁН О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.
$ git clone --recursive https://github.com/MindPointGroup/cloudfrunt
$ pip install -r requirements.txt
CloudFrunt ожидает, что скрипт dnsrecon будет клонирован в подкаталог с именем 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