
Java RMI-Schwachstellenscanner
remote-method-guesser (rmg) ist ein Java RMI Schwachstellenscanner und kann verwendet werden, um häufige Sicherheitsschwachstellen auf Java RMI Endpunkten zu identifizieren und zu verifizieren.

remote-method-guesser wurde auf der Black Hat USA2021 im Rahmen der Arsenal Sessions vorgestellt. Die Aufzeichnung der Sitzung und die entsprechenden Folien sind öffentlich verfügbar und können über die folgenden Links abgerufen werden:
Das Repository von remote-method-guesser enthält drei Beispielserver, die zum Üben von Java RMI Enumeration und Angriffen verwendet werden können.
Der rmg-example-server stellt reguläre RMI Dienste bereit, die mit remote-method-guesser enumeriert und ausgenutzt werden können.
Der rmg-ssrf-server stellt einen HTTP Dienst bereit, der anfällig für SSRF Angriffe ist und RMI Dienste ausführt, die nur
auf localhost hören. Dies kann zum Üben mit den Optionen --ssrf und --ssrf-response von remote-method-guesser verwendet werden.
Der spring-remoting-server stellt RMI Schnittstellen bereit, die über Spring Remoting erstellt wurden. Diese unterscheiden sich etwas von
regulärem Java RMI und können zum Testen der zugehörigen Spring Remoting Integration von remote-method-guesser verwendet werden.
Alle Server sind als Container in der GitHub Container Registry verfügbar:
rmg ist ein maven Projekt und die Installation sollte unkompliziert sein. Mit installiertem maven führen Sie einfach die folgenden Befehle aus, um eine ausführbare .jar Datei zu erstellen:```console
$ git clone https://github.com/qtc-de/remote-method-guesser
$ cd remote-method-guesser
$ mvn package
Sie können auch vorgefertigte Pakete verwenden, die für [jede Veröffentlichung](https://github.com/qtc-de/remote-method-guesser/releases) erstellt werden. Vorgefertigte Pakete für den Entwicklungszweig werden automatisch erstellt und sind auf der *GitHub* [Aktionsseite](https://github.com/qtc-de/remote-method-guesser/actions) zu finden.
*rmg* enthält *ysoserial* nicht als Abhängigkeit. Um *ysoserial*-Unterstützung zu aktivieren, müssen Sie entweder den Pfad zu Ihrer ``ysoserial.jar``-Datei als zusätzliches Argument angeben (z.B. ``--yso /opt/ysoserial.jar``) oder Sie ändern den Standardpfad in der [rmg-Konfigurationsdatei](https://github.com/qtc-de/remote-method-guesser/blob/master/src/config.properties) vor dem Erstellen des Projekts.
*rmg* unterstützt auch Autovervollständigung für *bash*. Um die Autovervollständigung zu nutzen, müssen Sie das [completion-helpers](https://github.com/qtc-de/completion-helpers) Projekt installiert haben. Bei korrekter Einrichtung genügt es, das [Komplettierungsskript](https://github.com/qtc-de/remote-method-guesser/blob/master/resources/bash_completion.d/rmg) in Ihren ``~/.bash_completion.d``-Ordner zu kopieren, um die Autovervollständigung zu aktivieren.```console
$ cp resources/bash_completion.d/rmg ~/bash_completion.d/
Im Folgenden werden kurze Beispiele für jede verfügbare Operation vorgestellt. Für eine detailliertere Beschreibung sollten Sie den Dokumentationsordner lesen, der detailliertere Informationen zu rmg und Java RMI im Allgemeinen enthält. Alle vorgestellten Beispiele basieren auf dem rmg-example-server und dem rmg-ssrf-server. Beide sind in diesem Repository im docker Ordner enthalten und können verwendet werden, um die Java RMI-Aufzählung zu üben. Sie können entweder die entsprechenden Container selbst erstellen oder direkt aus der GitHub Container Registry laden.```console [qtc@devbox ~]$ rmg -h usage: remote-method-guesser [-h] action ...
rmg v4.0.0 - a Java RMI Vulnerability Scanner