From 3f10fbad643332a33f57db9a3c460c01166f4150 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=82=81?= <75202638+qi4L@users.noreply.github.com>
Date: Thu, 26 Mar 2026 20:15:30 +0800
Subject: [PATCH] =?UTF-8?q?Updated=206=E3=80=81Gadget=20(markdown)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
6、Gadget.md | 279 +++++++++++++++++++++------------------------------
1 file changed, 113 insertions(+), 166 deletions(-)
diff --git a/6、Gadget.md b/6、Gadget.md
index 1e20386..0f459ef 100644
--- a/6、Gadget.md
+++ b/6、Gadget.md
@@ -1,109 +1,111 @@
# 使用参数和链子
```text7
-[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
- BindingEnumeration
- 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
- cb160 commons-beanutils:1.6.0
- cb192 @frohoff commons-beanutils:1.9.2, commons-collections:3.1, commons-logging:1.2
- cb1183 commons-beanutils:1.8.3, commons-beanutils:1.7X
- cb2183 commons-beanutils:1.8.3, commons-beanutils:1.7X
- cb3183 commons-beanutils:1.8.3, commons-beanutils:1.7X
- CommonsBeanutilsAttrCompare183 @SummerSec commons-beanutils:1.8.3, commons-beanutils:1.7X
- CommonsBeanutilsAttrCompare192 @水滴 commons-beanutils:1.9.2
- CommonsBeanutilsJDBC @QI4L commons-beanutils:1.9.2
- CommonsBeanutilsJNDI commons-beanutils:1.9.2, commons-collections:3.1
- CommonsBeanutilsObjectToStringComparator183 @SummerSec commons-beanutils:1.8.3, commons-lang3:3.10, commons-beanutils:1.7X
- CommonsBeanutilsObjectToStringComparator192 @水滴 commons-beanutils:1.9.2, commons-lang3:3.10
- CommonsBeanutilsPropertySource183 @SummerSec commons-beanutils:1.8.3, commons-beanutils:1.7X
- CommonsBeanutilsPropertySource192 @SummerSec commons-beanutils:1.9.2
- cc1 @frohoff commons-collections:3.1
- cc2 @frohoff commons-collections4:4.0
- cc3 @frohoff commons-collections:3.1
- cc4 @frohoff commons-collections4:4.0
- cc4_17
- 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
- cc10 commons-collections:3.2.1
- cc11
- cc12 @Jayl1n commons-collections:3.2.1
- cc13 @Unam4 commons-collections:3.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
- Fastjson1
- Fastjson2
- FileUpload1
- Groovy
- Groovy1 @frohoff groovy:2.3.9
- Groovy2 @Unam4 groovy <2.4.3
- 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
- ImageIO
- 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
+ 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
+ BindingEnumeration
+ 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
+ CommonsBeanutilsAttrCompare183 @SummerSec commons-beanutils:1.8.3, commons-beanutils:1.7X
+ CommonsBeanutilsAttrCompare192 @水滴 commons-beanutils:1.9.2
+ CommonsBeanutilsJDBC @QI4L commons-beanutils:1.9.2
+ CommonsBeanutilsJNDI @QI4L commons-beanutils:1.9.2, commons-collections:3.1
+ CommonsBeanutilsObjectToStringComparator183 @SummerSec commons-beanutils:1.8.3, commons-lang3:3.10, commons-beanutils:1.7X
+ CommonsBeanutilsObjectToStringComparator192 @水滴 commons-beanutils:1.9.2, commons-lang3:3.10
+ CommonsBeanutilsPropertySource183 @SummerSec commons-beanutils:1.8.3, commons-beanutils:1.7X
+ CommonsBeanutilsPropertySource192 @SummerSec commons-beanutils:1.9.2
+ Fastjson1
+ Fastjson2
+ FileUpload1
+ Groovy
+ Groovy1 @frohoff groovy:2.3.9
+ Groovy2 @Unam4 groovy <2.4.3
+ 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
+ ImageIO
+ 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
- Jackson4
- 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
- LazySearchEnumeration
- 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
- ServiceLoader
- 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
- SpringAbstractBeanFactoryPointcutAdvisor
- SpringPartiallyComparableAdvisorHolder
- SpringPropertyPathFactory
- URLDNS @gebl
- 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
- Xbean
+ 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
+ LazySearchEnumeration
+ 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
+ ServiceLoader
+ 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
+ SpringAbstractBeanFactoryPointcutAdvisor
+ SpringPartiallyComparableAdvisorHolder
+ SpringPropertyPathFactory
+ 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
+ Xbean
+ cb1183 commons-beanutils:1.8.3, commons-beanutils:1.7X
+ cb160 commons-beanutils:1.6.0
+ cb192 @frohoff commons-beanutils:1.9.2, commons-collections:3.1, commons-logging:1.2
+ cb2183 commons-beanutils:1.8.3, commons-beanutils:1.7X
+ cb3183 commons-beanutils:1.8.3, commons-beanutils:1.7X
+ 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
@@ -234,70 +236,7 @@ java -jar JYso-[version].jar -y -g cc3 -p LF-/tmp/evil.class -f cc3.ser
# URLDNS 探测目标类
-为了解决有反序列化利用点但是无链可用的状态,本项目提供了基于 URLDNS 探测目标类的功能。这条链会根据目标环境中不同的类是否存在来判断系统环境、依赖版本,主要包含如下表格中的内容:
-
-| DNSLOG 关键字 | 对应链 | 关键类 | 备注 |
-|---------------------------------------------|-------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------|
-| cc31or321
cc322 | CommonsCollections13567 | org.apache.commons.collections.functors.ChainedTransformer
org.apache.commons.collections.ExtendedProperties$1 | CommonsCollections1/3/5/6/7
需要<=3.2.1版本 |
-| cc40
cc41 | CommonsCollections24 | org.apache.commons.collections4.functors.ChainedTransformer
org.apache.commons.collections4.FluentIterable | CommonsCollections2/4链
需要4-4.0版本 |
-| cb17
cb18x
cb19x | CommonsBeanutils2 | org.apache.commons.beanutils.MappedPropertyDescriptor\$1
org.apache.commons.beanutils.DynaBeanMapDecorator\$MapEntry
org.apache.commons.beanutils.BeanIntrospectionData | 1.7x-1.8x为-3490850999041592962
1.9x为-2044202215314119608 |
-| c3p092x
c3p095x | C3P0 | com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase
com.mchange.v2.c3p0.test.AlwaysFailDataSource | 0.9.2pre2-0.9.5pre8为7387108436934414104
0.9.5pre9-0.9.5.5为7387108436934414104 |
-| ajw | AspectJWeaver | org.aspectj.weaver.tools.cache.SimpleCache | AspectJWeaver,需要cc31 |
-| bsh20b4
bsh20b5
bsh20b6 | bsh | bsh.CollectionManager\$1
bsh.engine.BshScriptEngine
bsh.collection.CollectionIterator\$1 | 2.0b4为4949939576606791809
2.0b5为4041428789013517368
2.0.b6无法反序列化 |
-| groovy1702311
groovy24x
groovy244 | Groovy | org.codehaus.groovy.reflection.ClassInfo\$ClassInfoSet
groovy.lang.Tuple2
org.codehaus.groovy.runtime.dgm\$1170 | 2.4.x为-8137949907733646644
2.3.x为1228988487386910280 |
-| becl | Becl | com.sun.org.apache.bcel.internal.util.ClassLoader | JDK<8u251 |
-| Jdk7u21 | Jdk7u21 | com.sun.corba.se.impl.orbutil.ORBClassLoader | JDK<=7u21 |
-| JRE8u20 | JRE8u20 | javax.swing.plaf.metal.MetalFileChooserUI\$DirectoryComboBoxModel\$1 | 7u25<=JDK<=8u20
这个检测不完美,8u25版本以及JDK<=7u21会误报
可综合Jdk7u21来看 |
-| linux
windows | winlinux | sun.awt.X11.AwtGraphicsConfigData
sun.awt.windows.WButtonPeer | windows/linux版本判断 |
-| jackson2100 | jackson | com.fasterxml.jackson.databind.node.NodeSerialization | |
-| ROME | ROME | com.sun.syndication.feed.impl.ToStringBean
com.rometools.rome.feed.impl.ObjectBean | |
-| SpringAOP | fastjon
jackson | org.springframework.aop.target.HotSwappableTargetSource.HotSwappableTargetSource | |
-| fastjson | fastjon | com.alibaba.fastjson.JSONArray | |
-| jdk17_22 | | jdk.internal.util.random.RandomSupport | |
-| jdk9_22 | | jdk.internal.misc.Unsafe | |
-| jdk6_8 | | sun.misc.BASE64Decoder | |
-| jdk6_11 | | com.sun.awt.SecurityWarning | |
-| jdk9_10 | | jdk.incubator.http.HttpClient | |
-| | all | | 全部检测 |
-| | jndiall | | |
-
-| jndiall 关键类 | 说明 |
-|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
-| org.apache.naming.factory.BeanFactory | 最经典的ObjectFactory,有它+低版本tomcat意味着可以执行单String方法 |
-| org.apache.catalina.filters.
CsrfPreventionFilter$NonceCache | tomcat9.0.63/8.5.79高版本才有的类,有这个代表无法再用BeanFactory的forceString |
-| javax.el.ELProcessor | 和BeanFactory最经典的配合 |
-| org.yaml.snakeyaml.Yaml | 知名YAML序列化,可以跟BeanFactory配合 |
-| com.thoughtworks.xstream.XStream | 知名XML序列化,可以跟BeanFactory配合 |
-| org.mvel2.sh.ShellSession | mvel语法,可以跟BeanFactory配合 |
-| org.apache.tomcat.jdbc.naming.
GenericNamingResourcesFactory | 高版本tomcat和低版本tomcat没有forceString时的替代类,和BeanFactory一样只能调setter,但BeanFactory会检测setter所对应的属性 |
-| org.apache.commons.configuration.
SystemConfiguration | 配合GenericNamingResourcesFactory可以篡改jdk环境变量 |
-| org.apache.commons.configuration2.
SystemConfiguration | 配合GenericNamingResourcesFactory可以篡改jdk环境变量 |
-| org.apache.groovy.util.SystemUtil | groovy >= 3.0才有,配合GenericNamingResourcesFactory可以篡改jdk环境变量 |
-| org.apache.batik.swing.JSVGCanvas | 远程加载svg造成XSS,XXE,RCE |
-| org.apache.catalina.users.
MemoryUserDatabaseFactory | 配合UserDatabase可以XXE,写文件 |
-| org.apache.catalina.UserDatabase | 配合MemoryUserDatabaseFactory可以XXE,写文件 |
-| org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory | 以下均为DataSourceFactory,可以造成jdbc |
-| org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory | |
-| org.apache.commons.dbcp.BasicDataSourceFactory | |
-| org.apache.commons.dbcp2.BasicDataSourceFactory | |
-| org.apache.tomcat.jdbc.pool.DataSourceFactory | |
-| com.alibaba.druid.pool.DruidDataSourceFactory | |
-| com.zaxxer.hikari.HikariJNDIFactory | |
-| org.h2.Driver | h2 jdbc,可以RCE |
-| org.postgresql.Driver | postgresql,可以远程加载XML执行SPEL,可以写文件 |
-| org.springframework.context.support.
ClassPathXmlApplicationContext | postgresql RCE依赖spring环境 |
-| com.mysql.jdbc.Driver | mysql,可以二次反序列化,可以读文件,可以XXE |
-| com.mysql.cj.jdbc.Driver | |
-| com.mysql.fabric.jdbc.FabricMySQLDriver | |
-| oracle.jdbc.driver.OracleDriver | oracle,可以带出机器用户名 |
-| com.ibm.db2.jcc.DB2Driver | db2,可以写文件 |
-| COM.ibm.db2.jcc.DB2Driver | |
-| com.ibm.ws.webservices.engine.client.
ServiceFactory | WebSphere的ObjectFactory,可以远程加载jar,很少用到 |
-| com.ibm.ws.client.applicationclient.
ClientJ2CCFFactory | |
-| oracle.ucp.jdbc.PoolDataSourceImpl | 反序列化转getter(getConnection)转jdbc(h2)转所需要的DataSource中转类,weblogic依赖 |
-| org.hibernate.service.jdbc.connections.
internal.DriverManagerConnectionProviderImpl | hibernate-core-4.x,比较低版本才有的类 |
-
-本项目参考了 kezibei 师傅的 URLDNS 项目,实际情况可能有如下几种情况导致问题:
+为了解决有反序列化利用点但是无链可用的状态,本项目提供了基于 URLDNS 探测目标类的功能。这条链会根据目标环境中不同的类是否存在来判断系统环境、依赖版本:
- 反序列时遇到黑名单,可能导致后面的类的 dnslog 出不来;
- 反序列化流程中由于种种情况报错可能导致出不来。
@@ -305,7 +244,15 @@ java -jar JYso-[version].jar -y -g cc3 -p LF-/tmp/evil.class -f cc3.ser
因此这里还是提供了 all/common/指定类 三种探测方式:
- all:探测全部的类;
-- common:探测不常在黑名单中的 CommonsBeanutils2/C3P0/AspectJWeaver/bsh/winlinux;
+- 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`