Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/d3kc4rt1/cve-2026-1657
漏洞分析代码分析漏洞利用Web安全渗透测试学习与教育
GitHubd3kc4rt1/cve-2026-1657

CVE-2026-1657

EventPrime 插件中未经身份验证的任意文件上传

查看仓库
45个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-1657:EventPrime 插件中的未认证任意文件上传漏洞

免责声明: 此仓库仅用于教育目的和负责任的披露。该漏洞已负责任地向厂商报告并已修复。请勿利用此信息在未经授权的情况下攻击系统。

摘要

在 EventPrime WordPress 插件(版本 <= 4.2.8.1)中发现了一个 未认证的任意文件上传 漏洞。该缺陷允许任何未认证访客将文件直接上传到 WordPress 的 uploads 目录,并在媒体库中创建附件记录。

该漏洞源于一个特定的 AJAX 端点被显式注册为 nopriv(公开可访问),且缺少授权检查和适当的文件内容验证。攻击者可以利用此端点耗尽存储空间、向媒体库发送垃圾文件,或上传伪装成图片的恶意载荷。

漏洞概述

  • CVE ID: CVE-2026-1657
  • 产品: EventPrime(WordPress 插件)
  • 受影响版本: <= 4.2.8.1
  • 漏洞类型: 危险类型文件的无限制上传(CWE-434)
  • 所需权限: 无(未认证)

技术深入分析及根本原因

根本原因是不安全的 AJAX 钩子注册与不充分的文件验证相结合。

1. 不安全的 AJAX 端点注册: 在 includes/class-eventprime-event-calendar-management.php 中,插件注册了 upload_file_media 操作。大约在第 557 行,它在操作映射中设置 {upload_file_media: true},其中 true 表示支持 _nopriv。因此,钩子 gwp_ajax_nopriv_ep_upload_file_media 被注册,使得端点对所有人可用。

2. 缺乏授权及 Nonce 检查: 处理函数 upload_file_media()(位于 includes/class-ep-ajax.php 的第 1659-1697 行)没有使用 current_user_can() 检查上传权限,也没有验证安全 nonce。

3. 有缺陷的验证逻辑: 该处理程序仅根据客户端提供的文件名验证文件扩展名(例如 jpg/jpeg/png/gif)(第 1661-1664 行)。它没有执行严格的服务器端内容验证(如 getimagesize() 或 wp_check_filetype_and_ext())。这意味着重命名为 harmless.jpg 的恶意脚本或其他文件类型将在 WordPress 尝试生成元数据之前被写入磁盘。

4. 持久化: 文件通过 move_uploaded_file() 直接保存到 wp_upload_dir()['path'],并通过 wp_insert_attachment() 创建 WordPress 附件。

业务影响

  • 存储耗尽(DoS): 攻击者可以自动上传包含大文件的内容,消耗所有可用服务器磁盘空间或云存储配额,可能导致网站瘫痪。
  • 媒体库垃圾: 攻击者可以用不适当或无用的图片淹没媒体库,使管理员无法正常使用。
  • 进一步利用的潜力: 结合其他漏洞(如本地文件包含 LFI,或服务器配置错误导致执行“图片”),可能导致远程代码执行(RCE)。

概念验证(PoC)

复现步骤

1. 准备载荷: 在本地机器上创建一个名为 poc.jpg 的示例图片文件。

2. 执行请求: 向公开 AJAX 端点发送一个 multipart/form-data POST 请求,不带任何会话 cookie:

root@kitploit:~
curl -i \
  -F "[email protected];filename=poc.jpg" \
  "http://TARGET_SITE/wp-admin/admin-ajax.php?action=ep_upload_file_media"

3. 观察响应: 服务器将响应 200 OK,并返回一个包含新创建的附件 ID 的 JSON 对象:

root@kitploit:~
{"success":true,"data":{"attachment_id":117}}

4. 验证:

  • 文件现在存储于 wp-content/uploads/<year>/<month>/poc.jpg。
  • 管理员访问 WordPress 媒体库时可以看到上传的文件。

修复建议

要解决此漏洞,开发者必须:

  1. 限制端点访问: 如果上传功能设计上仅面向认证用户,则移除 nopriv 声明。
  2. 实现权限检查: 使用 current_user_can('upload_files') 确保只有获得授权的特权用户可以上传。
  3. 验证 Nonce: 实现 check_ajax_referer() 以防止 CSRF 攻击。
  4. 严格的文件验证: 使用传统的 WordPress 图片处理函数(如 wp_handle_upload()),这些函数会执行更严格的 MIME 类型和内容检查。

时间线

  • 日期(2026-01-29): 向 Wordfence 报告。
  • 日期(2026-02-17): 漏洞修复 / 公开披露。

参考与致谢

  • Wordfence 漏洞数据库
  • CVE-2026-1657 在 NVD 上
  • WordPress.org 上的 EventPrime 插件
下载工具