Java反射修改static final修饰的字段
private 看一个最常见的例子 public class Pojo { private StringBuilder name = new StringBuilder("john"); public void printName() { System.out.println(name); } } 使用反射修改private修饰符的变量name i…
CommonsCollections11利用链分析
原理 首先先回顾一下之前CC1-CC7这七条链,我也忘得差不多了,总体分为两种方式实现代码执行吧: 第一种是CC1和CC6,核心是通过ChainTransformer.tranform方法链式调用构造好的ConstantTransformer.tranform和InvokerTransformer.transform方法,实现代码执行第二类是以CC…
Java Valve型内存马
Valve 是什么 我们要学习 Valve 型内存马,就必须要先了解一下 Valve 是什么 这一段内容引用枫师傅的文章原话,因为枫师傅这段话我觉得写的非常清楚,师傅们可以学习一下 在了解 Valve 之前,我们先来简单了解一下 Tomcat 中的管道机制。 我们知道,当 Tomcat 接收到客户端请求时,首先会使用 Connector 进行解析,…
Java Servlet型内存马
Servlet 创建 可以先看一下 Servlet 这个接口有哪些方法 public interface Servlet { void init(ServletConfig var1) throws ServletException; // init方法,创建好实例后会被立即调用,仅调用一次。 ServletConfig getServletCon…
Java Listener型内存马
Listener 基础知识 Java Web 开发中的监听器(Listener)就是 Application、Session 和 Request 三大对象创建、销毁或者往其中添加、修改、删除属性时自动执行代码的功能组件。 用途 可以使用监听器监听客户端的请求、服务端的操作等。通过监听器,可以自动出发一些动作,比如监听在线的用户数量,统计网站访问量、…
Java Filter型内存马
前言 学过 Servlet 的应该都知道 filter (过滤器),我们可以通过自定义过滤器来做到对用户的一些请求进行拦截修改等操作,下面是一张简单的流程图 从上图可以看出,我们的请求会经过 filter 之后才会到 Servlet ,那么如果我们动态创建一个 filter 并且将其放在最前面,我们的 filter 就会最先执行,当我们在 filt…
Java Tomcat内存马基础
内存马简介 内存马是无文件Webshell,就是服务器上不会存在需要链接的Webshell脚本文件。 原理 利用Java Web组件:动态添加恶意组件,如Servlet、Filter、Listener等。在Spring框架下就是Controller、Intercepter。修改字节码:利用Java的Instrument机制,动态注入Agent,在J…
浅谈JEP290
JEP290介绍 JDK Enhancement Proposal 简称JEP,是 JDK 增强提议的一个项目,目前索引编号已经达到了JEP415。 JEP290的描述是Filter Incoming Serialization Data,即过滤传入的序列化数据。JEP290 是 Java 为了防御反序列化攻击而设置的一种过滤器,其在 JEP 项目…
Log4j2 JNDI注入漏洞(CVE-2021-44228)
漏洞条件 Apache Log4j2 <=2.14.1JNDI注入的JDK版本在范围内或本地有利用链 Log4j2 基础 Apache Log4j2是 Apache 软件基金会下的一个开源的基于 Java 的日志记录工具,被应用在了各种各样的衍生框架中,同时也是作为目前java全生态中的基础组件之一。 搭建环境 导包 创建Maven项目,并将…
Tomcat CGI RCE(CVE-2019-0232)
漏洞条件 Apache Tomcat 9.0.0.M1 to 9.0.17Apache Tomcat 8.5.0 to 8.5.39Apache Tomcat 7.0.0 to 7.0.93Windows系统开启CGIServletCGI目录下存在bat文件 漏洞原理 本人认为该漏洞的核心在于JDK中runtime.getRuntime.exec(…