Archive Alchemist 开源项目教程
1. 项目介绍
Archive Alchemist 是一个用于创建特殊构造的归档文件的工具,旨在测试文件提取过程中的安全特性。它支持创建 ZIP 和 TAR 格式的归档文件,并且具备以下特性:
- 支持路径遍历测试
- 支持符号链接和硬链接
- 能够设置特殊的权限位(如 setuid, setgid, sticky bit)
- 对文件属性有细粒度的控制(如模式、用户 ID、组 ID、修改时间)
- 提供多种操作命令:添加、替换、附加、修改
- 提供多个辅助命令:提取、列表、读取
- 支持创建多语种文件(在归档前添加数据并调整头部)
2. 项目快速启动
首先,需要克隆仓库并设置脚本为可执行。
git clone https://github.com/avlidienbrunn/archive-alchemist.git
cd archive-alchemist
chmod +x archive-alchemist.py
可选:创建一个符号链接以便全局使用。
sudo ln -s $(pwd)/archive-alchemist.py /usr/local/bin/archive-alchemist
3. 应用案例和最佳实践
以下是一些应用案例和最佳实践:
Zip 路径测试
创建一个带有路径测试载荷的 ZIP 文件。
./archive-alchemist.py zipslip.zip add "../../../tmp/test.txt" --content "Test path traversal!"
符号链接测试
创建一个含有指向系统文件的符号链接的 TAR 文件。
./archive-alchemist.py symlink_test.tar -t tar add .bashrc --symlink "/etc/example.conf"
文件冲突与符号链接
先添加一个符号链接。
./archive-alchemist.py collision.tar -t tar add config.txt --symlink "/tmp/target.txt"
然后添加一个具有相同名称的常规文件(将在符号链接创建后覆盖)。
./archive-alchemist.py collision.tar -t tar add config.txt --content "Overwrite after symlink is created"
Setuid 可执行文件
创建一个 setuid 可执行文件。
./archive-alchemist.py setuid_test.tar -t tar add test --content "#!/bin/sh\nwhoami" --mode 0755 --setuid --uid 0
多语种文件
创建一个有效的 ZIP 文件,其开始于 GIF 的魔术数字。
./archive-alchemist.py polyglot.gif add payload.txt --content "hello there"
./archive-alchemist.py polyglot.gif polyglot --content "GIF89aI am totally a GIF file"
Unicode 路径与文件名测试
创建一个 ZIP 文件,其本地文件头中的文件名为 file.txt
,而 Unicode 路径额外字段中的文件名为 notfile.txt
。
./archive-alchemist.py weird.zip add file.txt --content "hello there" --unicodepath notfile.txt
4. 典型生态项目
目前没有直接列出 Archive Alchemist 的生态项目。不过,任何使用归档文件处理功能的项目都可能从 Archive Alchemist 的安全性测试中受益,特别是那些涉及文件上传和文件提取功能的 web 应用程序和系统。通过集成和使用 Archive Alchemist,这些项目可以提高其对潜在文件提取问题的防御能力。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考