分类: java

14 篇文章

Filter内存马
Filter内存马 Filter内存马 - Erosion2020 - 博客园 Filter样例: package org.example.memoryshell; import javax.servlet.*; import java.io.IOException; // 如果不想在web.xml中配置,也可以使用这样的注解配置 // @WebF…
Listener内存马
Listener内存马 listener是什么:简单来说Listener(监听器)就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。Listener常用于GUI应用程序中,我们的内存马主要涉及到的是ServletRequestListener(…
Servlet内存马
Servlet内存马 Servlet内存马 - Erosion2020 - 博客园 基础概念讲解: StandardContext: 这是最常用的 Context 实现。它通常用于开发和生产环境,适用于大多数 Web 应用。 StandardContext 是 Tomcat 中最常用的 Context 实现,主要用于管理 Web 应用程序的生命周期…
Ruoyi SSTI 复现
Ruoyi SSTI 复现 原文链接:Ruoyi SSTI 与 Thymeleaf bypass深探-先知社区 前置知识: Thymeleaf 模板片段复用语法: 定义片段: <div th:fragment="header">欢迎来到后台 这里定义了一个叫header的片段,它可以被复用 复用片段: <div th:insert…
hessian
Hessian 反序列化链 基础: 序列化和反序列化: package com.example; import com.caucho.hessian.io.HessianInput; import com.caucho.hessian.io.HessianOutput; import java.io.*; public class ObjectTe…
CB链
CB链 在CC4中我们知道PriorityQueue.readObject()->PriorityQueue.heapify()->PriorityQueue.siftDown()->PriorityQueue.siftDownUsingComparator()可以调用某个对象的compare()方法,之前我们用的是Transfo…
RMI
RMI: RMI是什么:Java的RMI远程调用是指,一个JVM中的代码可以通过网络实现远程调用另一个JVM的某个方法。RMI是Remote Method Invocation的缩写。 提供服务的一方我们称之为服务器,而实现远程调用的一方我们称之为客户端。 概念图: 客户端: 存根/桩(Stub):远程对象在客户端上的代理; 远程引用层(Remot…
CC7
CC7: 这个就是改了一下触发transform()的 版本要求: JDK < 8u121 Commons-Collections ≤ 3.2.1 LazyMap类: 还是从get()方法触发transform()方法入手: public Object get(Object key) { // create value for key if …
CC2
CC2: 就是个CC4的变种,只是用了CC3的字节码动态加载类,同时用InvokerTransformer直接触发newTransformer(),同时由于是字节码加载所以也不用考虑重复调用transform()。 POC: package org.example; import java.lang.reflect.Field; import ja…
CC5
CC5: 这个相比CC1只是出口变了一下。 LazyMap类: 我们知道这个类的get()方法可以触发transform()方法。 public Object get(Object key) { // create value for key if key is not currently in the map if (map.containsKe…