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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2024-12877-Exploit — Educational CVE-2024-12877 exploit demo for PHP Object Injection in GiveWP WordPress plugin. Includes root cause analysis, regex bypass techniques, and safe exploitation practices. CVE-2024-12877 漏洞利用演示,针对 GiveWP WordPress 插件中的 PHP 对象注入。包含根本原因分析、正则表达式绕过技术以及安全利用实践。 | Kitploit
工具/GitHubGitHub/soltanali0/cve-2024-12877-exploit
静态分析漏洞分析代码分析漏洞利用Web应用程序漏洞利用CTF渗透测试学习与教育Payload 开发

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHubsoltanali0/cve-2024-12877-exploit

CVE-2024-12877-Exploit

Educational CVE-2024-12877 exploit demo for PHP Object Injection in GiveWP WordPress plugin. Includes root cause analysis, regex bypass techniques, and safe exploitation practices. CVE-2024-12877 漏洞利用演示,针对 GiveWP WordPress 插件中的 PHP 对象注入。包含根本原因分析、正则表达式绕过技术以及安全利用实践。

查看仓库
111年前尚未审核
分享

GO-TO CVE – CVE-2024-12877-漏洞利用

第66周 | 作者:Ali Soltani (soltanali0))

欢迎来到 GO-TO CVE 系列第66周,我们在此剖析漏洞、分析根本原因,并在安全、教育化的环境中展示实用的利用技术。


🚨 概览

CVE-2024-12877 是 GiveWP(最广泛使用的 WordPress 捐赠插件之一)中的一个 PHP 对象注入 漏洞。对用户可控输入不安全地使用 unserialize() 允许攻击者触发 PHP 魔术方法(如 __wakeup()),可能导致:

  • 远程代码执行 (RCE) ⚡
  • 敏感数据窃取 🕵️‍♂️
  • 权限提升 🔑
  • 完全服务器沦陷 ☠️

CVSS: 9.8 严重 | 向量:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H


🧩 关于 GiveWP

图片

GiveWP 为数千个慈善网站、非政府组织和募捐平台提供动力。由于它处理敏感的财务和捐赠者数据,此处的漏洞影响巨大。攻击者利用对象注入可以从单个插件升级到危害整个 WordPress 安装以及底层服务器。


⚙️ 漏洞详情

  • 根本原因: 对不受信任的输入使用 unserialize()。

  • PHP 魔术方法: PHP 在对象生命周期中自动调用这些方法:

  • 该漏洞源于对用户可控输入不安全地使用 PHP 函数 unserialize()。虽然 unserialize() 旨在重建 PHP 数据结构,但它有一个危险的副作用:当对象被重构时,PHP 自动调用魔术方法。

PHP 中的魔术方法

  • __wakeup() – 当对象被反序列化时触发

  • __destruct()、__toString()、__get/__set()、__call/__callStatic() – 可被利用进行恶意执行

  • 正则验证: GiveWP 实现了正则检查来检测序列化输入。虽然新的正则覆盖了更多数据类型,但 正则无法可靠地阻止对象注入。

图片

关键洞察:

通过精心构造的序列化对象,攻击者设置对象属性,PHP 本身通过调用魔术方法执行攻击者的逻辑

正则验证

GiveWP 实现了基于正则的验证来检查输入是否被序列化。 旧正则(不完整)

• 仅识别数组和对象。

• 其他序列化类型(字符串、整数、布尔、浮点、null)绕过了检测。

carbon

新正则(改进,但有缺陷)

• 识别所有 PHP 序列化类型。

• 拦截一些简单的有效载荷。

• 但核心问题依然存在:如果在用户输入上使用 unserialize(),正则无法拯救你。

carbon (1)

此代码片段旨在比较两种不同的正则实现:

• is_serialized_old() → 旧版本,仅检测数组和对象。

• is_serialized_new() → 改进版本,识别所有 PHP 序列化数据类型(数组、对象、字符串、整数、布尔、浮点和 null)。 我们创建一组测试值(数组、对象、字符串、整数、布尔、浮点、null),将其序列化,然后用两个正则函数分别检查每个值。 简单来说:

图片

在 Docker 上运行此代码后,在浏览器上可以看到此结果

图片

💥 漏洞利用演示

步骤 1

carbon (2)

步骤 2:创建一个易受攻击的类

carbon (4)

该类有一个 __wakeup() 方法,在反序列化时会自动执行。

步骤 3:构造有效载荷

图片

步骤 4:输出 将文件保存到该文件后,你可以看到此漏洞利用

图片

漏洞利用:

图片

• 旧正则:FALSE → 未能检测到载荷。

• 新正则:TRUE → 检测为序列化输入。

• 执行中:Hello RCE! → 该载荷被反序列化,并且魔术方法 __wakeup() 执行了攻击者控制的代码。

预防措施 • 不要在不可信输入上使用 unserialize()。用 json_decode() 或其他更安全的替代品替换。

• 保持 GiveWP 和所有 WordPress 插件更新。

• 部署 Web 应用程序防火墙 (WAF) 以拦截恶意序列化载荷。

• 遵循最小权限原则:以最低所需权限运行 PHP 和数据库账户。

结果:

  • 旧正则:❌ 无法检测到载荷
  • 新正则:✅ 检测到序列化输入但无法阻止 RCE

关键洞察:永远不要依赖正则来保护 unserialize()。最安全的方法是完全避免反序列化不可信输入。


🛡 预防措施

  • 不要在不可信输入上使用 unserialize();优先使用 json_decode() 或其他安全的替代方案。
  • 保持 GiveWP 和所有 WordPress 插件更新。
  • 部署 Web 应用程序防火墙 (WAF) 以拦截恶意载荷。
  • 对 PHP 和数据库账户应用最小权限原则。

📱 关注我们的每周 CVE 分析

我运营两个专注于漏洞研究和利用的 Telegram 频道:

  1. GO-TO CVE 每周剧集: 每周,我们深入挖掘一个新的 CVE,并分享详细分析、演示和见解。 🔗 在此加入

  2. CVEdb – 漏洞利用档案: 该频道存档 CVE 的 1 天漏洞利用和自定义 PoC。是希望看到活跃利用技术的研究人员的绝佳资源。 🔗 加入 CVEdb

关注这些频道,及时了解最新的 CVE、利用技术和安全研究见解。


📚 参考

  • NVD CVE-2024-12877
  • Wordfence 分析
  • GiveWP 源代码

⚖️ 法律免责声明

本仓库严格用于教育和研究目的。在未经许可的情况下利用漏洞是非法且不道德的。作者不对滥用行为负责。

下载工具