| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> ysoserial之JRMP源码分析(payloads.JRMPClient/exploit.JRMPListener) -> 正文阅读 |
|
[Java知识库]ysoserial之JRMP源码分析(payloads.JRMPClient/exploit.JRMPListener) |
前言本来是想复现weblogicCVE-2017-3248漏洞的,这个漏洞使用了ysoserial的jrmp模块,开启rmi监听进行通信的,达到执行任意反序列化 payload。下文有些概念比较晦涩难懂,建议查阅其他资料配合使用。 JRMP协议是什么JRMP全称为Java Remote Method Protocol,也就是Java远程方法协议。 分布式垃圾收集(DGC)在Java虚拟机中,对于一个本地对象,只要不被本地Java虚拟机中的任何变量引用,它就可以被垃圾回收器回收了。 而对于一个远程对象,不仅会被本地Java虚拟机中的变量引用还会被远程引用。如将远程对象注册到Rregistry时,Registry注册表就会持有它的远程引用。 RMI框架采用分布式垃圾收集机制(DGC,Distributed Garbage Collection)来管理远程对象的生命周期。DGC的主要规则是,只有当一个远程对象不受任何本地引用和远程引用,这个远程对象才会结束生命周期。 当客户端获得了一个服务器端的远程对象存根时,就会向服务器发送一条租约通知,告诉服务器自己持有这个远程对象的引用了。此租约有一个租约期限,租约期限可通过系统属性java.rmi.dgc.leaseValue来设置,以毫秒为单位,其默认值为600 000毫秒。如果租约到期后服务器端没有继续收到客户端新的租约通知,服务器端就会认为这个客户已经不再持有远程对象的引用。 因此可以通过与DGC通信的方式发送恶意payload让服务端进行反序列化,从而执行任意命令。 ysoserial exploit/JRMPListener下面我们分析ysoserial 的JRMPListener,在idea中导入ysoserial项目 获取第二个参数和第三个参数,我们跟进一下: 关键代码是在JRMPListener.run.doMessage.doCall,若是接收到请求,先判断请求类型,若为DGC则会将payload返回出去。 payloads/JRMPClientJRMPListener就是做监听作用,JRMPClient,顾名思义就是客户端去请求服务端,idea的启动参数如下: 我们在看看反序列化这个proxy对象,会怎么处理。代码来到run()函数的38行。 RemoteObjectInvocationHandler的readObject方法是调用其父类RemoteObject的readObject方法 简单总结就是,当客户机创建(序列化)远程引用时,DGC调用 dirty()。当客户机完成远程引用后,它会调用对应的 clean() 方法。 这里面大致的流程是使用TCPEndpoint和DgcID创建了LiveRef对象,之后生成了DGCImpl_Stub代理对象,最后开启了与JRMPListener的Socket通信。其实不需要这么了解底层原理,知道大致用法和大致作用即可
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:55:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |