
Laboratorio basado en Docker para validar CVE-2021-44228 (Log4Shell) en aplicaciones Java, probar mitigaciones y simular RCE mediante payloads LDAP y HTTP.
Esta herramienta le permite verificar si una aplicación web Java simple es vulnerable a CVE-2021-44228 para una versión de Java y Log4J proporcionada por el usuario.
También puede [opcionalmente] aplicar una de las mitigaciones predefinidas.
El laboratorio de simulación creado por log4shell_validator.py utiliza docker-compose para simular la explotación de la vulnerabilidad log4j y obtener RCE en la máquina vulnerable.
En primer lugar, es necesario construir algunas imágenes docker. El script ./build_images.sh debería encargarse de eso.
La simulación del ataque se realiza de la siguiente manera:
/2021-44228-via-message, siempre registra el campo de cabecera User-Agent. El código de esta aplicación está disponible en ./poc_template../exploit.sh que envía un payload a la aplicación vulnerable.cd marshalsec/ ; mvn clean package -DskipTests ; cd -./build-images.shpython log4shell_validator.py --java-version 8 --log4j-version 2.12.1~/workspace/CVE-2021-44228-playground$ python log4shell_validator.py --help
usage: log4shell_validator.py [-h] [--java-version JAVA_VERSION] --log4j-version LOG4J_VERSION [--no-cleanup] [--disable-trust-url] [--remove-jndi-lookup-class] [--disable-message-lookup] [--debug]
[--exploit-via-thread-context]
log4j-vulnerability-tester
optional arguments:
-h, --help show this help message and exit
--java-version JAVA_VERSION
version of java to be used
--log4j-version LOG4J_VERSION
version of log4j to be used
--no-cleanup Don't delete used containers.
--disable-trust-url Disable the LDAP trustURLCodebase setting on the victim app
--remove-jndi-lookup-class
Remove the JNDI Lookup class from the log4j jar file
--disable-message-lookup
Disable the JNDI message lookup in the victim app's JVM
--debug Display all container's logs
--exploit-via-thread-context
By sending the payload to an HTTP handler which makes use of Custom logging with ThreadContext, attempt to bypass the no-message-lookup mitigation
Este validador ha sido probado con varias combinaciones de Java7/8 y diferentes versiones de Log4J2; para más ejemplos, consulte el pipeline de pruebas extendidas en la pestaña de acciones de GitHub.
Por ahora, se han implementado las siguientes mitigaciones:
com.sun.jndi.ldap.object.trustURLCodebase en False.-Dlog4j2.formatMsgNoLookups=TrueAdemás de esto, se ha añadido una nueva bandera para probar un vector de explotación que puede evitar la desactivación de la búsqueda de mensajes: --exploit-via-thread-context
Este software ha sido creado únicamente con fines de investigación y para el desarrollo de técnicas de mitigación efectivas, y no está destinado a ser utilizado para atacar sistemas excepto cuando se haya autorizado explícitamente. Los mantenedores del proyecto no son responsables ni están obligados por el uso indebido del software. Úselo con responsabilidad.