2024-06-06
662 字
2 分钟
Groovy
GroovyGroovy 是一种基于 JVM 的开发语言,具有类似于 Python,Ruby,Perl 和 Smalltalk 的功能。Groovy 既可以用作 Java 平台的编程语言,也可以用作脚本语言。groovy 编译之后生成 .class 文件,与 Java 编译生成的无异,因此可以在 JVM 上运行。
前置知识MethodClosureorg.codehaus.groovy.runtime.MethodClosure 是方法闭包,使用闭包代表了一个对象的一个方法,可以很方便的调用。MethodClosure 初始化时接收两个参数,一个是对象,一个是对象的方法名称。MethodClo
2024-06-02
5.7k 字
22 分钟
Elasticsearch
Elasticsearch基于java编写的Lucence的一层封装
基本概念Elasticsearch是面向文档的,关系行数据库
索引(indices):对应mysql中的数据库
types: 对应表
documents: 对应mysql中行
fields: 对应mysql中的字段
物理设计: elasticsearch 在后台把每个索引划分成多个分片,每份分片可以在集群中的不同服务器间迁移
逻辑设计: 一个索引类型中,包含多个文档,比如说文档1,文档2。 当我们索引一篇文档时,可以通过这样的一个顺序找到 它: 索引 ▷ 类型 ▷ 文档ID ,通过这个组合
2024-05-14
980 字
3 分钟
幽默的Commons-Collections6调试
幽默的Commons-Collections6调试事情是在考完期中之后,同学在调式cc6链的时候发现了奇怪问题。
(下面写的过于详细了。。。)
问题发现(在尝试找出cc6中 为什么LazyMap 最后要使用remove的时候)就是lazyMap中放的是空的HashMap之前代码并没有向hashMap中写入任何东西,为什么在这里却必须要remove掉’aaa’才能触发链子呢
于是调试在创建TiedMapEntry的地方打上断点,跟进赋值完map的时候还算是正常可是到下一步参数map的size大小怎么突然由1变成2了?又没有对map进行任何操作这里LazyMap为什么多了且是什么时候多了一个键值对
2024-05-13
4.4k 字
20 分钟
Tomcat 漏洞复现集合
Tomcat 漏洞复现集合Tomcat是常见的web中间间,常用于javaweb
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。Tom
2024-05-06
2.7k 字
12 分钟
shiro550
shiro550简介Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。Apache Shiro基本功能点如下图所示:
Authentication:身份认证 / 登录,验证用户是不是拥有相应的身份;
Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;
Session Manageme
2024-05-04
3.4k 字
14 分钟
java Agent
java AgentJDK1.5开始,Java新增了Instrumentation(Java Agent API)和JVMTI(JVM Tool Interface)功能,允许JVM在加载某个class文件之前对其字节码进行修改,同时也支持对已加载的class(类字节码)进行重新加载(Retransform)。利用Java Agent这一特性衍生出了APM(Application Performance Management,应用性能管理)、RASP(Runtime application self-protection,运行时应用自我保护)、IAST(Interactive Applicat
2024-04-27
3.1k 字
12 分钟
fastjson高版本补丁绕过
fastjson高版本补丁绕过补丁分析1.2.25在 Fastjson1.2.25 中使用了 checkAutoType 来修复1.2.22-1.2.24中的漏洞,其中有个 autoTypeSupport 默认为 False。当 autoTypeSupport 为 False 时,先黑名单过滤,再白名单过滤,若白名单匹配上则直接加载该类,否则报错。当 autoTypeSupport 为 True 时,先白名单过滤,匹配成功即可加载该类,否则再黑名单过滤。对于开启或者不开启,都有相应的绕过方法。
在获取@type的值后,1.2.24以后的版本新增函数checkAutoType,在类加载之前检查是
2024-04-26
2k 字
10 分钟
fastjson1.2.24反序列化漏洞
fastjson1.2.24反序列化漏洞影响版本Fastjson 1.2.x系列的1.2.22-1.2.24版本。
TemplateImpl的利用链条件
服务端使用parseObject()时,必须使用如下格式才能触发漏洞: JSON.parseObject(input, Object.class, Feature.SupportNonPublicField);
服务端使用parse()时,需要 JSON.parse(text1,Feature.SupportNonPublicField)
流程
pocString evilCode = Base64.encodeBase64String(C
2024-04-25
2.5k 字
9 分钟
Linux应急响应
Linux应急响应概述关键目录思路:账号安全 -> 历史命令 -> 检查异常端口 -> 检查异常进程 -> 检查开机启动项 -> 检查定时任务 -> 检查服务 -> 检查异常文件
主机排查常见指令端口# 查找不常用的监听端口 :netstat -anpiftop# 运行的进程监听了端口 :lsof -ilsof -nPi tcp:443# 使用ss命令查看TCP协议:ss -anpt# 使用ss命令查看UDP协议:ss -anpu# 使用 tcpdump 分析:tcpdump -i {网卡名} host {本地IP} and udp port {本地端
2024-04-24
4.2k 字
16 分钟
JNDI注入
JNDI注入JNDI(Java Naming and Directory Interface)是Java提供的Java命名和目录接口。通过调用JNDI的API可以定位资源和其他程序对象。JNDI是Java EE的重要部分,JNDI可访问的现有的目录及服务有:JDBC、LDAP、RMI、DNS、NIS、CORBA
简介JNDI提供统一的客户端API,并由管理者将JNDI API映射为特定的命名服务和目录服务,为开发人员查找和访问各种资源提供了统一的通用接口,可以用来定义用户、网络、机器、对象和服务等各种资源。简单来说,开发人员通过合理的使用JNDI,能够让用户通过统一的方式访问获取网络上的各种资
2024-04-12
6.7k 字
29 分钟
javassist
Javassist介绍Javassist(Java 编程助手)使 Java 字节码操作变得简单。它是一个用于在 Java 中编辑字节码的类库。它使 Java 程序可以在运行时定义新类,并在 JVM 加载它时修改类文件。与其他类似的字节码编辑器不同,Javassist 提供了两个级别的 API:源级别和字节代码级别。如果用户使用源代码级 API,则他们可以在不了解 Java 字节码规范的情况下编辑类文件。整个 API 仅使用 Java 语言的词汇表进行设计。甚至可以以源文本的形式指定插入的字节码。Javassist 可以即时对其进行编译。另一方面,字节码级别的 API 允许用户像其他编辑器一样直
2024-04-11
1.5k 字
6 分钟
Rome链
Rome反序列化
简介ROME 是一个可以兼容多种格式的 feeds 解析器,可以从一种格式转换成另一种格式,也可返回指定格式或 Java 对象。ROME 兼容了 RSS (0.90, 0.91, 0.92, 0.93, 0.94, 1.0, 2.0), Atom 0.3 以及 Atom 1.0 feeds 格式。Rome 提供了 ToStringBean 这个类,提供深入的 toString 方法对JavaBean进行操作。
漏洞原理漏洞核心应该是ROME框架里的com.sun.syndication.feed.impl.ToStringBean类利用反射执行了invoke方法,并且参数可控