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
log4j-CVE-2021-44228-workaround — solución genérica de mitigación para la vulnerabilidad log4j CVE-2021-44228 | Kitploit
Herramientas/GitHubGitHub/grimch/log4j-cve-2021-44228-workaround
Análisis de VulnerabilidadesExplotaciónSeguridad de Cadena de SuministroMala ConfiguraciónRespuesta a Incidentes
GitHubgrimch/log4j-cve-2021-44228-workaround

log4j-CVE-2021-44228-workaround

solución genérica de mitigación para la vulnerabilidad log4j CVE-2021-44228

Ver Repositorio
15hace 4 añosAún no revisado

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

log4j-CVE-2021-44228-workaround

A. Descripción de la solución

Este proyecto proporciona una solución alternativa de propósito general para la vulnerabilidad log4j CVE-2021-44228, que se puede usar en caso de que no tengas la alternativa a corto plazo de reconstruir tu proyecto respectivo o parchear los archivos jar de log4j-core.

La idea detrás de esto es bastante simple: Forzamos al cargador de clases a cargar una versión "vacía" de la clase JndiLookup utilizando la opción "-Xbootclasspath/a" del runtime de Java.

Por lo tanto, toda la solución alternativa consiste únicamente en esta única clase "org.apache.logging.log4j.core.lookup.JndiLookup.java" y no tiene otras dependencias.

También hay un pom.xml para mayor comodidad para compilarlo y empaquetarlo como jar mediante Maven, pero también puedes hacer lo mismo simplemente usando tu JDK preferido, usando los comandos "javac" y "jar".

Ten en cuenta que esta versión vacía de la clase "JndiLookup" no puede ser compatible con la implementación original de log4j2, porque esto fallaría en ciertas situaciones de carga de clases.

Al aplicar la solución alternativa verías el siguiente mensaje:

root@kitploit:~
"WARN JNDI lookup class is not available because this JRE does not support JNDI. 
JNDI string lookups will not be available, continuing configuration. 
Ignoring java.lang.ClassCastException: class org.apache.logging.log4j.core.lookup.JndiLookup"

Log4j2 seguirá funcionando sin problemas, solo que sin usar ninguna búsqueda JNDI - ¡ahí lo tienes - la búsqueda JNDI ha sido desactivada!

Una vez que hayas compilado la clase y creado el archivo jar, simplemente agrega la opción "-Xbootclasspath/a:<ubicación de tu archivo jar de workaround>" al comienzo de tu comando Java y apunta al directorio donde colocaste el archivo jar (por ejemplo, log4j-workaround-1.0-SNAPSHOT.jar). Consulta la sección de prueba de concepto para un ejemplo de cómo hacer esto.

Un comando Java al que aplicarías esta solución alternativa podría lanzar cualquier cosa (Weblogic, Tomcat, fat jar construido por Spring, ...).

B. Prueba de concepto

Puedes ignorar lo siguiente si solo estás interesado en la solución alternativa, pero no en cómo verificar si realmente funciona.

Para validar el enfoque, he agregado una carpeta "POC", que contiene otro proyecto Maven. No quise usar pruebas unitarias, sino más bien mantenerme cerca de configuraciones de producción, que usan lanzamiento explícito desde la línea de comandos de fat jars o un lanzamiento de contenedor como el de Tomcat con el que lo validé.

La prueba de concepto tiene dos clases, "POC.java" para probar la solución alternativa en la línea de comandos y "POCServlet.java" para probar lo mismo en un servidor de aplicaciones.

Ambos escenarios intentan registrar "${jndi:ldap://localhost/test}", por lo cual log4j intentaría conectarse a ldap en tu host local sin la solución alternativa aplicada y fallaría con conexión rechazada.

Para ejecutar la POC de línea de comandos (una vez que la hayas construido en Maven):

  • Ve al directorio "target\log4j-workaround-1.0-SNAPSHOT\WEB-INF" y ejecuta (si estás en una línea de comandos de Windows):

    java -Xbootclasspath/a:..\..\..\..\target\log4j-workaround-1.0-SNAPSHOT.jar -classpath classes;lib\* com.github.grimch.log4j_workaround.poc.POC

Para ejecutar la POC con Tomcat:

  • Primero despliega el archivo "log4j-workaround-1.0-SNAPSHOT.war" en el directorio "webapps" de Tomcat.
  • En lugar de modificar el comando java, simplemente configura la variable de entorno "CATALINA_OPTS" respectivamente:
  • Establece CATALINA_OPTS=-Xbootclasspath/a:<ruta-hacia-log4j-workaround-1.0-SNAPSHOT.jar>
  • Luego inicia Tomcat, por ejemplo usando "catalina start".
  • Abre la URL http://localhost:8080/log4j-workaround-1.0-SNAPSHOT/POC en tu navegador.
  • Revisa tu terminal o catalina.out para el mensaje "WARN JNDI lookup class is not available ...".

Comentarios finales

¿Por qué usar "-Xbootclasspath" y no solo poner el jar de la solución alternativa como la primera entrada en el classpath "normal"? Bueno, algunos contenedores permiten influir en la carga de clases de tal manera que los archivos jar en el archivo de la aplicación desplegada tienen preferencia sobre los mismos en el classpath del sistema. Por otro lado, lo que esté en el bootstrap classpath tiene preferencia sobre todo lo demás.

Sin embargo, si estás seguro de que no estás usando nada similar (por ejemplo, "prefer-application-packages" en Weblogic), entonces también puedes optar por la alternativa "-classpath".

Descargar herramienta