CVE-2025-24893 - 通过SolrSearch宏在XWiki中实现未授权远程代码执行

本文详细分析了CVE-2025-24893漏洞,这是一个XWiki平台中的严重未授权远程代码执行漏洞。攻击者可通过SolrSearch宏中的Groovy表达式注入实现任意代码执行,CVSS评分高达9.8。文章包含技术细节、利用步骤和缓解措施。

CVE-2025-24893 - 通过SolrSearch宏在XWiki中实现未授权远程代码执行

概述

CVE-2025-24893是XWiki(一个流行的开源企业Wiki平台)中的一个严重未授权远程代码执行(RCE)漏洞。该漏洞存在于SolrSearch宏处理搜索查询中的Groovy表达式时的不当方式,允许未经身份验证的攻击者远程执行任意Groovy代码,无需任何身份验证或事先访问权限。

CVE ID: CVE-2025-24893
严重等级: 严重
CVSS评分: 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
EPSS评分: 92.01%(利用可能性非常高)
发布日期: 2025年2月20日
受影响版本: 15.10.11、16.4.1和16.5.0RC1之前的所有版本
已修复版本: 15.10.11、16.4.1、16.5.0RC1

技术分析

XWiki包含一个名为SolrSearch的宏(定义在Main.SolrSearchMacros中),通过嵌入式Solr引擎实现全文搜索。该漏洞源于该宏评估Groovy中的搜索参数时的方式,未能清理或限制恶意输入。

攻击者可以通过GET请求将Groovy表达式注入搜索查询,导致系统在XWiki服务器进程的上下文中评估任意代码。

示例易受攻击的端点:

1
GET /xwiki/bin/view/Main/SolrSearchMacros?search=... (包含嵌入式Groovy代码)

如果Groovy表达式包含系统级命令(如创建文件或启动进程),这将导致直接RCE。

利用条件

  • 无需身份验证(来宾访问足够)
  • 公开暴露的XWiki实例
  • 使用受影响版本
  • SolrSearch宏可用

易受攻击的代码上下文

根本原因是在SolrSearch宏中不安全地评估Groovy内容:

1
2
def query = "search=${params.search}"  // 无清理
def result = evaluate(query)           // 危险地使用evaluate()

利用步骤

  1. 构造Groovy代码注入 构建一个将系统命令嵌入搜索参数的有效负载。
  2. 向宏发送GET请求
    1
    
    curl "http://<target>/xwiki/bin/view/Main/SolrSearchMacros?search=groovy:java.lang.Runtime.getRuntime().exec('touch /tmp/pwned')"
    
  3. 实现RCE 注入的代码被执行,攻击者获得XWiki服务器上的系统级访问权限。

利用与PoC

目前,尚无此CVE的官方Metasploit模块,但GitHub上存在一个可用的PoC:📎 https://github.com/a1baradi/Exploit/blob/main/CVE-2025-24893.py

缓解措施

  • 立即升级:

    • 15.x用户:升级到15.10.11
    • 16.4.x用户:升级到16.4.1
    • 其他用户:使用16.5.0RC1或更新版本
  • 限制来宾访问:尽可能禁用应用程序的匿名来宾访问。

  • 使用Web应用程序防火墙(WAF):实施过滤以阻止恶意查询参数。

  • 监控日志:在SolrSearch端点访问日志中查找异常的Groovy表达式。

参考

  • GitHub Advisory GHSA-rr6p-3pfg-562j
  • NVD Entry – CVE-2025-24893
  • Ionix Blog Analysis
  • PoC Exploit Script

点击下方访问我们学习库中的CVE-2025-24893实验室。CVE实验室可通过Learn Enterprise账户使用。

[访问此实验室]

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计