自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ho1aAs‘s Blog

记录平常学习的所见所闻所得

  • 博客(366)
  • 资源 (6)
  • 收藏
  • 关注

原创 『Java安全』Tomcat+IDEA动态调试war包_远程JVM调试war包

首先tomcat的catalina.bat添加参数为调试端口号然后运行开启添加一个Remote JVM Debug,上面的端口号和这里一致,这里配置的是监听端口号,不是web端口将war包放到tomcat,在idea原项目打上断点,监听,提示连接成功即可成功调试............

2022-06-09 15:00:50 1710

原创 『Docker』docker部署SpringBoot环境_简单编写docker-compose.yml与Dockerfile

文章目录springboot打包成jar编写Dockerfile编写docker-compose.yml运行springboot打包成jar新建springboot-web项目 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-sta

2022-05-16 14:42:30 346

原创 『Java安全』Tomcat内存马_动态注册Valve内存马_管道Pipeline内存马

文章目录前言Valve机制新建ValveValve的注册Valve调用分析Valve内存马原理完整代码参考引用完前言Valve机制Valve 是 Tomcat 中的用于对Container 组件(Engine/Host/Context/Wrapper)进行扩展一种机制。四大组件拥有各自的管道Pipeline,一个形象的理解就是Pipeline 就相当于拦截器链,而valve就相当于拦截器。借用其他文章的图来理解:新建Valve有valve接口valve的动作定义在invoke中、通过调

2022-04-12 12:48:02 3805

原创 『Java安全』Java Spring内存马_动态注册Interceptor拦截器内存马

文章目录前言Interceptor和Filter的区别实现HandlerInterceptor接口方法调用顺序编写Interceptor配置启用InterceptorInterceptor示例Interceptor调用分析Interceptor内存马原理Ⅰ. 获取RequestMappingHandlerMappingⅡ. 获取adaptedInterceptorsⅢ. 添加恶意拦截器参考引用完前言Interceptor和Filter的区别Interceptor和Filter过滤器不同:拦截器一般

2022-04-07 23:02:17 1276

原创 『Java安全』Java Spring内存马_动态注册Controller内存马

文章目录前言Controller注册分析register()Controller内存马原理Ⅰ. 获取RequestMappingHandlerMappingⅡ. 生成RequestMappingInfoⅢ. 写恶意ControllerⅣ. 反射获取恶意方法Ⅴ. 向RequestMappingHandlerMapping注册代码运行截图注意事项参考引用完前言SpringBoot版本2.4.5 <parent> <groupId>org.springframe

2022-04-03 22:14:53 5016

原创 『Java安全』SpEL注入

文章目录SpEL简介示例后端代码常用表达式SpEL注入fuzz探测注入点命令执行RCE绕过方式1. String类动态生成字符串命令2. 反射+字符串拼接3. js引擎rce4. 反射+SpEL集合绕过参考引用完SpEL简介SpEL使用#{ }作为定界符,其中的内容都会被解析,${ }常用于引用属性名称示例后端代码首先绑一个Controllerpackage com.example.javaspring;import org.springframework.expression.Expres

2022-04-02 20:34:56 3082

原创 『Java安全』EL表达式注入

文章目录前言EL表达式解析启用/禁用EL表达式注入绕过方式1. 反射2. js引擎rce参考引用完前言EL表达式全称Express LanguageEL表达式语法以${}包裹其他使用方法见参考文章EL表达式解析启用/禁用默认为启用,jsp会解析EL表达式,除非配置<%@ page isELIgnored ="true|false" %>,或者是全局pom.xml设置<jsp-config> <jsp-property-group>

2022-04-02 11:55:28 5063 1

原创 『Java安全』tabby代码审计工具Windows环境搭建

文章目录前言Windows环境搭建Neo4j环境tabby分析并保存数据Neo4j查询完前言wh1t3p1g/tabbytabby是wh1t3p1g师傅编写的针对Java语言的静态代码分析工具Windows环境搭建Neo4j环境见wh1t3p1g师傅的环境配置教程tabby/wiki/Neo4j环境配置tabby分析并保存数据RELEASE版本的jar包是wh1t3p1g师傅在mac环境编译的(目前最新v1.1.0-RELEASE),在windows使用可能会报错,需要重新编译或者

2022-03-27 14:11:43 4460 10

原创 『Java安全』Tomcat内存马_动态注册Servlet内存马

