前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA代码审计-jsherpcms

JAVA代码审计-jsherpcms

作者头像
亿人安全
发布2023-12-13 12:18:17
1840
发布2023-12-13 12:18:17
举报
文章被收录于专栏:红蓝对抗红蓝对抗

免责声明

由于传播、利用本公众号亿人安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号亿人安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

朋友们现在只对常读和星标的公众号才展示大图推送,建议大家把“亿人安全设为星标”,否则可能就看不到了啦

原文首发在:奇安信攻防社

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

环境搭建

源码:https://github.com/jishenghua/jshERP/releases/tag/2.3

下载之后用idea导入

导入数据库文件

然后修改配置文件

然后启动

测试用户:jsh,密码:123456

sql注入

因为是审计 在加上该cms用的是mybatis 那当然是sql注入最容易审了

因为mybatis的$ # 号的区别 一个拼接一个预编译 具体区别可自行百度

直接全局搜索${ 寻找拼接sql的地方

在这里发现一个在like后面进行拼接sql的 然后全局搜索countsByUser这个

发现在UserService里面的countUser函数调用了这个sql 然后全局找UserService调用countUser的地方

未授权

查看filter文件

.css#.js#.jpg#.png#.gif#.ico,/user/login#/user/registerUser#/v2/api-docs资源请求不拦截

继续往下看

因为是通过getRequestURI();来获取的

在看55行 只要包含这几个路径就放行 那么可以通过../来进行绕过

测试

没登录的情况下 访问home会302跳转

成功绕过

下面对于静态资源的校验也是一样的

跟进这个函数

返回true

也是成功绕过

后续其他接口啥的该方式都可对鉴权进行绕过 未授权对接口进行操作

比如

存储xss

这个点是结合黑盒一起看的

先演示

修改备注 然后保存会发现直接弹xss了

然后每次点进来也会弹

分析

首先抓到保存的时候的包

从数据包也可以看到前端也是没有过滤的 然后根据数据包路由找到代码

找到controller层 然后跟进分析

可以看到获取到body参数的row 然后直接调用depotHeadService.updateDepotHeadAndDetail函数 继续跟进

因为从数据包里面看到xss语句是在row里面 直接看row传的地方

继续跟进函数

从数据包里面可以看到xss payload是在remark参数里面 继续找

一直跟到这里

最后来到这里 然后前面没有看到过滤的操作 继续跟进

就直接调用mapper执行数据库插入了 没有进行过滤

打断点 调试到这里也可以看到

这是存入的时候没有过滤 下面看输出的时候

点击编辑的时候会抓到这个包

根据路由全局找到代码

根据headerId来进行查询数据

查到数据也是直接返回 没有过滤 然后返回给前端

返回的json格式

然后来到前端页面 因为返回的是json格式前端肯定是发出ajax请求来获取数据的 直接来到页面搜索api:/depotItem/getDetailList

拿到数据后是通过datagrid来渲染的 也就没有过滤 所以造成了xss

datagrid可以自行百度一下

也就是说 其他地方也都是这种 存在存储xss 不止这一个页面

越权

进入账号用户管理 然后编辑用户 重置密码

可以看到这里有一个id

然后根据路由来到代码的地方

在这里就校验了重置的账号是不是admin 没有其他鉴权操作 也就是说可以直接重置admin开外的所有账户

测试

登录test3

抓到cookie 替换到刚才的包

test2 id为135

这里越权重置密码之后 可以越权修改

越权2

越权修改密码

在第一个越权重置之后 修改密码的地方同样也可以越权

同样也没有什么鉴权

比对了一下旧密码 但因为之前已经重置 所以 也可以修改

像什么删除这些也是同样可以的

接口泄露

这个是直接能够访问的 通过接口泄露 也就可以知道前面越权的api接口

3.1新版都已修复 如sql注入

${ 改成了#{ #{} : 对读取到的参数先使用?来占位,然后去预编译SQL,最后再将?替换为形参值。

${} : 直接替换读取到的形参值,没有预编译的过程。

接口泄露的url也没了

其他也都类似

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 亿人安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境搭建
  • sql注入
  • 未授权
  • 存储xss
  • 越权
  • 接口泄露
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档