Skip to content

Oyst3r1ng/JEP290-Bypasser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JEP290-Bypasser

使用 RASP 技术(Java Agent + 字节码插桩)来绕过 JEP-290 的反序列化限制机制。

说明

afanti 师傅 Hook 的是 java.rmi.server.RemoteObjectInvocationHandler 类的 InvokeRemoteMethod 方法的第三个参数,相当于是没有动计算方法 Hash 的地方,而是去将非 Object 的参数改为 Object 的,文章在此:Bypass JEP290攻击rmi,简单截个 Hook 点的图-->

alt text

而本项目是去 Hook 了计算方法 Hash 的地方,即 ref.invoke((Remote) proxy, method, args, getMethodHash(method)); 这行代码的第四个参数,即-->

alt text

使用方法

  1. 使用 JDK8 去运行 mvn package,在 target 目录下得到 RMIClient-1.0-SNAPSHOT.jar。

alt text

alt text

  1. 运行 RMIServer。

alt text

  1. IDEA 中编辑 ClientAttackServer 的运行配置:-javaagent:/xxx/xxx/xxx/xxx/xxx/JEP290-Bypasser/target/RMIClient-1.0-SNAPSHOT.jar,如下-->

alt text

  1. 运行 ClientAttackServer,弹出计算机-->

alt text

温馨提示

由于编译问题,common 包中的 IRemoteObject 接口写了public String sayHello(Object object) throws RemoteException;这行代码,但是 RASP 之后,Client 端实际是调用了 Server 端的public String sayHello(String name) throws RemoteException;这行代码。

验证方法:可以在 UnicastRef 类的 invoke(Remote obj, Method method, Object[] params, long opnum) 方法下断点,调试运行 ClientAttackServer,观察 opnum 的值是否已经在网络传输之前就已经被改变。给一张截图,如下-->

alt text

About

使用 RASP 技术(Java Agent + 字节码插桩)来绕过 JEP-290 的反序列化限制机制

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages