免责声明:
本文章内容仅供教育和学习使用,不得用于非法或有害目的。请在合法范围内应用网络安全知识,对任何因使用本文内容造成的损失,文章作者不承担责任。
文章作者博客地址为https://n1ght.cn/
正文
jdk版本(目前测试):11.0.29,1.8.0_441
1 | String host = "127.0.0.1"; |
activatableRef调用getRef的时候,会触发jrmp反序列化
但是可惜,他是private方法,不像我们之前常用的TemplatesImpl,他的方法是public
所以我们无法去用jackson和fastjson去触发,在由于因为cb链子需要getPropertyBean,我们的ref是null值会触发空指针异常报错,rome链也是同理使用不了,所以说是一次遗憾的java反序列化挖掘,但是hibernate2反序列化,他什么都能调用,所以也就强行把这个链子接上了,故有了这篇文章
1 | private synchronized RemoteRef getRef() |
UnicastRef反序列化为什么不行
走进UnicastRef的readExternal会触发
1 | public static LiveRef read(ObjectInput var0, boolean var1) throws IOException, ClassNotFoundException { |
其中var5.setObjectInputFilter(DGCImpl_Stub::leaseFilter);这一行就是对DGC垃圾回收的限制
从而触发了
1 | private static ObjectInputFilter.Status leaseFilter(ObjectInputFilter.FilterInfo var0) { |
如何绕过
而我们这个sink,没有var5.setObjectInputFilter(DGCImpl_Stub::leaseFilter);这个行为
1 | private synchronized RemoteRef getRef() throws RemoteException { |
触发executeCall,后触发了readObject
1 | public void executeCall() throws Exception { |
进行测试
触发日志
1 | D:\Code\environment\jdk\jdk1.8.0_441\bin\java.exe "-javaagent:D:\Code\CodeEditor\IntelliJ IDEA 2025.2.2\lib\idea_rt.jar=63980" -Dfile.encoding=UTF-8 -classpath D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\charsets.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\deploy.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\ext\access-bridge-64.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\ext\cldrdata.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\ext\dnsns.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\ext\jaccess.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\ext\jfxrt.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\ext\localedata.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\ext\nashorn.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\ext\sunec.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\ext\sunjce_provider.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\ext\sunmscapi.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\ext\sunpkcs11.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\ext\zipfs.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\javaws.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\jce.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\jfr.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\jfxswt.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\jsse.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\management-agent.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\plugin.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\resources.jar;D:\Code\environment\jdk\jdk1.8.0_441\jre\lib\rt.jar;E:\codeAudit\untitled1\target\classes;C:\Users\night\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.2.3.RELEASE\spring-boot-starter-web-2.2.3.RELEASE.jar;C:\Users\night\.m2\repository\org\springframework\boot\spring-boot-starter\2.2.3.RELEASE\spring-boot-starter-2.2.3.RELEASE.jar;C:\Users\night\.m2\repository\org\springframework\boot\spring-boot\2.2.3.RELEASE\spring-boot-2.2.3.RELEASE.jar;C:\Users\night\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.2.3.RELEASE\spring-boot-autoconfigure-2.2.3.RELEASE.jar;C:\Users\night\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.2.3.RELEASE\spring-boot-starter-logging-2.2.3.RELEASE.jar;C:\Users\night\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\night\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Users\night\.m2\repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;C:\Users\night\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.12.1\log4j-to-slf4j-2.12.1.jar;C:\Users\night\.m2\repository\org\apache\logging\log4j\log4j-api\2.12.1\log4j-api-2.12.1.jar;C:\Users\night\.m2\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;C:\Users\night\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\night\.m2\repository\org\springframework\spring-core\5.2.3.RELEASE\spring-core-5.2.3.RELEASE.jar;C:\Users\night\.m2\repository\org\springframework\spring-jcl\5.2.3.RELEASE\spring-jcl-5.2.3.RELEASE.jar;C:\Users\night\.m2\repository\org\yaml\snakeyaml\1.25\snakeyaml-1.25.jar;C:\Users\night\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.2.3.RELEASE\spring-boot-starter-json-2.2.3.RELEASE.jar;C:\Users\night\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.10.2\jackson-databind-2.10.2.jar;C:\Users\night\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.10.2\jackson-annotations-2.10.2.jar;C:\Users\night\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.10.2\jackson-core-2.10.2.jar;C:\Users\night\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.10.2\jackson-datatype-jdk8-2.10.2.jar;C:\Users\night\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.10.2\jackson-datatype-jsr310-2.10.2.jar;C:\Users\night\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.10.2\jackson-module-parameter-names-2.10.2.jar;C:\Users\night\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.2.3.RELEASE\spring-boot-starter-tomcat-2.2.3.RELEASE.jar;C:\Users\night\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.30\tomcat-embed-core-9.0.30.jar;C:\Users\night\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.30\tomcat-embed-el-9.0.30.jar;C:\Users\night\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.30\tomcat-embed-websocket-9.0.30.jar;C:\Users\night\.m2\repository\org\springframework\boot\spring-boot-starter-validation\2.2.3.RELEASE\spring-boot-starter-validation-2.2.3.RELEASE.jar;C:\Users\night\.m2\repository\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;C:\Users\night\.m2\repository\org\hibernate\validator\hibernate-validator\6.0.18.Final\hibernate-validator-6.0.18.Final.jar;C:\Users\night\.m2\repository\org\springframework\spring-web\5.2.3.RELEASE\spring-web-5.2.3.RELEASE.jar;C:\Users\night\.m2\repository\org\springframework\spring-beans\5.2.3.RELEASE\spring-beans-5.2.3.RELEASE.jar;C:\Users\night\.m2\repository\org\springframework\spring-webmvc\5.2.3.RELEASE\spring-webmvc-5.2.3.RELEASE.jar;C:\Users\night\.m2\repository\org\springframework\spring-aop\5.2.3.RELEASE\spring-aop-5.2.3.RELEASE.jar;C:\Users\night\.m2\repository\org\springframework\spring-context\5.2.3.RELEASE\spring-context-5.2.3.RELEASE.jar;C:\Users\night\.m2\repository\org\springframework\spring-expression\5.2.3.RELEASE\spring-expression-5.2.3.RELEASE.jar;C:\Users\night\.m2\repository\org\javassist\javassist\3.28.0-GA\javassist-3.28.0-GA.jar;C:\Users\night\.m2\repository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;C:\Users\night\.m2\repository\commons-beanutils\commons-beanutils\1.9.3\commons-beanutils-1.9.3.jar;C:\Users\night\.m2\repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;C:\Users\night\.m2\repository\org\hibernate\hibernate-core\5.6.15.Final\hibernate-core-5.6.15.Final.jar;C:\Users\night\.m2\repository\org\jboss\logging\jboss-logging\3.4.3.Final\jboss-logging-3.4.3.Final.jar;C:\Users\night\.m2\repository\javax\persistence\javax.persistence-api\2.2\javax.persistence-api-2.2.jar;C:\Users\night\.m2\repository\net\bytebuddy\byte-buddy\1.12.18\byte-buddy-1.12.18.jar;C:\Users\night\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\night\.m2\repository\org\jboss\spec\javax\transaction\jboss-transaction-api_1.2_spec\1.1.1.Final\jboss-transaction-api_1.2_spec-1.1.1.Final.jar;C:\Users\night\.m2\repository\org\jboss\jandex\2.4.2.Final\jandex-2.4.2.Final.jar;C:\Users\night\.m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;C:\Users\night\.m2\repository\javax\activation\javax.activation-api\1.2.0\javax.activation-api-1.2.0.jar;C:\Users\night\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.1.2.Final\hibernate-commons-annotations-5.1.2.Final.jar;C:\Users\night\.m2\repository\javax\xml\bind\jaxb-api\2.3.1\jaxb-api-2.3.1.jar;C:\Users\night\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.1\jaxb-runtime-2.3.1.jar;C:\Users\night\.m2\repository\org\glassfish\jaxb\txw2\2.3.1\txw2-2.3.1.jar;C:\Users\night\.m2\repository\com\sun\istack\istack-commons-runtime\3.0.7\istack-commons-runtime-3.0.7.jar;C:\Users\night\.m2\repository\org\jvnet\staxex\stax-ex\1.8\stax-ex-1.8.jar;C:\Users\night\.m2\repository\com\sun\xml\fastinfoset\FastInfoset\1.2.15\FastInfoset-1.2.15.jar;C:\Users\night\.m2\repository\com\caucho\hessian\4.0.66\hessian-4.0.66.jar;C:\Users\night\.m2\repository\rome\rome\1.0\rome-1.0.jar;C:\Users\night\.m2\repository\jdom\jdom\1.0\jdom-1.0.jar org.example.Main |
依赖文件
1 |
|
1 | package org.example; |
1 | package org.example; |