某凌EKP未授权访问漏洞分析
字数 1205 2025-08-24 10:10:13

X凌EKP未授权访问漏洞分析教学文档

0x00 产品简介

X凌EKP是一款企业协同办公平台,具有以下特点:

  • 适用于各种规模的组织
  • 旨在提高工作效率、促进团队协作
  • 优化业务流程
  • 帮助组织更好地管理日常工作
  • 增强企业竞争力

0x01 漏洞概述

漏洞类型:未授权访问漏洞
影响范围:可以读取resource目录下的所有文件,包括日志请求信息
影响版本:V15等版本

0x02 漏洞复现

漏洞利用条件

  1. 目标系统运行受影响版本的X凌EKP
  2. 系统未打补丁修复此漏洞

漏洞利用方式

通过构造特殊URL路径,绕过权限检查,访问resource目录下的文件

0x03 漏洞原理深度分析

漏洞核心组件

  1. spring.xml配置文件中存在匿名路径:/ui-ext/**
  2. web.xml中对应的Servlet是com.landray.kmss.web.servlet.RedirectServlet

请求处理流程

  1. 请求经过一系列Filter后到达RedirectServlet
  2. service方法处理流程:
    protected void service(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
        String url = request.getRequestURI().replaceFirst(request.getContextPath(), "");
        if (!url.endsWith(".theme.css") || !url.startsWith("/ui-ext/") && !url.startsWith("//ui-ext/")) {
            this.redirect(request, response);
        } else {
            ThemeUtil.service(request, response);
        }
    }
    

关键绕过技术

  1. 路径遍历:使用/./构造特殊路径

    • 示例:/./ui-ext/./behavior
    • 绕过判断逻辑:url.startsWith("/ui-ext/")检查
  2. 多斜杠绕过

    • Spring MVC默认将多个斜杠视为单个斜杠
    • 可使用//ui-ext/方式绕过

文件访问机制

  1. redirect方法调用getFileName方法处理路径:

    private String getFileName(HttpServletRequest request) {
        String req = request.getRequestURI().replaceFirst(request.getContextPath(), "");
        req = req.replaceFirst(this.requestPath, "");
        return this.forwardPath + req;
    }
    
  2. 路径转换过程:

    • 原始路径:/./ui-ext/./behavior
    • 替换/ui-ext/后:/../behavior
    • 最终拼接:file:c:/landray/kmss/resource/ui-ext//../behavior
    • 实际访问:c:/landray/kmss/resource/behavior

安全限制检查

  1. 检查路径中是否包含非法字符:

    • %c0(URL编码)
    • %00(空字节)
  2. 禁止访问.ini文件

0x04 漏洞修复方案

官方修复

  1. 联系官方获取补丁
  2. 升级到安全版本

临时缓解措施

  1. 修改spring.xml配置,限制/ui-ext/**路径的访问权限
  2. 在Filter层增加对路径遍历字符的检查
  3. 限制resource目录的直接访问

0x05 漏洞验证与测试

测试用例

  1. 尝试访问:http://target//ui-ext/../behavior
  2. 尝试访问:http://target/./ui-ext/./behavior

预期结果

  • 漏洞存在时:能够读取resource目录下的文件
  • 已修复时:返回403禁止访问或404未找到

0x06 总结

该漏洞利用Spring MVC路径处理特性和路径遍历技术,绕过权限检查,实现未授权访问系统文件。漏洞危害较高,可导致敏感信息泄露,建议受影响用户尽快升级修复。

X凌EKP未授权访问漏洞分析教学文档 0x00 产品简介 X凌EKP是一款企业协同办公平台,具有以下特点: 适用于各种规模的组织 旨在提高工作效率、促进团队协作 优化业务流程 帮助组织更好地管理日常工作 增强企业竞争力 0x01 漏洞概述 漏洞类型 :未授权访问漏洞 影响范围 :可以读取resource目录下的所有文件,包括日志请求信息 影响版本 :V15等版本 0x02 漏洞复现 漏洞利用条件 目标系统运行受影响版本的X凌EKP 系统未打补丁修复此漏洞 漏洞利用方式 通过构造特殊URL路径,绕过权限检查,访问resource目录下的文件 0x03 漏洞原理深度分析 漏洞核心组件 spring.xml 配置文件中存在匿名路径: /ui-ext/** web.xml 中对应的Servlet是 com.landray.kmss.web.servlet.RedirectServlet 请求处理流程 请求经过一系列Filter后到达RedirectServlet service 方法处理流程: 关键绕过技术 路径遍历 :使用 /./ 构造特殊路径 示例: /./ui-ext/./behavior 绕过判断逻辑: url.startsWith("/ui-ext/") 检查 多斜杠绕过 : Spring MVC默认将多个斜杠视为单个斜杠 可使用 //ui-ext/ 方式绕过 文件访问机制 redirect 方法调用 getFileName 方法处理路径: 路径转换过程: 原始路径: /./ui-ext/./behavior 替换 /ui-ext/ 后: /../behavior 最终拼接: file:c:/landray/kmss/resource/ui-ext//../behavior 实际访问: c:/landray/kmss/resource/behavior 安全限制检查 检查路径中是否包含非法字符: %c0 (URL编码) %00 (空字节) 禁止访问 .ini 文件 0x04 漏洞修复方案 官方修复 联系官方获取补丁 升级到安全版本 临时缓解措施 修改 spring.xml 配置,限制 /ui-ext/** 路径的访问权限 在Filter层增加对路径遍历字符的检查 限制resource目录的直接访问 0x05 漏洞验证与测试 测试用例 尝试访问: http://target//ui-ext/../behavior 尝试访问: http://target/./ui-ext/./behavior 预期结果 漏洞存在时:能够读取resource目录下的文件 已修复时:返回403禁止访问或404未找到 0x06 总结 该漏洞利用Spring MVC路径处理特性和路径遍历技术,绕过权限检查,实现未授权访问系统文件。漏洞危害较高,可导致敏感信息泄露,建议受影响用户尽快升级修复。