Vert.x-Web目录列表存储型XSS漏洞分析

本文详细分析了CVE-2025-11966漏洞,该漏洞影响Vert.x-Web框架,攻击者可通过恶意文件名在目录列表中注入HTML/JavaScript代码,导致存储型跨站脚本攻击。

漏洞概述

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模板

复现步骤

  1. 环境配置

    • 启用目录列表功能:StaticHandler.create("public").setDirectoryListing(true)
    • 攻击者能够在公开目录下创建任意文件名
  2. 创建恶意文件

    1
    2
    
    mkdir -p public
    printf 'test' > "public/<img src=x onerror=alert('XSS')>.txt"
    
  3. 服务器配置

    1
    2
    
    router.route("/public/*").handler(StaticHandler.create("public").setDirectoryListing(true));
    vertx.createHttpServer().requestHandler(router).listen(8890);
    
  4. 漏洞验证: 访问/public/目录时,未转义的文件名会被浏览器解析为HTML,执行恶意JavaScript代码。

潜在影响

  • 存储型XSS攻击:用户在查看目录列表页面时自动执行恶意代码
  • 会话劫持:窃取会话令牌、JWT、localStorage内容或CSRF令牌
  • 未授权操作:利用管理员权限执行用户创建、权限修改等操作
  • 水坑攻击:分发恶意软件或向其他页面注入恶意脚本

易受攻击的常见场景

  • 上传文件直接存放在公开可访问目录
  • 共享/同步目录(如NFS、SMB、WebDAV或云同步)暴露给Web
  • 在生产环境中启用目录列表功能并直接解压ZIP/TAR归档文件

相关CVE

  • CVE-2024-32966
  • CVE-2019-15603

参考链接

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计