springboot渗透总结

语言: CN / TW / HK

一、前言

今天的文章主要跟大家聊一下关于 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 的总结暂时就是这些,仅是个人的浅显经验,如有其他思路或者文章内有纰漏的地方希望各位师傅可以在公众号下方留言沟通。最后临近新年,祝各位师傅新年快乐!!!