CVE-2025-11966CVE-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),访问即触发
- 可能导致会话劫持、凭据窃取、权限提升等后果