代码审计
文章平均质量分 78
pwjcw
平芜尽处是春山,行人更在春山外。
展开
-
Java 代码审计---反序列化
序列化主要是将一个java对象转换为二进制字节流的过程,在学习反序列化之前,首先来学习一下序列化是什么,怎么进行,知其然,知其所以然。将一个对象进行序列化其实是将该对象的一些属性进行序列化,并不是对该对象的类,以及相关的方法也进行序列化为二进制数据。会被序列化到流中,以确保序列化和反序列化过程中类的版本一致性,如果反序列化时的。,Java会根据类的结构自动生成一个,但是当类的结构发生变化时,自动生成的。方法,那么在反序列化时,将会调用目标类自定义的。在反序列化中,如果反序列化的目标类自定义了。原创 2024-06-01 11:55:53 · 1045 阅读 · 0 评论 -
Java代码审计---反射
java的反射就是在程序运行中动态的创建对象,并且和new不同的是,反射创建对象不需要考虑访问权限,可以直接查看类的私有属性以及调用私有方法,并且new创建对象时在编译时期将对象的.class加载进内存,而反射创建对象则时在运行时期加载进内存。原创 2024-05-22 14:58:14 · 636 阅读 · 0 评论 -
Java代码审计---SpEL表达式注入
是 Spring 中的表达式语言,用于在运行时评估和处理表达式。它提供了一种灵活的方式来访问和操作对象的属性、方法和其他表达式。SpEL可以用于配置文件、注解、XML 配置等多种场景,用于实现动态的、可配置的行为。它支持常见的表达式操作,如算术运算、逻辑运算、条件判断、集合操作等,并且可以与 Spring 框架的其他功能整合使用。由于SpEL具有代码调用,我们可以通过SpEL注入来执行系统命令,进而导致RCE漏洞。原创 2024-05-22 14:56:16 · 575 阅读 · 0 评论 -
Java代码审计---命令执行
Class aClass = Class.forName("java.lang.Runtime"); Method exec = aClass.getDeclaredMethod("exec", String.class); Object getRuntime = aClass.getDeclaredMethod("getRuntime").invoke(aClass); Object invoke = exec.invoke(getRuntime,"calc")原创 2024-05-22 14:53:47 · 246 阅读 · 0 评论