Skip to content

潜在的远程代码执行漏洞:Laravel 5.5.x 不安全反序列化 (CVE-2018-15133) #627

@kai0sec

Description

@kai0sec

项目使用的 laravel/framework: 5.5.* 版本可能受到 不安全反序列化导致远程代码执行 (CVE-2018-15133) 漏洞的影响。

漏洞详情:

漏洞点:
laravel/framework 版本通过 5.5.40 和 5.6.x 通过 5.6.29。本项目使用的 laravel/framework: 5.5.* 版本可能受此漏洞影响。

漏洞描述:
CVE-2018-15133 描述了 Laravel 框架中的一个远程代码执行漏洞。此漏洞发生在 Illuminate/Encryption/Encrypter.phpdecrypt 方法对潜在不受信任的 X-XSRF-TOKEN 值进行反序列化时。攻击者可以通过构造恶意的序列化数据,利用 PHP 的反序列化机制来执行任意代码。尽管攻击者需要知道应用程序的 APP_KEY,但如果 APP_KEY 在其他地方泄露(例如,通过之前发现的调试模式配置弱点或信息泄露),那么此漏洞将变得非常危险。

影响:
远程代码执行 (RCE),允许攻击者在服务器上执行任意代码,从而导致完全的系统入侵。

受影响的组件和版本:

  • laravel/framework 版本 5.5.05.5.40(包含)
  • laravel/framework 版本 5.6.05.6.29(包含)

概念验证 (POC):
该漏洞通常需要结合 phpggc 工具生成恶意的反序列化 payload,并通过控制 X-XSRF-TOKEN HTTP 头发送到服务器。攻击的成功取决于 APP_KEY 的已知。

漏洞利用原理:
Laravel 使用加密机制来保护 X-XSRF-TOKEN。当应用程序解密此 token 时,它会调用 unserialize 函数。如果攻击者能够伪造一个经过加密且包含恶意序列化对象的 X-XSRF-TOKEN,并且应用程序在没有充分验证的情况下对其进行反序列化,那么攻击者就可以利用 PHP 的面向对象编程 (OOP) 特性触发“魔术方法”(如 __destruct),从而执行任意代码。

建议修复措施:

  1. 升级 Laravel 框架: 强烈建议将 Laravel 框架升级到已修复此漏洞的版本。对于 Laravel 5.5 系列,应升级到 5.5.41 或更高版本。对于 Laravel 5.6 系列,应升级到 5.6.30 或更高版本
  2. 保护 APP_KEY 确保 APP_KEY 始终保密,不应在公共仓库、日志文件或通过调试模式泄露。
  3. 禁用调试模式: 在生产环境中始终禁用 APP_DEBUG

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions