x微前台绕过鉴权执行sql分析

简介: x微前台绕过鉴权执行sql分析
  • /formmodel/mobile/mec/servlet/MECAdminAction.java /formmodel/mobile/manager/MobileUserInit.java /mobile/plugin/ecology/service/AuthService.java 继续回到/formmodel/mobile/manage...

如何搜索

搜这个“public\Wclass\W\w{0,}Action”。根据这样的搜索随机漏洞,有时候会出意料之外的洞,比如这次的任意sql执行

简单说明

对登录的账号进行判断是否为admin/sysadmin账号,获取Action参数进行判断是否为getDatasBySql参数,然后直接调用getDatasBySql方法

geDatasBySql的方法是获取了http实例并获取http的sql和datasource的参数,并对这个datasource参数进行判断,当sql语句执行成功后就直接将bool参数赋值为ture,然后进行判断如果不为true的话就直接跳出回显空,否则就继续将sql返回的数据进行json数组的转换输出回显。

这时候思路应该很明了了,全局搜索这个类的路径“com.weaver.formmodel.mobile.mec.servlet.MECAdminAction”,但是这没前端代码只有js文件里面匹配到了,而且还是插件的js,但是默认是存在的,所以这个漏洞是存在的,可以构造http://127.0.0.1/mobilemode/Action.jsp?invoker=com.weaver.formmodel.mobile.mec.servlet.MECAdminAction&action=getDatasBySQL&datasource=&sql=select%20\*%20from%20SystemSet来进行访问。

流程

/formmodel/mobile/mec/servlet/MECAdminAction.java

在37行对登录的用户进行了判断是否 admin sysadmin的权限

/formmodel/mobile/manager/MobileUserInit.java

首先进行假设, 22行通过http请求获取sessionkey参数

/mobile/plugin/ecology/service/AuthService.java

在这个方法里是进行了查询userid的操作,也就是账号权限

继续回到/formmodel/mobile/manager/MobileUserInit.java

这里的①是空的 还不知道是什么直接跳过进行②步

第②步是通过http请求获取Mobilemode_UserKey参数的值并且去空格

并在第③步进行了userid的查询

/mobile/plugin/ecology/service/HrmResourceService.java

就是这里,根据id查询是否为管理员的权限

继续回到formmodel/mobile/manager/MobileUserInit.java

这里的第②就是关键点所在了,是读取了这个str的值是否等于1就进到判断里面进行管理员赋值

再次回到最初的/formmodel/mobile/mec/servlet/MECAdminAction.java

然后一直往下执行sql语句

/formmodel/mobile/mec/servlet/MECAdminAction.java#getDatasBySQL()

/conn/RecordSet.java#executeSql()

中间代码太长就不说了,有兴趣可以自己研究研究

/formmodel/mobile/mec/servlet/MECAdminAction.java#getDatasBySQL()

/conn/RecordSet.java#executeSql()

中间代码太长就不说了,有兴趣可以自己研究研究

可用利用链/调用方式

如何访问当前方法

寻找getAction

访问方式

url参数

getAction()怎么来的

这里可以自行搜索全局的"getAction"

在这里找到了一处调用的地方

最终利用: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

回顾鉴权解密

在前面的"formmodel/mobile/manager/MobileUserInit.java"地方说过 str不知道是什么

/formmodel/mobile/manager/MobileUserInit.java#getUser()

这里的userkey是url参数控制的,也就是用户可控的,那么能不能进行一个伪造key呢?

/formmodel/mobile/security/EDUtil.java#decrypt

/formmodel/mobile/MobileModeConfig.java#getSecurityKey

去寻找到他的类,并且跟进之后发现配置文件所在的地方

也就是这个文件的key值,所谓的硬偏码

/formmodel/mobile/security/EDFactory.java

回到/formmodel/mobile/security/EDUtil.java

回到/formmodel/mobile/manager/MobileUserInit.java继续重复的操作

官方补丁:https://www.weaver.com.cn/cs/securityDownload.html?src=cn

相关文章
|
2天前
|
SQL 索引
19. 一个SQL语句执行很慢, 如何分析
该内容介绍了如何分析执行慢的SQL语句。首先启用慢查询日志或使用命令获取慢查询的SQL。然后利用`EXPLAIN`命令分析,关注其中的`select_type`, `type`, 和 `extra`字段。`select_type`涉及子查询和联合查询的类型,`type`表示查询优化器使用的访问类型,性能从上到下递减,`extra`字段提供额外信息,如是否使用索引等。
19 0
|
2天前
|
SQL 数据库
20、绕过去除and、or、union select、空格的sql注入
20、绕过去除and、or、union select、空格的sql注入
36 0
|
2天前
|
SQL 数据库
小课堂 -- 绕过去除特殊字符的sql注入
小课堂 -- 绕过去除特殊字符的sql注入
27 0
|
2天前
|
SQL 数据可视化 算法
SQL Server聚类数据挖掘信用卡客户可视化分析
SQL Server聚类数据挖掘信用卡客户可视化分析
|
2天前
|
SQL 分布式计算 数据可视化
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
|
2天前
|
SQL 机器学习/深度学习 数据采集
数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
|
2天前
|
SQL 机器学习/深度学习 算法
SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据
SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据
|
2天前
|
SQL 自然语言处理 算法
NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
|
2天前
|
SQL 关系型数据库 MySQL
[第一章 web入门]SQL注入-2 题目分析与详解
[第一章 web入门]SQL注入-2 题目分析与详解
|
2天前
|
SQL 数据库
[第一章 web入门]SQL注入-1 题目分析与详解
[第一章 web入门]SQL注入-1 题目分析与详解