漏洞概述
Vert.x-Web框架在目录列表功能中存在存储型跨站脚本(XSS)漏洞,攻击者可通过控制文件名注入恶意代码。
受影响版本
- Maven包:
io.vertx:vertx-web - 受影响版本:
- < 4.5.22
-
= 5.0.0, <= 5.0.4
- 已修复版本:
- 4.5.22
- 5.0.5
技术细节
漏洞位置
文件:vertx-web/src/main/java/io/vertx/ext/web/handler/impl/StaticHandlerImpl.java
问题代码段:
- 第709-713行:
normalizedDir构造时未进行HTML转义 - 第714-731行:
<li><a ...>元素直接将文件名插入属性和文本内容 - 第744行:父目录名构造
- 第746-751行:
{directory}、{parent}和{files}直接插入HTML模板
复现步骤
-
环境配置:
- 启用目录列表功能:
StaticHandler.create("public").setDirectoryListing(true) - 攻击者能够在公开目录下创建任意文件名
- 启用目录列表功能:
-
创建恶意文件:
1 2mkdir -p public printf 'test' > "public/<img src=x onerror=alert('XSS')>.txt" -
服务器配置:
1 2router.route("/public/*").handler(StaticHandler.create("public").setDirectoryListing(true)); vertx.createHttpServer().requestHandler(router).listen(8890); -
漏洞验证: 访问
/public/目录时,未转义的文件名会被浏览器解析为HTML,执行恶意JavaScript代码。
潜在影响
- 存储型XSS攻击:用户在查看目录列表页面时自动执行恶意代码
- 会话劫持:窃取会话令牌、JWT、localStorage内容或CSRF令牌
- 未授权操作:利用管理员权限执行用户创建、权限修改等操作
- 水坑攻击:分发恶意软件或向其他页面注入恶意脚本
易受攻击的常见场景
- 上传文件直接存放在公开可访问目录
- 共享/同步目录(如NFS、SMB、WebDAV或云同步)暴露给Web
- 在生产环境中启用目录列表功能并直接解压ZIP/TAR归档文件
相关CVE
- CVE-2024-32966
- CVE-2019-15603
参考链接
- GHSA-45p5-v273-3qqr
- https://nvd.nist.gov/vuln/detail/CVE-2025-11966