随笔分类 - JAVA
摘要:针对GadgetInspector的一些思考,感谢前辈们的文章。让整个过程学起来变的轻松起来。这里作为记录防止自己以前写过的东西过快忘记,此文是几月后写的所以写的过于简陋。如看到可以看看文章推荐中的进行学习or看下简陋的源码。 文章 ASM学习(b站有视频教学) https://lsieun.git
阅读全文
摘要:由于jndi注入的原理就是远程对象访问可控,Reference恶意类 反序列化造成的。 这里梳理一下JNDI的过程。放一张@bitterz师傅的图 其中第一和第二步也就是我们正常的rmi通信 可以回顾一下rmi通信原理 然后就是传递都是需要反序列化,所以我们如果返回一个恶意的数据流 他就会反序列化我
阅读全文
摘要:这里就简单记录一下 其中遇到比较常见的一些东西吧。 比如jmx的地址: service:jmx:rmi://localhost:1099/jndi/rmi://localhost:8899/myname service:jmx: 是JMX URL的标准前缀,所有的JMX URL都必须以该字符串开头。
阅读全文
摘要:修复等仅仅举例一个 其他的可以在参考文章中阅读。 基础知识 基础知识文档 建议多看w3标准: https://www.yiibai.com/xml/xml_overview.html【xml】 https://www.yiibai.com/dtd/dtd_entities.html【dtd】 htt
阅读全文
摘要:Yso的链子 我们在yso中可以得知链子如下: * com.sun.jndi.rmi.registry.RegistryContext->lookup * com.mchange.v2.naming.ReferenceIndirector$ReferenceSerialized->getObject
阅读全文
摘要:前置 什么是JEP290: JEP290是一个规范是为了应对反序列设置的一种过滤器。 适用的范围: Java™ SE Development Kit 8, Update 121 (JDK 8u121) Java™ SE Development Kit 7, Update 131 (JDK 7u131
阅读全文
摘要:Snake Yaml介绍 Snake Yaml是用于来解析Yaml格式,可用于Java对象的序列化和反序列化。 Snake Yaml简单使用 导入maven依赖 <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artif
阅读全文
摘要:前言 fastjson公开的就三条链,前两天我们上篇文章已经分析。TemplatesImpl要求太苛刻了,JNDI的话需要服务器出网才行。今天学习的这条链就是可以应对不出网的情况。 BCEL 什么是BCEL BCEL的全名应该是Apache Commons BCEL,属于Apache Commons
阅读全文
摘要:前言 这里不做fastjson的基础知识介绍,如需要请看我下面参考的文章来学习,这里只是一些笔记和一点我的思考记录罢了。 简单说明下三种方式的区别: parse()和parseObject(,class)会识别并调用目标类的特定 setter 方法及某些特定条件的 getter 方法,他们两个的调用
阅读全文
摘要:前言 我们知道fastjson1.2.4版本的反序列化会用到这个链,但是这个漏洞的现在直接利用估计很难找到了,但是还是有很多值得学习的特性,所以来学习一下当做fastjson的前置知识。 漏洞分析 漏洞核心 本链核心点其实是在AnnotationInvocationHandler 类的equalsI
阅读全文
摘要:环境 这里是使用的P牛提供的环境【shiro1.2.4】 https://github.com/phith0n/JavaThings/blob/master/shirodemo 漏洞原理 根据漏洞描述,Shiro≤1.2.4版本默认使用CookieRememberMeManager,当获取用户请求时
阅读全文
摘要:JNDI简介 JNDI(The Java Naming and Directory Interface,Java命名和目录接口)包括Naming Service和Directory Service。它是一组在Java应用中访问命名和目录服务的API,命名服务将名称和对象联系起来,使得我们可以用名称访
阅读全文
摘要:前言 好吧,我建议你去跟一次RMI的操作你就懂的这个了。推荐文章:https://paper.seebug.org/1251/ 简介 JRMP是一个Java远程方法协议,该协议基于TCP/IP之上,RMI协议之下。也就是说RMI该协议传递时底层使用的是JRMP协议,而JRMP底层则是基于TCP传递。
阅读全文
摘要:JAVA_RMI 简介 RMI中的核心是远程对象(remote object),除了对象本身所在的虚拟机,其他虚拟机也可以调用此对象的方法,而且这些虚拟机可以不在同一个主机上。每个远程对象都要实现一个或者多个远程接口来标识自己,声明了可以被外部系统或者应用调用的方法(当然也有一些方法是不想让人访问的
阅读全文
摘要:CommonCollections1及其高版本利用学习 环境 JDK<>8u71 Commons-Collections 3.1-3.2.1 JDK所对应的OpenJdk版本,不一定对的上小于修复版本前就行|贴个链接: https://hg.openjdk.java.net/jdk8u/jdk8u4
阅读全文