archivealchemist — инструмент для создания специально разработанных архивов для тестирования уязвимостей при извлечении данных.
❗️
Характеристики⏺️Создание 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 - добавление содержимое в архив, сохраняя его валидным.