小白安全博客

小白记忆
专注网络安全

 使用CloudFront进行域前端 一个有效的例子

这篇文章附带在域前端的A 101上,我们将在其中设置一个用于域前端的站点,然后是一个前端站点。

演练中有以下玩家:

  • 前端主机名 - fronted.digi.ninja
  • “好”的起源 - digi.ninja
  • “好”的CloudFront域名 - d1pticz0uvhz4n.cloudfront.net(将解释后来的来源)
  • “坏”的起源 - frontme.vuln-demo.com
  • “坏”CloudFront域名 - d1sdh26o090vk5.cloudfront.net(将在后面解释这来自哪里)

建立“好”的起源

如果需要,可以跳过此步骤直接跳转到设置要前置的站点。如果您这样做,您将需要找到在CloudFront上托管的网站来进行前端处理。

首先,登录您的AWS账户,然后从服务菜单中选择CloudFront。单击“创建分发”并选择“Web”选项。

选择Web over RTMP作为交付方式

在“原始设置”部分中,现有站点(digi.ninja)的主机名位于“原始域名”框中,您必须在“原始ID”框中为设置指定唯一名称。您会注意到,只要输入了原始主机名,就会绘制一组新输入。让我长时间沮丧的是默认情况下“原始协议策略”设置为“仅HTTP”。我的digi.ninja网站同时监听HTTP和HTTPS但是已经重定向到HTTPS并启用了HSTS,策略设置为仅HTTP,每当我尝试通过前端域访问我的网站时出现403错误。如果您的原始网站通过HTTPS运行,那么您必须更改此设置,否则它将无法正常工作。

原点的设置

“默认缓存行为设置”框中的所有设置都可以保持原样。

在“分发设置”框中,如果您希望站点切合实际,请将“SSL证书”设置更改为“自定义SSL证书(example.com)”,然后使用“请求或导入带有ACM的证书”来生成证书。我不打算在这里做到这一点,它很容易通过,您可以通过DNS或电子邮件验证您的域。您还需要在“备用域名(CNAME)”框中输入将用于访问站点的主机名(fronted.digi.ninja)。与搞乱原始协议一样,如果没有这个,当您尝试通过主机名访问该站点时,您将收到403错误。

分发设置

完成后,您可以单击“创建分发”并让它完成它的工作。我发现花了一些时间进行设置,所以不要指望一切都能立即发挥作用。您返回的屏幕应该看起来有点像这样,除了状态为“进行中”。

列表显示了AWS控制台中的域设置

当站点设置正在处理时,您需要为域创建一个CNAME条目(fronted.digi.ninja)并将其指向表中列出的域名,在我的案例中为“d1pticz0uvhz4n.cloudfront.net”。完成推出后,控制台中的状态将更改为“已部署”,您将可以通过刚刚设置的DNS名称(fronted.digi.ninja)和CloudFront域(d1pticz0uvhz4n)访问它。 .cloudfront.net)。

证明域名fronted.digi.ninja正在运行

如果CloudFront URL工作但另一个没有,你在设置中的某个地方犯了一个错误,你需要回去调试它。我花了几天的时间来完成它,特别是每次重新部署需要10到15分钟。

完成所有这些工作后,您可以继续前进到更简单的步骤,将域设置为前端。

设置“坏”原点

此步骤与上一步非常相似。启动该过程并将您想要的站点名称(frontme.vuln-demo.com)放在“Origin Domain Name”字段中。由于您不会通过自己的名称或CloudFront名称直接访问该站点,因此您无需对“分发设置”框进行任何更改。完成该过程并开始部署。

该列表显示了AWS控制台中的“好”和“坏”域

部署站点后,您应该能够使用已分配的域名(d1sdh26o090vk5.cloudfront.net)浏览到该站点。再次,任何错误,得到调试。

证明域名d1sdh26o090vk5.cloudfront.net正在运行

如果您想知道为什么我们只进行了一半的设置,并且没有将“坏”原点的某些变体放入“备用域名”字段,那么这是因为它不需要。它可以通过这种方式设置,然后在下一节的Host头中使用,但假设C2或敏感浏览将在某个时刻被检测到,在标题中有一个匿名的CloudFront主机名要好于拥有引用真实起源的东西。在原点仍然启动时被抓住将允许响应者通过浏览到您使用的任何值来简单地查看内容,但是如果在您被捕获并且流量被分析时,原点已被删除,那么他们将会保留是一个随机字符串,对任何人都没有任何意义。

测试前端

现在你终于得到了所有的部分,现在是时候做一些领域了!正如我们在演练中所述,前端的工作方式是使用“好”主机名(fronted.digi.ninja)建立网络连接,然后使用“坏”CloudFront主机名(d1sdh26o090vk5.cloudfront.net)主机头。您可以通过以下方式在curl中执行此操作:

curl -H "Host: d1sdh26o090vk5.cloudfront.net" \
https://fronted.digi.ninja/

这就是我们得到的。

使用curl命令并从vuln-demo站点接收内容。

成功!对于基于DNS查找检查连接的任何事情,请求转到“好”站点(fronted.digi.ninja),但是一旦CloudFront获得HTTP请求,它就会看到“坏”CloudFront主机名的主机头(d1sdh26o090vk5.cloudfront) .net)这就是它返回数据的基础。

寻找域名

如果您不想通过设置自己的域来解决这个问题,那么您需要找到一个可以使用的域。以下是一些可能有用的帖子和工具。


×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏,请先点一下下面的付款方式

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

 您阅读这篇文章共花了:

打赏作者
版权所有,转载注明出处:小白安全博客-菜鸟安全博客-小白个人博客 » 使用CloudFront进行域前端 一个有效的例子»https://www.xiaobaibk.com/xiao-bai-357.html
标签: CloudFront

发表评论

表情

网友评论(0)