Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
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-20660 — Exploit PoC independiente para CVE-2026-20660: path traversal en el decodificador gzip de Safari. El servidor entrega un gzip malicioso para escribir archivos arbitrarios en macOS vulnerable. | Kitploit
Herramientas/GitHubGitHub/retx0/cve-2026-20660
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de Penetración
GitHubretx0/cve-2026-20660

CVE-2026-20660

Exploit PoC independiente para CVE-2026-20660: path traversal en el decodificador gzip de Safari. El servidor entrega un gzip malicioso para escribir archivos arbitrarios en macOS vulnerable.

Ver Repositorio
26hace 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

CVE-2026-20660 Paquete PoC

Esta carpeta incluye una prueba de concepto independiente para:

  • CVE-2026-20660
  • CFNetwork NSGZipDecoder traversal de ruta mediante FNAME de gzip
  • Impacto en Safari de macOS vulnerable con apertura automática habilitada

1. Estructura de directorios

  • server.py: servidor PoC principal con profundidad de traversal y nombre de destino configurables
  • server_overwrite.py: variante enfocada que escribe ../../pwn.sh
  • README.md: notas de reproducción y registro de operación

2. Requisitos previos

  1. El objetivo es Safari de macOS vulnerable (anterior a la línea de parche 26.3).
  2. Ajuste de Safari habilitado:
    • Preferencias -> General -> Abrir archivos seguros después de descargar
  3. Puede acceder a este host desde el navegador objetivo.

3. Resumen de la causa raíz

El diff del parche muestra que -[NSGZipDecoder filenameWithOriginalFilename:] cambió su comportamiento:

  • Comportamiento anterior: devolvía directamente el nombre derivado de FNAME de gzip.
  • Comportamiento nuevo: aplica lastPathComponent antes de devolverlo.

Esto bloquea componentes de directorio como ../ y rutas absolutas en FNAME.

4. Por qué Content-Disposition no es el vector

El nombre de archivo HTTP puede ser limpio y aun así el exploit tiene éxito.

  • Nombre de archivo HTTP Content-Disposition: limpio (ejemplo: report.gz)
  • FNAME del encabezado gzip: malicioso (ejemplo: ../../proof.txt)

La sanitización del lado de Safari se aplica principalmente a los nombres de la capa HTTP, no al FNAME de gzip incrustado que consume NSGZipDecoder en el flujo vulnerable.

5. Inicio rápido

Desde la raíz del repositorio:

python3 exploit/cve-2026-20660/server.py --port 8888 --depth 2

Abrir en Safari vulnerable:

http://<server-ip>:8888/

Haz clic en Trigger depth=2.

6. Validación

Después de activar el exploit, verifica el resultado de la escritura en la máquina objetivo:

ls -la ~/cve-2026-20660-proof.txt
cat ~/cve-2026-20660-proof.txt

Para la variante de sobrescritura:

python3 exploit/cve-2026-20660/server_overwrite.py --port 9999

Luego abre:

http://<server-ip>:9999/

Comprueba:

ls -la ~/pwn.sh
cat ~/pwn.sh

7. Notas sobre los parámetros (server.py)

  • --bind, -b: dirección de enlace (por defecto 0.0.0.0)
  • --port, -p: puerto de escucha (por defecto 8888)
  • --depth, -d: profundidad de traversal (número de repeticiones de ../, por defecto 2)
  • --name, -n: nombre del archivo de salida objetivo

Ejemplos:

# write to ~/proof.txt when depth matches runtime directory nesting
python3 exploit/cve-2026-20660/server.py -p 8888 -d 2 -n proof.txt

# explicit absolute path test (if resolver permits)
python3 exploit/cve-2026-20660/server.py -p 8888
# then use: /download?depth=0&fname=/tmp/proof.txt

8. Comportamiento observado (notas actuales)

  1. La descompresión puede ocurrir en un directorio temporal bajo ~/Downloads, por lo que la profundidad a menudo debe ser >= 2 para escapar a ~/.
  2. Es posible que los archivos de destino existentes no se sobrescriban; la pila de descargas puede renombrar automáticamente para evitar colisiones.
  3. Los payloads de script pueden aparecer con bits de ejecutable en las ejecuciones observadas; valida según compilación/configuración.

9. Solución de problemas

  1. No se observa escritura:
    • Confirma que el ajuste de apertura automática de Safari está habilitado.
    • Aumenta la profundidad (2, 3, 4) y vuelve a probar.
  2. El archivo permanece en Descargas:
    • La profundidad es insuficiente para el anidamiento actual del directorio de descompresión.
  3. La conexión falla:
    • Confirma el firewall del host y la accesibilidad en la LAN.
  4. La ruta de destino no cambia:
    • Un conflicto con el nombre de archivo existente puede provocar que la salida se renombre.

10. Seguridad y alcance

Usar únicamente en entornos de pruebas autorizados.

  • No apuntes a sistemas sin permiso explícito.
  • Mantén los payloads no destructivos para la reproducibilidad.
  • Guarda capturas de pantalla/registros como evidencia de la evaluación.

11. Recopilación de evidencia sugerida

  1. Captura de pantalla de la versión de Safari y la compilación del sistema operativo.
  2. Registros de la consola del servidor PoC (solicitud + FNAME).
  3. Comandos de verificación del sistema de archivos y su salida.
  4. Listado de directorio antes/después para la ruta de destino.

12. Informe detallado

Para una explicación más detallada, consulta:

  • https://ret0.dev/posts/cve-2026-20660/
Descargar herramienta