1sub.example.com 60 IN CNAME sub.example.s3.amazonaws.net
我使用以下正则表达式来匹配正确的规范名称:
1# {bucketname}.s3.amazonaws.com 2^[a-z0-9\.\-]{0,63}\.?s3.amazonaws\.com$ 3 4# {bucketname}.s3-website(.|-){region}.amazonaws.com (+ possible China region) 5^[a-z0-9\.\-]{3,63}\.s3-website[\.-](eu|ap|us|ca|sa|cn)-\w{2,14}-\d{1,2}\.amazonaws.com(\.cn)?$ 6 7# {bucketname}.s3(.|-){region}.amazonaws.com 8^[a-z0-9\.\-]{3,63}\.s3[\.-](eu|ap|us|ca|sa)-\w{2,14}-\d{1,2}\.amazonaws.com$ 9 10# {bucketname}.s3.dualstack.{region}.amazonaws.com 11^[a-z0-9\.\-]{3,63}\.s3.dualstack\.(eu|ap|us|ca|sa)-\w{2,14}-\d{1,2}\.amazonaws.com$
要验证是否可能发生子域名接管,请运行:
1http -b GET http://{SOURCE DOMAIN NAME} | grep -E -q '<Code>NoSuchBucket</Code>|<li>Code: NoSuchBucket</li>' && echo"Subdomain takeover may be possible" || echo"Subdomain takeover is not possible"
I use httpie instead of curl. You should too.httpie: https://httpie.org/
1sub.example.com 60 IN CNAME subexamplecom.github.io
我使用以下正则表达式来检查正确的云前置的域名别名:
1^[a-z0-9\.\-]{0,70}\.?github\.io$
要验证是否可能发生子域接管,请运行:
1http -b GET http://{SOURCE DOMAIN NAME} | grep -F -q "<strong>There isn't a GitHub Pages site here.</strong>" && echo "Subdomain takeover may be possible" || echo "Subdomain takeover is not possible"
Takeover
(假设您已创建了 GitHub 账户。)
前往新存储库页面
将存储库名称设置为规范域名(即,来自CNAME记录的{something}.github.io)
点击“创建存储库”
使用git将内容推送到新创建的存储库。GitHub本身提供了实现此操作的步骤
切换到“设置”选项卡
在GitHub Pages部分,选择主分支作为来源
点击“保存”
保存后,将“自定义域”设置为源域名(即,您想要接管的域名)
点击“保存”
如果一切顺利,没有任何错误,恭喜,接管已完成。
Heroku
eroku 是一家流行的平台即服务提供商。在我们的上下文中,它具有与其他云提供商相同的虚拟主机概念。各种 *.herokudns.com 子域名会响应相同的一组 A 记录。HTTP 主机头对于正确的域名解析很重要(就像其他提供商一样)。还有一种可能性是上传自己的证书以在自定义域上工作(例如,GitHub Pages 不支持此功能,因此您无法在设置自定义域时启用 HTTPS)。
Verification
CNAME记录应该类似于以下内容:
1sub.example.com 60 IN CNAME subexamplecom.herokudns.com
我使用以下正则表达式来检查正确的云前置的域名别名:
1^[a-z0-9\.\-]{2,70}\.herokudns\.com$
要验证是否可能发生子域名接管,请运行:
1http -b GET http://{SOURCE DOMAIN NAME} | grep -F -q "//www.herokucdn.com/error-pages/no-such-app.html" && echo "Subdomain takeover may be possible" || echo "Subdomain takeover is not possible"