ARTICLE INDEX

文章索引

65

篇研究记录,按年份分组、发布时间倒序排列。使用分类与标签继续缩小技术范围。

2026

01
Java #JNI

JNI 绕过RASP

在学习RASP的时候,其中有一种绕过RASP的方法是,使用JNI,让Java调用底层C语言,从而绕过危险函数的Hook检查 JNI(Java Native Interface),其作用是让Java程序可以去调用C语言的程序,Java的实现是基于C语言实现的,在很多底层方法中,我们也经常能看到一些 n…

约 3 分钟
02
webshell

JSP免杀思路学习

今天简单学习一下JSP木马的免杀思路,学习文章如下: zhuanlan.zhihu.com 现在对于大部分的检测来说,大部分还是基于特征检测为主的,jsp中常见的关键特征:loadClass、ClassLoader、newInstance、invoke、defineClass,Runtime等等。…

约 12 分钟
03
漏洞复现 #TongWeb

TongWeb反序列化

TongWeb 是东方通(Beijing Tongtech Co., Ltd.)自主研发的企业级应用服务器,全面支持 Java EE(现 Jakarta EE)标准,兼容主流开发框架,广泛应用于金融、电信、政府、能源等关键行业的信息化和数字化转型。TongWeb 具备高性能、高可用、分布式和集群部署…

约 8 分钟

2025

04
trick

EL表达式Trick

在EL表达式中,想要进行命令执行,只需要一下一行表达式即可 1 ${java.lang.Runtime.getRuntime().exec( "calc" );} 这句表达式作用相当于jsp的一句话木马,但是只是能做到检测和盲打,在一些不出网的情况下,我们没办法进行反弹shell,不方便于EL表达式…

约 3 分钟
05
trick

Error Based XXE

在看代码审计知识星球时,学到了一种新的XXE的利用方式:Error Based XXE,一般在无回显的情况下使用 先来说报错XXE的前提条件:目标服务器开启了报错(报错XXE当然要报错了) 漏洞环境: github.com 首先贴出来Error Based XXE的Poc 1 2 3 4 5 6 <…

约 1 分钟
06
trick

JavaScript大小写特性

这个特性在CTF比赛中好像挺常见的,之前打ctf的时候遇到过 toUpperCase 是javascript中将小写转换成大写的函数。 toLowerCase 是javascript中将大写转换成小写的函数 用ai来写一个fuzz脚本,看一看哪些字符在经过 toUpperCase 转换后,是大写字母…

约 1 分钟
07
trick

Java环境下xxe结合jar协议实现缓存

前两天看到geoserver出来个新的xxe漏洞,就去看了一下,突然想去看看在java中的xxe除了http和file协议,还能利用什么协议,就找到了篇文章,学了一个小trick 文章链接: 1oecho.github.io jar协议URL格式: jar:<url>!/{entry} ,其中 <u…

约 2 分钟
08
漏洞复现 #华夏ERP

华夏ERP审计

