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

admin 2022年9月21日23:54:31评论39 views字数 2578阅读8分35秒阅读模式

文章由作者授权转载:首发于奇安信攻防社区

https://forum.butian.net/share/1892

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

继续回到/formmodel/mobile/manage...

0x00 如何搜索

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

0x01 简单说明

对登录的账号进行判断是否为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来进行访问。

0x02 流程

/formmodel/mobile/mec/servlet/MECAdminAction.java
在37行对登录的用户进行了判断是否 admin sysadmin的权限

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

/formmodel/mobile/manager/MobileUserInit.java
首先进行假设, 22行通过http请求获取sessionkey参数

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

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

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


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

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

继续回到/formmodel/mobile/manager/MobileUserInit.java
这里的①是空的 还不知道是什么直接跳过进行②步
第②步是通过http请求获取Mobilemode_UserKey参数的值并且去空格
并在第③步进行了userid的查询

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

/mobile/plugin/ecology/service/HrmResourceService.java
就是这里,根据id查询是否为管理员的权限

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

继续回到formmodel/mobile/manager/MobileUserInit.java
这里的第②就是关键点所在了,是读取了这个str的值是否等于1就进到判断里面进行管理员赋值

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

再次回到最初的/formmodel/mobile/mec/servlet/MECAdminAction.java
然后一直往下执行sql语句

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

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

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

/conn/RecordSet.java#executeSql()

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

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

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

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

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

/conn/RecordSet.java#executeSql()

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

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

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

0x03 可用利用链/调用方式

如何访问当前方法

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

寻找getAction
访问方式
url参数

getAction()怎么来的
这里可以自行搜索全局的"getAction"

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

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

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


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

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

最终利用:

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

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

0x04 回顾鉴权解密

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

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

/formmodel/mobile/manager/MobileUserInit.java#getUser()
这里的userkey是url参数控制的,也就是用户可控的,那么能不能进行一个伪造key呢?

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

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

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

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


/formmodel/mobile/MobileModeConfig.java#getSecurityKey
去寻找到他的类,并且跟进之后发现配置文件所在的地方

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

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

/formmodel/mobile/security/EDFactory.java

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

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

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

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

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


官方补丁:

https://www.weaver.com.cn/cs/securityDownload.html?src=cn

·end·

—如果喜欢,快分享给你的朋友们吧—

我们一起愉快的玩耍吧!


原文始发于微信公众号(亿人安全):x微前台绕过鉴权执行sql分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月21日23:54:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   x微前台绕过鉴权执行sql分析http://cn-sec.com/archives/1308891.html

发表评论

匿名网友 填写信息