JAVA常用框架SQL注入审计checkList
原生JDBC 原生JDBC的SQL查询下,SQL查询方法关键方法为: java.sql.Statement // 没有预编译 java.sql.PreparedStatement // 有预编译 无论是否使用预编译,关注点: 是否有用占位符 SQL语句是否存在拼接 Mybatis 对于Mybatis框架下: mapper.xml文件 直接全局搜$ …
Java 回显技术
通过文件描述符回显 分析 在Linux环境下,可以通过文件描述符 /proc/self/fd/i 获取到网络连接,在Java中我们可以直接通过文件描述符获取到一个Stream对象,对当前网络连接进行读写操作,可以釜底抽薪在根源上解决回显问题。简单来讲就是利用Linux文件描述符实现漏洞回显。 从理论上讲如果获取到了当前请求对应进程的文件描述符,如果…
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 项目…