Weblogic漏洞分析
CVE-2017-10271XMLDecoder反序列化 影响版本 OracleWebLogic Server10.3.6.0.0 OracleWebLogic Server12.1.3.0.0 OracleWebLogic Server12.2.1.1.0 OracleWebLogic Server12.2.1.2.0 涉及到的路径 /wls-wsat/CoordinatorPortType /wls-wsat/RegistrationPortTypeRPC /wls-wsat/ParticipantPortType /wls-wsat/RegistrationRequesterPortType /wls-wsat/CoordinatorPortType11 /wls-wsat/RegistrationPortTypeRPC11 /wls-wsat/ParticipantPortType11 ...
Log4j漏洞分析
环境搭建1234#拉取vulhub项目wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zip#解压unzip vulhub-master.zip CVE-2017-5645 服务端未对接收的序列化数据进行安全校验,攻击者可构造包含恶意对象的序列化流,进而导致反序列化漏洞。 简介Log4j 是取代原始打印语句的日志框架,通过分级(可设置日志重要性)、多目的地(控制台、文件、数据库)、可动态配置(日志格式、自动分割大文件等)的记录方式,让开发者高效定位问题,同时减少对程序性能的拖累。 影响版本 Log4j 2.x <= 2.8.1 组件SocketServer / TCPServer(默认监听端口...
Shiro漏洞分析
前言Apache Shiro是一个Java 安全框架,它执行身份验证、授权、加密和会话管理。 Shiro介绍Shiro 框架的有三个核心组件,分别为 Subject、SecurityManager 和 Realms 。 Subject:用户操作的代理层,代表当前与应用程序交互的实体(用户、第三方服务等) SecurityManager:Shiro 架构的核心,接收 Subject 的请求,调用内部组件(如 Authenticator、Authorizer),协调所有安全操作(认证、授权、会话管理等)。 Realms:连接 Shiro 与安全数据(数据库、LDAP 等)的桥梁,提供用户凭证和权限信息,验证用户身份 关系图如下:总体流程: Subject 接收用户请求(如登录),委托给 SecurityManager; SecurityManager 调用 Authenticator(认证)或 Authorizer(授权)组件 认证/授权组件通过 Realms...
Java反序列化漏洞-CC11链
背景该链是CC2和CC6的结合体,CC11使用了CC2动态加载字节码执行命令的方法,使用了CC6的前半部分,把它们不使用数组与字节码执行命令的优点给结合起来了。 CC11链分析 该链受影响的版本为CommonsCollections 3.1-3.2.1,关于环境的搭建,可以看我之前CC1中的教程。 分析该链之前,再重新介绍一下TelplatesIpl加载字节码执行命令。 链尾TelplatesIpl加载字节码 详情可以到CC3那篇看,这里只做简要介绍。 构造字节码的代码如下,把它编译为.Class后用后面提到到TemplatesImpl加载这个恶意的字节码就可以了。 12345678public class TemplatesImplTest extends AbstractTranslet { public void transform(DOM dom, SerializationHandler[] handlers) throws TransletException {} public void...
Java反序列化漏洞-CC7链
背景Java 8u76及以上版本修复了CC5中BadAttributeValueExpException入口点,导致利用链失效,CC7规避这些受到限制的类,找到了一个更底层的类。 CC7链分析链尾InvokerTransformer、LazyMap 链尾还是不变,直接把CC5的拿来 1234567891011Transformer[] transformers = new Transformer[]{ new ConstantTransformer(Runtime.class), new InvokerTransformer("getMethod", new Class[]{String.class, Class[].class},new Object[]{"getRuntime",null}), new InvokerTransformer("invoke",new...
Java反序列化漏洞-CC5链
背景 CC5链可以弥补JDK 8u71及以上版本LazyMapCC1AnnotationInvocationHandler类无法利用的情况,该链的链尾还是使用LazyMapCC1或者CC6的后半部分,而链首新引入了两个类。 CC5链分析链尾InvokerTransformer、LazyMap把CC1的流程图拿过来看一下 其中我们使用的链尾如下图: 把CC1或者CC6的链尾代码拿过来直接用。 1234567891011Transformer[] transformers = new Transformer[]{ new ConstantTransformer(Runtime.class), new InvokerTransformer("getMethod", new Class[]{String.class, Class[].class},new Object[]{"getRuntime",null}), new...
Java反序列化漏洞-CC2链
背景在Shiro反序列化等漏洞利用中,有一些自定义的ClassLoader,如ClassResolvingObjectInputStream,它会限制数组类型(如Transformer[])的动态加载,CC1、CC4等利用链就使用了Transformer数组,导致利用链无法使用,本篇的CC2在CC4的基础上避免了使用数组来构造利用链。 CC2分析 环境不变 链尾TemplateImplCC2只是在CC4的基础上删除了使用数组的方式改用直接使用Invokertransformer的方式调用TemplateImpl#newTransformer(),因此它的整体还是一样的,我直接把动态加载字节码的链尾复制过来 123456789101112131415161718public class CC2Test { public static void main(String[] args) throws IOException, NoSuchFieldException, IllegalAccessException,...
Java反序列化漏洞-CC4链
背景 在commons collections4.0版本之后,InvokerTransformer不再实现Serializable,导致CC1和CC3没办法再利用,本篇CC4利用链是采用CC3执行命令的方法-动态加载字节码,而头部也会采用一个新的类利用。 导入依赖 12345<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.0</version> </dependency> CC4链分析 CC4链子执行命令的方式和CC3相同,都是通过加载字节码的方式,因此该链的后半部分拿着CC3的poc用就行了。 这里代码就不做解读了,详情可以看我之前的动态加载解码、CC3部分...
Tomcat内存马-全
内存马-全
Tomcat内存马-01篇
内存马大致可以分为两种,第一种是利用Java Web的组件,如Tomcat下的动态添加Servlet、Filter、Listener的恶意组件,在Spring框架下就是Controller、Intercepter。第二种是修改字节码,如利用Java的Instrument机制,动态注入Agent。 本文分析Tomcat型内存马的其中两个,剩下的Tomcat型内存马下一篇文章写;学习内存马之前,还需要了解Java Web三大组件、tomcat、jsp的基础知识。 前置基础基础知识只写了一些简单介绍 三大组件 Java...