图1:封面
各位安全爱好者和漏洞赏金猎人,大家好!
我是 Joel,想分享一个关键却经常被忽视的安全问题。这次,我们将探讨一个虽然小众却至关重要的安全配置错误——Vercel子域名接管。在研究这个主题时,我注意到缺乏全面的资源,这促使我与大家分享我的发现和经验。
那么,让我们开始吧……
什么是子域名接管?
当子域名指向不再活跃或配置错误的外部服务时,就会发生子域名接管。这种错位使得恶意行为者能够控制子域名,从而托管未经授权的内容或在受信任的域名下执行恶意活动。
Vercel 和子域漏洞
Vercel是一个流行的前端应用程序部署平台,可与 GitHub 等服务无缝集成。用户可以将自定义域名或子域名链接到他们的 Vercel 项目。但是,如果项目被删除或域名被取消链接而未相应更新 DNS 记录,则子域名仍然指向 Vercel 的基础架构。攻击者可以利用此悬空 DNS 记录来控制子域名。
示例场景:
sub.domain.com
配置为cname.vercel-dns.com
通过 CNAME DNS 记录指向,将流量引导至 Vercel 托管的应用程序。
Vercel 上的应用程序被删除,但 DNS 记录sub.domain.com CNAME cname.vercel-dns.com
保持不变。
攻击者注意到sub.domain.com
返回404: NOT_FOUND
错误。然后他们在 Vercel 上创建一个项目并将其添加sub.domain.com
到他们的项目中。由于 DNS 仍然指向 Vercel,攻击者现在控制了sub.domain.com
识别易受攻击的子域名
通过 Web 浏览器或命令行工具访问子域名,以curl
观察 HTTP 响应。
图2:使用 CURL 观察 HTTP 响应
具体的响应指标表明存在潜在的接管漏洞。诸如404: NOT_FOUND
或 之类的消息DEPLOYMENT_NOT_FOUND
表明该子域名指向 Vercel,但不存在活跃的部署。显示 Vercel 品牌标识并包含缺失部署消息的页面表明该子域名已在 Vercel 上配置,但缺少活跃的项目。
使用 DNS 查找工具(例如 dig 或 Google Toolbox)检查子域名的 DNS 记录。配置为使用 Vercel 的子域名通常具有指向 的 CNAME 记录cname.vercel-dns.com
。
图4:使用 Dig 工具检查子域名的 DNS 记录asd
利用漏洞
使用您喜欢的方式(例如 GitHub、GitLab、电子邮件)在Vercel上注册。在 GitHub 上创建一个新的仓库并上传您的静态站点文件,确保其index.html
位于根目录中。使用 Vercel 的仪表板部署此项目。
图5:从 github 导入 POC repo
在 Vercel 仪表板中,导航到项目的“设置” > “域”部分。点击“添加域”并输入易受攻击的子域。如果子域的 DNS 仍然指向 Vercel ( cname.vercel-dns.com
),且没有其他 Vercel 项目认领该子域,则该子域将成功添加到您的项目中。
图6:添加子域名
Vercel 通过检查 DNS 记录来验证域名所有权。如果子域名指向cname.vercel-dns.com
其他项目且未被其他项目认领,Vercel 允许您将其与您的项目关联,而无需进行额外验证。
添加子域名后,appdev.redacted.com
在浏览器中访问。如果接管成功,子域名将显示您部署的项目内容,确认对子域名的控制权。
缓解策略
为防止子域名被盗用,请使用 Vercel 的域名验证方法(例如添加 TXT 记录)来防止未经授权的认领。了解更多关于域名验证的信息。
停止服务时,请确保及时更新或删除相关的 DNS 记录。定期检查 DNS 记录,识别并删除指向未使用服务的记录。
结论
虽然 Vercel 已采取措施缓解子域名接管,但域名所有者也有责任保持警惕的 DNS 管理实践。
希望本文能帮助大家了解 Vercel 子域名劫持事件,并强调安全措施的重要性。保持好奇心,享受黑客攻击的乐趣!
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论