Springctf-1zLog
Springctf 1zLog题目名称是1zlog,大概率是和log4j2有关,关于log4j2,它是java日志记录框架,漏洞的主要成因就是log4j2会将${}里的内容单独处理,也就是去调用lookup进行查找,这时就会产生jndi注入。先把jar包放到jadx或者jd-gui里,反编译一下,进行代码审计。这里便是利用点。既然是jndi注入又是高版本java17,我的第一想法是看看是不是用tomcat起的服务,这样的话,能不能用BeanFactory打一波很显然不是这时候我们需要去看一下依赖包有哪些,有哪些可以利用的东西。有两个很可疑的依赖包。主要利用就看这篇文章就好JDBC Attack与高版本JDK下的JNDI Bypass – 奇安信技术研究院主要就是利用BasicDataSourceFactory远程加载sql语句,执行命令。然后我们就开始写exp 12345678910111213141516171819202122232425262728293031323334353637383940414243import com.sun.jndi.rmi.registry.R...
fastjson3
前言还是跟着Drunkbaby大佬的博客继续学习,这篇是fastjson各版本的绕过,绕过的利用都必须开启AutoTypeSupport才能成功。接着上篇的1.2.24,我们从1.2.25开始。 fastjson1.2.25如何修复的先添加一下依赖包 12345<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.25</version> </dependency> 这里我们先看一下1.2.24与1.2.25之间的关键区别点首先是1.2.24DefaultJSONParser.parserObject方法这里有个加载类的方法的调用。作用就是找@type指向的类,并进行加载,类似于Class.forName但是在1.2.25版本的时候,这里改成了checkAutoType具体看一下checkAutoType方法的逻辑 123456...
fastjson2
前言从fastjson的1.2.24版本开始 环境jdk用的是8u65(方便一点,高版本的话还得进行绕过)Maven 3.6.31.2.22 <= Fastjson <= 1.2.24 依赖导入 1234567891011121314151617181920<dependency> <groupId>com.unboundid</groupId> <artifactId>unboundid-ldapsdk</artifactId> <version>4.0.9</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version>...
fastjson1
前言终于开始fastjson的学习了,这两天放松的有点太严重了,哈哈哈。 Fastjson简介fastjson是一个java库,主要作用:可以把java对象转换为json的格式,也可以将json的格式转换为java对象。提供了两个主要的接口来分别实现序列化和反序列化的操作JSON.toJSONString将java对象转化为json对象,序列化的过程。JSON.parseObject/JSON.parse将json对象重新变回java对象;反序列化过程。这里可以将json理解成一个字符串。(这样就和php反序列化类似) 从代码角度分析序列化代码的实现这里我们来写一下简单的代码来了解一下具体的序列化和反序列化的过程。首先引入依赖 12345<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.24</version> </dependency> 这...
JNDI注入
前言开始JNDI的学习,一定要多敲敲代码啊(对自己说)官方文档地址:课程:JNDI(Java™ 命名与目录接口>教程)概述 JNDI概念JNDI是java命名与目录接口,一个名字对应一个java对象,也就是说一个字符串对应一个Java对象.JNDI在jdk里面支持一下服务: LDAP:轻量级目录访问协议 通用对象请求代理架构(CORBA);通用对象服务(COS)名称服务 java远程调用(RMI)注册表 DNS服务 JNDI的利用方式与漏洞JNDI在RMI中的利用RMI服务端的接口类和实现类,和之前一样就可以.重点改变的是使用JDNI的方式去绑定远程对象到注册中心,以及使用JDNI的方式去调用这个远程对象. 服务端123456789101112131415import javax.naming.InitialContext; import javax.naming.NamingException; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import ja...
moectf2025_第23关
moectf 2025 第23关常规做法直接给出exp吧,挺有意思的,感觉写的没问题(但是没反弹成功),本地的calc,也正常执行了(虽然反序列化前会执行一次) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192import com.example.demo.Dog.Dog; import com.example.demo.Dog.DogService; import java.io.*; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Base64; ...
RMI_2
前言前一个专题,我们对RMI的基础和通信原理进行了简单的分析,这一期对攻击方法进行一个总结参考:Java反序列化之RMI专题02-RMI的几种攻击方式 | Drunkbaby’s BlogRMI攻击方式 | CurlySean’s Blog RMI的基本攻击方式 RMI Client 打 RMI Registry RMI Client 打 RMI Server RMI Client 攻击RMI registry只能够通过客户端打registry.根据上篇文章的分析,我们要去找一下反序列的点位在哪里我们在使用一下语句时,会调用了lookup 1IRemoteOBJ remoteOBJ = (IRemoteOBJ) registry.lookup("rmiserver"); 而这个lookup这里对应着注册中心(特殊的服务端的skel),这时就会调用到case2,这都是我们之前分析过的,所以不同的方法对应着不同的case0->bind1->list2->lookup3->rebind4->unbind那么,我们就可以通过这里不同的方...
RMI_1
前言今日开始java中RMI的学习先记录一下RMI的坑点:RMI攻击手法只能在jdk8u121之前可以使用,因为在8u121之后bind rebind unbind这三个方法只能对localhost进行攻击 环境准备 jdk8u65 RMI基础RMI介绍RMI (Remote Method Invocation) 模型是一种分布式对象应用,使用 RMI 技术可以使一个 JVM 中的对象,调用另一个 JVM 中的对象方法并获取调用结果。这里的另一个 JVM 可以在同一台计算机也可以是远程计算机。因此,RMI 意味着需要一个 Server 端和一个 Client 端。 Server 端通常会创建一个对象,并使之可以被远程访问。 这个对象被称为远程对象。Server 端需要注册这个对象可以被 Client 远程访问。 Client 端调用可以被远程访问的对象上的方法,Client 端就可以和 Server 端进行通信并相互传递信息。 说到这里,是不是发现使用 RMI 在构建一个分布式应用时十分方便,它和 RPC 一样可以实现分布式应用之间的互相通信,甚至和现在的微服务思想都十分类似。...
Javacc
前言靶场是从极核开的,https://hackhub.get-shell.com/ 分析一个登录系统,弱密码爆破一下 账号,密码分别是admin,admin123 看Cookie这里明显的反序列化字符串,rO0AB使用工具JavaGadgetGenerator进行cc链的测试设置好响应时间,我们来生成对应的链子,开始测试当我们测试到cc6的时候就有明显的延迟,我们在使用DNS测试一下有响应,这也确认了是cc6,同时也可以出网,那我们使用vshell来getshell启动vshell 1nohup ./v_linux_amd64 > /dev/null 2>&1 & 使用上线命令 上线成功 学了个vshell的使用,不赖
Cap
前言HTB的第一台靶机vpn选新加坡 过程先进行扫描,发现有21,22,80端口在去看一下web站点这边有一个下载按钮,我们尝试下载之后有一个流量包,但是这个流量包中,没啥可利用的信息,这时候,我们注意到url中的1,尝试修改为0,继续下载试试呢。 发现可以利用的信息 这里就能很明了的看到ftp连接账户和密码了,这时我们尝试连接ftpuser:nathanpass: Buck3tH4TF0RM3!可以进行ftp连接,那么也可以试一下ssh喽 拿到第一个flag 接着下一个一般是在root目录里,这里需要提权,我们扫描一下看看,有哪些提权的地方这里传linpeas的时候卡死了,解决办法就是可以尝试挂一个代理,然后在连接vpn,我只能说proxychain4还是太舒服了。 有python3.8,尝试python的一个uid提权,GTFOBins 但是我们这里不能使用sudo,可以把它写到文件中执行,在给可执行权限 然后我们找到flag
