![](https://img-blog.csdnimg.cn/dffa364dfb3f46dfb63fb2a8962e33fa.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java安全
文章平均质量分 82
参考P神的Java漫谈以及参考众多博主的博客等Java安全资料,结合自己的调试总结的细致学习报告。
清风--
欢迎加入星盟安全团队!myblog:aHR0cHM6Ly9xaW5nZmVuZy50ZWNoLw==
展开
-
2023安洵杯 ezjava
主要就是这两个依赖,有一个CB,和一个postgresqlpostgresql可以看到有几个cve最熟悉的就是cve202221724这个了发现目标不出网,所以只能利用写文件的那个,刚好有一个ftl模板注入可以利用接下来就是CB了,CB可以触发任意的getter,链子如下:而且java的版本是。原创 2024-03-18 08:58:00 · 815 阅读 · 0 评论 -
JNDI注入
Java命名目录接口(Java Naming and Directory Interface),作用是为JAVA应用程序提供命名和目录访问服务的API(application programming interface)。* 轻量级目录访问协议 (LDAP)* 通用对象请求代理体系结构 (CORBA) 通用对象服务 (COS) 名称服务* Java 远程方法调用 (RMI) 注册表* 域名服务 (DNS)前三种都是支持一种字符串就绑定一种对象注:这里JDNI注入就可以用到我们之前的RMI的知识了。原创 2023-04-20 21:55:01 · 806 阅读 · 1 评论 -
JAVA安全 RMI
RMI | 清风的博客原创 2023-04-02 15:33:40 · 176 阅读 · 0 评论 -
shiro反序列化
shiro反序列化超完整超细节原创 2023-03-11 12:03:39 · 1014 阅读 · 0 评论 -
Java安全--CC7
在学CC7的时候我有这么几个疑问1.为什么要两个LazyMap2.hashCode那一步怎么计算的3.为什么要remove yy4.为什么put两个我们可以先看一下CC7的链子是怎么走的:其实分析链子还是从命令执行走到readObject比较好理解,虽然比较麻烦,比较繁琐,但还是这样子分析提升比较大,主要是知道自己在写啥,知道某个地方我们需要传入什么,不用抄一份payload去调试。原创 2022-12-21 20:55:55 · 961 阅读 · 0 评论 -
Java安全--CC5
再往后一路都比较熟悉就不说了。原创 2022-12-21 20:53:29 · 473 阅读 · 0 评论 -
Java安全--CC2
我们要思考一下如何在InvokerTransformer newTransformer = new InvokerTransformer("newTransformer", new Class[]{}, new Object[]{});,在CC4中我们知道要传入至少两个对象。那我们这里是传入第一个对象还是第二个对象。既然可以两个都传,那我们能否第一个对象传入任意值,第二个对象再传入。在这之后便会像我们上面分析的一样,最终弹出计算器。其实就是之前都学过的几个类。原创 2022-12-19 02:28:08 · 556 阅读 · 0 评论 -
Java安全--CC4
而且最关键的是这里它还执行了break方法,所以下面的serialize是压根没有执行,所以连ser.bin的序列化文件都没有生成,怎么反序列化呢?接着在反序列化之前,add函数之后利用反射修改其值改回chainedTransformer,这样在反序列化的时候就可以执行了。为什么我们CC3前面半条不能用这个链子,或者有CC3不就足够了,为什么要再找一个这样的链子,不是画蛇添足吗?我们发现这个判断的时候就被阻隔了,size就是值队列内的数量,因为我们没有添加过任何元素所以这里默认就是0。原创 2022-12-16 21:05:42 · 699 阅读 · 0 评论 -
Java安全--CC3
如图所示的defineClass在寻找用法时有一个com.sun.org.apache.xalan.internal.xsltc.trax包下面调用了这个重载方法,并且类型的default。这里判断完byte之后对_tfactory进行了方法的调用,所以这里需要对_tfactory进行赋值,否则这里会报空指针报错。是一个transient类型,值为空的东西。发现报错了,还是报了空指针的错误。我们调试发现报错的点在_auxClasses调用put这里,因为_auxClasses为空,所以报了空指针错误。原创 2022-12-11 19:46:19 · 987 阅读 · 1 评论 -
Java安全--CC1的补充和CC6
我们看一下两条链子的分歧在哪里:从ChainedTransformer.transform()开始往下和上一次讲的链子是一样的,这里就不赘述了。不一样的是transformer调用的函数从TransformedMap.checkSetValue()变成了LazyMap.get()我们现在的目标是搜索那里调用了get方法-->也是AnnotationInvocationHandler需要利用的点在AnnotationInvocationHandler的invoke()里面,而学完动态代理我们知道Invocat原创 2022-12-08 12:38:25 · 1164 阅读 · 0 评论 -
Java安全--篇四-Java原生反序列化
看理论:序列化和反序列化的详解_tree_ifconfig的博客-CSDN博客_序列化和反序列化java序列化与反序列化全讲解_mocas_wang的博客-CSDN博客_java反序列化java 序列化和反序列化 - xbwang520 - 博客园序列化和反序列化的简单图解:我们编写三个类实现一下序列化和反序列化这里需要注意的是Person需要实现Serializable接口,以此来标识该类可以序列化和反序列化。因为这个接口里面什么都没有,因此称作反序列化标记运行serializeTest原创 2022-12-05 11:41:36 · 1026 阅读 · 0 评论 -
Java安全--篇三-动态代理
这个可以算是反射之后的下一步学习的东西吧,涉及到到的基础我们通过一个案例问题来引出动态代理:我们现在需要满足网站的三个功能:并且我们需要统计每个功能的执行程序所用的时间。首先编写一个接口来模拟三个功能:然后编写一个实现类:再定义一个测试类:执行结果:以上就是典型的静态代理。如何解决这些问题呢?其实发现有冗余代码我们的目的肯定就是整合代码,使用类似函数的东西来实现重复代码的重合,就如下图所示:用伪代码实现起来就是这样:我们希望这里的function可以是我们想要执行的任意方法,其实这个原创 2022-12-05 11:38:15 · 598 阅读 · 0 评论 -
Java安全--篇2-类的动态加载
首先我们来了解一下构造代码块和静态代码块:Java中静态代码块、构造代码块、构造函数、普通代码块 - YSOcean - 博客园继上周我们重写了Person类:我们先写一个main来实例化Person看一下结果:看到这个结果我们可以观察到两个信息:接下来我们利用反射来尝试获取类看看会发生什么:发现只调用了静态代码块为什么?了解一下类是怎么加载到JVM中的:类加载过程,以及什么是双亲委派? - 掘金用图来说就是这样:只要初始化了就会执行静态代码块如果实例化那么与对象相关的实例化和构造方法也会被调用原创 2022-12-05 09:22:35 · 1024 阅读 · 0 评论 -
Java安全-CC1
这里用的是组长的链子和yso好像不太一样,不过大体上都是差不多的。后半条的链子都是一样的,而且这条更短更易理解。yso的CC1过段时间再看一下。![image.png](https://img-blog.csdnimg.cn/img_convert/64dc7781acc31f532718573001745501.png#averageHue=#2d2c2c&clientId=ud4bee143-b38b-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=66原创 2022-12-04 13:09:49 · 820 阅读 · 0 评论 -
URLDNS链
听说这个链子是最简单的链子之一了,但是却是来来回回看了好多遍才勉强看明白。在 ysoserial 中我们可以看见链子是这样的:简单流程:现在我们来编写类来观察如何触发DNS请求这个类可以进行序列化,按照正常来说序列化的过程是不会进行DNS请求的,但是我们查看DNSlog平台:发现序列化的时候就发起请求了,这样有几个非常不好的地方:下图是URL类中的hashCode()方法;这里只有当hashCode不为负一的时候才会走handler发起DNS请求hashCode在初始化的时候已经被赋值成-1了:但是我原创 2022-12-03 09:47:47 · 1169 阅读 · 0 评论 -
Java安全--篇1-反射
看了好多文章,一直没搞懂反射是什么,然后闲着无聊搜了视频,一看就懂了好多,这里浅说一下。很多顺序是跟着P神的文章走的,把自己看不懂的百度出来记录一下。原创 2022-11-13 09:01:33 · 779 阅读 · 0 评论