CVE-2017-20207CVE-2017-20207是WordPress Flickr Gallery插件中存在的一个高危PHP对象反序列化注入漏洞,影响版本包括1.5.2及之前的所有版本。该漏洞源于插件在处理用户请求时,未对`pager`参数中的序列化数据进行充分的验证和过滤,直接将其传入PHP的`unserialize()`函数进行反序列化操作。攻击者可以通过精心构造恶意的序列化字符串,注入任意PHP对象到应用上下文中。由于WordPress核心类中存在可被利用的魔术方法(如`WP_Theme`类),攻击者能够利用这些类实现远程代码执行,从而在受害者的WordPress网站上创建后门、植入Web Shell或执行任意命令。该漏洞的CVSS评分为9.8,属于严重级别,且无需任何认证即可远程利用,被披露时已有攻击者在野利用的迹象。漏洞由Wordfence安全团队的研究员发现并报告,WordPress插件库随后发布了修复版本。鉴于该漏洞的严重性和利用门槛极低,网站管理员应立即检查并更新受影响的插件版本,以防止网站遭受入侵。
该漏洞的核心技术原理在于PHP对象反序列化(PHP Object Injection)。PHP的`unserialize()`函数能够将序列化字符串还原为PHP对象,但在反序列化过程中,如果对象所属的类定义了魔术方法(如`__wakeup()`、`__destruct()`、`__toString()`等),这些方法会在反序列化过程中被自动调用。
在Flickr Gallery插件的代码中,`pager`参数接收用户输入的序列化数据,并直接调用`unserialize()`进行处理,攻击者可以传入精心构造的序列化Payload。当Payload中包含`WP_Theme`类对象时,由于该类实现了`__destruct()`或`__toString()`等魔术方法,会在对象销毁或转换时触发文件操作或代码执行行为。
攻击者利用这一机制,可以通过构造恶意的序列化字符串,调用`WP_Theme`类的方法实现任意文件写入或代码执行,从而在WordPress网站的目录中创建后门文件(如Web Shell)。整个攻击过程无需任何认证(PR:N),无需用户交互(UI:N),且可通过网络远程发起(AV:N),攻击复杂度极低(AC:L),对机密性、完整性和可用性均产生高影响(C:H/I:H/A:H)。