
Сканер уязвимостей Java RMI
remote-method-guesser (rmg) — это сканер уязвимостей Java RMI, который можно использовать для обнаружения и проверки распространённых уязвимостей безопасности на конечных точках Java RMI.

remote-method-guesser был представлен на Black Hat USA2021 в рамках сессий Arsenal. Запись сессии и соответствующие слайды находятся в открытом доступе и доступны по следующим ссылкам:
Репозиторий remote-method-guesser содержит три примерных сервера, которые можно использовать для практики перечисления и атак на Java RMI.
Сервер rmg-example-server предоставляет обычные сервисы RMI, которые можно перечислять и эксплуатировать с помощью remote-method-guesser.
Сервер rmg-ssrf-server предоставляет сервис HTTP, уязвимый к атакам SSRF, и запускает сервисы RMI, которые слушают только на локальном хосте. Это можно использовать для практики с опциями remote-method-guesser --ssrf и --ssrf-response.
Сервер spring-remoting-server предоставляет интерфейсы RMI, созданные с помощью Spring Remoting. Они немного отличаются от обычного Java RMI и могут быть использованы для тестирования соответствующей интеграции Spring Remoting в remote-method-guesser.
Все серверы доступны как контейнеры в GitHub Container Registry:
rmg — это проект maven, и установка должна быть простой. При наличии maven
просто выполните следующие команды, чтобы создать исполняемый .jar файл:```console
$ git clone https://github.com/qtc-de/remote-method-guesser
$ cd remote-method-guesser
$ mvn package
Вы также можете использовать предварительно собранные пакеты, создаваемые для [каждого релиза](https://github.com/qtc-de/remote-method-guesser/releases).
Предварительно собранные пакеты для ветки разработки создаются автоматически и доступны на странице *GitHub* [странице действий](https://github.com/qtc-de/remote-method-guesser/actions).
*rmg* не включает *ysoserial* в качестве зависимости. Чтобы включить поддержку *ysoserial*, необходимо либо указать путь
к вашему файлу ``ysoserial.jar`` в качестве дополнительного аргумента (например, ``--yso /opt/ysoserial.jar``), либо изменить
путь по умолчанию в [файле конфигурации rmg](https://github.com/qtc-de/remote-method-guesser/blob/master/src/config.properties) перед сборкой проекта.
*rmg* также поддерживает автодополнение для *bash*. Чтобы воспользоваться автодополнением, необходимо установить
проект [completion-helpers](https://github.com/qtc-de/completion-helpers). Если настройка выполнена правильно, просто
скопируйте [скрипт автодополнения](https://github.com/qtc-de/remote-method-guesser/blob/master/resources/bash_completion.d/rmg) в папку ``~/.bash_completion.d`` — это включит
автодополнение.```console
$ cp resources/bash_completion.d/rmg ~/bash_completion.d/
Далее представлены краткие примеры для каждой доступной операции. Для более подробного описания следует ознакомиться с папкой документации, которая содержит более детальную информацию об rmg и Java RMI в целом. Все представленные примеры основаны на rmg-example-server и rmg-ssrf-server. Оба они находятся в этом репозитории в папке docker и могут быть использованы для практики перебора Java RMI. Вы можете либо собрать соответствующие контейнеры самостоятельно, либо загрузить их напрямую из GitHub Container Registry.```console [qtc@devbox ~]$ rmg -h usage: remote-method-guesser [-h] action ...
rmg v4.0.0 - a Java RMI Vulnerability Scanner