WordPress 备份迁移插件漏洞 (CVE-2023-6553)

最后更新于 2024年7月3日
WordPress-Backup-Migration-Plugin-Vulnerability-1536x538.jpg

WordPress 备份迁移插件是一个强大的工具,可简化 WordPress 网站的备份和迁移过程,提供一系列易于使用的功能。

近日,CDNetworks 安全实验室在 1.3.8 之前的 Backup Migration 插件版本中发现了一个远程代码执行漏洞。该漏洞在 CVSS 3.1 中的评级为 9.8,危险等级为严重。该漏洞允许恶意攻击者通过后门访问对目标网站进行远程执行命令,从而完全控制该网站。

该漏洞的利用条件相对简单,但影响范围较广,为防止被利用,企业应检查该插件的版本,并修复相关漏洞,甚至最好引入 Web 防护解决方案。

在本快速指南中,我们对该漏洞进行了分析。

漏洞分析与复制

该漏洞存在于插件文件 /includes/backup-heart.php 中。复现此漏洞的第一步是找到这个文件,设置断点,然后向路径 /wp-content/plugins/backup-backup/includes/backup-heart.php 发送数据进行动态调试,服务器收到数据后发现请求头数据保存在变量 $fields 中。

WordPress-Backup-Migration-Plugin-Vulnerability_01.jpg

继续往下看,我们可以看到 $fields 中的字段值被定义为常量。这里主要关注的是常量 BMI_ROOT_DIR 和 BMI_INCLUDES。BMI_ROOT_DIR 的值由请求头中的 content-dir 值决定,BMI_INCLUDES 的值由 BMI_ROOT_DIR 和“includes”连接而成。

WordPress-Backup-Migration-Plugin-Vulnerability_02-1024x418.jpeg

另外发现 BMI_INCLUDES 与 bypasser.php 连接在一起,使用 require_once 函数进行包含,因此 require_once 的参数是可控的,是一个典型的文件包含漏洞。

WordPress-Backup-Migration-Plugin-Vulnerability_03.jpg

在某些编码中,使用固定前缀作为编码的起始字符。以下是不同编码的字符。例如,在韩语字符编码 (ISO-2022-KR) 中,编码消息必须以序列“\x1b$)C”开头。

编码标识符 前置字符
ISO2022KR \x1b$)C
UTF16 \xff\xfe
UTF32 \xff\xfe\x00\x00

全球有近 7000 种语言,各种可打印字符是全球互联网通信所必需的。

基本的 ASCII 编码表广为人知,但它有局限性。它无法表达日语字符,也无法包含希腊字母中的“λ”、“ν”、“π”等符号。为了显示来自其他语言的字符和“☺”等表情符号,已经开发了各种编码表。

这些编码表可以将一种语言中的字符转换为另一种语言中的字符,转换过程受到编码长度、前缀字符等因素的影响,甚至可能产生新的字符。

在主机上我们可以使用 iconv -l 来查看支持的编码转换表。

WordPress-Backup-Migration-Plugin-Vulnerability_04.jpg

这些转换表可以通过 php://convert.iconv.. 过滤器使用。例如,convert.iconv.CP861.UTF-16 表示将文件的字符编码从 CP861 转换为 UTF-16。

在下面的代码示例中,通过将字符串 “START” 经过 “CP861”、“UTF16”、“L4” 和 “GB13000” 编码转换,可以在字符串的开头插入一个新字符 “B”。

WordPress-Backup-Migration-Plugin-Vulnerability_05.jpg WordPress-Backup-Migration-Plugin-Vulnerability_06.jpg

那么编码转换过程中产生的垃圾字符该如何处理呢?在 PHP 中,base64 解码有一个特点,就是只识别 ‘0-9’、‘a-z’、‘A-Z’、’/’、’+’ 和填充字符 ‘=’ 这 64 个字符。如果解码的字符串中含有其他字符,PHP 会直接忽略这些字符,将剩余可以识别的字符拼接起来进行解码。例如:

WordPress-Backup-Migration-Plugin-Vulnerability_07-1024x418.jpeg

