CloudFrunt 是一款用于识别配置错误的 CloudFront 域名的工具。
CloudFront 是亚马逊网络服务(AWS)提供的内容分发网络(CDN)。CloudFront 用户创建“分发”以从特定源(例如 S3 存储桶)提供内容。
每个 CloudFront 分发都有一个唯一的端点,供用户将其 DNS 记录指向(例如 d111111abcdef8.cloudfront.net)。使用特定分发的所有域名都需要在该分发的选项中的“备用域名(CNAME)”字段中列出。
当 CloudFront 端点收到请求时,它不会自动从对应分发提供内容。相反,CloudFront 使用请求的 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 显示此帮助信息并退出
-s, --save 将结果保存到 results.txt
-N, --no-dns 不使用 dnsrecon 扩展范围
-l, --target-file TARGET_FILE 包含域名列表的文件(每行一个)
-d, --domains DOMAINS 要扫描的以逗号分隔的域名列表
-o, --origin ORIGIN 将易受攻击的域名添加到使用此源的新分发中
-i, --origin-id ORIGIN_ID 与新分发一起使用的源 ID
$ python cloudfrunt.py -o cloudfrunt.com.s3-website-us-east-1.amazonaws.com -i S3-cloudfrunt -l list.txt
CloudFrunt v1.0.4
[+] 正在枚举 google.com 的 DNS 条目
[-] google.com 未发现问题
[+] 正在枚举 disloops.com 的 DNS 条目
[+] 找到 CloudFront 域名 --> cdn.disloops.com
[+] 找到 CloudFront 域名 --> test.disloops.com
[-] 可能配置错误的 CloudFront 域名:
[#] --> test.disloops.com
[+] 已创建新的 CloudFront 分发 EXBC12DE3F45G
[+] 已将 test.disloops.com 添加到 CloudFront 分发 EXBC12DE3F45G