利用Fastjson注入Spring内存马】的更多相关文章

此篇文章在于记录自己对spring内存马的实验研究 一.环境搭建 搭建漏洞环境,利用fastjson反序列化,通过JNDI下载恶意的class文件,触发恶意类的构造函数中代码,注入controller内存马. 1)组件版本: fastjson: 1.2.24 spring-mvc: 4.3.28.RELEASE JDK: 8u121 2)搭建springMVC+fastjson漏洞环境 可以参考网上的入门文章进行搭建,这里我放出我自己环境的配置文件 web.xml <servlet> <…
Java安全之Spring内存马 基础知识 Bean bean 是 Spring 框架的一个核心概念,它是构成应用程序的主干,并且是由 Spring IoC 容器负责实例化.配置.组装和管理的对象. 通俗来讲: bean 是对象 bean 被 IoC 容器管理 Spring 应用主要是由一个个的 bean 构成的 ApplicationContext Spring 框架中,BeanFactory 接口是 Spring IoC容器 的实际代表者. 从下面的接口继承关系图中可以看出,Applicat…
针对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内存马能添加冰蝎代码后…
目录 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下最好…
完全参考:https://www.cnblogs.com/nice0e3/p/14622879.html 这篇笔记,来源逗神的指点,让我去了解了内存马,这篇笔记记录的是filter类型的内存马 内存马的学习基本都是参考上面标注的博客文章,主要自己过一遍学习! 什么是内存马 什么是内存马,内存马即是无文件马,只存在于内存中.我们知道常见的WebShell都是有一个页面文件存在于服务器上,然而内存马则不会存在文件形式. 落地的JSP文件十分容易被设备给检测到,从而得到攻击路径,从而删除webshel…
Java安全之Tomcat6 Filter内存马 回顾Tomcat8打法 先回顾下之前Tomcat789的打法 这里先抛开 7 8之间的区别, 在8中,最后add到filterchain的都是一个filterconfig对象 ApplicationFilterConfig包含了FilterDef对象 构造方法如下,如果当前filter属性为null会从FilterDef取filter的实例对象 ApplicationFilterConfig(Context context, FilterDef…
利用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…
1 基础 实际上java内存马的注入已经有很多方式了,这里在学习中动手研究并写了一款spring mvc应用的内存马.一般来说实现无文件落地的java内存马注入,通常是利用反序列化漏洞,所以动手写了一个spring mvc的后端,并直接给了一个fastjson反序列化的页面,在假定的攻击中,通过jndi的利用方式让web端加载恶意类,注入controller.一切工作都是站在巨人的肩膀上,参考文章均在最后列出. 1.1 fastjson反序列化和JNDI 关于fastjson漏洞产生的具体原理已…
注意:注入基本类型值在本质上就是依赖注入,而且是利用的set方式进行的依赖注入 1 注入基本类型的值 <property name="基本类型的成员变量名" value="值"/> 2 注入集合类型的值(直接注入) 2.1 注入list类型的值 <property name="interest"> <list> <value>钓鱼</value> <value>做饭</…
内存马 简介 ​ Webshell内存马,是在内存中写入恶意后门和木马并执行,达到远程控制Web服务器的一类内存马,其瞄准了企业的对外窗口:网站.应用.但传统的Webshell都是基于文件类型的,黑客可以利用上传工具或网站漏洞植入木马,区别在于Webshell内存马是无文件马,利用中间件的进程执行某些恶意代码,不会有文件落地,给检测带来巨大难度. 类型 ​ 目前分为三种: Servlet-API型 通过命令执行等方式动态注册一个新的listener.filter或者servlet,从而实现命令执…
Java安全之反序列化回显与内存马 0x00 前言 按照我个人的理解来说其实只要能拿到Request 和 Response对象即可进行回显的构造,当然这也是众多方式的一种.也是目前用的较多的方式.比如在Tomcat 全局存储的Request 和 Response对象,进行获取后则可以在tomcat这个容器下进行回显.而某些漏洞的方式会从漏洞的位置去寻找存储Request 和 Response对象的地方. 0x01 Tomcat通用回显 根据Litch1师傅的思路来寻找request,respon…
本文站在巨人的肩膀学习Java Filter型内存马,文章里面的链接以及图片引用于下面文章,参考文章: <Tomcat 内存马学习(一):Filter型> <tomcat无文件内存webshell> <Java Filter型内存马的学习与实践> <JSP Webshell那些事> <中间件内存马注入&冰蝎连接> <Java安全之基于Tomcat实现内存马> <Tomcat内存马学习一-Filter型> Tomca…
Java Instrumentation ​ java Instrumentation指的是可以用独立于应用程序之外的代理(agent)程序来监测和协助运行在JVM上的应用程序.这种监测和协助包括但不限于获取JVM运行时状态,替换和修改类定义等.简单一句话概括下:Java Instrumentation可以在JVM启动后,动态修改已加载或者未加载的类,包括类的属性.方法. java agent技术原理及简单实现 - kokov - 博客园 (cnblogs.com) 什么是java agent?…
Tomcat内存马-Filter型 什么是内存马?为什么要有内存马?什么又是Filter型内存马?这些问题在此就不做赘述 Filter加载流程分析 tomcat启动后正常情况下对于Filter的处理过程: 加载web.xml配置文件 读取filter的信息,并将其保存在context对象里的filterDef,filterConfigs,filterMappers中 filterChain的构造流程:1. 匹配请求路径,找到对应的filter 2. 将匹配的filter加入filterChain…
1 利用 @Autowired 注入失效问题 1.1 问题描述 在使用Junit作为测试框架的单元测试中,直接了用@Autowired记性依赖注入时总是注入失败 1.2 问题原因 在测试类中没有设定上下文的配置文件信息,指定运行环境为Spring环境 @RunWith就是一个运行器 @RunWith(JUnit4.class)就是指用JUnit4来运行 @RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境 @RunWith(Suite.…
看了雷石的内存马深入浅出,就心血来潮看了看,由于本人java贼菜就不介绍原理了,本文有关知识都贴链接吧 前置知识 本次主要看的是tomcat的内存马,所以前置知识有下列 1.tomcat结构,tomcat和idea联动创建java_web 2.jsp简单语法结构 3.servlet基础 这些百度就行,不贴链接了,下面贴链接的都是,不容易百度到,或者知识体系和描述不一致的 内存马基础知识 1.内存马能够存在的三种形式: https://mp.weixin.qq.com/s?__biz=MzIxMj…
一.Tomcat介绍 Tomcat的主要功能 tomcat作为一个 Web 服务器,实现了两个非常核心的功能: Http 服务器功能:进行 Socket 通信(基于 TCP/IP),解析 HTTP 报文 Servlet 容器功能:加载和管理 Servlet,由 Servlet 具体负责处理 Request 请求 以上两个功能,分别对应着tomcat的两个核心组件连接器(Connector)和容器(Container),连接器负责对外交流(完成 Http 服务器功能),容器负责内部处理(完成 Se…
无文件落地Agent型内存马植入 可行性分析 使用jsp写入或者代码执行漏洞,如反序列化等,不需要上传agent Java 动态调试技术原理及实践 - 美团技术团队 (meituan.com) 首先,我们先看一下通过Agent动态修改类的流程: 1.在客户端和目标JVM建立IPC连接以后,客户端会封装一个用来加载agent.jar的AttachOperation对象,这个对象里面有三个关键数据:actioName.libName和agentPath: 2.服务端收到AttachOperation…
一.Tomcat处理请求 在前一个章节讲到,tomcat在处理请求时候,首先会经过连接器Coyote把request对象转换成ServletRequest后,传递给Catalina进行处理. 在Catalina中有四个关键的容器,分别为Engine.Host.Context.Wrapper.这四种容器成套娃式的分层结构设计. 接下来我们知道当tomcat接收到请求时候,依次会经过Listener -> Filter -> Servlet 其实我们也可以通过动态添加Filter来构成内存马,不过…
Java安全之基于Tomcat的Filter型内存马 写在前面 现在来说,内存马已经是一种很常见的攻击手法了,基本红队项目中对于入口点都是选择打入内存马.而对于内存马的支持也是五花八门,甚至各大公司都有自己魔改的webshell管理工具,下面就从Tomcat开始学习内存马部分内容. 内存马主要分为以下几类: servlet-api类 filter型 servlet型 spring类 拦截器 controller型 Java Instrumentation类 agent型 Tomcat基础知识 首…
一.Spring和SpringMVC两个IOC容器有什么关系呢? Spring的IOC容器包含了SpringMVC的IOC,即SpringMVC配置的bean可以调用Spring配置好的bean,反之则不可以. 如果SpringMVC想通过@Autowired注入Spring容器里的属性,即使Spring配置文件已经配置好了. <context:component-scan base-package="com.wzy"></context:component-scan…
利用SQL注入漏洞登录后台的实现方法 作者: 字体:[增加 减小] 类型:转载 时间:2012-01-12我要评论 工作需要,得好好补习下关于WEB安全方面的相关知识,故撰此文,权当总结,别无它意.读这篇文章,我假设读者有过写SQL语句的经历,或者能看得懂SQL语句   早在02年,国外关于SQL注入漏洞的技术文章已经很多,而国内在05年左右才开始的.  如今,谈SQL注入漏洞是否已是明日黄花,国内大大小小的网站都已经补上漏洞.但,百密必有一疏,入侵是偶然的,但安全绝对不是必然的.  前些天,网…
1.启动服务时通过spring容器的监听器(继承ContextLoaderListener 监听器的方法) public class ListenerSpringContext extends ContextLoaderListener { private final Logger log = LoggerFactory.getLogger(ListenerSpringContext.class); public void contextInitialized(ServletContextEve…
原文:[ASP.NET MVC] 利用动态注入HTML的方式来设计复杂页面 随着最终用户对用户体验需求的不断提高,实际上我们很多情况下已经在按照桌面应用的标准来设计Web应用,甚至很多Web页面本身就体现为一个单一的页面.对于这种复杂的页面,我们在设计的时候不可以真的将所有涉及的元素通通至于某个单独的View中,将复杂页面相对独立的内容"分而治之"才是设计之道.我们可以借鉴Smart Clent应用的设计方式:将一个Windows Form作为应用的容器(Smart Client Sh…
一个基于STSdb和fastJson的磁盘/内存缓存 需求 业务系统用的是数据库,数据量大,部分只读或相对稳定业务查询复杂,每次页面加载都要花耗不少时间(不讨论异步),觉得可以做一下高速缓存,譬如用nosql那种key/value快速存取结果 目的 这里不是要做一个大家都适用的磁盘/内存缓存库,这个做法,部分是展示STSdb的用法,部分是提供一个简单易用的解决方案. 磁盘/内存 为什么不用memcached或者AppFabric Cache这样的现成解决方案呢?因为业务要缓存的内存或大或小,小的…
问题说明 今天在web应用中用到了Java多线程的技术来并发处理一些业务,但在执行时一直会报NullPointerException的错误,问题定位了一下发现是线程中的Spring bean没有被注入,bean对象的值为null. 原因分析 web容器在启动应用时,并没有提前将线程中的bean注入(在线程启动前,web容易也是无法感知的) 解决方案 方法有多种,网上也看到了不少. 1. 使用static声明变量 可参见 引用 http://blog.csdn.net/bjamosgavin/ar…
mybatis实际上是一个更多关注sql语句的框架,他的出现是想让开发者更简单的去操作数据库. 与hibernate相比较,hibernate更多的是去sql化,虽然hibernate也可以本地sql执行,hibernate更多的是关注与hql的编写和对象映射的配置, 只要配置完了,hibernate有封装好的函数可以帮你执行操作数据库,当然hibernate也是靠生产sql语句去实现操作数据库的,值得注意的是 hibernate可以很容易的去适应不同类别的数据库,只要配置更改一下就可以针对不同…
利用 fastjson等 反序列化时需要注意,他可能会用到 默认的构造函数,如果没有默认构造函数,某些场景下可能会出现 反序列化熟悉为空的情况,如下图所示:…
KPPW2.5 漏洞利用--SQL注入 SQL注入--布尔型盲注 环境搭建 1,集成环境简单方便,如wamp,phpstudy.... 2,KPPW v2.2源码一份(文末有分享)放到WWW目录下面 3,安装,访问(http://127.0.0.1/test/KPPW2.5UTF8/KPPW2.5UTF8/install/index.php),选择下一步,下一步,填写数据库信息,后台管理员账号密码等等. 上述,漏洞复现平台搭建成功. 首页(http://127.0.0.1/test/KPPW2.…
很多情况在进行Web开发的时候需要自己手写Servlet来完成某些功能,而servlet有需要注入Spring容器中的某些bean,这是每次都要手动获取比较麻烦,这里有一个解决方案,只需要写一个servlet的基类,其它的类只需要集成基类后,便可以想action那样进行注入了. 基类Servlet代码如下: public class BaseServlet extends HttpServlet { private static final long serialVersionUID = 1L;…