漏洞概述
vBulletin是一个强大、灵活并可完全根据自己的需要定制的商业论坛程序(非开源)。它使用PHP脚本语言编写,基于以高效和高速著称的数据库引擎MySQL。在CVE-2023-25135漏洞中,vBulletin 允许未经过验证的远程攻击者通过触发反序列化的HTTP请求执行任意代码。发生这种情况是因为其使用 unserialize()方法来判断相关数据是否已序列化。
受影响版本
vbulletin 5.6.7- vbulletin 5.6.9
漏洞分析
在vBulletin中用户注册时涉及vB_DataManager_User类的实例化,在该类中定义了validfield属性,每次实例化对象时候都会检查对应的属性是否正确。其中在该类中有一处searchprefs字段,每次实例化对象时候采用了一个verify_serialized函数检查数据,这便引起了我们的注意。

图1
继续跟踪到对应的verify_serialized函数——

图2
从这里可以看出,vBulletin通过调用了unserialize函数来检查传入searchprefs的数据是否序列化。searchprefs这个字段可以由用户自由控制,这就导致了漏洞利用的可能性。
在找到反序列化漏洞的可能利用点时候,通常会考虑两种方法,一种是通过PHPGGC反序列化武器库(一款能够自动生成主流框架的序列化测试payload的工具)来产生有效的攻击载荷达到命令执行的目的,另一种是通过在相关类的代码中找到相应的魔术方法构造一个新的利用链。
然而在vbulletin中,几乎每个类都使用了vB_Trait_NoSerialize特性,一些常见的魔术方法如__wakeup(),__ unserialize()等被调用时,只会抛出异常。这就使得通过类中相关魔术方法构造新的利用链的方法难以行得通。

图3
基于此,那只能尝试PHPGGC中能否生成有效的利用载荷。查阅资料发现,在vBulletin中包含有PHPGGC支持的Monolog库,其物理

本文探讨了vBulletin的一个安全漏洞,攻击者通过序列化漏洞执行代码。漏洞利用涉及PHP反序列化、autoload机制和Monolog库,官方已发布补丁。
最低0.47元/天 解锁文章
929

被折叠的 条评论
为什么被折叠?



