Yii 框架反序列化 RCE 利用链 2(官方无补丁)1
Yii 框架是一个流行的 PHP 开发框架,用于构建高效、可扩展的 Web 应用程序。在描述中提到的漏洞涉及到反序列化 Remote Code Execution (RCE),这是一个严重安全问题,允许攻击者通过反序列化过程执行任意代码。在这个特定的利用链中,攻击者可以通过精心构造的输入来触发一系列的类方法调用,从而实现远程代码执行。 我们需要了解反序列化的过程。当一个对象被序列化后,它会变成一个字符串,可以在存储或传输后恢复为原来的对象状态。如果这个序列化的对象包含可执行的方法,且在反序列化过程中这些方法被调用,那么就可能存在安全风险。 在这个案例中,攻击者关注的焦点在于 `\yii\rest\IndexAction` 类以及相关的 `__wakeup` 方法。`IndexAction` 是 Yii RESTful API 的一部分,用于处理 HTTP 请求。当 `IndexAction` 对象被反序列化时,`__wakeup` 方法会被自动调用。攻击者找到了一个途径,通过设置 `$checkAccess`、`$id` 和 `$config` 属性,能够控制执行的代码。 关键的利用链如下: 1. 实例化 `IndexAction` 类,并设置它的属性,例如 `$checkAccess` 设置为 `'system'`,这将影响后续调用的函数。 2. 创建 `LazyString` 类的实例,并设置其 `$value` 为一个数组,包含 `IndexAction` 类的实例和 `run` 方法。 3. 创建 `UnicodeString` 类的实例,将其 `$string` 属性设置为 `LazyString` 类的实例。 4. 反序列化 `UnicodeString` 对象,这将导致 `__wakeup` 方法被调用。 5. 在 `UnicodeString` 的 `__wakeup` 方法中,`normalizer_is_normalized` 方法被调用,其参数是 `$this->string`,这个值是 `LazyString` 的实例。 6. `LazyString` 的 `__toString` 方法被调用,这将执行 `$this->value`,即 `IndexAction` 的 `run` 方法。 7. 结果是,攻击者可以控制 `run` 方法的执行,因为它与 `$checkAccess` 属性关联。 为了构造有效负载,攻击者需要定义 `UnicodeString` 和 `LazyString` 类,并设置它们的属性以匹配上述流程。给出的 `Exp` 代码展示了如何创建这些对象并序列化它们,然后通过 base64 编码发送给目标系统进行反序列化。 值得注意的是,这个漏洞可能尚未得到官方修复,这意味着它仍然是一个零日漏洞(0day),攻击者可能正在积极寻找利用这个漏洞的方法。对于使用 Yii 框架的开发者来说,及时更新框架并采取额外的安全措施至关重要,例如限制不受信任的数据源,以及在可能的情况下避免反序列化用户输入。 Yii 框架的这个反序列化 RCE 漏洞是一个严重的安全问题,需要开发者密切关注并采取相应预防措施。通过理解这个利用链的工作原理,开发者可以更好地保护他们的应用免受此类攻击。同时,这也提醒我们,无论使用哪种开发框架,都应该重视代码的安全性,定期审查和更新框架及依赖库,以防止潜在的安全威胁。
剩余13页未读,继续阅读
- 粉丝: 31
- 资源: 352
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于SpringCloud微服务的外卖订餐系统.zip
- matlab实现基于混沌理论的3D模型加密系统源码(下载即用)
- (源码)基于Arduino的Eunoorlock智能门锁系统.zip
- (源码)基于Python和MQTT的远程监控数据分布系统.zip
- (源码)基于物联网技术的智能农业管理系统SmartFarm.zip
- sadk-3.2.8.0
- (源码)基于WeMosD1mini的MQTT与OLED显示系统.zip
- (源码)基于SpringBoot框架的分布式应用系统.zip
- (源码)基于SpringBoot和SpringCloud的系统管理中心.zip
- (源码)基于Arduino和NBIoT的远程停电检测与警报系统.zip
评论0