SpringBoot场景下不出网-内存中的正向代理

免责声明:由于传播、利用本文所发布的而造成的任何直接或者间接的后果及损失,均由使用者本人承担

前言

在Tomcat场景下,我们遇到不出网的机器通常上传reGeorg,suo5,这类的正向代理工具,连接后本地开启s5即可连接进入目标的网络场景

这里存在一些问题,有落地文件,这必然是存在被查杀的风险,现在诸多内存代理脚本也被杀毒软件加入了识别,并且安全设备也会有新增文件的感知

这里针对Tomcat只是提一下

当我们目标是SpringBoot场景呢?目标无法上传jsp,有落地脚本的正向代理就完全失去了作用

这样就衍生出了一种新技术,将正向代理写入到内存中去,就如同内存马一样

START

环境准备

  • SpringBoot靶场

  • NGINX

  • JMG

  • Suo5

  • Proxifier

这里,是我为后面持续更新搭建的一个靶场

拓扑图如下:

image-20240730100817751

依靠这个靶场,后续我会持续更新相关的文章,并且会不断在这个基础上进行优化与改进

实现

这里使用Fastjson的反序列化漏洞演示

​ 因为目标服务器不出网,自然就用不了JdbcRowSetImpl利用链这种jndi注入的利用方式,就只能选择直接传入恶意代码,而TemplatesImpl利用链虽然原理上也是利用了 ClassLoader 动态加载恶意代码,但是需要开启Feature.SupportNonPublicField,并且实际应用中其实不多见,所以这里使用BasicDataSource链,直接在Payload中直接传入字节码,不需要开启特殊的参数,适用范围较广,目标需要引入tomcat依赖,虽说也是一种限制,但还算是比较常见的。

这里还有一个细节问题,因为jdk8u251之后 bcel被移除,需要留意无法使用BCEL ClassLoader的问题

SpringBoot靶场使用以及一些依赖包的修改就不赘述了,文章核心是演示内存正向代理

访问Fastjson

image-20240730105534744

内存正向代理制作

这里使用jMG(java-memshell-generator)

一款支持高度自定义的 Java 内存马生成工具|A highly customizable Java memory-shell generation tool.

https://github.com/pen4uin/java-memshell-generator

非常叼的工具,免去了手写并且转换为bcel码的过程,并且支持非常多的payload格式

image-20240730111417621

根据自己的需要选择好对应的框架以及各类所需参数

攻击

留意好,在实现处说的信息,然后按照常规打法即可

image-20240730110429233

这里大都是成功了

连接正向代理

留意连接所需的信息,比如这里是需要携带一个 Referer

image-20240730111535501

在suo5中连接

image-20240730111556913

连接成功

image-20240730111620933

测试

使用Proxifier指定程序走的隧道

image-20240730111832749

image-20240730111809796

这都没什么好说的,学到这里的师傅肯定是都知道的

连接成功

image-20240730112032720

image-20240730112051766

至此成功实现了SpringBoot场景下内存的正向代理使用

END