分享 | SpringBoot渗透总结
2022-3-31 09:10:0 Author: mp.weixin.qq.com(查看原文) 阅读量:4 收藏

文章来源 :雁行安全团队

一、前言

今天的文章主要跟大家聊一下关于springboot环境下的渗透。Springboot现如今可以说是java开发的一个入门框架,深受各个公司亲赖,现有java站点springboot还是有一定比例的,所以说还是有必要对springboot渗透有一定了解。

二、攻击思路

1.  总体分析

对于springboot框架,常见的攻击思路主要是监控端点以及swagger-ui接口的一些利用,已有的文章算是比较多了,这里给一个GitHub的地址:https://github.com/LandGrey/SpringBootVulExploit,其中对于漏洞的介绍算是比较详细,所以在这里主要介绍一些经验之谈以及一些新东西。

2.  版本

对于springboot框架识别,大部分师傅可能已经了解,这里稍微提一下,可以根据图中的两个特征或者cookie中的springboot标识等确定目标站点是否为springboot。

springboot大版本可以分为1.x和2.x,通过暴露的监控端点可以区分其版本。1.x版本在监控端点未授权的情况下,默认是监控端点是全部打开的,而在2.x版本,可能是官方为了安全着想,默认仅开启了几个无伤大雅的端点。

下图为Springboot 1.x启动时开启的监控端点

下图为Springboot 2.x启动时开启的监控端点

只有当Endpoint. Shutdown. enabled属性设置为true时才会暴露出其他敏感端点

3.  env端点攻击

env端点是在渗透时候比较重要的一个端点,一些历史rce漏洞基本都需要依赖该端点post数据给服务器,并且改端点还会暴露系统一些比较敏感的信息。

3.1获取脱敏敏感信息

该端点对敏感信息会进行脱敏处理,对于获取脱敏敏感信息,主要分为远程请求vps和heapdump内存中查找。我建议从内存中查找,这样可以避免vps地址暴露。其次敏感信息不局限于数据库密码等,还有可能存在邮箱账号,企业微信apikey,微信小程序apikey等,这些都是在项目中确切获取到过的。

如下为某企业微信apikey,微信有公开的api文档,通过这些可以获取目标大量人员信息,甚至是加入到目标的企业微信中。

如下为某小程序微信apikey,使用官方api查看该小程序存在大量用户,拥有该小程序的某些控制权限危害还是比较大的。

对于获取到的数据库连接信息都是内网的,不要认为没有用处,密码和端口还是有一定作用,对于非随机的密码,可以在目标所属ip段进行碰撞或者组合密码规则获取数据库权限也是有可能的,在《记一次hw打点》文章中也确实获取了外网redis的权限。微信apikey、邮箱账号等权限都是重要信息,可以更加贴近目标,对于接下来的攻击做铺垫。

3.2 env端点下的rce

历史rce在github项目中已经提及七七八八,各位师傅可以下载项目中的靶场环境进行复现,需要注意的一点就是1.x和2.x中提交数据时的Content-Type分别为application/x-www-form-urlencoded和application/json,否则会提交数据失败。

4.  httptrace端点

httptrace端点可以获取当前web访问的请求信息,可能找到未销毁的管理员cookie信息,在这里建议判断到一个web为springboot开发时候不要扫描目录,别问我是怎么知道的(/(ㄒoㄒ)/~~,因为这个端点的记录是有上限的,有一次扫描目录后发现所有的记录都是我扫描的记录,可能把有些有用的东西给覆盖了)。

5.  gateway端点

gateway端点的利用主要是ssrf,现有文章可能比较少,这边做一个复现。当gateway端点存在未授权时,直接访问gateway是一个404的状态。

访问actuator/gateway/routes路由,可以看到系统的所有口接口信息

我们可以为该接口添加路由,比如添加个index路由,将路由地址设置为百度,状态回显201则路由创建成功。

访问/actuator/gateway/refresh刷新配置

刷新成功后我们可以再次请求actuator/gateway/routes看到index路由被添加

访问index路由

当然我们也可以删除掉路由,delete /actuator/gateway/routes/index接口

再次进行刷新配置

查看路由,发现index路由已经不在了

对于gateway端点的利用,很多师傅可能脑中会有很多自己的攻击思路,比如钓鱼,如果一个目标域名的站点存在漏洞,那么该钓鱼的可信程度会大大增加。ssrf基于伪协议的利用暂未实现成功。

关于springboot的总结暂时就是这些,仅是个人的浅显经验。

侵权请私聊公众号删文



文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjE3ODU3MQ==&mid=2650535883&idx=2&sn=b4b5192f9d77e96644e92476d7e3da72&chksm=83ba922fb4cd1b39a88e0d97cecb687c3448b4d7fd99d4c4ff5b5f14658d936b1e6bc36696ba#rd
如有侵权请联系:admin#unsafe.sh