安全矩阵

 找回密码
 立即注册
搜索
查看: 6134|回复: 0

Java RMI服务远程命令执行利用

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2020-8-5 09:29:29 | 显示全部楼层 |阅读模式
原文链接:Java RMI服务远程命令执行利用

0x00 介绍

Java RMI服务是远程方法调用(Remote Method Invocation)。它是一种机制,能够让在某个java虚拟机上的对象调用另一个Java虚拟机的对象的方法,它允许不在同一个地址空间中的Java程序互相通信
在Java Web中,很多地方都会用到RMI来相互调用。比如很多大型组织都会在后台部署一些Java应用,用于对外网站发布更新的静态页面,而这种发布命令的下达使用的就是这种RMI形式。
值得注意的是,RMI传输过程必然会使用序列化和反序列化,如果RMI服务端端口对外开发,并且服务端使用了像Apache Commons Collections这种库,那么会导致远程命令执行。
首先来看利用。


搜索关键字
fofa:  protocol=="java-rmi"


java-rmi远程命令执行漏洞(CVE-2011-3556)
漏洞详情

Oracle Java SE是美国甲骨文(Oracle)公司的一套标准版Java平台,用于开发和部署桌面、服务器以及嵌入设备和实时环境中的Java应用程序。Oracle Java SE JDK and JRE 7版本,6 Update 27及其之前版本,5.0 Update 31及其之前版本,1.4.2_33及其之前版本,JRockit R28.1.4及其之前版本中的Java Runtime Environment组件中存在未明漏洞。远程攻击者可破坏关于RMI的机密性,完整性和可用性。


受影响版本

RE 7版本,6 Update 27及其之前版本,5.0 Update 31及其之前版本,1.4.2_33及其之前版本,JRockit R28.1.4及其之前版本


漏洞利用

使用Metasploit 进行漏洞验证

use  exploit/multi/misc/java_rmi_server


exploit(multi/misc/java_rmi_server) > set rhost 205.221.xx.xx


设置payload


执行攻击



Java RMI远程反序列化任意类及远程代码执行解析(CVE-2017-3241 )
漏洞详情

RMI是REMOTE METHOD INVOCATION的简称,是J2SE的一部分,能够让程序员开发出基于JAVA的分布式应用。一个RMI对象是一个远程JAVA对象,可以从另一个JAVA虚拟机上(甚至跨过网络)调用它的方法,可以像调用本地JAVA对象的方法一样调用远程对象的方法,使分布在不同的JVM中的对象的外表和行为都像本地对象一样。
  对于任何一个以对象为参数的RMI接口,你都可以发一个自己构建的对象,迫使服务器端将这个对象按任何一个存在于class path中的可序列化类来反序列化。


受影响版本

该漏洞存在需要两个条件:1.存在反序列化传输。2.存在有缺陷的第三方库如commons-collections


漏洞利用

小天之天的测试工具:https://pan.baidu.com/s/1pb-br4vhKT6JlT6MmjHqGg 密码:jkl8






参考链接https://www.freebuf.com/vuls/126499.html
https://www.cnblogs.com/junsec/p/11356923.html
https://www.jianshu.com/p/4a2452bf234d
http://www.codersec.net/2018/09/ ... %E6%B7%B1%E6%80%9D/









回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 03:52 , Processed in 0.012527 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表