可以看到,在解码过程中,字符串中的 ‘@&>>_’ 等字符会被自动忽略。我们可以使用松散解析的 base64 解码来消除编码转换过程中产生的垃圾字符。需要注意的是,如果垃圾字符中包括 ‘=’,会影响 convert.base64-decode 过滤器的解码,我们可以使用 UTF-7 编码将 ‘=’ 符号转换为其他符号,而不会影响 convert.base64-decode 过滤器的解码。

利用上面的方法,我们可以生成任意的 base64 字符,对生成的 base64 字符进行解码后,可以得到任意的原始字符。最后,我们将构造好的原始 payload 与 php://filter/{filter}/resource=php://temp 进行拼接(指定 resource=php://temp 可以附加任意的 .php 文件,以确保路径有效),将 payload 写入文件,然后使用 require_once 包含该文件,实现文件包含到代码执行。

在 GitHub 上,有作者编写了一个编码转换工具,可以快速使用 php://convert.iconv.. 过滤器生成相应的 base64 字符。

WordPress-Backup-Migration-Plugin-Vulnerability_08-1024x418.jpeg WordPress-Backup-Migration-Plugin-Vulnerability_09-1024x418.jpeg

该脚本生成的 payload 被设置为请求头 content-dir 的值。

WordPress-Backup-Migration-Plugin-Vulnerability_10-1024x260.jpeg

可以看出,编码转换后生成的恶意代码已成功写入并包含,完成了从文件包含到代码执行的过程。

WordPress-Backup-Migration-Plugin-Vulnerability_11-1024x350.jpeg

使用 WordPress 6.4.3 + Backup Migration Plugin 1.3.6 在本地进行设置。使用 php_filter_chain 工具生成 payload 代码 out.txt`; ?>` 命令。
(https://github.com/synacktiv/php_filter_chain_generator/blob/main/php_filter_chain_generator.py

WordPress-Backup-Migration-Plugin-Vulnerability_12.jpg

将结果复制作为请求头中 content-dir 的值,并将数据包发送到路径 http://localhost/wordpress/wp-content/plugins/backup-backup/includes/backup-heart.php。

WordPress-Backup-Migration-Plugin-Vulnerability_13.jpg

访问 http://localhost/wordpress/wp-content/plugins/backup-backup/includes/out.txt,可以看到系统命令执行结果已经写入 out.txt 文件中。

WordPress-Backup-Migration-Plugin-Vulnerability_14-1024x268.jpg

漏洞修复解决方案

最新版本的备份迁移插件 已修复该问题,建议尽快更新至最新版本。

最大限度地减少漏洞:CDNetworks 的云安全 2.0

CDNetworks 的云 WAF 针对该漏洞利用,提供即时防护,并持续调查分析其他变种攻击手法及各类组件漏洞,及时部署防护规则,最大限度降低企业的“漏洞窗口”。

最近一个月,CDNetworks 将其云安全解决方案升级为 云安全 2.0,介绍 WAF 的几个主要特性:

  • 内置规则集: 针对 0-day/N-day 和 OWASP Top 10 攻击的 1,000 多个规则集。
  • 智能分析(自我调节): 人工智能驱动的用户行为学习,自动生成规则例外以减少误报。
  • 零日攻击虚拟补丁: 持续监控漏洞,每小时生成新规则。
  • 采用 AI 技术的托管保护模式: 增强威胁检测和响应。
  • 可扩展性和易于部署: 可根据需要扩展并轻松部署。

通过整合这些功能,CDNetworks 旨在满足亚太地区企业不断变化的安全需求,确保组织在竞争激烈的市场中保持受到保护。

免费试用
CDNetworks

我们的多数产品都有14天的免费试用。无需信用卡。

探索更多

其他

CDNetworks Edge Application (边缘应用):解锁无服务器边缘计算的强大功能

Edge Application (边缘应用)是 CDNetworks 领先的无服务器边缘计算解决方案。阅读了解了解其原理、核心优势及典型应用场景。

了解更多 »
云安全

CDNetworks 帮助浏览器游戏平台抵御大规模 1.24 Tbps DDoS 攻击

2024年10月24日,CDNetworks成功抵御了东南亚某大型用户群页游平台遭受的超大规模DDoS攻击,攻击在网络层达到1.24Tbps,在应用层超过百万QPS。

了解更多 »