Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
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-vulnerability — Presenta cómo explotar la vulnerabilidad CVE-2021-44228. | Kitploit
Herramientas/GitHubGitHub/marceloleite2604/log4j-vulnerability
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebComando y ControlAprendizaje y EducaciónHerramienta de Acceso RemotoDesarrollo de PayloadsLabs y Práctica
GitHub
marceloleite2604/log4j-vulnerability

log4j-vulnerability

Presenta cómo explotar la vulnerabilidad CVE-2021-44228.

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

Vulnerabilidad LOG4J

Un proyecto basado en Java que presenta cómo explotar la vulnerabilidad CVE-2021-44228.

https://user-images.githubusercontent.com/13152452/147803050-458593e9-4b54-4e1f-ba07-802866b9b43e.mp4

Requisitos

  • Un sistema operativo basado en Linux: usé Ubuntu Desktop 20.10 64 bits
  • OpenJDK 17.0.1: Para construir el programa de explotación. Versiones más recientes también pueden funcionar.
  • Oracle Java Development Kit (JDK) 1.8.0_181: Esto es esencial para que la explotación funcione. No es necesario tenerlo instalado, pero el proyecto necesita que esté extraído en el directorio raíz. El JDK se puede encontrar en la página de descargas del archivo Oracle Java SE 8 (JDK 8u202 y anteriores).
  • Apache Maven 3.6.3: Para gestionar dependencias y generar archivos jar. Versiones posteriores pueden funcionar también.
  • Docker 20.10.12: Para gestionar el contenedor que contiene el servicio a explotar. Versiones posteriores pueden funcionar también.
  • Docker-compose 1.29.2: Para ayudar a orquestar la generación de imágenes, así como la creación, ejecución y eliminación de contenedores. Versiones posteriores pueden funcionar también.
  • GNU Make 4.3: Este proyecto usa Makefile para ayudar a verificar y generar archivos obligatorios. Versiones posteriores pueden funcionar también.
  • OpenBSD Netcat (también conocido como nc): Para crear la comunicación con el servidor invadido. Este paquete se puede instalar a través del gestor de paquetes de tu distribución Linux (como apt).
  • (Recomendado) IntelliJ IDEA Community Edition 2021.3.1: Si quieres ver qué hay debajo del capó de estos proyectos, recomiendo instalar este IDE. Una vez más, versiones posteriores pueden funcionar también.

Ejecución

  1. Clona este repositorio en tu máquina local.
  2. Descarga desde la página de descargas del archivo Oracle Java SE 8 (JDK 8u202 y anteriores) y extráelo en el directorio raíz del proyecto. Mantenlo en el directorio jdk1.8.0_181 creado durante la extracción.
  3. Ejecuta make all para construir todos los proyectos y crear una imagen Docker con el servicio vulnerable.
  4. Abre tres terminales y ejecuta los siguientes comandos:
    1. Primer terminal: make start-vulnerable-service para iniciar un contenedor Docker que ejecute el servicio a explotar. El servicio será accesible a través del puerto 8080 de la máquina local.
    2. Segundo terminal: make start-nc para iniciar un listener TCP que esperará a que se establezca la conexión con el servidor invadido.
    3. Tercer terminal: make start-exploiter para iniciar el programa que nos ayudará a explotar la vulnerabilidad.
  5. Después de iniciar el tercer terminal, el programa exploiter presentará una URL para acceder. Pégala en tu navegador para iniciar la explotación.
  6. Si todo sucede como se espera, el navegador no recibirá una respuesta y se quedará atascado en un estado de carga.
  7. Ahora revisa el segundo terminal (aquel donde se ejecutó make start-nc). Puede que hayas recibido un mensaje como Connection received on 172.24.0.2 46638 (la dirección IP y el puerto TCP pueden no ser los mismos que se muestran aquí). Esto significa que la explotación funcionó y ahora tenemos una shell conectada al servidor/contenedor Docker.
  8. Para asegurarte de que todo ocurrió como se esperaba, intenta ejecutar el comando whoami. Puede que recibas root como salida.
  9. Ahora intenta ejecutar cat ../private-directory/my-secret-file.txt para ver qué sucede. 🙂
  10. Una vez que hayas terminado de jugar con el servidor, presiona CTRL+C para cerrar la conexión.
  11. También puedes presionar CTRL+C en los otros terminales para interrumpir los procesos.

¿Cómo funciona?

Antes de responder eso, echemos un vistazo a los procesos creados a lo largo del flujo.

log4-vulnerability processeses

Contenedor Docker

Este contenedor Docker servirá un servicio HTTP simple responsable de recibir solicitudes GET en la ruta /log con un parámetro input. Una vez que lo recibe, registra la entrada en la consola.

https://user-images.githubusercontent.com/13152452/147826880-8ee10391-bcb7-46d3-8d69-2f7ddb4a7b37.mp4

Para explotar la vulnerabilidad, se requieren algunas configuraciones específicas:

  • La versión del entorno de ejecución de Java (JRE) utilizada para ejecutar el servicio es 1.8.0_181. Esto es necesario para permitir que se cargue una clase Java desde un servicio externo.
  • Las dependencias del proyecto Java deben modificarse considerablemente para reemplazar el spring-boot-starter-logging:2.6.1 predeterminado por spring-boot-starter-log4j2:2.6.1. Este último trae log4j-core:2.14.1 al proyecto, que es una versión vulnerable a CVE-2021-44228.

dependency-tree

  • El archivo Jar del servicio se creó con la versión del compilador Java 1.8.0_181.

Programa Netcat (nc)

No hay grandes explicaciones ni ajustes aquí. Es un programa simple utilizado para leer y escribir datos a través de los protocolos TCP y UDP. Lo usaremos para mantener la escucha de conexiones TCP entrantes en el puerto 9001 (algo más abrirá esta conexión por nosotros en el lado del servidor. 😉).

Una vez que se establece la conexión, todos los datos entrantes se mostrarán en la consola. Además, toda entrada escrita se enviará a través de esta conexión.

Exploiter

¡Aquí es donde comienza la diversión!

Este programa encapsula varios pasos necesarios para explotar la vulnerabilidad. Vamos a desglosarlo:

Argumentos de ejecución

Para ejecutar este programa, debemos informar tres parámetros:

  1. Dirección IP/host del servidor HTTP y Netcat: Para explotar la vulnerabilidad, necesitaremos la dirección IP del servidor HTTP relativa al servicio vulnerable para que nuestra respuesta LDAP pueda redirigirlo a descargar la clase Java compilada a través de él. También será utilizada por la propia clase Java para abrir una conexión TCP con Netcat (explicado anteriormente).
  2. Puerto del servidor HTTP: El puerto donde el servidor HTTP responsable de enviar la clase Java compilada aceptará conexiones. También se enviará con la respuesta LDAP para informar el puerto desde donde se descargará la clase Java compilada.
  3. Puerto de Netcat: El puerto donde Netcat está escuchando conexiones. Será utilizado por la clase Java compilada para abrir una conexión TCP con Netcat.

Clase Java Exploit

Una vez que el programa se inicie, escribirá un código Java basado en una plantilla. Esta plantilla requiere dos argumentos: la dirección IP y el puerto de Netcat.

Una vez escrito el código, el programa lo compilará en un archivo de clase binario utilizando el compilador de Java (javac) versión 1.8.0_181. Esto es importante para mantener la misma versión de código que el servicio explotado.

Descargar herramienta