Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-20660 — Exploit PoC autonomo per CVE-2026-20660: path traversal nel decoder gzip di Safari. Il server fornisce un gzip dannoso per scrivere file arbitrari su macOS vulnerabile. | Kitploit
Strumenti/GitHubGitHub/retx0/cve-2026-20660
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration Testing
GitHubretx0/cve-2026-20660

CVE-2026-20660

Exploit PoC autonomo per CVE-2026-20660: path traversal nel decoder gzip di Safari. Il server fornisce un gzip dannoso per scrivere file arbitrari su macOS vulnerabile.

Vedi Repository
225 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Bundle PoC CVE-2026-20660

Questa cartella contiene un proof-of-concept autonomo per:

  • CVE-2026-20660
  • Path traversal in NSGZipDecoder di CFNetwork tramite FNAME del gzip
  • Impatto su Safari macOS vulnerabile con apertura automatica abilitata

1. Struttura della directory

  • server.py: server PoC principale con profondità di traversal e nome del target configurabili
  • server_overwrite.py: variante mirata che scrive ../../pwn.sh
  • README.md: note di riproduzione e log delle operazioni

2. Prerequisiti

  1. Il target è un Safari macOS vulnerabile (prima della linea di patch 26.3).
  2. Impostazione Safari abilitata:
    • Preferenze -> Generali -> Apri i file sicuri dopo il download
  3. Puoi raggiungere questo host dal browser target.

3. Riepilogo della causa principale

Il diff della patch mostra che -[NSGZipDecoder filenameWithOriginalFilename:] ha cambiato comportamento:

  • Vecchio comportamento: restituisce direttamente il nome derivato dal FNAME del gzip.
  • Nuovo comportamento: applica lastPathComponent prima di restituire.

Questo blocca i componenti di directory come ../ e i percorsi assoluti nel FNAME.

4. Perché Content-Disposition non è il vettore

Il nome del file HTTP può essere pulito e l'attacco riesce comunque.

  • Nome file Content-Disposition HTTP: pulito (esempio: report.gz)
  • FNAME dell'intestazione gzip: dannoso (esempio: ../../proof.txt)

La sanificazione lato Safari si applica principalmente ai nomi a livello HTTP, non al FNAME gzip incorporato consumato da NSGZipDecoder nel flusso vulnerabile.

5. Avvio rapido

Dalla radice del repository:

root@kitploit:~
python3 exploit/cve-2026-20660/server.py --port 8888 --depth 2

Aprire in Safari vulnerabile:

root@kitploit:~
http://<server-ip>:8888/

Fare clic su Trigger depth=2.

6. Validazione

Dopo l'attivazione, verificare il risultato della scrittura sulla macchina target:

root@kitploit:~
ls -la ~/cve-2026-20660-proof.txt
cat ~/cve-2026-20660-proof.txt

Per la variante di sovrascrittura:

root@kitploit:~
python3 exploit/cve-2026-20660/server_overwrite.py --port 9999

Quindi aprire:

root@kitploit:~
http://<server-ip>:9999/

Controllare:

root@kitploit:~
ls -la ~/pwn.sh
cat ~/pwn.sh

7. Note sui parametri (server.py)

  • --bind, -b: indirizzo di bind (predefinito 0.0.0.0)
  • --port, -p: porta in ascolto (predefinita 8888)
  • --depth, -d: profondità di traversal (numero di ripetizioni di ../, predefinito 2)
  • --name, -n: nome del file di output target

Esempi:

root@kitploit:~
# scrive in ~/proof.txt quando la profondità corrisponde all'annidamento della directory di runtime
python3 exploit/cve-2026-20660/server.py -p 8888 -d 2 -n proof.txt

# test esplicito con percorso assoluto (se il resolver lo consente)
python3 exploit/cve-2026-20660/server.py -p 8888
# quindi usare: /download?depth=0&fname=/tmp/proof.txt

8. Comportamento osservato (note attuali)

  1. La decompressione può avvenire in una directory temporanea sotto ~/Downloads, quindi la profondità spesso deve essere >= 2 per uscire in ~/.
  2. I file target esistenti potrebbero non essere sovrascritti; lo stack di download può rinominare automaticamente per evitare conflitti.
  3. I payload script possono apparire con i bit di esecuzione nelle esecuzioni osservate; validare in base a build/configurazione.

9. Risoluzione dei problemi

  1. Nessuna scrittura osservata:
    • Confermare che l'impostazione di apertura automatica di Safari sia abilitata.
    • Aumentare la profondità (2, 3, 4) e riprovare.
  2. Il file rimane in Downloads:
    • Profondità troppo bassa per l'annidamento corrente della directory di decompressione.
  3. La connessione fallisce:
    • Confermare il firewall dell'host e la raggiungibilità sulla LAN.
  4. Percorso target invariato:
    • Un conflitto con un nome file esistente può causare la rinomina dell'output.

10. Sicurezza e ambito di utilizzo

Utilizzare solo in ambienti di test autorizzati.

  • Non prendere di mira sistemi senza autorizzazione esplicita.
  • Mantenere i payload non distruttivi per la riproducibilità.
  • Salvare screenshot/log come prova per la valutazione.

11. Raccolta di prove suggerita

  1. Screenshot della versione di Safari e della build del sistema operativo.
  2. Log della console del server PoC (richiesta + FNAME).
  3. Comandi e output di verifica del filesystem.
  4. Elenco della directory prima/dopo per il percorso target.

12. Approfondimento

Per una spiegazione più dettagliata, vedere:

  • https://ret0.dev/posts/cve-2026-20660/
Scarica lo strumento