闲来无事,来复现一下华夏ERP的历史漏洞,之前在知识星球中看到过这个系统的鉴权绕过的文章 感觉是很小的一套系统了,之前审计的代码有的太大了 github链接:[github.com 下载好后配置好数据库,导入sql文件启动即可,很简单 这套系统是SpringBoot框架,上来先看pom.xml文件,…

约 6 分钟
09
漏洞复现 #geoserver

geoserver历史漏洞

GGeoServer 是一个开源的地理信息服务器,用于发布和共享地理空间数据。它是由 GeoTools 库驱动的,GeoTools 是一个用于处理地理数据的 Java 库。GeoServer 允许用户从各种数据源(如 Shapefile、PostGIS、Oracle Spatial、ArcSDE 等…

约 5 分钟
10
漏洞复现 #Nacos

Nacos历史漏洞

Nacos 是一个由阿里巴巴开源的动态服务发现、配置管理和服务管理平台,它帮助开发者更轻松地构建、交付和管理微服务应用,实现了服务的注册发现、健康监测以及动态配置管理,让微服务架构中的服务治理与配置更新变得更加高效和灵活。 1 2 3 4 app="nacos" && port="8848" ico…

约 6 分钟
11
Java #SpringAop

SpringAop链

前面学习Hessian反序列化时,发现只有Rome反序列化这一条链是我学习过的,现在来补一补没有学过的链子 该链依赖于 spring-aop 和 aspectjweaver 两个包,在pom.xml文件中导入以下依赖 或者在springboot的 spring-boot-starter-aop 中自…

约 4 分钟
12
Java #Hessian

Hessian反序列化

最近来学习一下Hessian反序列化,感觉这个组件也是非常常见的,看了看感觉有点类似于RMI的远程方法调用,但是触发点并不是 readObject 了,变成了 hashCode/equals/compareTo 其中之一 Hessian 是一种基于二进制的轻量级网络传输协议,用于在不同的应用程序之间…

约 8 分钟
13
Java #Spring原生反序列化

高版本JDKSpring原生反序列化链

在《Java安全share》星球中,jsjcw师傅给出了 在高版本JDK下的spring原生链 POC,当时就想去研究一下这条链子,可惜其中有很多知识点我都没有接触过,所以这条链子的学习周期拉的长了一些 新建一个JAVA项目,JDK版本为17 向pom.xml文件中导入如下依赖 1 2 3 4 5…

约 9 分钟
14
Java #Jackson

Jackson中getter触发不稳定问题

最近在分析《高版本JDKSpring原生反序列化链》时,其中有一个知识点为《JACKSON链的不稳定性》,前来学习一下(有个很奇怪很奇怪的事情,为什么我的Jackson链子十分的稳定, outputProperties 总是第一名……初步猜测为本人电脑环境问题) 在调用该Jackson链,调用任意类…

约 4 分钟
15
Java #JDK原生反序列化

EventListenerList触发任意toString

最近爆出来一个《高版本JDK下的Spring原生反序列化链》,本来想着学习一下最前沿的新东西,看了一下其它师傅的分析文章,好多没见过的知识点,慢慢补吧... 这里我使用JDK17,因为最新的Spring原生反序列化链是基于JDK17的 该链子的入口点为`EventListenerList#readO…

约 3 分钟
16
Java #Jackson

Jackson反序列化

Jackson 是一个开源的Java序列化和反序列化工具,可以将 Java 对象序列化为 XML 或 JSON 格式的字符串,以及将 XML 或 JSON 格式的字符串反序列化为 Java 对象。 本次Jackson反序列化使用Jackson版本为2.7.9,导入依赖如下 1 2 3 4 5 6 7…

约 11 分钟
17
Java #RMI

RMI基础

最早的最早,从分布式概念出现以后,工程师们,制造了一种,基于Java语言的 远程方法调用 的东西,它叫RMI(Remote Method Invocation),我们使用Java代码,可以利用这种技术,去跨越JVM,调用另一个JVM的类方法。 因为任何东西都是基于socket, RMIClient…

约 26 分钟
18
Java #JDK原生反序列化

JDK7u21

好久之前的文章了,忘记发了 只需JDK7u21 JDK7u21的核心点就是`sun.reflect.annotation.AnnotationInvocationHandler` 我们可以看到 AnnotationInvocationHandler 中的 equalsImpl 方法 其中有一个明显的…

约 6 分钟
19
Web #Redis

Redis未授权

好早以前写的文章了 在之前打比赛时,遇到一个redis未授权访问的题目,搜搜索索写进去文件了,但是最后没搞出来,好可惜了,所以学了学Redis Redis在默认情况下,会绑定 0.0.0.0:6379 ,如果没有添加防火墙规则等相关策略,则Redis会暴露在公网,如果在 没有密码认证 (一般为空)情…

约 4 分钟
20
Java #JDBC

H2-JDBC-Attack

最近看了看了一些数据库驱动,想起来经常利用的H2数据库的驱动,但是还没分析过源码,所以今天来浅析一下 H2数据库是一款用Java编写的轻量级开源关系型数据库,支持嵌入式和服务器模式。它以其高性能、便捷性和灵活性,广泛应用于开发和测试环境。 h2数据库是纯Java的,因此跨平台使用更加方便。 在使用…

约 4 分钟
21
Web #Sql注入

基于SqlServer的SQL注入

最近面试了几家实习,都问了基于SqlServer的SQL注入,所以今天想补一下基础。 搭建SqlServer,我们的环境和版本如下: Windows Server 2012 SqlServer 2012 这里的SqlServer环境搭建比较简单,可以参考该链接进行安装 blog.csdn.net M…

约 11 分钟
22
Java #JDBC

PostgreSQL-JDBC-Attack

之前学习过通过Mysql驱动进行JDBC反序列化,最近有听到JDBC不出网的利用方式,今天来学习一下 受影响版本如下: < 42.2.25 >= 42.3.0,< 42.3.2 首先在本地构造一个触发漏洞的环境,在pom.xml中导入PostgreSQL依赖 1 2 3 4 5 6 7 8 9 10…

约 8 分钟
23
Java #memShell

Spring内存马

常见的有两种,Controller内存马和Interceptor内存马,有了前面学习Tomcat的Filter、Servlet、Listener和Valve内存马的学习,学习Spring内存马感觉到是比较轻松的 Spring的相关基础,都是之前在一点点瞎学习和审计SpringBoot系统中学到的,也…

约 7 分钟
24
Java #memShell

Agent内存马

基于Tomcat的内存马类型有四种:Filter、Servlet、Listener和Agent。 在之前的面试中,有个问题是:如果不是基于Tomcat的Java网站,该如何注入内存马。当时没有了解到Agent内存马,现在才知道, Agent内存马是不受Tomcat框架限制的,因此来学习研究一下 学了…

约 17 分钟
25
Java #脚本执行

Groovy脚本执行

在审计一套源码的时候,mt告诉我的漏洞中,有一个从来没见过没听过的漏洞 —— Groovy脚本执行,今天简单看一下吧 导入依赖如下: 1 2 3 4 5 < dependency > < groupId > org.codehaus.groovy </ groupId > < artifactId…

约 3 分钟
26
Java #SSTI

Java中的模板注入

最近在审计系统的时候,复现一个SSTI模板注入的漏洞,感觉SSTI的危害程度挺高的,因为感觉不是很了解原理,所以详细来学习一下SSTI漏洞 SSTI(服务器端模板注入),在模板引擎解析模板时,因为代码实现的不严谨,可以将恶意代码注入到模板中,从而达到执行任意代码的功能。 Java中常用的模板有三个:…

约 17 分钟
27
Java #Gedget探测

Java反序列化Gadget探测

之前面试的时候,有问过我:”在黑盒测试中,找到一个反序列化过程的点,你该怎么找可用的Gadget“,当时不太清楚有这种方式,回答所有gadget都爆破一下……今天来看一下如何用URLDNS链探测可用Gadget 虽然将所有的gadget都测试一遍的方法也是可行的,但是单纯的盲测工作量会非常巨大,而且…

约 5 分钟
28
Java #JDBC

JDBC反序列化-MYSQL

文章首发于: freebuf.com 已经好久没有写博客了,这段时间花了点时间学了点内网的知识,内网相关笔记后续可能会发了。这两天渗透的时候,进入到了一个若依系统中,发现有接口可以通过数据库连接源连接,想到了之前看过但是还没学习的JDBC反序列化的链子,今天学习一下。(要是之前就学了是不是这个就能打…

约 13 分钟
29
Java #XStream

XStream反序列化

XStream 是一个 Java 库,用于简化 Java 对象与 XML 之间的相互转换(序列化与反序列化)。它允许开发人员将 Java 对象直接转换为 XML 格式,或从 XML 恢复为原始对象,无需编写复杂的解析代码。 这里我们来看如何使用XStream进行序列化和反序列化操作 首先定义接口 1…

约 10 分钟
30
Java #Log4j

Log4j2远程代码执行

Log4j感觉还是比较好利用的,在shagou大佬的面试中,给出一个log4j漏洞绕过payload,要求分析研判,虽说能一眼看出时log4j的利用,但是也是头一次见了。 JDK8u65 Log4j 2.14.1 CC3.2.1 在8u191后,Log4j还是可以利用的,但是要用高版本的绕过手段 依…

约 3 分钟
31
漏洞复现 #Apache

CVE-2025-24813

免责声明:本文只用作技术分析和学习,任何利用本文内容进行非法攻击的行为均与作者无关!!! (也是写上免责声明了哈哈哈) 文章首发于 freebuf.com Apache Tomcat在特定配置下,存在反序列化漏洞。 攻击者通过构造恶意的请求,利用特定配置 **文件会话持久机制 **将恶意序列化数据写…

约 7 分钟
33
漏洞复现 #Weblogic

WebLogic T3 反序列化

之前见过好多次WebLogic的漏洞,但是一直没来得及学(其实是懒),这段时间有来学习一下 环境配置中JDK版本和Weblogic版本如下 JDK7u21 WebLogic1036 环境的搭建使用 QAX A-team中提供的脚本: github.com JDK安装包下载地址: oracle.com…

约 7 分钟
34
Java #memShell

Java反序列化打内存马

对于我们之前学习的Tomcat内存马,只算是做了一些简单的实验,并未能够完全应用,只能通过文件上传jsp的方式来注入内存马,也是存在文件落地的现象的,并非真正的内存马 所以这篇文章,我们来学习利用反序列化来实现真正的内存马注入,本文会使用CC11链来进行内存马的注入,实现真正的无文件落地内存马,在使…

约 7 分钟
35
漏洞复现

CVE-2025-32462/32463Sudo提权

CVE-2025-32462-Linux sudo本地提权漏洞复现 sudo 是 Linux 系统中用来管理权限的核心工具,用来授权用户临时获取 root 或者其他用户权限执行命令,既保障系统安全又便于操作。 CVE-2025-32462的Linux sudo 本地权限提升漏洞在于 sudo 的 -…

约 3 分钟
36
漏洞复现

CVE-2025-6218 WinRAR路径穿越

RARLAB公司的WinRAR压缩软件中发现了一个严重安全漏洞,CVE-2025-6218(路径穿越漏洞),攻击者可通过构造恶意的压缩文件,实现在压缩文件解压时可以将文件释放到受害者系统的敏感路径下(例如自启动目录),进而实现远程代码执行或者持久化控制。 攻击需要目标用户访问恶意网页或打开恶意压缩文…

约 2 分钟
37
Java #绕WAF

Java反序列化绕WAF之加大量脏数据

大多数的WAF受限于性能影响,当request足够大时,WAF就可能因为性能原因而做出让步,超出检查长度的内容,将不会被检查。这一点在一些CTF的题目中有所体现。 虽然这样可以绕过检测,但是我们的序列化数据是二进制数据,直接加入垃圾数据破坏了序列化的结构,在readObject反序列化的时候并没有反…

约 1 分钟
38
Java #回显技术

Java回显技术

该回显方法是基于 proc/self/fd/i 的攻击 在Linux环境下,可以通过文件描述符 proc/self/fd/i 获取到网络连接,在Java中我们可以直接通过文件描述符获取到一个Stream对象,对当前网络进行读写操作,可以釜底抽薪在根源上解决回显问题。简单来说就是利用linux文件描述…

约 13 分钟
39
Java #Struts2

Struts2-S2-001

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的S…

约 10 分钟
40
Java #SnakeYaml

SnakeYaml链

今天该学习SnakeYaml这条链子了,大概看了一遍文章,相比于刚学的ROME,难度还是有的 根据了解,SnakeYaml是Java的yaml解析类库,支持Java对象的序列化与反序列化(看见和FastJson比较像哈),我们来了解一下简单的yaml语法 YAML对于大小写是敏感的 使用缩进代表层级…

约 17 分钟
41
Java #C3P0

C3P0链

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。 JDBC是Java DataBase Connectivity的缩写,它是Java程序访问数据库的标准接口。 使用Java程序访问数…

约 9 分钟
42
Java #表达式注入

SPEL表达式注入

在 Spring3 中引入了 Spring 表达式语言(Spring Expression Language,简称 SPEL),这是一种功能强大的表达式语言,支持在运行时查询和操作对象图,可以与基于 XML 和基于注解的 Spring 配置还有 bean 定义一起使用。 在 Spring 系列产品中…

约 6 分钟
43
Java #表达式注入

EL表达式注入

今天来学习 EL表达式注入 EL(全称 Expression Language)表达式语言 作用 : 简化JSP页面内的Java代码 主要作用为 **获取数据 。**从域中获取数据,然后将数据展示出来 用法 : 使用的前提是通过page标签设置不忽略EL表达式 1 <%@ page contentT…

约 4 分钟
44
Java #memShell

Valve内存马

tomcat的内部结构 tomcat由Connector和Container两部分组成 Connector主要负责对外的网络交互,当收到网络请求时,它将请求包包装为Request,再将Request交给Container进行处理,最终返回给请求方 tomcat中的Container有四种,分别为 e…

约 4 分钟
45
Java #memShell

Listener内存马

Java Web 开发中的监听器(Listener)就是 Application、Session 和 Request 三大对象创建、销毁或者往其中添加、修改、删除属性时自动执行代码的功能组件。 Listener三个域对象 ServletContextListener HttpSessionListe…

约 4 分钟
46
Java #memShell

Filter内存马

从图中可以看出,我们的请求会经过 filter 之后才会到 Servlet ,那么如果我们动态创建一个 filter 并且将其放在最前面,我们的 filter 就会最先执行,当我们在 filter 中添加恶意代码,就会进行命令执行,这样也就成为了一个内存 Webshell 首先在IDEA中创建Ser…

约 9 分钟
47
Java #memShell

Servlet内存马

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层 它在应用程序中的位置如下图所示,很类似于中间件 客户端发起http请求,比如get类型 Servlet容器接收到请求…

约 4 分钟
48
Java #FastJson

FastJson 1.2.62-1.2.68反序列化漏洞

今天学习一下FastJson 中 1.2.62 - 1.2.68 的反序列化漏洞,思路的话和之前一样基于黑名单的绕过,但是大部分还是在 AutoType 开启的情况下,且基本都基于存在其他的依赖的条件下 需要开启AutoType FastJson <= 1.2.62 JNDI注入可利用的 JDK 版…

约 14 分钟
49
Java #FastJson

FastJson各版本绕过分析

这篇主要是讲一下Fastjson中版本>= 1.2.25后补丁的绕过方式 tips: 都必须开启AutoTypeSupport才能成功 想要绕过后续版本,我们就一定要知道哪里做了修改 修补方案就是将 DefaultJSONParser.parseObject() 函数中的 TypeUtils.loa…

约 10 分钟
50
Java #FastJson

FastJson1.2.24

JDK8u65 1.2.22 <= Fastjson <= 1.2.24 pom.xml 文件导入如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <dependency> <groupId>com.unboundid</groupId> <…

约 6 分钟
51
Java #FastJson

FastJson基础

Fastjson 是 Alibaba 开发的 Java 语言编写的高性能 JSON 库,用于将数据在 JSON 和 Java Object 之间互相转换。 提供两个主要接口来分别实现序列化和反序列化操作。 JSON.toJSONString 将 Java 对象转换为 json 对象,序列化的过程。…

约 2 分钟
52
Java #JNDI

JNDI专题

**JNDI(Java Naming and Directory Interface,Java命名和目录接口)**是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名…

约 14 分钟
53
Java #RMI

RMI之Java高版本绕过

在Java高版本中,在 RegistryImpl 类中新加了一个 registryFilter 方法,里面对所传入的序列化对象的类型进行了限制 1 2 3 4 5 6 7 8 9 10 11 12 if (String.class == clazz || java.lang.Number.class…

约 4 分钟
54
Java #RMI

RMI攻击方式

前面我们进行了RMI源码层面的分析,这里我们来讨论RMI的攻击方式 根据源码层面分析,我们有以下几种基本攻击方式 客户端 打 注册中心 客户端 打 服务端 客户端 不管是服务端或者客户端,与注册中心交互主要是下面这句话 1 r.bind( "remoteObj" ,remoteObj); 除了 bi…

约 9 分钟
55
Java #CC链

CC11链

分析完CC1-7,继续分析一下CC11,CC11使用字节码加载,它其实是CC2+CC6的组合变形 漏洞版本:cc组件3.1-3.2.1 这里我把CC链子的流程图放上来,实际根据CC1-7,可以衍生出来很多CCN CC2链流程 1 2 3 4 5 6 7 8 9 10 /* Gadget chain:…

约 3 分钟
56
Java #Shiro

Shiro550

今天我们精进shiro的反序列化!!! 之前有做过相关的shiro550与721的复现,不过都是利用工具的,没有理解里面的原理 550的话是由于他的密钥是固定的,是可以爆破的,经过Base64和AES解密以后,可以将里面的内容构造为恶意代码,从而达到RCE的目的 在登录界面有remember me的…

约 10 分钟
57
Java #CC链

CC5链

cc5的后半部分和之前是一样的,只是在调用LazyMap的get方法时,使用的是 TiedMapEntry 的 toString 方法,相当于是提供了一个新的入口 这里 TiedMapEntry 的同 toString 方法调用了 getValue 方法,而 getValue 方法调用了map的 g…

约 1 分钟
58
Java #CC链

CC7链

cc7与cc5大同小异,也是后面部分不变,变的只是入口的地方 cc7这里的入口点使用了 Hashtable 这里我们简单分析一下,入口类是 Hashtable 的 readObject ,调用本身的 reconstitutionPut 方法,进入 reconstitutionPut 看一下(这里我们…

约 3 分钟
59
Java #CC链

CC2链

之前这里没有搞明白,这次这里动态调试了一下,发现应该是差不多了,回来补一下 在这里add之后进行了下列操作,就是将add的元素,放入了queue数组中 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 priorityQueue.add(templ…

约 3 分钟
60
Java #CC链

CC4链

之前讲的几条链子,都是在commons-collections3.2.1版本之前的攻击链,cc4是在commons-collections4.0版本中的一条链子 实际上,这条链子还是换汤不换药,只是中间执行的方式换了一下,后面还是命令执行和代码执行两种方式 这里用到的是 TransformingCo…

约 3 分钟
61
Java #CC链

CC3链补充

ysoserial中使用 TrAXFilter 类,来触发 newTransformer 方法,最后也可以成功进行类加载 这里我们也进行分析一下 我们来看`TrAXFilter`的构造函数,构造时需要传入一个templates ,然后调用他的`newTransformer`方法,但是这个类并没有继承…

约 2 分钟
62
Java #CC链

CC3链

CC3这条链子和前面的两条链有些不同,在这条链子中我们使用了 动态类加载 替换掉了 Runtime.exec ,由 命令执行 换为了 代码执行 我们来回顾一下动态类加载: ClassLoader中的 loadclass 调用 findClass , findCLass 调用 defineClass…

约 5 分钟
63
Java #CC链

CC6链

tips:cc6这条链是不受jdk版本限制的 cc6的入口换成了 HashMap 的 readObject 方法,这条链实际是要调用 LazyMap的get方法 ,后面的部分就和ysoserial中的cc1后半链一样了 当时我们说URLDNS链中讲到了 HashMap 的 readObject 方法…

约 3 分钟
64
Java #CC链

CC1链补充

ysoserial中的cc1和我们前面所说后半部分是一样的,这里就不细说 在ysoserial中的cc1是用LazyMap替换了 TransformedMap 现在使用 LazyMap 的 get 方法去触发 ChainedTransformer 的 transform 方法 下面为LazyMap的…

约 3 分钟
65
Java #CC链

CC1链

Java反序列化原理: 接受任意对象,执行readObject方法 若有一个A的readObject方法,调用了O1.method1方法,则我们可以修改这个O1 且在O1.method1方法中,调用了O2.method2方法,则我们可以修改这个O2 …… 最后调用了危险方法(Runtime.getR…

约 6 分钟