![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JavaWeb安全
文章平均质量分 90
JavaWeb安全学习记录
Arnoldqqq
这个作者很懒,什么都没留下…
展开
-
Javaweb安全——Dubbo 反序列化(一)
Apache Dubbo 是一款 RPC 服务开发框架。智能容错和负载均衡,以及服务自动注册和发现。原创 2023-02-13 23:22:28 · 1349 阅读 · 1 评论 -
Javaweb安全——Hessian 反序列化
Hessian类似于RMI也是一种RPC(Remote Produce Call)的实现。基于HTTP协议,使用二进制消息进行客户端和服务器端交互。Hessian 自行定义了一套自己的储存和还原数据的机制。对 8 种基础数据类型、3 种递归类型、ref 引用以及 Hessian 2.0 中的内部引用映射进行了相关定义。这样的设计使得 Hassian 可以进行跨语言跨平台的调用。原创 2023-02-03 23:12:07 · 1761 阅读 · 0 评论 -
Javaweb安全——反序列化漏洞-Rome
核心是 ToStringBean#toString()会调用其封装类的所有无参 getter方法原创 2023-01-30 22:27:33 · 341 阅读 · 0 评论 -
Javaweb安全——Weblogic反序列化漏洞(一)
从原生反序列化过程开始谈起。原创 2022-12-11 22:25:41 · 2867 阅读 · 0 评论 -
Javaweb安全——反序列化漏洞-CC&CB链思路整理
如上图所示基本上起点终点就是那几个点然后相互拼接:《Shiro RememberMe 漏洞检测的探索之路》中Koalr师傅已经对CommonsCollections 系列 gadget进行了提纯变成以下四条对命令执行部分的调用分别为InvokerTransformer调用TemplatesImpl对 commons-Collections4 的适配则直接用替换。原创 2022-10-28 22:13:55 · 2292 阅读 · 0 评论 -
Javaweb安全——反序列化漏洞-C3P0链
C3P0是一个开源的JDBC连接池,它实现了数据源与JNDI绑定,支持JDBC3规范和实现了JDBC2的标准扩展说明的Connection和Statement池的DataSources对象。即将用于连接数据库的连接整合在一起形成一个随取随用的数据库连接池(Connection pool)。..............自下向上的调用,从lookup看着像一个jndi注入,调用链比较短,直接静态审计源码试试。还原属性赋值跟到的内部类的方法。原创 2022-10-25 00:21:10 · 2124 阅读 · 0 评论 -
Javaweb安全——反序列化漏洞-原生利用链JDK8u20
回顾一下JDK7u21那个链子,主体部分是通过方法去调用。equalsImpl会将this.type 类中的所有方法遍历并执行,通过设置Templates类,则势必会调用到其中的 getOutputProperties()方法,进而触发任意代码执行。从7u25修复了这个利用链,AnnotationInvocationHandler 的反序列化逻辑发生了改变,将会判断this.type字段值是否是 Annotation 注解类型,不是则直接抛出异常。原创 2022-10-24 00:07:48 · 1492 阅读 · 0 评论 -
Javaweb安全——Fastjson反序列化利用
JSON.parseObject 的底层调用的还是 JSON.parse 方法,只是在 JSON.parse 的基础上做了一个封装。在JSON序列化时开启 SerializerFeature.WriteClassName 选项,序列化出来的结果会在开头加一个 @type 字段,值为进行序列化的类名。反序列化时带有@type 字段的序列化数据会得到对应类型的实例化对象。漏洞的还是Fastjson的功能,此功能可以反序列化的时候人为指定类,然后在利用指定的反序列化器过程中,如果满足条件则会去反射调用方法,以串联原创 2022-10-13 00:51:43 · 4347 阅读 · 0 评论 -
Javaweb安全——Shiro漏洞利用
炒个冷饭,主要还是对反序列化漏洞利用方式的学习,目前只测试了tomcat环境,后面再将weblogic的部分补一补。原创 2022-09-25 20:17:46 · 967 阅读 · 0 评论 -
Javaweb安全——JSP Webshell
public static class x extends ClassLoader //继承ClassLoader {#恶意类字节码 BASE64Decoder code = new sun . misc . BASE64Decoder();//将base64解码成byte数组,并传入自定义类的get函数 System . out . println(result . newInstance());}.原创 2022-08-22 22:00:35 · 6004 阅读 · 0 评论 -
Javaweb安全——Tomcat 内存马基础
无文件落地的 webshell 技术,即,通常配合反序列化或者spel表达式注入进行类加载写入。本文环境 Tomcat 9.0.59 作为中间件,且并没有配置spring框架,代码具体实现与中间件有关。原创 2022-08-17 17:43:40 · 1356 阅读 · 0 评论 -
Javaweb安全——表达式注入(EL+SpEL)
Java中表达式根据框架分为好多种,这里以JSP自带的表达式语言EL和使用较多的Spring框架所支持的SpEL为例。其基本语法为${变量表达式}。原创 2022-07-22 23:27:54 · 2876 阅读 · 0 评论 -
Javaweb安全——JNDI注入
测试环境为JDK8u111以及8u211JavaNamingandDirectoryInterface(JNDI)是一个和JDBC、LDAP、RMI、DNS。名称与对象相关联的方法,例如地址、标识符或计算机程序通常使用的对象。目录服务是命名服务的扩展,除了提供名称和对象的关联,。在一个实际的名称服务中,有些对象可能无法直接存储在系统内,而是以引用的形式进行存储。引用包含了如何访问实际对象的信息。对象工厂是对象的生产者。它接受有关如何创建对象的一些信息,例如引用,然后返回该对象的实例。的错误。...原创 2022-07-21 01:28:12 · 1401 阅读 · 0 评论 -
Javaweb安全——反序列化漏洞-原生利用链JDK7u21
先来看看ysoserial当中payload的调用链:从TemplatesImpl.getOutputProperties()开始是很熟悉的,而调用它用的类也在之前CC1利用链出现过:当时只用到了这个类会触发 Map#put 、 Map#get 的特点,这条利用链则是用到了其方法去调用有个很明显的反射调用 ,而 memberMethod 由getMemberMethods()方法获得,最终是由this.type.getDeclaredMethods()得到的type属性设置的类的所有方法。equals原创 2022-07-08 16:44:38 · 546 阅读 · 0 评论 -
Javaweb安全——反序列化漏洞-Shiro(CommonsBeanutils利用链)
先来看一段这个漏洞描述:这里使用的shiro应用demo为https://github.com/phith0n/JavaThings/tree/master/shirodemo测试的jdk版本为8u111 以及 8u211 都试过可以触发。的特征:处理cookie的流程:生成payload的流程:使用shiro内置的类 org.apache.shiro.crypto.AesCipherService进行AES加密,先要找到硬编码的key,然后写一个exp生成payload。key的位置位于(shiro...原创 2022-07-08 03:03:36 · 1617 阅读 · 0 评论 -
Javaweb安全——反序列化漏洞-commons-collections4利用链(CC2和CC4)
在2015年底commons-collections反序列化利用链被提出时,Apache Commons Collections有以下两个分支版本:对旧CC链的影响主要体现在 这个方法被修改了在commons-collections4中对应的方法为。3和4的groupId和artifactId都不一样所以可以在同一项目中共存方便调试。还是做的一个LazyMap构造函数包装,基本就是改了个名字,那将之前的链子decorate换成lazyMap就行,导入的包名变。以CC6为例:CC1、CC3、CC6修改之后原创 2022-07-06 01:52:51 · 2245 阅读 · 0 评论 -
Javaweb安全——反序列化漏洞-CC3链
CommonsCollections3是为了绕过一些规则对InvokerTransformer的限制而产生的,因为在CommonsCollections1中我们为了动态调用方法需要使InvokerTransformer这个类完成回调,被加入黑名单的话就切断了CommonsCollections1的利用链。上一篇文章的TemplatesImpl动态加载字节码刚好就有用武之地了,将原来的回调链替换掉变成直接加载字节码。先来看一个demo:由CommonsCollections1 AnnotationInvoc原创 2022-07-06 01:51:14 · 934 阅读 · 0 评论 -
Javaweb安全——Java 动态加载字节码
主要是为了学习这个在各类漏洞利用链中高频出现的类。顺便复习下ClassLoader(加载器)相关知识。即编译后得到的class文件内容,本质上就是JVM执行使用的一类指令。广义上包括所有能够恢复成一个类并在JVM虚拟机里加载的字节序列继承了,提供了加载远程资源的能力, 实际上是我们平时默认使用的 的父类。Java会根据配置项 和 中列举到的基础路径(这些路径是经过处理后的 java.net.URL 类)来寻找.class文件来加载,而这个基础路径有分为三种情况:攻击者通常使用的是第三种情况,即在vps上丢原创 2022-06-25 03:48:27 · 669 阅读 · 0 评论 -
Javaweb安全——反序列化漏洞-CC6链
本文环境为 JDK8u11现在开始学习,Java 8u71之后,即高版本Java利用链,从CommonCollections6开始在 8u71之后AnnotationInvocationHandler的逻辑变成新建了一个LinkedHashMap对象,并将原来的键值添加进去,传进去的恶意Map不再执行set或put操作。而是通过invoke方法触发其get方法开始的,所以需要一个新的触发get方法的点,先看ysoserial当中CC6的通过去触发get方法直接搜get,找到方法查找其调用,跟踪到方法要原创 2022-06-01 10:49:36 · 774 阅读 · 0 评论 -
Javaweb安全——反序列化漏洞- CC1链
Common-Collections利用链1第一次接触反序列化漏洞时写的初识Java反序列化漏洞这篇文章当中已经分析过一遍Common-Collections的两条链子(分别用的TransformedMap和LazyMap构造恶意对象反射链,AnnotationInvocationHandler(CC1)和BadAttributeValueExpException(CC5)调用transform())。这次从Common-Collections1开始再捋一遍,顺便自己写一遍exp加深印象。本文环境为jd原创 2022-05-24 02:24:23 · 1174 阅读 · 0 评论 -
Javaweb安全——反序列化漏洞-URLDNS链
反序列化- URLDNS链之前学过一遍Java反序列化漏洞,不过那次是从cc链入手的,当时也看了好久,各种调试才搞明白。这次从调用简单的URLDNS链开始从新捋一遍。本文SDK为1.8 8u211URLDNSysoserial中一个利用链,其触发的结果是一次DNS请求。可用于确认是否存在反序列化漏洞,因为整条链均用Java内置的类构造,对第三方库没有依赖。先来看看ysoserial当中的实现代码public class URLDNS implements ObjectPayload<Obj原创 2022-05-21 23:28:58 · 487 阅读 · 0 评论 -
Javaweb安全——RMI反序列化
RMIRMI(Remote Method Invocation)即Java远程方法调用,RMI用于构建分布式应用程序,类似于RPC(Remote Procedure Call Protocol)远程过程调用协议,RMI实现了Java程序之间跨JVM的远程通信,使得一个JMV上的对象可以调用另一个JMV上的方法(方法在远程JVM上执行,只是返回运行结果)。这两个JVM可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中。RMI架构:RMI分为三个主体部分:Client,Server原创 2022-04-13 01:01:05 · 1237 阅读 · 0 评论 -
Javaweb安全——Java动态代理
Java 动态代理Java的java.lang.reflect包下提供了一个Proxy类和InvocationHandler接口,可以生成JDK动态代理类或对象来完成程序无侵入式扩展(即不通过继承接口编写实现类来完成功能拓展)。Java动态代理主要使用场景:统计方法执行所耗时间。在方法执行前后添加日志。检测方法的参数或返回值。方法访问权限控制。方法Mock测试。动态代理Java的代理感觉是,给原来的操作前后加上了增强代码,像是类的包装。静态代理通过编写一个代理类实现,如下面这个例子,原创 2022-04-05 02:19:03 · 4162 阅读 · 0 评论 -
Javaweb安全——Java反射
Java反射机制Java反射(Reflection)是Java非常重要的动态特性,通过使用反射我们不仅可以获取到任何类的成员方法(Methods)、成员变量(Fields)、构造方法(Constructors)等信息,还可以动态创建Java类实例、调用任意的类方法、修改任意的类成员变量值等。Java反射机制是Java语言的动态性的重要体现,也是Java的各种框架底层实现的灵魂。获取Class对象Java反射操作的是java.lang.Class对象,所以我们需要先想办法获取到Class对象,通常我们有原创 2022-04-01 12:15:29 · 2944 阅读 · 0 评论 -
Javaweb安全——Java类加载机制
前言参照https://javasec.org/以及p神的Java安全漫谈的路线进行学习,类似读书笔记那种吧。之前都是ctf遇到Java的题才学一点,像是反序列化这种,没系统化的学过Java Web安全,这次从头来好好学一遍。Java平台版本Java平台共分为三个主要版本Java SE(Java Platform, Standard Edition-Java平台标准版)、Java EE(Java Platform Enterprise Edition-Java平台企业版)、和Java ME(Java原创 2022-04-01 12:12:06 · 3181 阅读 · 0 评论 -
MySQL JDBC 客户端(connector 8.x)反序列化漏洞学习
MySQL JDBC 反序列化漏洞最早提出应该是BlackHat Europe 2019会议中的一个议题,下图是机翻的截图。JDBC是Java 的 API,它定义了客戶端如何访问数据库。JDBC是接口,而JDBC Driver才是接口的实现。下图是菜鸟教程上的一个实例原理分析首先是连接的url中第一个可被利用的参数 autoDeserialize,也是该漏洞的反序列化点,位于com.mysql.cj.jdbc.result.ResultSetImpl.getObject()的objIn.rea原创 2022-03-25 00:54:01 · 1540 阅读 · 0 评论 -
[RWCTF2022]DesperateCat(tomcat相关利用姿势)
关键词:el表达式、ASCII ZIP Jar、tomcat reload 、jsp编译过程中StringInterpreter执行、META-INF/resources/下文件加载进webResource解压war包得到源码,一个上传功能,设置了编码为utf-8写入的文件后缀可控、没有检查;但文件名不可控,会被替换为随机字符串;可指定文件的写入目录,且写入文件时如果文件所在的目录不存在,会递归进行父目录的创建,可进行目录穿越;写入的文件内容可控,且以字符串编码的形式写入(而非直接传递的字节流),但前后原创 2022-02-10 17:42:10 · 1169 阅读 · 0 评论 -
IDEA2021.1 Spring MVC 简易配置
先创建一个空白新项目,再右击项目处添加框架支持src处新建一个package,WEB-INF下新建一个jsp文件夹存放jsp文件文件目录如下新建一个class TestController 内容如下package test.springmvc.helloworld;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.Re..原创 2022-01-23 17:12:37 · 929 阅读 · 0 评论 -
初识Java反序列化漏洞
Java反序列化漏洞漏洞成因是自定义实现Serializable的方法中的readObject()方法内代码逻辑存在缺陷。Java反序列化中readObject()方法的作用相当于PHP反序列化中的魔术函数,使反序列化过程部分可控,通过去寻找可利用的类并构造反射链来进行任意代码执行。Java反序列化序列化的基本概念• 序列化:将对象转换为字节序列• 反序列化:由字节序列恢复为对象• 意义:序列化机制允许将实现序列化的Java对象转换位字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达原创 2021-12-18 21:06:24 · 3116 阅读 · 0 评论