挖洞经验 | 看我如何在短时间内对Shopify五万多个子域名进行劫持
字数 1229 2025-08-18 11:37:42

Shopify子域名劫持漏洞分析与利用指南

一、漏洞概述

Shopify子域名劫持漏洞是一种由于DNS配置不当导致的攻击面,攻击者可以接管未正确配置的Shopify子域名。该漏洞主要存在于两种场景:

  1. 网页应用名称映射:当子域名指向myshopname.myshopify.com且商店名称未被注册时
  2. DNS映射:当子域名指向shops.myshopify.com

二、漏洞检测方法

1. 识别潜在漏洞目标

检测目标网站是否存在以下两种响应页面:

  • Shopify默认错误页面
  • 404页面

2. 检查DNS记录类型

2.1 网页应用名称映射检测

nslookup shop.buckhacker.com

检查是否存在指向myshopname.myshopify.com的CNAME记录

2.2 DNS映射检测

检查是否存在指向shops.myshopify.com的CNAME记录

3. 商店名称可用性检查

通过Shopify注册接口验证商店名称是否可用:

POST /api/check_shop_availability.json HTTP/1.1
Host: www.shopify.com
Content-Type: application/json

{"shop":{"name":"buckhacker"}}

响应分析:

  • 不可用:{"status":"unavailable","message":null,"host":"buckhacker.myshopify.com"}
  • 可用:{"status":"available","message":null,"host":"buckhacker2.myshopify.com"}

三、漏洞利用步骤

1. 网页应用名称映射劫持

  1. 注册可用的商店名称
  2. 在Shopify管理面板中:
    • 进入"Online Store" → "Domains"
    • 点击"Connect existing domain"
    • 输入存在漏洞的域名
    • 点击"Next"和"Verify Connection"

2. DNS映射劫持

  1. 创建可注册的商店名
  2. 在管理后台连接目标子域名(如sales.buckhacker.com)

四、大规模自动化检测

1. 使用FDNS数据集

zcat $FDNS_DATASET | strings | grep shopify.com | cut -d "\"" -f 8 | grep -v "shopify.com" | while read subdomain; do python3 ShopifySubdomainTakeoverCheck.py $subdomain; done

2. 检测脚本关键功能

脚本应执行三重检查:

  1. 错误响应页面检查
  2. CNAME记录检查
  3. REST API请求检查

五、漏洞影响范围

  • 根据2017年FDNSv2数据集,约55,000个Shopify子域名存在此漏洞
  • 约2%的Shopify网站存在网页应用名称映射配置错误

六、防御建议

对Shopify商家:

  1. 删除不再使用的CNAME记录
  2. 定期检查DNS配置
  3. 使用永久重定向而非CNAME

对平台提供商:

  1. 实现子域名所有权验证机制
  2. 监控异常域名注册行为
  3. 提供清晰的DNS配置文档

七、扩展应用

该方法可适用于其他域名注册提供商的检查,思路包括:

  1. 分析CNAME指向模式
  2. 检查目标平台注册接口
  3. 自动化验证接管可能性

附录:漏洞上报时间线

  1. 2018.8.21 - 通过HackerOne上报
  2. 2018.8.21 - Shopify初步响应
  3. 2018.8.23 - Shopify后续反馈
  4. 2018.9.10 - 漏洞公开

注:本指南仅供安全研究使用,实际操作需获得合法授权。

Shopify子域名劫持漏洞分析与利用指南 一、漏洞概述 Shopify子域名劫持漏洞是一种由于DNS配置不当导致的攻击面,攻击者可以接管未正确配置的Shopify子域名。该漏洞主要存在于两种场景: 网页应用名称映射 :当子域名指向 myshopname.myshopify.com 且商店名称未被注册时 DNS映射 :当子域名指向 shops.myshopify.com 时 二、漏洞检测方法 1. 识别潜在漏洞目标 检测目标网站是否存在以下两种响应页面: Shopify默认错误页面 404页面 2. 检查DNS记录类型 2.1 网页应用名称映射检测 检查是否存在指向 myshopname.myshopify.com 的CNAME记录 2.2 DNS映射检测 检查是否存在指向 shops.myshopify.com 的CNAME记录 3. 商店名称可用性检查 通过Shopify注册接口验证商店名称是否可用: 响应分析: 不可用: {"status":"unavailable","message":null,"host":"buckhacker.myshopify.com"} 可用: {"status":"available","message":null,"host":"buckhacker2.myshopify.com"} 三、漏洞利用步骤 1. 网页应用名称映射劫持 注册可用的商店名称 在Shopify管理面板中: 进入"Online Store" → "Domains" 点击"Connect existing domain" 输入存在漏洞的域名 点击"Next"和"Verify Connection" 2. DNS映射劫持 创建可注册的商店名 在管理后台连接目标子域名(如sales.buckhacker.com) 四、大规模自动化检测 1. 使用FDNS数据集 2. 检测脚本关键功能 脚本应执行三重检查: 错误响应页面检查 CNAME记录检查 REST API请求检查 五、漏洞影响范围 根据2017年FDNSv2数据集,约55,000个Shopify子域名存在此漏洞 约2%的Shopify网站存在网页应用名称映射配置错误 六、防御建议 对Shopify商家: 删除不再使用的CNAME记录 定期检查DNS配置 使用永久重定向而非CNAME 对平台提供商: 实现子域名所有权验证机制 监控异常域名注册行为 提供清晰的DNS配置文档 七、扩展应用 该方法可适用于其他域名注册提供商的检查,思路包括: 分析CNAME指向模式 检查目标平台注册接口 自动化验证接管可能性 附录:漏洞上报时间线 2018.8.21 - 通过HackerOne上报 2018.8.21 - Shopify初步响应 2018.8.23 - Shopify后续反馈 2018.9.10 - 漏洞公开 注:本指南仅供安全研究使用,实际操作需获得合法授权。