SpringBoot 未授权访问漏洞实战

silenceismine2024-02-19文章来源:SecHub网络安全社区


一、Spring Boot

Spring 是 JAVA web 里非常常见的组件了, 自然也是研究的热门, 好用的漏洞主要是 Spring Boot 相关的漏洞。

Spring Boot 基本上是 Spring 框架的扩展。 Actuator 是 Springboot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator ,开发者可以很方便地对应用系统的某些监控指标进行查看、统计等。在 Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点( endpoints )来获取应用系统中的监控信息。

测绘指纹

FOFA

app="vmware-SpringBoot-Framework"
body=" Whitelabel Error Page"

图标

在网站标题中会有一个树叶的图标

默认页面:

Whitelabel Error Page页面

swagger接口页面/swagger-ui.html:

1.关键字搜索并访问接口

在图虎上利用关键词 body="Whitelabel Error Page" 找到利用springboot框架搭建的网站 尝试未授权访问 添加后缀/actuator 发现成功访问接口

2.查看接口配置信息

进入/actuator/env 查看相关配置信息(/actuator/env 查看全部环境属性,可以查询到一些敏感信息 例如redis的ip和端口 数据库的账号和密码 但大部分密码都存在加密) 查找关键词 password 发现 存在数据库密码 但进行加密 查看不了

3.查看其他接口

再次查看其他接口 发现/actuator/heapdump没有禁止访问 (/heapdump Heapdump,即堆转储文件,是一个Java进程在某个时间点上的内存快照。HeapDump记录了JVM中堆内存运行的情况,保存了Java对象、类以及线程栈以及本地变量等信息,最重要的是里面可能存有数据库密码信息。) 访问 自动下载heapdump文件

4.分析heapdump文件

利用MemoryAnalyzer工具打开heapdump分析。

利用查找语句

select * from java.util.LinkedHashMap$Entry x WHERE (toString(x.key).contains("password"))

然后再次返回到 /actuator/env 查看数据库存在的端口 查看到是 3501端口

然后利在cmd命令下

mysql -h xxxxx -P xxxx -u root -p

连接数据库

连接成功

5.翻找数据库

在数据库中找到 管理员登录的账号和密码

然后利用御剑查找网站后台登录接口

登录成功

6.多次尝试后成功上传getshell

发现ueditor编辑器组件,测试文件上传发现无法上传jsp脚本文件,但是可以通过ueditor的在线文件管理功能和已有的一些路径信息,可以确认网站的web绝对路径

E:/xxxx/project/xxxxx/

结合前面拿到的mysql权限,可以尝试直接往web目录中写入webshell

先查看mysql读写权限,可以看到secure_file_priv= 即没有对读写权限有所限制

直接使用select 'XXX' into outfile 'web服务根路径';尝试写入webshell

首先尝试写入了一个蚁剑jsp码到ueditor的绝对路径中

访问发现上传成功了,但是没有解析

后面分析发现是jsp码的换行符引起的,换一个哥斯拉的jsp码试试

访问发现正常解析并且连接成功

直接就是system权限

1688119748959.png