Java安全之Weblogic内存马】的更多相关文章

Java安全之Weblogic内存马 0x00 前言 发现网上大部分大部分weblogic工具都是基于RMI绑定实例回显,但这种方式有个弊端,在Weblogic JNDI树里面能将打入的RMI后门查看得一清二楚.并且这种方式实现上传Webshell落地文件容易被Hids监测. 0x01 调试分析 调试分析 写一个filter进行断点跟踪上层代码. 其实和Tomcat差不多,就是一个Filter链 public void doFilter(ServletRequest req, ServletRe…
Java安全之Spring内存马 基础知识 Bean bean 是 Spring 框架的一个核心概念,它是构成应用程序的主干,并且是由 Spring IoC 容器负责实例化.配置.组装和管理的对象. 通俗来讲: bean 是对象 bean 被 IoC 容器管理 Spring 应用主要是由一个个的 bean 构成的 ApplicationContext Spring 框架中,BeanFactory 接口是 Spring IoC容器 的实际代表者. 从下面的接口继承关系图中可以看出,Applicat…
Java安全之Resin2内存马 环境 resin2.1.17 添加Filter分析 依然是web.xml注册一个filter,debug进去看注册流程 debug dofilter逻辑时看到如下代码,最终走入this._filterChain = this._application.buildFilterChain(this, this._config);去build filterchain.并且貌似是初始化的时候才会去buildfilterchain,当后面第二次再走时,这里的_filter…
Java安全之基于Tomcat实现内存马 0x00 前言 在近年来红队行动中,基本上除了非必要情况,一般会选择打入内存马,然后再去连接.而落地Jsp文件也任意被设备给检测到,从而得到攻击路径,删除webshell以及修补漏洞,内存马也很好的解决了反序列化回显的问题.但是随着红蓝攻防持续博弈中,一些内存马的查杀工具也开始逐渐开始出现.成型.所以有必要研究一下内存马的实现. 0x01 Tomcat架构分析 需要了解基于tomcat内存马实现还得去分析tomcat的一些处理机制以及结构.而在Tomca…
目录 1.寻找servlet注入方法 1.1 调试 1.2 servletMapping添加servlet 2.获取request 2.1 从当前线程寻找信息 2.2 JNDI注入到内存马注入 3.关于filter和listener 前面一段时间学习Tomcat下注入内存马和spring下的内存马,之后又实现了Resin下的内存马,但Resin下的servlet和filter内存马都要依靠defineClass,这就需要编译java文件以及base64编码操作,觉得还是有点麻烦,Resin下最好…
Java安全之反序列化回显与内存马 0x00 前言 按照我个人的理解来说其实只要能拿到Request 和 Response对象即可进行回显的构造,当然这也是众多方式的一种.也是目前用的较多的方式.比如在Tomcat 全局存储的Request 和 Response对象,进行获取后则可以在tomcat这个容器下进行回显.而某些漏洞的方式会从漏洞的位置去寻找存储Request 和 Response对象的地方. 0x01 Tomcat通用回显 根据Litch1师傅的思路来寻找request,respon…
看了雷石的内存马深入浅出,就心血来潮看了看,由于本人java贼菜就不介绍原理了,本文有关知识都贴链接吧 前置知识 本次主要看的是tomcat的内存马,所以前置知识有下列 1.tomcat结构,tomcat和idea联动创建java_web 2.jsp简单语法结构 3.servlet基础 这些百度就行,不贴链接了,下面贴链接的都是,不容易百度到,或者知识体系和描述不一致的 内存马基础知识 1.内存马能够存在的三种形式: https://mp.weixin.qq.com/s?__biz=MzIxMj…
本文站在巨人的肩膀学习Java Filter型内存马,文章里面的链接以及图片引用于下面文章,参考文章: <Tomcat 内存马学习(一):Filter型> <tomcat无文件内存webshell> <Java Filter型内存马的学习与实践> <JSP Webshell那些事> <中间件内存马注入&冰蝎连接> <Java安全之基于Tomcat实现内存马> <Tomcat内存马学习一-Filter型> Tomca…
无文件落地Agent型内存马植入 可行性分析 使用jsp写入或者代码执行漏洞,如反序列化等,不需要上传agent Java 动态调试技术原理及实践 - 美团技术团队 (meituan.com) 首先,我们先看一下通过Agent动态修改类的流程: 1.在客户端和目标JVM建立IPC连接以后,客户端会封装一个用来加载agent.jar的AttachOperation对象,这个对象里面有三个关键数据:actioName.libName和agentPath: 2.服务端收到AttachOperation…
Java安全之基于Tomcat的Filter型内存马 写在前面 现在来说,内存马已经是一种很常见的攻击手法了,基本红队项目中对于入口点都是选择打入内存马.而对于内存马的支持也是五花八门,甚至各大公司都有自己魔改的webshell管理工具,下面就从Tomcat开始学习内存马部分内容. 内存马主要分为以下几类: servlet-api类 filter型 servlet型 spring类 拦截器 controller型 Java Instrumentation类 agent型 Tomcat基础知识 首…
Java安全之Tomcat6 Filter内存马 回顾Tomcat8打法 先回顾下之前Tomcat789的打法 这里先抛开 7 8之间的区别, 在8中,最后add到filterchain的都是一个filterconfig对象 ApplicationFilterConfig包含了FilterDef对象 构造方法如下,如果当前filter属性为null会从FilterDef取filter的实例对象 ApplicationFilterConfig(Context context, FilterDef…
完全参考:https://www.cnblogs.com/nice0e3/p/14622879.html 这篇笔记,来源逗神的指点,让我去了解了内存马,这篇笔记记录的是filter类型的内存马 内存马的学习基本都是参考上面标注的博客文章,主要自己过一遍学习! 什么是内存马 什么是内存马,内存马即是无文件马,只存在于内存中.我们知道常见的WebShell都是有一个页面文件存在于服务器上,然而内存马则不会存在文件形式. 落地的JSP文件十分容易被设备给检测到,从而得到攻击路径,从而删除webshel…
    http://www.360doc.com/content/14/0306/14/16134804_358216319.shtml 一.WebLogic内存溢出 最近访问量门户访问量突然增大,总是内存溢出,频繁宕机,调整了很多参数没起作用,偶然发现Weblogic域在不断增大,罪魁祸首竟然是Weblogic的诊断文件,也是造成Weblogic内存溢出的主要原因.当Weblogic启动时就加载了每个Server上的诊断文件,占用了大部分内存分配,用户访问量越大这个文件也随之越大,将他删除后…
1 基础 实际上java内存马的注入已经有很多方式了,这里在学习中动手研究并写了一款spring mvc应用的内存马.一般来说实现无文件落地的java内存马注入,通常是利用反序列化漏洞,所以动手写了一个spring mvc的后端,并直接给了一个fastjson反序列化的页面,在假定的攻击中,通过jndi的利用方式让web端加载恶意类,注入controller.一切工作都是站在巨人的肩膀上,参考文章均在最后列出. 1.1 fastjson反序列化和JNDI 关于fastjson漏洞产生的具体原理已…
针对Spring MVC的Interceptor内存马 目录 针对Spring MVC的Interceptor内存马 1 基础拦截器和调用流程的探索 1.1 基础拦截器 1.2 探索拦截器的调用链 1.3 探索拦截器是如何被添加的 2 实践 1 基础拦截器和调用流程的探索 学习.探索和实现过程很多都基于大佬的文章https://landgrey.me/blog/19/ https://landgrey.me/blog/12/ 1.1 基础拦截器 前不久实现cotroller内存马能添加冰蝎代码后…
内存马 简介 ​ Webshell内存马,是在内存中写入恶意后门和木马并执行,达到远程控制Web服务器的一类内存马,其瞄准了企业的对外窗口:网站.应用.但传统的Webshell都是基于文件类型的,黑客可以利用上传工具或网站漏洞植入木马,区别在于Webshell内存马是无文件马,利用中间件的进程执行某些恶意代码,不会有文件落地,给检测带来巨大难度. 类型 ​ 目前分为三种: Servlet-API型 通过命令执行等方式动态注册一个新的listener.filter或者servlet,从而实现命令执…
Java Instrumentation ​ java Instrumentation指的是可以用独立于应用程序之外的代理(agent)程序来监测和协助运行在JVM上的应用程序.这种监测和协助包括但不限于获取JVM运行时状态,替换和修改类定义等.简单一句话概括下:Java Instrumentation可以在JVM启动后,动态修改已加载或者未加载的类,包括类的属性.方法. java agent技术原理及简单实现 - kokov - 博客园 (cnblogs.com) 什么是java agent?…
一.Tomcat介绍 Tomcat的主要功能 tomcat作为一个 Web 服务器,实现了两个非常核心的功能: Http 服务器功能:进行 Socket 通信(基于 TCP/IP),解析 HTTP 报文 Servlet 容器功能:加载和管理 Servlet,由 Servlet 具体负责处理 Request 请求 以上两个功能,分别对应着tomcat的两个核心组件连接器(Connector)和容器(Container),连接器负责对外交流(完成 Http 服务器功能),容器负责内部处理(完成 Se…
一.Tomcat处理请求 在前一个章节讲到,tomcat在处理请求时候,首先会经过连接器Coyote把request对象转换成ServletRequest后,传递给Catalina进行处理. 在Catalina中有四个关键的容器,分别为Engine.Host.Context.Wrapper.这四种容器成套娃式的分层结构设计. 接下来我们知道当tomcat接收到请求时候,依次会经过Listener -> Filter -> Servlet 其实我们也可以通过动态添加Filter来构成内存马,不过…
此篇文章在于记录自己对spring内存马的实验研究 一.环境搭建 搭建漏洞环境,利用fastjson反序列化,通过JNDI下载恶意的class文件,触发恶意类的构造函数中代码,注入controller内存马. 1)组件版本: fastjson: 1.2.24 spring-mvc: 4.3.28.RELEASE JDK: 8u121 2)搭建springMVC+fastjson漏洞环境 可以参考网上的入门文章进行搭建,这里我放出我自己环境的配置文件 web.xml <servlet> <…
利用shiro反序列化注入冰蝎内存马 文章首发先知社区:https://xz.aliyun.com/t/10696 一.shiro反序列化注入内存马 1)tomcat filter内存马 先来看一个普通的jsp写入tomcat filter内存马的代码: <%@ page import="org.apache.catalina.core.ApplicationContext" %> <%@ page import="java.lang.reflect.Fie…
Tomcat内存马-Filter型 什么是内存马?为什么要有内存马?什么又是Filter型内存马?这些问题在此就不做赘述 Filter加载流程分析 tomcat启动后正常情况下对于Filter的处理过程: 加载web.xml配置文件 读取filter的信息,并将其保存在context对象里的filterDef,filterConfigs,filterMappers中 filterChain的构造流程:1. 匹配请求路径,找到对应的filter 2. 将匹配的filter加入filterChain…
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] args) { System.out.println("sleep .."); try { Thread.sleep(10000000); } catch (InterruptedException e) { e.printStackTrace(); } } }   java -Xmx10…
1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对象都在堆(Heap)中分配空间. 释放:对象的释放是由垃圾回收机制决定和执行的,这样做确实简化了程序员的工作.但同时,它也加重了JVM的工作.因为,GC为了能够正确释放对象,GC必须监控每一个对象的运行状态,包括对象的申请.引用.被引用.赋值等,GC都需要进行监控. 2.什么叫java的内存泄露 在…
转自:http://www.tuicool.com/articles/uU77v2 一.  基本概念 每运行一个java程序会产生一个java进程,每个java进程可能包含一个或者多个线程,每一个Java进程对应唯一一个JVM实例,每一个JVM实例唯一对应一个堆,每一个线程有一个自己私有的栈.进程所创建的所有类的实例(也就是对象)或数组(指的是数组的本身,不是引用)都放在堆中,并由该进程所有的线程共享.Java中分配堆内存是自动初始化的,即为一个对象分配内存的时候,会初始化这个对象中变量.虽然J…
jdk7u40自带了一个非常好用的工具,就是Java Mission Control.JRockit Misson Control用户应该会对mission control的很多功能十分熟悉,JRockit也是一款很棒的工具.本篇文章将着重关注如何使用Java Flight Recorder进行内存分配分析. jvm有着非常棒的小块内存虚拟化技术,这会让你产生一种拥有无限内存的错觉感,其实它的开销非常大.有时候jvm需要找出此刻堆上数据是如何被使用的,并把剩余的空间扩大——这就是垃圾回收.产生这…
本文转自CSDN用户Kevin涂腾飞的文章java内存管理机制:http://blog.csdn.net/tutngfei1129287460/article/details/7383480 JAVA 内存管理总结 1. java是如何管理内存的 Java的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间. 释放 :对象的释放是由垃圾回收机制决定和执行的,…
一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代” .“非堆”, 它用于存储虚拟机加载的类信息.常量.静态变量.是各个线程共享的内存区域.默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小.运行时常量池:是方法区的一部分,Class文件中除了有类的版本.字段.方法.接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行时常量池中.…
CPU使用率: InputStream is = null; InputStreamReader isr = null; BufferedReader brStat = null; StringTokenizer tokenStat = null; // 用来分隔String的应用类 try { System.out.println("Get usage rate of CUP : "); Process process = Runtime.getRuntime().exec(&quo…
run: Exception in thread "main" java.lang.NoClassDefFoundError: weblogic/security/acl/UserInfo at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:) at javax.naming.spi.NamingManager.getInitialContext(NamingMa…