文章目录Servlet调用流程分析1. StandardContext.startInternal注册servlet2. StandardContextValue.invoke获取wrapper3. StandardWrapperValue.invoke处理doFilter4. doFilter调用HttpServlet.service提供服务Servlet内存马原理Ⅰ.获取contextⅡ.生成恶意servletⅢ. 生成wrapper并放入contextⅣ. 配置映射完整代码参考引用完Servlet调

2022-03-24 20:25:12 2637

原创 『Java安全』Tomcat内存马_动态注册Listener内存马

『Java安全』反序列化-文章目录前言Tomcat Servlet API Listener介绍ServletRequestListener介绍ServletRequestListener调用流程分析1. Request创建时2. Request销毁时Listener内存马原理Ⅰ.获取contextⅡ. 生成恶意Listener获取ResponseⅢ. add添加listener完整代码参考引用完前言Tomcat Servlet API Listener介绍Listener监听器用来监听对象创建、销

2022-03-24 16:21:25 1852

原创 『Java安全』Tomcat内存马_动态注册Filter内存马

文章目录前言Filter生命周期Filter类介绍Servlet启动流程Filter调用流程分析1. 从Standardcontext获取filterMaps2. 遍历filterMap匹配url并调用了addFilter方法添加到filterChain3. 依次调用doFilterFilter内存马原理Ⅰ. 获取contextⅡ. 生成恶意Filter用FilterDef封装添加到FilterDefsⅢ. 用filterConfig封装filterDefs添加到filterConfigsⅣ. 生成filt

2022-03-23 16:05:11 1624

原创 『Java』注解(Annotation)学习笔记

文章目录前言内置注解元注解@Retention@Documented@Target@Inherited修饰代码的注解@Override@Deprecated@SuppressWarningsJava7+新注解自定义注解注解使用场景参考引用完前言Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。注解就像一个标签,类、方法、变量、参数和包等都可以被标注,还支持标记注解的注解。被标注的对象在特定时候会被处理。内置注解Java内置了7个注解,3个在java.l

2022-03-16 16:32:49 932

原创 『Java安全』反序列化-c3p0触发类加载POP链分析_ysoserial C3P0 PoC分析_不出网利用c3p0实现类加载RCE

文章目录前言代码复现工具类PoC代码审计 | 原理分析1. ReferenceSerialized.getObject()触发类加载2. ReferenceIndirector.indirectForm()创建ReferenceSerialized实例3. PoolBackedDataSourceBase反序列化触发IndirectlySerialized.getObject()4. PoolBackedDataSourceBase.writeObject()序列化IndirectlySerialized对

2022-03-14 21:15:22 2032

原创 『Java安全』反序列化-CB反序列化漏洞POP链分析_ysoserial CommonsBeanutils1 PoC分析

文章目录前言代码复现工具类PoC代码审计 | 原理分析1. TemplatseImpl.getOutputProperties()触发newTransformer()2. BeanComparator.compare()触发PropertyUtils.getProperty()3. PriorityQueue反序列化调用comparator.compare()为什么BeanComparator要传入lowestSetBit?为什么要添加BigInteger?POP链完前言CB1类似CC2,利用优先级队列

2022-03-14 14:58:00 3077

原创 『Java安全』反序列化-CC7反序列化漏洞POP链分析_ysoserial CommonsCollections7 PoC分析

文章目录前言代码复现工具类PoC代码审计 | 原理分析1. LazyMap.get()调用this.factory.transform()2. AbstractMap.equals()调用m.get()3. AbstractMapDecorator.equals()调用this.map.equals4. HashTable反序列化触发e.key.equals(key)为什么最后要lazyMap2.remove("yy")?为什么多了一个键yy?为什么yy和zZ的hash相同?POP链完前言CC7是另一种

2022-03-13 16:42:37 2922

原创 『Java安全』反序列化-CC6反序列化漏洞POP链分析_ysoserial CommonsCollections6 PoC分析

