某旅行社网站建设论文,网站建设佰金手指科杰三,软文代发代理,加油站建设专业网站#x1f3bc;个人主页#xff1a;金灰 #x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持#xff01;❤️ #x1f34a;易编橙终身成长社群#… 个人主页金灰 作者简介:一名简单的大一学生;易编橙·终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持❤️ 易编橙·终身成长社群 : http://t.csdnimg.cn/iSLaP 期待您的加入~ 免责声明:本文仅做分享... 目录
JNDI基础
RMI
攻击
JNDI注入:
log4j
利用
条件 JNDI基础
JNDI基础Java Naming and Directory Interface --Java 命令和目录接口 ,api接口
让配置参数 和 代码 解耦的规范或者思想.
低耦合 高内聚-----------------Name:
命名
java对象 通过 命名 绑定到 容器环境.
java对象和一个特定的名称关联在一起.Directory:
将一个对象的所有属性信息保存在一个容器环境. RMI
RMI:
Remote Method Invocation --Java远程方法调用
实现java程序之间jvm的远程通信例子:
某个负责计算 1台计算机 需要很久 如果这台计算机支持 RMI调用那么它可以把任务分配和远程的多台虚拟机 进行同步计算提高计算效率.RMI 基本逻辑:
分为三部分 -- Server Client Registry
Server 提供远程的对象
Client 调用远程的对象
Registry 注册表 存放远程对象的位置 ip 端口 标识符 ... 攻击
客户端 通过 lookup方法找绑定的恶意类.
1 远程对象有恶意方法可以直接调用 2 远程对象有可利用的readObject 方法可以传输Object参数实现反序列化攻击 JNDI注入:
JNDI注入RMI实现攻击
(客户端注入一个协议地址服务端加载)
客户端 通过 lookup 方法 注入了rmi协议 访问了远程的rmi服务器
rmi服务器返回了引用对象 而引用对象包含了类的加载工厂
如果本地没有这个类 就去加载工厂去加载类的字节码
而加载工厂是本地的localhost80端口目录下有payload.class文件
客户端 再去访问localhost的80端口去下载payload.class的字节码 然后Class.forname加载了这个字节码
造成了payload.class这个类里面的静态代码被执行. log4j
在 2.0 且 2.4.1 范围内的版本存在JNDI注入漏洞.log4i RCE 的攻击角色
原理:
1 在客户端的日志中,插入了JNDI语句,造成了JNDI注入.
2 客户端向远程恶意rmi服务器请求远程对象,返回引用对象.
3 引用对象里面要执行的类,需要从类工厂中获取,而类工厂中,类定义在另一个恶意的vps中.
4 客户端的jvm向恶意的vps请求恶意类的字节码文件 payload.class
5 远程下载后, 使用Class.forname类似方法,载入到客户端的虚拟机中.
6 执行了恶意类的静态方法. 利用 1 需要一个恶意的RMI服务器 /... 2 需要一个http公网访问能够下载字节码 3 需要一个包含恶意代码的类文件的字节码 任意类 用static {} 包裹即可在虚拟机加载类字节码后 自动执行. 条件 1 受害者(客户端) 存在有漏洞的log4j版本. 2 受害者服务器可以出网.利用 dnslog.cn