CVE-2025-56162YOSHOP 2.0是一款基于ThinkPHP框架开发的开源电商系统,提供了商品管理、订单处理、用户系统等完整的电商功能。CVE-2025-56162是存在于YOSHOP 2.0中的一项高危安全漏洞,具体表现为/api/goods/listByIds接口中的goodsIds参数存在未认证的SQL注入漏洞。该漏洞源于后端getListByIds函数直接将用户输入拼接到orderRaw('field(goods_id, ...)')的原始SQL语句中,未对输入进行任何过滤或参数化处理,导致攻击者可以在未经身份验证的情况下构造恶意SQL语句。由于该接口无需任何认证即可访问(PR:N),且攻击向量为网络(AV:N),无需用户交互(UI:N),使得该漏洞极易被远程攻击者利用。攻击者可以利用此漏洞枚举和修改数据库内容,包括窃取管理员密码哈希等敏感数据;在数据库权限充足的情况下,还可以通过写入WebShell文件或调用xp_cmdshell等方式实现远程代码执行(RCE),完全控制目标服务器。该漏洞的CVSS评分为6.5分,属于中危级别,但其潜在危害极为严重,可能导致数据泄露、网站篡改以及服务器沦陷等严重后果。
该漏洞的根本原因在于YOSHOP 2.0的/api/goods/listByIds接口在处理goodsIds参数时,未采用参数化查询或预编译语句,而是直接将用户可控的输入拼接到原始SQL查询中。具体来说,后端getListByIds函数使用了类似orderRaw('field(goods_id, ('.$goodsIds.'))')的代码模式,将goodsIds参数的值直接嵌入到ORDER BY子句的FIELD函数中。由于ThinkPHP的orderRaw方法允许执行原生SQL表达式,攻击者可以通过闭合单引号并注入额外的SQL语句来实现注入攻击。
利用方式如下:
1. 攻击者向/api/goods/listByIds接口发送包含恶意SQL片段的goodsIds参数;
2. 由于接口无需认证,攻击者可以直接访问;
3. 注入的SQL语句可以执行以下操作:
- 使用UNION SELECT查询枚举数据库中的表和列;
- 提取管理员账号的密码哈希;
- 如果数据库用户具有FILE权限,可以通过INTO OUTFILE写入WebShell;
- 如果是MSSQL数据库且权限足够,可以调用xp_cmdshell执行系统命令;
4. 最终实现从数据窃取到完全远程代码执行的攻击链升级。