漏洞分析 | WordPress Bricks Builder远程代码执行漏洞(CVE-2024-2…

2024-03-23 1,034 0

漏洞概述

Bricks Builder 是WordPress上的一款功能强大的主题编辑插件。近日,网宿演武安全实验室发现,在WordPress小于1.9.6版本的默认配置中存在远程代码执行漏洞,导致用户可以绕过权限检查,并最终实现远程代码执行,获取服务器权限。该漏洞利用条件简单,影响范围甚广,建议广大企事业单位检查WordPress版本并修复相关漏洞,或引入Web防护方案,阻止针对该漏洞的利用行为。

受影响版本

Bricks Builder <= 1.9.6

漏洞分析

根据公开的漏洞概述以及poc,首先全局定位到/bricks/v1/render_element路由,在bricks/includes/api.php文件中注册了该REST API路由,定义了请求方式,回调函数render_element以及权限检查回调函数render_element_permissions_check。

我们在源码上打上断点,动态调试,进一步分析。在服务器收到请求后,会先调用权限检查回调函数。

跟入bricks/includes/api.php,其权限检查回调函数render_element_permissions_check中,发现其通过nonce的值来进行权限校验。

然而在bricks中,它将有效的nonce包含进入了前端,刷新wordpress主页,可在前端源码中全局查找到nonce。这意味着这个权限检查回调函数完全失效,任何未授权的用户都可以在该api执行操作。

在从前端提取的nonce值通过有效验证后,接着跟入到回调函数render_element中,在其中调用了Ajax::render_element函数,并将我们请求体中的参数传入。

接着跟入bricks/includes/ajax.php的render_element函数中,在该函数中主要是根据参数查找出Element_Code类,并进行实例化。

实例化后调用init(),接着在bricks/includes/elements/base.php中跟进该函数。

在其中关注this->render()函数,继续在bricks/includes/elements/code.php跟进,发现其主要是进行一些危险函数调用检查后,以异常处理的方式用eval函数执行配置里面用户提交的code代码。在这里code参数用户可控,可配合采用<?php throw new Exception(`CMD` . \"END\"); ?>的方式实现代码执行。

最后从当前缓冲区的内容得到代码执行的结果,一步一步回调完成请求。

漏洞复现

采用wordpress6.4.3+bricks builder1.9.4本地搭建。在wordpress首页查看源码全局搜索nonce的值。

用Burpsuite在http://127.0.0.1/wordpress/?rest_route=/bricks/v1/render_element下构造请求,并且以post的方式提交以下数据执行命令“python --version”。在返回的结果中可以成功查看到当前主机的python版本。

受影响资产

从fofa上查询相关资产有25000多个,fofa语句:body="/wp-content/themes/bricks/"

修复方案

尽快使用最新wordpress bricks builder theme版本,不采用nonce作为权限检查回调函数鉴权以及对用户提交输入进行严格的检查过滤。


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

办事处网络安全监控与事件响应;国外员工终端安全性怎么保障 | FB甲方群话题讨论
拿不下总统之位,那就用热加载拿下验证码识别与爆破好了!
Sooty:一款SoC分析一体化与自动化CLI工具
shiro CVE-2016-6802 路径绕过(越权)
Apache Solr 身份验证绕过漏洞(CVE-2024-45216)详解
llama_index的CVE-2024-4181漏洞根因分析

发布评论