## 漏洞关键信息 ### 产品信息 - 产品: [https://gitee.com/funadmin/funadmin](https://gitee.com/funadmin/funadmin) - PHP 版本: 8.2.9 - FunAdmin 版本: v7.1.0-rc4 ### 漏洞类型 - 不安全反序列化漏洞导致任意文件写入 ### 漏洞详情 在 `app/common/service/AuthCloudService.php` 文件的 `getMember` 方法中,应用程序直接对 `cloud_account` 字段的值进行反序列化,该字段来源于用户控制的 cookie(`$this->cloud_account_key` 默认为 `cloud_account`)。不安全地反序列化不受信任的数据是非常危险的,可能会导致严重的安全后果。 ### 相关代码 ```php // 在 getMember 方法中直接反序列化用户控制的数据 public function getMember() { $account = cookie($this->cloud_account_key); return $account ? unserialize(base64_decode($account)) : ''; } ``` ### 后端端点 以下后端端点直接调用 `getMember` 方法: - `/backend/addon/index` - `/backend/sys/upgrade/index` - `/backend/sys/upgrade/check` - `/backend/sys/upgrade/backup` - `/backend/sys/upgrade/install` ### 攻击方式 攻击者可以构造恶意序列化 Payload,并通过 POP 链实现任意文件写入。由于 FunAdmin 依赖 `League` 的依赖库,因此可以利用这一点进行攻击。 ### 示例 Payload ```php // Payload 示例 TzozOToiTGV2Z3V........ ``` ### 攻击后果 攻击者可以通过此漏洞在目标服务器上写入任意文件,如 `hack.php`,进而执行任意代码。 ### PHP 版本 - PHP 版本: 8.2.9 - 系统: Windows 11 AMD64