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-2026-22738-POC — Prueba de concepto de exploit para CVE-2026-22738, una inyección crítica de SpEL con RCE en Spring AI SimpleVectorStore, que demuestra la ejecución de comandos del sistema operativo sin autenticación. | Kitploit
Herramientas/GitHubGitHub/n0n4m3x41/cve-2026-22738-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPapers e InvestigaciónAprendizaje y Educación
GitHubn0n4m3x41/cve-2026-22738-poc

CVE-2026-22738-POC

Prueba de concepto de exploit para CVE-2026-22738, una inyección crítica de SpEL con RCE en Spring AI SimpleVectorStore, que demuestra la ejecución de comandos del sistema operativo sin autenticación.

Ver Repositorio
132hace 4 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-2026-22738 — Inyección SpEL RCE en Spring AI SimpleVectorStore

CVSS CWE Status

Ejecución remota de código no autenticada mediante inyección de Spring Expression Language (SpEL) en SimpleVectorStore.similaritySearch().

Versiones Afectadas

| Indicador | Predeterminado | Descripción | |---|---|---| | `--target` | `http://localhost:8082` | URL base de la aplicación vulnerable | | `--wait` | desactivado | Sondea hasta que el objetivo esté listo (útil después de `docker compose up`) |
ArtefactoVulnerableCorregida
org.springframework.ai:spring-ai-core1.0.0 – 1.0.41.0.5
org.springframework.ai:spring-ai-core1.1.0-M1 – 1.1.31.1.4

Commit de corrección: ba9220b22383e430d5f801ce8e4fa01cf9e75f29


Vulnerabilidad

SimpleVectorStore.similaritySearch() pasa el nombre de la clave de filtro proporcionada por el llamador, sin modificar, a una plantilla SpEL evaluada por StandardEvaluationContext. Debido a que StandardEvaluationContext expone la API completa de reflexión de la JVM, un atacante puede inyectar:

root@kitploit:~
T(java.lang.Runtime).getRuntime().exec(...)

en la clave de filtro para lograr la ejecución de comandos del sistema operativo sin autenticación.

Detalles de Omisión

La inyección ingenua no funciona de inmediato: deben sortearse dos peculiaridades del analizador:

  1. Eliminación de comillas simples — una clave que comienza con ' se trata como una cadena entre comillas; las comillas externas se eliminan, distorsionando la carga útil.
  2. Envoltura de comillas dobles — envolver la carga útil en "..." hace que el analizador elimine las comillas dobles externas, dejando la expresión SpEL interna intacta como valor de clave pasado a #metadata['<CLAVE>'].
  3. Clave de metadatos vacía — usar #metadata[''] en ambos lados de la expresión inyectada (en lugar de una variable indefinida) evita un error SpEL de variable desconocida mientras se sigue activando exec().

La expresión evaluada resultante toma la forma:

root@kitploit:~
#metadata[''] + T(java.lang.Runtime).getRuntime().exec(new String[]{'/bin/bash','-c','<cmd>'}) + #metadata[''] == 'x'

Indicador de Éxito

El cuerpo de la respuesta HTTP contendrá EL1030E — el error de tiempo de ejecución de SpEL:

root@kitploit:~
operator ADD not supported between null and java.lang.ProcessImpl

Este error se genera después de que exec() retorna, confirmando la ejecución de comandos a nivel del sistema operativo sin requerir una devolución de llamada fuera de banda.


Uso

Requisitos previos:

root@kitploit:~
pip install requests

Ejecutar el exploit:

root@kitploit:~
python3 exploit.py [--target http://localhost:8082] [--wait]
image

Docker Desktop (macOS/Windows): use host.docker.internal en lugar de 127.0.0.1 para las cargas útiles de devolución de llamada.


Pasos del Exploit

El PoC ejecuta cinco pasos secuenciales:

PasoDescripción
1Verificación de referencia — confirmar que el endpoint es accesible y devuelve datos sembrados
2Sonda SpEL ciega — leer java.version mediante T(java.lang.System) para confirmar el punto de inyección
3RCE: touch /tmp/pwned_cve_2026_22738 dentro del contenedor
4RCE: escribir la salida de id / uname / hostname en /tmp/rce_proof.txt
5Verificar mediante docker exec — imprimir el contenido del archivo de prueba

Aviso Legal

Esta prueba de concepto se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas. No la utilice contra sistemas que no posea o para los cuales no tenga permiso explícito por escrito para realizar pruebas.

Descargar herramienta