文章目录前言代码复现工具类PoC代码审计 | 原理分析TiedMapEntry.hashCode()调用toString()方法POP链完前言CC6触发TiedMapEntry.hashcode(),非常简单因此只做记录代码复现工具类反序列化:UnserializePacked.Unserialize.javapackage UnserializePacked;import java.io.*;public class Unserialize { public static v

2022-03-13 00:16:22 601

原创 『Java安全』反序列化-CC5反序列化漏洞POP链分析_ysoserial CommonsCollections5 PoC分析

文章目录前言代码复现工具类PoC代码审计 | 原理分析1. LazyMap.get()调用this.factory.transform()2. TiedMapEntry.toString()调用this.map.get()3. BadAttributeValueExpException反序列化触发this.val.toString()POP链完前言由于jdk8修复了AnnotationInvokerHandler,cc1用不了了cc5在cc1点基础上做了小的改进,还是使用Commons-Collect

2022-03-12 23:43:01 1026

原创 『Java安全』反序列化-CC4反序列化漏洞POP链分析_ysoserial CommonsCollections4 PoC分析

文章目录前言代码复现工具类PoC代码审计 | 原理分析1. TrAXFilter构造器传入TemplatesImpl会调用newTransformer()2. InstantiateTransformer.transform()调用指定的类构造器3. TransformingComparator.compare()调用this.transformer.transform()4. PriorityQueue反序列化调用comparator.compare()POP链完前言同样的,CC4是CC2的变种,改变

2022-03-12 20:53:15 1013

原创 『Java安全』反序列化-CC3反序列化漏洞POP链分析_ysoserial CommonsCollections3 PoC分析

文章目录前言代码复现工具类PoC代码审计 | 原理分析1. TrAXFilter构造器传入TemplatesImpl会调用newTransformer()2. InstantiateTransformer.transform()调用指定对象的指定类构造器3. LazyMap.get()调用this.factory.transform()构造ChainedTransformer生成lazyMap4. Proxy动态代理+AnnotationInvokerHandler调用LazyMap.get()5. Ann

2022-03-11 15:44:48 820

原创 『Java安全』反序列化-CC2反序列化漏洞POP链分析_ysoserial CommonsCollections2 PoC分析

文章目录前言代码复现工具类PoC代码审计 | 原理分析1. InvokerTransformer.transform()反射调用TemplatesImpl.newTransformer()2. TransformingComparator.compare()调用this.transformer.transform()3. PriorityQueue反序列化调用comparator.compare()为什么PriorityQueue还要再添加一个元素?为什么向PriorityQueue添加1、InvokerT

2022-03-10 21:41:02 771

原创 『Java安全』反序列化-FastJson 1.2.25-1.2.47历史版本修复绕过分析_marshasec复现fastjson jndi注入

文章目录前言fastjson 1.2.25-1.2.41旧版本补丁更新分析解决完前言在1.2.24爆出后官方进行了多次修复,然而修复后仍然不断有漏洞爆出fastjson 1.2.25-1.2.41旧版本补丁更新分析运行一下1.2.24的payload,ParserConfig.checkAutoType方法提示autoType不支持在DefaultJSONParser.parseObject新调用了checkAutoType解决完欢迎关注我的CSDN博客 :@Ho1aAs版权属于:

2022-03-09 22:24:39 1714

原创 『踩坑记录』IDEA导航栏工具栏添加“后退”功能按钮

文章目录问题描述导航栏工具栏添加“后退”功能按钮完问题描述最近审计代码总是需要回看前几步的代码,需要后退到上一个光标处。IDEA有提供后退功能但不想记快捷键、并且图标没有在默认布局显示,需要手动调出来导航栏工具栏添加“后退”功能按钮设置-菜单和工具栏-导航栏工具栏,右侧搜索后退、前进、添加分隔符,这里我添加到了CodeWithMe后面效果图:在没有改变默认布局的情况下添加了按钮方便使用完欢迎关注我的CSDN博客 :@Ho1aAs版权属于:Ho1aAs本文链接:https://blo

2022-03-08 23:01:52 1074

原创 『Java安全』反序列化-Rome 1.0反序列化POP链分析_ysoserial Rome payload分析

文章目录前言版本代码审计 | 原理分析1. ToStringBean.toString()触发TemplatesImpl.getOutputProperties()手动调用ToStringBean.toString()示例代码2. EqualsBean.hashCode()触发toString()手动调用EqualsBean.hashCode()示例代码3. ObjectBean触发toString()或hashCode()手动调用ObjectBean.toString()和hashCode()示例代码4.

2022-03-08 15:52:54 1937 2

原创 『Java安全』反序列化-FastJson 1.2.24反序列化漏洞POP链分析_TemplatesImpl和JdbcRowSetImpl JNDI注入分析_marshalsec测试payload利用

文章目录前言版本FastJson基础一、反序列化TemplatesImpl类payload代码审计 | 原理分析JSON.parse()处理byte[]JSON.parse()触发TemplatesImpl.getOutputProperties()代码复现参考完前言版本FastJson <= 1.2.24FastJson基础『Java』Fastjson基础一、反序列化TemplatesImpl类payload{ "@type":"com.sun.org.apache.xalan

2022-03-06 15:36:07 1143

原创 『Java安全』Fastjson基础

文章目录前言fastjson简介下载一、JSON.toJSONString()JavaBean的序列化List\前言fastjson简介阿里开发的用于JavaBean序列化和反序列化的库主要方法: toJSONString() 和 parseObject() 。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。下载maven仓库下载mvnrepository.com/artifact/com.alibaba

2022-03-03 15:14:29 645 2

原创 『Java安全』反序列化-Jdk7u21 POP链分析_ysoserial Jdk7u21 payload 分析_TemplateImpl触发反序列化漏洞

文章目录前言原理分析TemplatseImpl.getOutputProperties()触发类加载动态代理AnnotationInvocationHandler.equal()调用getOutputProperties()ysoserial payload 分析代码审计完前言环境为Jdk<=7u21 +自带Xalan原作者文章:Jdk7u21.javaJava 7u21 Security Advisory原理分析TemplatseImpl.getOutputProperties()

2022-03-02 18:50:21 1253

原创 『Java安全』初试Javassist编辑class字节码文件

文章目录Javaassist简介关键类一、导入类和创建新类二、获取类的信息三、获取方法的内部细节四、修改类方法已有变量传参问题完Javaassist简介Javaassist相比asm简化了操作,方便完成简单的修改操作pom.xml<!-- https://mvnrepository.com/artifact/org.javassist/javassist --><dependency> <groupId>org.javassist</groupId

2022-03-01 18:24:42 1123

原创 『Java安全』初试字节码框架ASM_使用asm修改class文件

文章目录ASM介绍ClassReader 与 ClassVisitor读取类信息、变量、方法的例子原理功能总结ClassWriter修改类信息、变量、方法的例子完ASM介绍asm4-guide.pdfASM是操纵分析字节码的一个框架,ASM库的目标是生成、转换和分析编译的的Java类,以字节数组的形式表示(因为它们存储在磁盘上并加载到在Java虚拟机中加载)。为此目的,ASM提供了一些工具来读、写和转换这些字节数组。为此,ASM提供了一些工具,通过使用比字节更高层次的概念来读取、写入和转换这

2022-02-25 20:06:27 3169

原创 『Java安全』class文件字节码使用描述符(Descriptors)描述变量类型和方法

文章目录描述符Field Descriptors解决完描述符常量池内一些特殊写法的字符串在成员变量数组和方法数组的结构中出现Field Descriptors对成员变量的描述符有以下几种:描述符含义BbyteCchar(UTF-16)DdoubleFfloatIintJlongL ClassName;reference类型的实例SshortZboolean[reference类型的一维数组解决

2022-02-24 20:17:26 1245

原创 『Java安全』class文件格式分析详解

文章目录官方文档说明class文件格式分析magic(魔数)minor_version(次版本号)与major_version(主版本号)constant_pool_count(常量池计数器)constant_pool[constant_pool_count-1](常量池)access_flags(类的访问标志)this_class(当前类名索引值)与super_class(父类名索引值)interfaces_count(接口计数)与interfaces[interfaces_count](接口数组)fie

2022-02-23 17:11:08 989

原创 『Java安全』绕过JDK高版本限制进行JNDI注入学习研究

文章目录绕过原理使用本地类作为恶意工厂攻击RMI探究BeanFactory类pom.xmlPoCjavax.el.ELProcessorGroovy.lang.GroovyShell引用参考完绕过原理对于JDK版本11.0.1、8u191、7u201、6u211及以上,RMI和LDAP的trustURLCodebase已经被限制,但是还存在几种方法绕过使用受害者本地的类作为恶意Reference Factory攻击RMI利用LDAP返回序列化数据触发Gadget使用本地类作为恶意工厂攻击RMI

2022-02-22 21:44:30 2816

原创 『Java安全』基础JNDI注入原理和手段探究(低版本)

文章目录客户端加载恶意RMI Remote类原理实现限制参考完客户端加载恶意RMI Remote类原理codebase是一个URL、引导JVM查找类的地址Client在lookup加载过程中会先在本地寻找Stub类,如果没有找到就向codebase远程加载Stub类。若设置codebase为http://foo.com,加载com.test.Test类时便会下载http://foo.com/com/test/Test.class那么只要控制Server端的codebase(修改Client端的c

2022-01-17 17:08:34 4007

原创 『Java安全』使用JNDI访问文件系统(列出目录、新建文件夹、绑定文件)、访问RMI服务、DNS解析

文章目录JNDI简介JNDI操作步骤参考引用完JNDI简介Java命名和目录接口(Java Naming and Directory Interface,JNDI)是一组在Java应用中访问命名和目录服务的API。JNDI中的命名(Naming),就是将Java对象以某个名称的形式绑定(binding)到一个容器环境(Context)中,以后调用容器环境(Context)的查找(lookup)方法又可以查找出某个名称所绑定的Java对象。JNDI操作步骤使用JNDI来访问命名服务或者目录服务,操作步

2022-01-10 15:07:29 1559

原创 『Java安全』SQL安全-ORDER BY注入

# 原理SQL中:ORDER BY执行排序后面需要指定列名,该列名是不能被引号包含的否则就会被认为是一个字符串。而PrepareStatment使用占位符传递参数时,会用单引号包裹参数,因此不能使用预编译所以使用ORDER BY要搭配字符串拼接上列名

2022-01-03 08:15:00 1860

原创 『Java』设计模式之单例模式(Singleton Pattern)单例模式的八种写法

# 单例模式简介单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式使用getInstance() 方法获取唯一的实例,但是调用时中**需要使用同步锁 synchronized (Singleton.class) 防止多线程同时进入造成 instance 被多次实例化**。

2021-12-19 21:37:13 562 1

原创 『Java』设计模式(Design pattern)之工厂模式(Factory Pattern)

# 前言设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。工厂模式属于创建型模式。工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为**简单工厂模式和工厂方法模式**,根据工厂的抽象程度可分为**工厂方法模式和抽象工厂模式**。**工厂模式的本质就是对获取对象过程的抽象。**工厂模式中,创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

2021-12-19 16:58:45 766

原创 『Java安全』反序列化-利用RMI重绑定rebind与动态代理机制构造恶意Remote对象触发CC1

# 原理RMI在传输过程中:会将对象进行序列化与反序列化,因此可能会带来安全隐患,这个被传输的对象是Remote类。那么只要构建恶意Remote对象即可在远程服务器触发反序列化漏洞。**在Client端获取远程registery对象后,可以利用bind/rebind绑定一个包含反序列化漏洞的Remote对象(Stub)**,Server端接收到bind/rebind后就会反序列化触发漏洞。# 如何创建恶意的Remote对象?CC1触发中:由于AnnotationInvocationHandler

2021-12-18 19:52:42 776

原创 『网安产品开发实践』Linux编程-pam用户认证机制编写规则实验

# 实验要求在教师讲解的基础上,阅读教师给出的参考文献编写一个程序,要求为: 1. 使用Linux下的用户名及其密码实现对该程序的认证;(提示:只需完成应用程序的编写与认证策略的设定) 2. 用户登录数不超过2个,用户正常登录后,可允许用户修改密码 3. 该用户认证完成后,重新设置改用户的密码,密码的复杂度为至少4个数字,2个特殊符号

2021-12-09 13:28:17 1032 2

原创 『Java安全』RMI(Java Remote Method Invocation)远程方法调用_Remote_Registery_Naming

Java RMI(Java Remote Method Invocation)用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。RMI使用Java远程消息交换协议JRMP(Java Remote Messaging Protocol)进行通信。**在传输过程中:会将对象进行序列化与反序列化,因此可能会带来安全隐患**RMI需要编写**Server端和Client端**,同时两者必须共有一个**接口类**,在Server端还要有此接口的**实现类**,...

2021-12-05 17:25:03 978

原创 『Java安全』动态代理的简单实现_Proxy与InvocationHandler

# 动态代理动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而不用修改每个代理类中的方法。 创建动态代理类会使用到`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口。通过这个类和这个接口可以生成JDK动态代理类和动态代理对象。...

2021-12-01 10:31:23 657

sqlmap快捷方式.bat

sqlmap快捷方式.bat

2021-05-07

addShortcut.reg

添加右键新建文件

2021-03-30

Mysql相关服务一键启动/关闭.bat

Mysql相关服务一键启动/关闭的批处理文件;方便一键开启和关闭有关服务;简单的一键开启和关闭脚本。

2021-01-27

Jetbrain配色Monokai.icls

JetBrains系列软件的通用配色,好看的JetBrains系列配色,五彩缤纷的JetBrains系列软件的通用配色

2020-07-15

RightClickCMD.reg

右键添加CMD,注册表文件,方便使用,方便转到指定的路径,CMD快捷方式,CMD添加到右键菜单,简单添加。

2020-07-13

VMware相关服务一键启动/关闭.bat

VMware相关服务一键启动/关闭的批处理文件;方便一键开启和关闭有关服务;简单的一键开启和关闭脚本。

2020-07-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除