某凌 EKP 前台远程命令执行漏洞分析
字数 1408 2025-08-24 16:48:07

某凌 EKP 前台远程命令执行漏洞分析

漏洞描述

某凌 EKP 是由深圳市某凌软件股份有限公司开发的一款面向中小企业的移动化智能办公产品。该系统存在远程命令执行漏洞,攻击者能够借助 sysUiComponent 接口的 replaceExtend 方法,将 dataxml.jsp 后台命令执行漏洞转化为前台命令执行漏洞。

影响版本

  • version = V16

漏洞分析

前置漏洞(后台 dataxml.jsp RCE)

该漏洞属于后台 dataxml.jsp 远程命令执行的前台绕过版本。后台漏洞原理如下:

  1. 执行了 treeBeangetDataList 方法,并传入请求参数
  2. SysFormulaSimulateByJS 类继承了 IXMLDataBean,其 getDataList 方法通过 FormulaParser#parseValueScript() 执行传入的 script 脚本
  3. 虽然禁用了 unicode 和一些黑名单,但未禁用 Runtime.execProcessBuilder,因此仍可执行命令

利用方式

s_bean=sysFormulaSimulateByJS&script=var x = Function/**/('return(java.lang.Runtime.getRuntime())')();x.exec("calc.exe");var a = mainOutput();function mainOutput() {};

权限绕过机制

系统后来增加了权限校验(WEB-INF/KmssConfig/sys/authentication/spring.xml),匿名用户仅允许访问特定接口:

<property name="anonymousPaths">
    <value>
        /login*.jsp*; /resource/**; /service/**; /ui-ext/**; /*/*.index; /logout*; /admin.do*;
        /browser.jsp*;/third/dingrobot/dingrobotCover.do*;
        /axis/*; /kk*; /forward.html*; /sys/webservice/*;
        /vcode*;/sys/authentication/validate*;/ui-ext/scormcourse/**;/*.txt;
        /sys/print/word/file/**;/elec/rmkk/rmkk.do*;/elec/yqq/callback.do*;/sys/person/image.jsp*;/elec/sgt/callback.do*;/hr/recruit/invite_qr_code/*;
        /sysInfo*;/data/sys-attachment/sysJgWebOffice/execute;/sys/anonymous/enter/token.do*;/**/*.woff2;/**/*.woff;/**/*.ttf;/**/*.svg;/**/*.eot
    </value>
</property>

漏洞绕过(前台 RCE)

在 V16 版本中引入了 SysUiComponent,但在 design.xml (WEB-INF/KmssConfig/sys/ui/design.xml) 和 spring.xml 中忘记添加鉴权,导致可调用 SysUiComponentAction#getThemeInfo 进行文件上传。

漏洞利用流程

  1. 通过 SysUiComponentAction#replaceExtend()dataxml.jsp 所在目录的文件复制到可访问目录
  2. 调用 SysUiComponentService#replaceExtend() 获取两个参数值
  3. 删除 extendId 目录,然后将 folderName 目录的文件复制过来
  4. 通过 copyDirectory 方法递归复制目录内容

关键代码分析

public static void copyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate) throws IOException {
    // 检查源目录和目标目录的有效性
    checkFileRequirements(srcDir, destDir);
    
    if (!srcDir.isDirectory()) {
        throw new IOException("Source '" + srcDir + "' exists but is not a directory");
    } 
    else if (srcDir.getCanonicalPath().equals(destDir.getCanonicalPath())) {
        throw new IOException("Source '" + srcDir + "' and destination '" + destDir + "' are the same");
    } 
    else {
        // 执行实际的目录复制操作
        doCopyDirectory(srcDir, destDir, filter, preserveFileDate, exclusionList);
    }
}

路由分析

通过分析配置文件 /WEB-INF/KmssConfig/sys/ui/spring-mvc.xml

<bean
    name="/sys/ui/sys_ui_component/sysUiComponent.do"
    class="com.landray.kmss.sys.ui.actions.SysUiComponentAction"
    lazy-init="true"
    parent="KmssBaseAction">
    <!-- 配置详情省略 -->
</bean>

访问方式

  • URL: /sys/ui/sys_ui_component/sysUiComponent.do
  • 类: com.landray.kmss.sys.ui.actions.SysUiComponentAction

调用特定方法
要调用 replaceExtend() 方法,需要在URL中添加 method 参数:

/sys/ui/sys_ui_component/sysUiComponent.do?method=replaceExtend

漏洞利用

构造PoC的关键是将 dataxml.jsp 所在的目录 /sys/common 通过目录穿越复制到匿名用户可访问的Web目录。

修复建议

  1. design.xmlspring.xml 中为 SysUiComponent 添加适当的鉴权配置
  2. 限制 replaceExtend 方法的目录操作权限
  3. dataxml.jsp 的执行权限进行严格限制
  4. 更新系统至最新安全版本
某凌 EKP 前台远程命令执行漏洞分析 漏洞描述 某凌 EKP 是由深圳市某凌软件股份有限公司开发的一款面向中小企业的移动化智能办公产品。该系统存在远程命令执行漏洞,攻击者能够借助 sysUiComponent 接口的 replaceExtend 方法,将 dataxml.jsp 后台命令执行漏洞转化为前台命令执行漏洞。 影响版本 version = V16 漏洞分析 前置漏洞(后台 dataxml.jsp RCE) 该漏洞属于后台 dataxml.jsp 远程命令执行的前台绕过版本。后台漏洞原理如下: 执行了 treeBean 的 getDataList 方法,并传入请求参数 SysFormulaSimulateByJS 类继承了 IXMLDataBean ,其 getDataList 方法通过 FormulaParser#parseValueScript() 执行传入的 script 脚本 虽然禁用了 unicode 和一些黑名单,但未禁用 Runtime.exec 和 ProcessBuilder ,因此仍可执行命令 利用方式 : 权限绕过机制 系统后来增加了权限校验( WEB-INF/KmssConfig/sys/authentication/spring.xml ),匿名用户仅允许访问特定接口: 漏洞绕过(前台 RCE) 在 V16 版本中引入了 SysUiComponent ,但在 design.xml ( WEB-INF/KmssConfig/sys/ui/design.xml ) 和 spring.xml 中忘记添加鉴权,导致可调用 SysUiComponentAction#getThemeInfo 进行文件上传。 漏洞利用流程 : 通过 SysUiComponentAction#replaceExtend() 将 dataxml.jsp 所在目录的文件复制到可访问目录 调用 SysUiComponentService#replaceExtend() 获取两个参数值 删除 extendId 目录,然后将 folderName 目录的文件复制过来 通过 copyDirectory 方法递归复制目录内容 关键代码分析 : 路由分析 通过分析配置文件 /WEB-INF/KmssConfig/sys/ui/spring-mvc.xml : 访问方式 : URL: /sys/ui/sys_ui_component/sysUiComponent.do 类: com.landray.kmss.sys.ui.actions.SysUiComponentAction 调用特定方法 : 要调用 replaceExtend() 方法,需要在URL中添加 method 参数: 漏洞利用 构造PoC的关键是将 dataxml.jsp 所在的目录 /sys/common 通过目录穿越复制到匿名用户可访问的Web目录。 修复建议 在 design.xml 和 spring.xml 中为 SysUiComponent 添加适当的鉴权配置 限制 replaceExtend 方法的目录操作权限 对 dataxml.jsp 的执行权限进行严格限制 更新系统至最新安全版本