WildWestCyberSecurity/cve-2019-5420-POC

GitHub: WildWestCyberSecurity/cve-2019-5420-POC

CVE-2019-5420 的 Ruby 概念验证脚本,通过伪造签名 payload 触发 Rails ActiveSupport 反序列化漏洞以实现远程代码执行。

Stars: 1 | Forks: 0

# Rails ActiveSupport 漏洞利用 (cve-2019-5420) POC(建议将其与 CVE-2019-5418 组合利用!) 与 CVE-2019-5418 完美搭配! ## POC 截图 ![截图](https://raw.githubusercontent.com/WildWestCyberSecurity/cve-2019-5420-POC/main/cve-2019-5420-POC_SCREENSHOT.png) ## 🚨 警告 本仓库包含一个**概念验证 (PoC) 漏洞利用程序**,演示了通过滥用 `ActiveSupport::MessageVerifier` 在 Ruby on Rails 应用程序中实现**远程代码执行 (RCE)**。**请负责任地使用!** ## 📌 概述 该脚本利用 **ActiveSupport 反序列化漏洞**,方法是使用包装在 `DeprecatedInstanceVariableProxy` 中的**精心构造的 ERB 对象**。当签名的 payload 被易受攻击的 Rails 应用程序反序列化时,就会发生**任意 Ruby 代码执行**。 ## ⚠️ 免责声明 本项目**仅供教育和研究用途**。在未经授权的情况下对您不拥有的系统进行使用是**违法的**,并可能导致严重的法律后果。 ## 🛠️ 工作原理 ### 1️⃣ 生成 Secret Key - 脚本使用 MD5 散列从已知的 Rails 应用程序名称中派生出 ``。 ### 2️⃣ 创建 ActiveStorage Secret - 使用 `ActiveSupport::KeyGenerator` 生成签名 key。 ### 3️⃣ 创建恶意 ERB 对象 - 构造一个带有攻击者控制代码的**未初始化的 **``** 对象**。 ### 4️⃣ 包装在 `DeprecatedInstanceVariableProxy` 中 - 将恶意对象隐藏在一个**看起来无害的包装器**中。 ### 5️⃣ 签名并生成漏洞利用 Token - 使用 `ActiveSupport::MessageVerifier` 对 payload 进行**签名**,使其看起来合法。 ### 6️⃣ 实现远程代码执行 (RCE) - 反序列化时,Rails 会**执行**攻击者的 payload,从而允许执行任意命令。 ## 🚀 用法 ``` ruby POC.rb ``` 该脚本将生成一个**已签名的漏洞利用 token**,可用于攻击易受攻击的 Rails 应用程序。 ## 🛡️ 缓解措施 - **轮换并保护 **``,以防止攻击者生成签名的 payload。 - **将 Rails 升级**到最新版本(Rails 7+ 具有更严格的序列化机制)。 - **使用 JSON 序列化**而不是 Marshal 序列化,以避免加载任意对象。 - **审计应用程序的反序列化操作**,确保未对不受信任的用户输入进行反序列化。 ## 📜 法律免责声明 本项目**仅**用于教育目的。作者对因滥用此代码造成的任何误用或损害**不承担**任何责任。 ## 📚 参考资料 - [Rails 安全指南](https://guides.rubyonrails.org/security.html) - [CWE-502: 不受信任数据的反序列化](https://cwe.mitre.org/data/definitions/502.html) ⚠️ **使用风险自负!**
标签:Go语言工具, POC, Rails, Ruby, 知识库, 编程工具, 远程代码执行